Show HN: Keygen – A dead-simple software licensing API built for developers - <AUTHOR> https://keygen.sh <comment><USER2> Since I know you are figuring this all out, here's some pricing feedback for you:

I'm a weekender - building a desktop app (OS X & Win) for individuals and small businesses. I hope it turns into a real business some day, but as experience would show, it probably won't.

On the low end, $24/month is way too much for me. I would find it offensive to pay $24/month for a licensing solution, when I pay $0 for python, flask, electron, NPM, Vue, and the myriad other technologies I rely on heavily. (Note, I don't _think_ it is offensive - but I _feel_ it.)

My gut feel on pricing - don't try to squeeze money from a stone. Give away the low end. You won't make much money there anyway and you will almost certainly turn off many potential users and proponents. Get them hooked. Let them promote for you. Don't let them find an alternative. Then, when they start making money, you start making money.

If I have a viable business going I will have a totally different feel on how I would see this expenditure.

2 cents for you.

<comment><AUTHOR> Appreciate the feedback. (Seriously, helps a lot!) What would be a price point that works for you? I definitely think there's room for a smaller plan, so I'd love to hear your thoughts. I've done smaller custom plans in the past for makers who are just getting started with an app (or in the process of building one) with a low active user limit. But in the end, $288/yr is not _that much_ for something that helps you make money--especially considering that you'll likely have to _spend_ money to _make_ money as an app developer. And lastly, I don't think comparing a _product_ to open source is the right thing to do-- especially considering that you have to host Flask, distribute Electron, etc., all which cost money.

<comment><USER3> Appreciate that hosting isn't free, but having some sort of $0 plan would greatly drive adoption, at fairly little cost. I personally would be unlikely to launch a product that cost me a monthly fee just to run, even with zero paying users. Once I have paying users, I become a lot more willing to pay you. You could consider something like the following plan: Testing. $0/mo, 50 users, no support.

It'll be more effective marketing than anything else you could reasonably buy, and unless you have serious architectural/scaling issues shouldn't be too expensive for you.

<comment><USER4> I agree. I think that the pricing is fair for when you have paying customers on the system (at least for my business model), but the 7 day trial isn't really enough time to do a proof of concept to see if Keygen would work for me. I know most companies will extend your free trial if you ask nicely, but ugh. I should have a free option available until I get to Prod.

<comment><AUTHOR> If you want an extended trial, I'm all for hooking you up with one that lasts until you launch (or whatever is needed for you). Though not something I want to do by default at the moment, simply due to the fact that free users usually require more support than paid users.

</comment></comment></comment></comment></comment><comment><USER5> The hard part with software licensing is making it resistant to cracking. This doesn't attempt to make things difficult, it would take under an hour to crack any app that uses this for licensing.

I suppose the target for this service are app developers who don't have their own website / server infrastructure. It seems trivial to issue your own license tokens and have clients check in with your website for an OK / BAD response.

<comment><USER6> >>> The hard part with software licensing is making it resistant to cracking.

You couldn't be further from the truth.

No one is gonna crack your software. There isn't 1% of your customers who could disassemble your software. There isn't 0.1% who could make a crack. Enterprise users don't even run cracked software.

Software licensing is about making as little work as possible to block non paying users. Time spent developing useless counter measures is time not spent selling and developing your product.

A good old key file with only the last payment date will do just fine. Send everyone who didn't pay since last year to your payment page :D

<comment><USER7> Someone would just NOP out the check and publish a cracked version on the internet, so everyone who can't crack it will be able to download the cracked version.

<comment><USER8> I think the point is that the only way to make your software genuinely resistant to cracking is an onerous DRM scheme like you see with games or obscure engineering software. Stuff that takes a lot of work to implement (or $$ to license) and more importantly actively annoys _legitimate_ users.

Anything short of that is probably going to be cracked for software that is even modestly popular. I think setting the bar just high enough to keep grandma from breaking it is pretty much just as good as something more sophisticated.

The psychology of it is, you can't stop nefarious users ultimately. But you need something that at least makes honest users take some extra action specifically to crack your software. Making them feel like they are pirating something will stop most honest users.

<comment><USER9> I think it comes down to what is easier, faster and most convenient to do -- download a cracked copy from a bittorrent site or jump through the hurdles of ordering a legitimate copy.

There have been many companies/independent developers who have used the "warez scene" to intentionally "leak" and distribute their software. As the software gains traction they make it easy for the user to buy a license so they can update the software from within the software. Otherwise the user has to wait until a new cracked copy gets released.

You'll never ever stop anyone from cracking your software but convenience does come at a price.

<comment><USER10> Except the legitimate distribution channel doesn't have to be _easier_ than the illegitimate one, it just has to be _easy enough_. There are plenty of incentives to use the legitimate channel, all you have to do is not make it too annoying.

</comment></comment></comment></comment></comment></comment><comment><USER11> Not to sound too negative, but NOPing out the invocation bypasses the licensing. At least in the native version. I like approaches where parts of the app are downloaded after licensing went through and the license key is actually a public key.

But maybe I'm missing the point?

<comment> X-Istence NOP'ing out the invocation has always been an issue. There are a variety of frameworks for the Mac that make license keys using public/private key pairs, and a simple change to the ASM to return early and report success is easy enough to do.

There is:

[https://github.com/glebd/cocoafob](https://github.com/glebd/cocoafob)

For example, there is one other one that I can't remember the name for off the top of my head.

<comment><USER12> The respectable frameworks I've seen also offer obsfucation/virtualization to deter tampering. Thats the harder and more critical part.

</comment></comment></comment><comment><USER13> I'm not sure how this holds up to the promise of "Sell outside the app store and pocket that extra 30%."

If you're selling iOS apps, you have no choice but the app store. You could try giving the app away for free on the iOS App Store and shunting people to a website to purchase the license after a certain amount of time, but I'm certain that breaks Apple's rules. Same goes for the Mac App Store.

You'd get shut down pretty quickly if you ever managed to squeak through the approval process.

Based on the code examples provided on the website, I don't see any of the most popular languages use for apps that go in an "app store" of any kind (Obj-C, Swift, Java)

I'm sure intent is not to be misleading, but I don't see how this can recoup a 30% app store take. Could you explain that in more detail, since you are replying in this thread?

<comment><USER14> To be fair, this is exactly how I use Netflix. I have a free app that I pay to use completely outside the app store. Not sure of the actual rules, but it's definitely possible.

<comment><USER15> It's fine to have out of band payments for subscription services on the App Store, so long as it's possible to subscribe to the service through an in app purchase and you don't advertise paying outside the app within the app.

Apple takes these matters pretty seriously, it is their bottom line after all. I once had an app get rejected by App Review because it was possible to buy a subscription from the WebView that opened the Forgot Password page.

<comment><USER13> It's not Apple's bottom line. Not in any way.

But they will shut down any out-of-band payment options. There is nothing even remotely fine about this.

<comment><AUTHOR> Correct. In my experience in talking with Apple/Google, that is most definitely _not_ a good idea and could get your developer license revoked. Maybe someday they'll open up the walled garden (lmao ok), but for now devs should stick to only selling desktop apps independently.

</comment></comment></comment></comment></comment><comment><USER16> I had this exact same idea but never executed on it. I like everything about this, implementation to web design. I hope you slay with this.

</comment><comment><USER17> Way too expensive in respect to users...at $.20/user/year...for 100k users, it's $20k/year. This vs. most installers that actually pay you...

<comment><AUTHOR> I don't currently offer usage-based plans, so not sure where that came from. I offer $24, $49 and $99/mo plans with custom plans offered to companies who have more than 5,000 active users (which is _a lot_ if you've ever launched a product before). Either way, at the lowest plan you're spending $288/yr, which is _far_ less than the average cost it would take to build a homegrown licensing solution, assuming you don't value your time at $0 (which developers tend to do when opting to build things themselves--Mike Perham of Sidekiq has a good tidbit on this[0]).

[0]: [https://github.com/mperham/sidekiq/wiki/Build-vs- Buy](https://github.com/mperham/sidekiq/wiki/Build-vs-Buy)

</comment></comment><comment><USER18> Previous discussion: [https://news.ycombinator.com/item?id=12870031](https://news.ycombinator.com/item?id=12870031)

<comment><AUTHOR> Founder here--I definitely recommend reading through that thread if you have time. That was back whenever this was simply an idea in my head (scratching my own itch) and I created a landing page for it to gauge interest. I admit that I didn't handle myself/answer questions as well as I could have in that thread (confusing cracking w/ key generation was embarrassing--and I do know the difference--but nerves got the best of me a few times in that thread so I didn't read things as well as I should have). I honestly didn't expect to hit the front page so was a little thrown off/overly excited because of it. ;P

Anyways, I launched Keygen last month after a 3-month beta and am stoked to get some more feedback from HN now that the product is _real_. I put a considerable amount of work into the documentation (and the design), so be sure to look around!

<comment><USER18> I will definitely check it out - I had Keygen bookmarked from that thread back then so I could play with it once it launched.

</comment></comment></comment><comment><USER19> My company used to use a library which had an enforced license. It was a major headache -- and it was the simplest possible kind of license, where they sent us an encrypted key file and we placed it on each server.

As soon as we could, we negotiated an end to that. Instead, they ask us each year how many licenses we need and send us a bill. They have an audit right, but they've never used it. It won't be a problem if they do, because we are fully compliant.

</comment><comment><USER20> This doesn't look like a product I'd use myself (web dev) - but I'm sure a lot of native developers will find it useful.

I really like the landing page - particularly the section with examples in different programming languages. I'd maybe suggest a little more copy on uptime-related matters. I see you have a status page, maybe link to this a little more prominently?

Good luck!

</comment><comment><USER21> I would charge per successful activation.

<comment><AUTHOR> I was on the fence about this for awhile. So what about the customers who use Keygen for feature-licensing? They would pay more while the customer who uses Keygen to license their entire product pays _way_ less--not exactly fair. For the time being, I think the flat-monthly-fee works. Though, I'm all for discussing a custom plan if that doesn't work for you, as mentioned on the pricing page. :)

<comment><USER21> No reason not to offer both models. Pay per use is generally higher than a subscription which explains the benefit of the subscription to the customer. As the provider you sacrifice some overall peak for guaranteed revenue.

</comment></comment></comment><comment><USER22> The developer(s) of this may really want to rethink the name.

Not only is it pretty un-googleable due to other, older results likely taking priority, it's also likely that a potential customer accidentally lands on a website full of malvertising. That aside, the word "keygen" is probably morally negative to many people.

The technology looks fascinating, however.

<comment><AUTHOR> Founder here--appreciate the feedback! The name is both tongue-and-cheek as well as an attempt to redeem the word. Years from now, you might search "keygen for X" and be shown pages of results related to this product instead of pirated software. And since the product is primarily geared towards developers, I think it works (and also invokes a little curiosity). Also, I haven't seen any SEO issues thus far, especially since I'm not really trying to rank for searches that contain 'keygen' right now.

<comment><USER23> > Years from now, you might search "keygen for X" and be shown pages of > results related to this product instead of pirated software.

Care to bet money on that? That's rather shocking hubris.

<comment><USER9> Actually, this gave me an idea. The founder of keygen.sh can generate landing pages advertising cracks/serials/keygens for download on tons and tons of different software.

When the search engines index these landing pages, whoever has an alert setup to monitor their products will get a notification about your website. Let google automate your marketing.

The other benefit is that you can use your logs as a sales tool when pitching your product to developers. "Hey Developer, 38 people came to <<url>> today looking for a crack/serial to your <<software name>>." Hopefully those developers will then visit your page for more information which turns into a sale.

<comment><USER24> This is brilliant in principle.

However, does it run afoul of acceptable SEO practices? Namely those covering autogenerated content.

<comment><USER9> Thank you. It would come down to execution.

One way to solve that is to track "scene releases" [0] and download the releases for software you think could become keygen.sh customers. Then reverse engineer the cracks or patches and document the process. Next, show how keygen.sh would have prevented this cracking technique. Now you have original content that will help you sell keygen.sh.

A byproduct of this will continuously give you ideas on how to improve keygen.sh.

It is very important to note that keygen.sh or any licensing platform will ever be uncrackable but if you can delay the time software gets cracked by a week or two then it could possibly translate into more sales for the keygen.sh customer.

At the end of the day, it is on the keygen.sh customer to sell their product and keygen.sh to delay the release of a crack for it.

[0] [https://torrentfreak.com/27-years-of-warez-scene-release- inf...](https://torrentfreak.com/27-years-of-warez-scene-release-info-leaked- in-giant-database/)

<comment><USER24> > _Then reverse engineer the cracks or patches and document the process._

Sounds prohibitively work intensive in the extreme.

<comment><USER9> There could be ways to automate the process [0] with machine learning [1].

[0] [https://www.cuckoosandbox.org/](https://www.cuckoosandbox.org/)

[1] [http://www.covert.io/research- papers/security/Automatic%20An...](http://www.covert.io/research- papers/security/Automatic%20Analysis%20of%20Malware%20Behavior%20using%20Machine%20Learning.pdf)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER25> Offline mode still not available?

<comment><AUTHOR> Since my initial product is an API, it's going to have limited support simply due to the nature of the product. You can set up licenses to require periodic check-ins (e.g. phone check-ins or something similar via an online form may work), but other than that, Keygen needs a periodic internet connection. How would you envision Keygen working offline?

<comment><USER26> Not OP, but something like like:

1\. Receive code in an email 2\. Enter code in app X to license 3\. Use app X

So maybe a scenario you purposely are not supporting

<comment><AUTHOR> Definitely a popular choice. There are open source libararies for public/private key license validation (CocoaFob is a popular one for macOS), and I don't really think this aligns with the current product i.e. the API. Maybe in the future I can expand if there's demand for it, but I'm not sure what I could offer that the open source community can't already offer. :)

<comment><USER27> > I'm not sure what I could offer that the open source community can't already > offer.

Support! Offering support when things go wrong is huge.

</comment></comment></comment></comment></comment><comment><USER28> I'm not an English major, but in the FAQ section under "Does Keygen prevent cracking?" you wrote "requring" instead of "requiring".

<comment><AUTHOR> Thanks! That's now fixed.

</comment></comment><comment><USER29> Did you make the website? I've thought and tried to make a similar one (angled style) but never gotten the design nice. Made it yourself or got someone (who?).

<comment><AUTHOR> Yes, I made the website. Feel free to dissect it and see how it's built. :)

</comment></comment><comment><USER30> I'm curious about the tech stack you are using for this service.

<comment><AUTHOR> Marketing site is static HTML/JS, dashboard app is in Ember, and the API itself is written in Rails w/ PostgreSQL, Sidekiq and Puma, most notably.

</comment></comment><comment><USER31> What language did you use for the backend?

</comment><comment><USER32> Love the website.</comment>


Text Understanding from Scratch Using Temporal Convolutional Networks - <AUTHOR> http://arxiv.org/abs/1502.01710

<comment><USER2> Astonishing? 3% better than bag of words after n days training on GPU's? I have misunderstood because I am not astonished.

<comment><USER3> It's at the lower level character rather than word level which is unique. The convolutional net also doesn't need to be told what each word's role is, but rather learns that feature itself.

<comment><USER4> > It's at the lower level character rather than word level which is unique.

No, it is not unique. We have, among other things seen character-level language models (Sutskever et al. 2011) [1] and character-level part-of-speech tagging (Santos et al. 2014) [2]. What is unique are the convolutional aspects.

I am still for from convinced. The baselines are really weak sauce, sure, new datasets and wanting to use the same baseline for all tasks, but a Bag-of- Words model is pretty much the weakest baseline there is for Natural Language Processing tasks. Also, using the 5,000 most frequent words will hurt the BoW model for plenty of tasks since it will cover mostly function words rather than rare nouns due to the Zipfian nature of language. It is pretty much common knowledge that these rare nouns can be far more useful than function words for tasks such as topic classification.

[1]: [http://www.cs.utoronto.ca/~ilya/pubs/2011/LANG- RNN.pdf](http://www.cs.utoronto.ca/~ilya/pubs/2011/LANG-RNN.pdf)

[2]: [http://jmlr.org/proceedings/papers/v32/santos14.pdf](http://jmlr.org/proceedings/papers/v32/santos14.pdf)

<comment><USER5> Not an expert here but could the fact that character based techniques work at all indicate that linguistics inspired ML may be superfluous? The authors here argued that the biological based consideration should point to phoneme based training. As the Chinese romanization corresponds tightly to phonemes (no irregular pronunciations as in English) the approach worked well with Chinese pinyin even though the native Chinese written system is totally different with thousands of characters.

What is interesting to me is that if ConvNet works well both for language and for visual processing that may well be because the human circuitry for processing both are very similar, while formalized grammar is at a different level (like logic) above speech as opposed to the linguistic view of a universal grammar undergirding speech.

</comment></comment></comment></comment><comment><USER6> What surprises me is that (BOW model + logistic regression) works just fine in most of the benchmarks(except for Amazon Review), interesting paper anyway. Could it be that because the vocabulary for BOW is limited to 5000, a lot of information is lost?

<comment><USER7> Fascinating paper but the benchmarks seem incredibly weak. 5000 features for a bag of words model is nothing,these models normally have tens or hundreds of thousands of features.

<comment><USER8> True, it comparisons do a lot better with more features.

This paper looks to just show the major winning aspect of using CovNets as they do not need many features as the deep net learns its own representations of the training data. It more to show CovNets work on more then just vision.

But architeching the pooling layers IS adding complex to the simple input feature set. Therefore the comparison should be of only state of the art ML.

</comment></comment></comment><comment><USER9> Open questions:

* Compare to RNNs with character level input.

* Compare to dedicated methods of sentiment analysis and topic categorization.

</comment><comment><USER10> This paper is pretty fascinating, thanks! Having trouble visualizing it but getting there..</comment>


Feld Thoughts: It's Better to Fail Quickly - <AUTHOR> http://www.feld.com/blog/archives/2008/02/its_better_to_f.html <comment><USER2> Not much content. The posts it points to and the one it points to after that have more.

[http://www.theconvergingnetwork.com/2008/02/fail-early- fail....](http://www.theconvergingnetwork.com/2008/02/fail-early-fail.html) <http://www.sethlevine.com/blog/archives/2008/02/failure.php></comment>


Nvidia GeForce RTX 3080, RTX 3070 Leaked Specs: Up to 20GB GDDR6 RAM - <AUTHOR> https://www.tweaktown.com/news/70053/nvidia-geforce-rtx-3080-3070-leaked-specs-up-20gb-gddr6-ram/index.html <comment> Brave-Steak At this point all I care about is the price. The price of GPUs has ballooned in an insane way recently and it's impossible to get a decent deal that's significantly faster than what I have now (and I haven't upgraded in years). The used market seems to have been decimated, with even last gen cards going for crazy high prices. I suspect the 30x0 line will be even more expensive than the current one, and I hate it.

<comment><USER2> Yeah, I really don't want to pay more than around $120 for a decent GPU, which gives me a used gtx 1060 or 780ti. Both of those play new games at high settings on 1440p, what more could you want? Shelling out $700 for a GPU to get good VR or RTX tech demos just isn't worth it.

<comment><USER3> It is if you use a high refresh rate. My 1080ti is barely adequate for 1440p165... and even at that I'm usually turning setting down to average 100–120fps.

</comment></comment></comment><comment><USER4> I worked in a life assurance company in 1996. The networked shared hard drive that the entire 15-ish person IT department worked from was 4GB. We considered that to be a decent size, and rarely ran into space issues. I keep wondering where this ends up - are we going to have 4TB graphics cards and 1PB hard drives in 2040?

<comment><USER5> There are two economic limits that I see.

1\. You're only going to see so much details, so making bigger textures will not make much sense soon. We're already at the level where the art design / mapping / movement / realistic lighting could improve the situation much more than extra resolution. Games can already run at up to 4k and virtually nobody even has hardware for it.

2\. There's only so much bandwidth on the storage - graphics memory and graphics memory - GPU lines. If you can't realistically process the textures/geometry you want to display, there's no point making it.

1PB drives will come though for long term storage. We already have petabytes of data being processed in some companies. It's just a question of $/B ratio, whether the R/W speed is reasonable for that size, and how reliable do you want that storage to be.

<comment><USER6> For gaming it think it's somewhat true that we may reach a visual limit at some point.

However for other applications it's not the same thing. I work in medical 3D imaging - we are constantly memory constrained.

</comment></comment></comment><comment><USER7> But can it play Control with full Ray Tracing on Ultra detail in 4k at 60 FPS?

If yes, I'm getting one.

<comment><USER8> without internal upscaling maybe

</comment></comment><comment><USER9> Is there really a need for 20gb of ram in a GPU?

<comment><USER10> Machine learning, data scientist and real time professional simulations.

You need to have your models in video ram to be able to _" play"_ with them in real time so with 20Gigs they can access larger models.

<comment><USER11> >Machine learning, data scientist and real time professional simulations.

With photogrammetry (my field) we need to process anywhere between 1GB and 500GB of DSLR photos in one project and triangulate points between all these photos. Lots of RAM helps. Lots of VRAM helps JUST as much.

Also crypto mining takes advantage of large VRAM too.

</comment></comment></comment><comment><USER12> The big news to me is that the top card features a 320 bit memory bus, which should offer much better memory bandwidth than the previous generation (256 bits). Assuming a linear scaling, we should see a 1.25 improvement compared to the previous generation.

<comment><USER13> >The big news to me is that the top card features a 320 bit memory bus, which should offer much better memory bandwidth than the previous generation (256 bits).

RTX 2080 is 352 bits, and RTX Titan is 384. Nvidia has always had high bit rate memory bus. The one that had 256 bit was AMD Radeon GDDR. Arguably bit bandwidth is meaningless without looking at actual memory type, or the total bandwidth from memory.

<comment><USER14> Actually the RTX 2080 has only 256bit. [https://www.techpowerup.com/gpu- specs/geforce-rtx-2080.c3224](https://www.techpowerup.com/gpu-specs/geforce- rtx-2080.c3224)

The 2080 ti has 352bit. [https://www.techpowerup.com/gpu-specs/geforce- rtx-2080-ti.c3...](https://www.techpowerup.com/gpu-specs/geforce- rtx-2080-ti.c3305)

Interestingly, Nvidia decided to use a bigger die (relative to other dies in the family) for the 3080 than for the 2080. TU104 (2080) vs GA103 (3080). Probably to prepare for big Navi.

</comment></comment></comment><comment><USER15> 4k@144fps would be a dream, but even with my 2080 Ti, I can't run AAA titles at 1920x1024@144fps without severely cutting down on graphics settings.

I doubt that the 3xxx series will be strong enough to support consistent 4k144fps.

<comment><USER16> Maybe it's the CPU that's throttling?

I cannot believe that 2080TI cannot run at fullHD@144fps. I have 2080TI and I get constant AAA 4k@60fps.

<comment><USER17> I'm not informed on the PCI specs but I bet the bottleneck is simply bandwidth (or CPU), the GPU is capable enough.

I have a 2080ti as an Thunderbolt 3 eGPU, which has an even smaller bandwidth than PCI Express so the effect is accentuated. I lose about 10% perf on 4K compared to a desktop computer, and 40% at 1080p. I don't recall the exact numbers but a benchmark would do 80fps on 4K and 120fps on 1080p, even though it's 1/4th the amount of pixels. This is because most of the time is spent transferring data on the bus.</comment></comment></comment>


Make the best of bad reviews by leveraging consumer empathy - <AUTHOR> https://phys.org/news/2020-08-bad-leveraging-consumer-empathy.html <comment><USER2> "Leveraging consumer empathy"?

This is actually just listening to your customers, and caring about them enough to respond to them thoughtfully. If you get a bad review, you still respond thoughtfully.

Why do we have to make it into some buzzword salad term for some "strategy" powered by pseudo-academic research nonsense? Anyone that has actually ran a business could verify it.

<comment><USER3> The paper is not about listening to your customers at all, it is suggesting ways to make negative reviews seem ridiculous so that negative reviews actually form a positive impression.

I think the takeaway is to make your critics look like hyperbolic dimwits by being nice and using real names. It not obvious this is the best rebuttal strategy. I see companies often get hyper factual and cold with responses to negative reviews. When responding to a negative review, you are writing not to that person, but rather to the audience that reads reviews.

<comment><USER2> Right, which in both disingenuous and impersonal. You could just read reviews, personally answering them, which I think would be the best policy. But this seems like a way to game it all instead of actually just being authentic. I guess if you can't package it into a template it's too much work.

</comment></comment></comment><comment><USER4> One strategy that I employed after getting a nonsensical 2 star review was having two friends write two 1 star review with honest positive comments. People sorting by most critical review will still see positive comments and assume the low ratings is because of accidental clicks. Is it moral? I don't know, but I didn't ask to be included on a review site and be affected by the words of strangers either.

<comment><USER5> > Is it moral?

No. We don't live in a moral world, though.

</comment></comment><comment><USER6> I got a feeling that unfair negative reviews work for reason different than "empathy". Seeing a 1-star review, it is safe to assume the person writing it was very angry and tried to make the review as bad as possible. Which means that things _not_ mentioned were quite good... well, good enough to not stand out.

That is, when I see in the review that unreasonable expectations of some guy were not met, I kinda assume that reasonable expectations were actually met, and that busyness / service is worth checking.

</comment><comment><USER7> To put it in very non-scientific terms: people love an underdog. If your business is flourishing and someone leaves a negative review, eh, you're doing good. But if I see someone do a 3-star for some corner bodega that just happens to be one that I visit - oh, I must right this wrong with a 5-star review.

It's impossible for my instincts not to kick in and push me into rooting for the 'little guy' or someone who's been unfairly wronged. (Whether they were wronged fairly or unfairly is a matter my instincts leave for later.)

</comment><comment><USER8> Anecdotal data, but for some of our products we sell, only such "unfair reviews" ever received comments from other shoppers (either pointing out the mistake, or straightforward ridiculing of the reviewer). I have a mixed opinion on it in regards how it affects customers considering our products, since one to have to make an effort to go beyond stars-value. But on the personal level it certainly makes me feel better (almost as much as handwritten thank you cards =))

</comment><comment><USER9> This is me. When I stay at cheap hotels that have bogus reviews like "small room", I'm very inclined to leave more positive and realistic reviews, and even to be more understanding of them. Usually this leads to being treated better and it's a win on both sides.

</comment><comment> r-w "No shit!" —everyone</comment>


Telescope Making [video] - <AUTHOR> https://www.youtube.com/watch?v=ZYpjlQpsANY

<comment><USER2> This is something that I am really passionate about.

I have a farm in the middle of nowhere in Kentucky, that I've put a glass studio in part of the unfinished side of my pole barn (I use the other side for electronics assembly, testing, and debugging) that I use for casting the blanks for grinding the mirrors.

I use a High Def projector and a 12MP DSLR camera to identify parts of the mirror that need to be ground down more and then ultimately verify that the curvature of the glass is correct.

There's an observatory about 200 miles away near Columbus, Ohio that can mirrorize the glass (it's a 3 day process), and I usually donate my last telescope to the observatory for letting me use their equipment (and I bring my own supplies).

I've attempted to make my own lenses, but, there's just too much room for error in that process.

Once I have the mirrors and lenses correctly, I've been playing around with NEMA-34 stepper motors and kflop/kstep motor controllers to power my polar object tracking -- there are usually two buttons on the telescope that I use -- one for releasing the steppers and the other for energizing and starting to track -- along with encoders so that I can get an approximation of the night sky.

I love living in the middle of nowhere, in Kentucky for the stars, and my ability to do unique farm tech (temperature and water quality sensors using raspberry pi's and mesh networking, GPS and yield sensors on my tractors, solar powered wifi repeaters to my 'city home' for fast internet).</comment>


The best teacher I never had (2016) - happy-go-lucky https://www.gatesnotes.com/Education/The-Best-Teacher-I-Never-Had <comment><AUTHOR> I feel like I'm being very negative today, but it feels like this post gets more attention because Bill Gates has become somewhat of a celebrity and he wrote it. I'm not saying I dislike Gates, I'm not saying his celebrity status hasn't been earned, etc. Just saying the content itself is kind of...unremarkable? I feel like every friend I have from highschool absolutely loves Feynman, we all read and discussed his "Six Easy Pieces", he's regularly the subject of submissions and comments on HN, etc. Like, Feynman isn't some hidden gem - thankfully many have come to know and love his work.

Apologize if I'm being unreasonably negative, but something about this post and it being top on HN kind of bothers me (maybe because it feels a little bit like hero worship?). Like, are we marvelling that Bill Gates' admiration of Feynman? Is this the best tribute to Feynman ever written? There's so much written about Feynman on/offline.

<comment><USER2> Honestly, I wholeheartedly agree with you. His diction seems to be uninspiring.

<comment><USER3> "Bill would be a broader guy if he had dropped acid once or gone off to an ashram when he was younger"

\-- Steve Jobs

<comment><USER4> Which is funny, since I consider Gates to be the broader of the two. Jobs's talent wasn't really breadth, it was intense, singular focus, and ability to distort reality around him. Gates doesn't have that, but breadth-wise he has it more than covered IMO.

</comment></comment></comment></comment><comment><USER5> Putting Feynman aside, this is how -all- teachers should be. I had maybe two in all my years of public school that came anywhere close. It's sad that teaching is not a highly paid and prestigious job. And it's a two way street, most of the teachers now are the same awful ones I had, latching on to statements like mine, yet demanding more money. It's a race to the bottom, and a detriment to our country.

<comment><USER6> In the county I live in you'll actually make more as a door dasher than a public school substitute teacher.

</comment></comment><comment><USER7> Discussed at the time: [https://news.ycombinator.com/item?id=10992651](https://news.ycombinator.com/item?id=10992651)

</comment><comment><USER8> Here's what actually happened. Bill Gates acquired the rights and made them unavailable to anyone who wasn't using Microsoft Silverlight. I was sitting in a public library and wasn't able to download these videos to watch later, while I was no longer at the library, because of Silverlight.

</comment><comment><USER9> [https://thebaffler.com/outbursts/surely-youre-a-creep-mr- fey...](https://thebaffler.com/outbursts/surely-youre-a-creep-mr-feynman- mcneill)

</comment><comment><USER10> This should have (2016) in the title. 'happy-go-lucky, you can probably still change it given the recency of posting.

</comment><comment><USER11> Feynman lectures are the SICP of physics. And I don't mean that as a compliment.

People say these are the best resources on the respective subjects, however the people who say this have likely not read many other books, especially modern books.

Bill Gates is kinda cool I guess but I'm not going to take physics advice from him.

<comment><USER12> I'm surprised at the negativity in this reply. Can you offer some more explanation as to what you mean by the non-compliment SICP ref?

<comment><USER11> I mean that most people who talk about SICP and Feynman lectures don't read too ma y other books on the topic. Saying you like either is Ike saying you like Beatles or Top 40.

<comment><USER13> But SICP and Feynman are highly nonstandard ways to be introduced to the topics. That's why they're unusual.

</comment></comment></comment></comment><comment><USER14> "...While helping develop the atomic bomb at Los Alamos, he entertained himself by figuring out how to break into the safes that contained top-secret research..."

I did not know he helped develop the atomic bomb. That really nice to know that he helped the States obliterate thousands of people who did not need to die afterall.

<comment><USER15> Many of Feynman's capers and eccentricities are covered in the book "Surely You're Joking, Mr. Feynman!" It's a collection of his essays. I've actually noticed the title pop up a few times before in the comments here in HN. It's a fun read.</comment></comment>


Ask HN: Good explanation of how the Internet works? - <AUTHOR> Is there a good tutorial somewhere for internet scale networking. Backbone networks, peering. Something geared towards software engineers who want to know more about that stuff? <comment><USER2> "Internet Routing Architectures" from Cisco Press is not a bad start, if slightly dated.

More practically, study the data kept at peeringdb.com, bgp.he.net, bgp4.as, radb.net, and ripe.net for concrete examples of what details are important.

Peerings may be unilateral (someone pays), bilateral (no one pays), or multilateral (everyone pays a little to exchange routes on a single route server). Most companies rely on unilateral peerings to gain direct access to the Googles and Microsofts of the world, and these tend to have certain requirements: either you must pay money, or your autonomous system (AS) must achieve some daily average of traffic bound for the peer AS. PeeringDB is a good resource for discovering these requirements before contacting potential peers.

I hope this helps. Best of luck to you in the travails of working with highly distributed, stateful systems you can't touch; it's a real shit show out here.

<comment><AUTHOR> Awesome. Thanks.

</comment></comment><comment><USER3> Would love to speak to you about where your understanding is. Share what I know and see if we can add to each other's understanding. Hit me up on hangout, email@example.com</comment>


Pacific Standard Is Shutting Down As Primary Funder Suddenly Stopped Funding - <AUTHOR> https://twitter.com/nbj914/status/1159185980902871041 <comment><USER2> Additional context here: [https://www.niemanlab.org/2019/08/pacific-standard- is-shutti...](https://www.niemanlab.org/2019/08/pacific-standard-is-shutting- down-cut-off-from-its-major-foundation-funder/)</comment>


Imperial Covid model could be the largest software mistake of all time - <AUTHOR> https://www.telegraph.co.uk/technology/2020/05/16/neil-fergusons-imperial-model-could-devastating-software-mistake/ <comment><USER2> > Try unravelling that tangled, buggy mess, which looks more like a bowl of > angel hair pasta than a finely tuned piece of programming. Industry best > practice would have 500 separate files instead. In our commercial reality, > we would fire anyone for developing code like this and any business that > relied on it to produce software for sale would likely go bust.

Having the code in more or fewer files is orthogonal to how tangled the code is. Files are just containers for classes/functions. In most cases it makes no difference to the architecture of a system over how many files the code is split.

> The approach ignores widely accepted computer science principles known as > "separation of concerns", which date back to the early 70s and are essential > to the design and architecture of successful software systems. The > principles guard against what developers call CACE: Changing Anything > Changes Everything.

Again, one doesn't separate concerns over files. You can have code split over 500 files and still have a very nasty case of CACE.

> Without this separation, it is impossible to carry out rigorous testing of > individual parts to ensure full working order of the whole. Testing allows > for guarantees. It is what you do on a conveyer belt in a car factory. Each > and every component is tested for integrity in order to pass strict quality > controls.

At the lower levels, one tests functions or classes, not files, so I don't get the argument he is trying to make that the code is not split in enough files.

<comment><USER3> I agree that some of these distinctions are correlative, not causative, but I think the number of files argument is valid for one reason: navigation. Files are effectively pointers to ranges within a code base. Without them, you're left jumping through a huge codebase by searching or scrolling.

<comment><USER2> Even in languages with one class/file convention I find navigating using the IDE's symbol search functionality preferable to navigating using files – especially in huge codebases. YMMV.

<comment><USER3> I don't disagree _if_ the language is OO such that classes have reasonable functionality contained within them. But searching through many many functions because very disorienting. Just my $0.02 of course

</comment></comment></comment></comment><comment><USER4> I'm not a subscriber and only read the intro preview. That's enough to mention a few comments, which perhaps are explained more in-depth later?

> "helped persuade the UK and other countries to bring in draconian lockdowns"

Sure, but other countries too have their own models. If something is one of, say, 20 different models from 20 different organizations, all in reasonable agreement, then isn't "help persuade" ... a good thing?

Even if it's crappy looking code on the surface?

> "could go down in history as the most devastating software mistake of all > time, in terms of economic costs and lives lost."

How are "lives lost" measured?

And, wouldn't the Reinhart-Rogoff spreadsheet error also be significant, in how it supported "austerity" policies around the world?

In the 5-whys analysis, a follow-up question might be, why does the UK government depend on academic code for this, rather than having their own full-time/career public health professionals and software developers working on it?

My ill-informed belief is that it's because austerity efforts caused widespread cutbacks in the government's ability to plan for these sorts of contingencies. If so, the Reinhart-Rogoff spreadsheet error is a more devastating software mistake.

</comment><comment><USER5> > Imperial's model appears to be based on a programming language called > Fortran, which was old news 20 years ago and, guess what, was the code used > for Mariner 1.

So the model is bad because Fortran is old/ducks and an otherwise unrelated Project using Fortran failed. Boo Fortran, boo! You're old news!

</comment><comment><USER6> The size of the file is a red herring. Has the work been done to analyze and test the subroutines? How many lines are intricate logic, and how many are embedded data? How prevalent are references to global variables across subroutines? Are the global variables used as constants? How much is new code, and how much is code that has produced robust results for years?

</comment><comment><USER7> It seems to be behind an access-wall. From the comments it seems the points are about the code and not about the model itself. Is that right?

<comment><USER2> Yes, they don't discuss the model itself. Perhaps unsurprisingly, given that their credentials are in software:

> First though, a few words on our credentials. I am David Richards, founder > and chief executive of WANdisco, a global leader in Big Data software that > is jointly headquartered in Silicon Valley and Sheffield. My co-author is Dr > Konstantin 'Cos' Boudnik, vice-president of architecture at WANdisco, author > of 17 US patents in distributed computing and a veteran developer of the > Apache Hadoop framework that allows computers to solve problems using vast > amounts of data.</comment></comment>


Do You Suffer From Decision Fatigue? - <AUTHOR> https://www.nytimes.com/2011/08/21/magazine/do-you-suffer-from-decision-fatigue.html?pagewanted=all

<comment><USER2> I really enjoyed this article. When I've been in a role where I had to make tons of decisions I would regularly visit the sandwich bar in the cafe and simply ask the person behind the counter to "make me a sandwich. I don't care what you put on it, I don't want to decide anything else today."

This probably just made me feel better.

I firmly believe in the maxim: 90% of the decisions you make don't matter so spend as little time on those as possible; focus on the 10% that do.</comment>


Tell HN: Goo.gle's Certificate Has Expired - <AUTHOR> google.com uses certificates issued by GlobalSign. Whereas, goo.gle uses Let's Encrypt. Is there a reason for using different providers?<p>Just curious, as I run sitefitnesshq.com and have seen a lot of sites being crippled by expired certificates. <comment><USER2> Because goo.gle is run by bit.ly?

host goo.gle goo.gle has address 18.104.22.168 goo.gle has address 22.214.171.124

host 184.108.40.206 220.127.116.11.in-addr.arpa domain name pointer cname.bitly.com.</comment>


Documentation – Your Secret Weapon - <AUTHOR> https://www.anup.io/2019/08/05/documentation-your-secret-weapon/ <comment><USER2> I wrote about this a while back, relating my experiences of spending months documenting an SRE operations team [1].

Since then I've learned that there's an optimum time to document, and it's not early in the project. That led me to look at the Cynefin framework [2], which prods you to classify where you are on the maturity scale of an activity, which in turn gives you a clearer idea of what to do next.

The corollary (and I've experienced this a few times since) is that it's a waste of time to document early in the maturity cycle, as much changes; too fast for your docs to keep pace. It's like imposing an enterprise HR function on a small startup - incongruous and likely to lead to friction.

Picking the right time to start taking documentation seriously is an interesting problem.

[1] [https://zwischenzugs.com/2017/04/04/things-i-learned- managin...](https://zwischenzugs.com/2017/04/04/things-i-learned-managing- site-reliability-for-some-of-the-worlds-busiest-gambling-sites/)

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

</comment><comment><USER3> I wait to write full docs, but while programming I write standard doc comments at the package and function level for _every_ package and function I write. What I've learned working at small companies, FAANG, and on my own is that the cost to read code is high, and internal bias that our code is understandable is incredibly powerful. Writing my intentions in English is a small piece of up front overhead I have made mandatory, because I wish _other_ people would have made it mandatory when I'm trying to jump into a code base without docs.

I've also gotten better at writing comments, and write them faster _because_ I have so much practice. If you don't do something that often, you're bound to suck at it, and that's true of people who think they're going to write the world's best comments and documentation as soon as their project is settled. The truth is that most programmers are terrible at comments because they treat them with such disdain and don't take the time to get better at it just as they got better at writing code.

</comment><comment><USER4> Documentation often turns into wasted effort. Either because it is not very good or because it is never read. Another thing that can easily happen is that the documentation gets scattered in various places and it is difficult to know whether there useful information pertaining to the problem at hand and if so where it would be.

Good documentation needs a judgement about what is important to tell people and how to best present that information. This is not an easy thing to do and is never going to happen without some dedication. Certainly if the developer actually does not want to write anything but is told to 'just write some comments' it is not going to lead to anything helpful.

So, either management has to insist on documentation and actually check that what is written is helpful and is in some sort of searchable structure or it is just a waste of everybody's time.

<comment><USER5> Sometimes, the mere process of writing documentation (or a specification) can lead the author to a better understanding and helps uncover problems. Writing, in this case, is an aid to thinking. It may not be the best-case scenario, but it's not a total waste of time, either.

<comment><USER6> Absolutely. If nothing else, it helps the author realize what he doesn't know. I know of no better way to understand how well I understand something, than to try to document it.

</comment></comment></comment><comment><USER7> I worked with a team of 6 remote contractors for a year at my last company. They suffered greatly from a lack of documentation for our project. As it turned out, most people were using saved emails in Outlook as their own personal documentation store. Emails from years ago might describe how to set up a dev environment or deploy code. This left me with an easy solution: I started pasting emails into OneNote and touting them as official documentation.

There was low buy-in from other developers to contribute because many of them already had emails saved. After posting all of my own emails in OneNote, other developers did the same. Some even updated the documents with later threads that less of the organization was included on. If something was incorrect, it was better to have it written down and correct it in text than figure it out and spread the knowledge via word of mouth. It was also better to have poor email documentation than no documentation at all. Quality quickly improved on the poorer pages and the habits of some developers who were referring to old emails for documentation changed when they learned that new emails described better ways of doing things.

<comment><USER8> > Emails from years ago might describe how to set up a dev environment or > deploy code

In some kind of bizarro world that might be encapsulated in a script in version control of some kind instead of a word document in a document management system. Imagine that!

</comment></comment><comment><USER9> This seems like a "cultural" issue you want to investigate before you start working somewhere. The problem is, you need to drill down to technical staff, in private, to have any hope of getting an honest answer, as all managers seem to fervently believe that their staff is going to write documentation.

Personally, I am NOT in the "self documenting" camp. I'm more on the side of what research there is that suggests that summary documentation for modules/routines saves about 10% of the time when you go to reread some code. Also, the "self documenting code" side seems to be under the impression that I actually want to read their code - AT ALL - when I could often avoid having to do so, at least for large swaths.

That said, the developers who prefer not to document should stick to themselves, and away from thos of us who wish that they did. Thus, "cultural issue", I think both sides will be happier if they stay away from each other. Yeah, this feels like Steve Yeagge's "software liberal vs conservative" sort of axis.

I'm glad they didn't teach "self documenting mathematics" back when I was in school :-)

</comment><comment><USER10> Few random observations from my experience:

\- The docs and the code should live at different abstraction levels. Docs add most value when they explain things which are not readily expressible in code.

\- Docs are often written first, as a mental tool to fully understand the problem. In this context, if the docs and code differ, the bug is usually in the code.

\- In rare, but highly valuable cases, docs can be non-textual. Database models (ER diagrams) are a prime example.

\- With right tooling, docs become part of IDE experience. A popup shows not just the signature of the method under the cursor, but its doc comments as well. This means less jumping around and better "flow" when trying to comprehend somebody else's (or your own!) code.

<comment><USER11> I agree that docs and code comments should complement each other. As a visual learner, I find diagrams showing how classes/objects fit together to be much more helpful than reading the documentation. A picture can replace a thousand words and tools like Vizio/Yed are really helpful in my opinion while at the same time minimizing the amount of documentation.

<comment><USER12> I'm sort of the opposite. Diagrams just show an abstract to me. At a high level they are great, but I always find myself trying to dust off the diagram and figure out what really is happening underneath. Its always so damn complex!

</comment></comment></comment><comment><USER13> Good documentation is must and it must be source code. I use plenty of tools/langs for it - PlantUml, markdown, matjax, mkdocs, sphynx etc. Docs site should be among deliverables along with its CI/CD and automatic tests. One other important benefit of keeping it as a source code is that a team on a feature branch can see diffs on funspec and easily follow the iterations on it instead of looking at one gigantic Word file as usual which is anything but practical for quickly determining what was changed in previous few days.

The main problems appears to be:

\- When to start documenting

\- How to keep it up to date.

This means that there need to be some processes, some good tools and ideally executable documentation (ansible, jupiter...). For example, I like to keep readme.md in each folder describing the purpose of that folder and what files are expected to be in it, in what format etc. Then during build, I can simply concatenate this into technical docs appendix and/or link directly to appropriate readme when specific section needs details. This means that in technical/functional docs there is only high level picture that rarely changes, and hence is more up to date and stuff that changes often is closer to the source of change.

I also think that keeping ticket numbers inside README.md as a reference is good practice, and keeping tickets itself connected. So I need entry point into PM tool and then I can follow from there if I need even more details.

For architectural decisions that are not obvious from the tickets one can use ADR in repository (architectural decision records) that are great for on- boarding and reminding on why we took certain path.

Documentation is hard, its literally a full time job. Its usual I spend weeks on projects automating documentation. The latest setup I use puts everything in single docker image and I spin it on each new project on CI level to build static site [1]. I also have detailed Gitlab procedures on how to create tickets that export well to the changelog. Visual Studio Code team nailed this IMO.

[1]: [https://github.com/majkinetor/mm-docs](https://github.com/majkinetor/mm- docs)

<comment><USER14> > Docs site should be among deliverables along with its CI/CD and automatic > tests.

100000000x yes. I was fortunate enough to have this ingrained in me at my first job out of college. Can't thank my old mentor enough.

</comment></comment><comment><USER15> Two pieces of software I've had to work with for the last five years are matlab and labview. Say what you will about matlab, I think the documentation is the best I've seen anywhere. The labview documentation is some of the worst I've seen.

I'll generally forgive an open source project for poor docs, because I can read the code(and it's free, so how much can I really complain??) Closed source that costs thousands? You better have have your docs tight. That said, labview docs are _worse_ than many open source projects. Most of it boils down to useless tautological statements like

"X: the input variable x"

Three things that make the matlab docs so much better:

1\. A plethora of examples, in the same page as the function doc. Labview makes you open a special program (no, it's not available via a web search) and search for an example. The search function sucks.

2\. Web searches for matlab docs return the doc for the latest version. Almost always with labview, you get something from like 2012.

3\. A real discussion of the algorithm being implemented, with real references. I can't recall _ever_ seeing a citation in a labview doc.

So there's some impressions, from a users point of view:)

</comment><comment> GuB-42 It depends on how you work.

I practically never read documentation. My first question when I start working on a project is often "where are the sources?".

There are exceptions of course, like external public APIs (ex: manpages), protocol definitions (ex: RFCs) and "black boxes". As a subcontractor, specifications are are useful too but mostly for legal reasons.

Maybe I trained myself to work like that after reading so much bad documentation.

<comment><USER16> > Maybe I trained myself to work like that after reading so much bad > documentation.

Same experience here. The documentation is always wrong. Sometimes it's wrong in minor, obvious ways, sometimes it's wrong in subtle corner cases you won't hit for years, sometimes it bears no resemblence to reality[0], but it's always wrong.

The only way to be sure is to look at the code.

0: And then there's cases like the C and C++ standards, where it bears no resemblence to reality _and people are actively twisting and sabotaging reality to fit_ , but that's a different problem.

<comment><USER17> The only documentation I read is the onboarding stuff. After that, I dive into the code

</comment></comment></comment><comment><USER18> For external-facing APIs and libraries, one reason I've found motivating to write documentation first is that you can "playtest" very quickly as a user/dev who comes in and starts wanting to use your thing.

If you (or another teammate) have to write a use-case snippet of code similar to how you want your thing to be used, based on your docs, you often find friction points and inconsistencies that should be streamlined and simplified.

It allows you to start iterating much faster than having to wait until you have a functioning product. It also often lets you avoid sunk cost fallacies where you run into that friction point later but don't want to go back and rewrite/redesign code to streamline the friction point.

</comment><comment> open-source-ux Clear, readable, up-to-date documentation is also a 'secret weapon' in another scenario: when you want people to adopt your software and use it. It doesn't matter whether you're selling to businesses or promoting an open source project - good quality documentation is the _exception_ not the rule (even from large multi-million dollar companies).

You may think the program operation or the code you wrote is self-explanatory, but there will be dozens, hundreds, maybe even thousands of users who will never email or contact you to tell you they're struggling with your software. They'll just give up and silently go elsewhere.

</comment><comment><USER19> I really enjoy documentation. Modern wikis make the process so simple that it is almost effortless. Even if nobody else reads the documentation, it acts as a great reference point for me when I need to quickly refresh my memory on something I did a while ago.

</comment><comment><USER20> I have a lot of sympathy with this argument. Ive seen some projects recently that were heavily influenced by the agile manfesto with very little documentation where I particularly miss the high level stuff and justifications for some key decisions. I cant helping thinking that this was not the intention of the authors. I loved Django for the quality of its documentation from the get go.

</comment><comment><USER21> I think reduction of friction can be beneficial here, elixir for example integrates documentation and tests - so you write you examples and tests right there, you can write gnarly tests with regular testing suite, but giving documentation code value I think increases inherent value of writing documentation for developers.

</comment><comment><USER22> Completely agree. Good documentation:

\- Makes a system more understandable

\- Stops trivial support tickets

\- Makes mediocre code seem great

\- Lowers the bar to entry for non-trivial projects

\- Increases the competency of many users/coders/etc.

Doc is awesome. And under-appreciated. And a duty far too many programmers slough off.

</comment><comment><USER23> Not the same as a wiki or a tech spec or whatever but detailed, searchable pull requests go a long way towards good documentation. And it's something any dev can match up with code with git blame. Sometimes pull requests are vague because there's a lot of discussion happening in a different channel. That's fine -- just make sure the discussion is happening in a form you can easily link to, like a chat message or mailing list thread or meeting notes or whatever.

</comment><comment><USER24> I don't think the agile manifesto _got it wrong_. It doesn't implore us to avoid writing documentation. It's not even an excuse to forego it. It's simply a value statement: we prefer working software to extensive documentation.

That means you should still write documentation.

And it also means that you shouldn't stall your project, delay work, or otherwise blocking developers from shipping working software because the documentation isn't 100%.

</comment><comment><USER25> The closest I ever had to 'comprehensive documentation' was a Sandcastle site based on the triple /// XML comments above each method describing the parameters and expected return types in a C# codebase for some ticket scanners.

Other places had a 'covert' dokuwiki living at sandiego.companyname.local which if you knew the right email administrator to give you a login would reveal a treasure trove of knowledge written down or copy/pasted from emails by the old guard. (PC LOAD BETTER for any former fellow coworkers, you know who you are)

Setting up a Dokuwiki (on a flash drive or server) is fall off a log easy these days. Same with Onenote (2010 is the prettiest IMO), or if you want to put more work in, hook up your Jenkins build process to include fetching all markdown files from source and posting them to a statically generated site such as MkDocs.

</comment><comment><USER26> The agile manifesto warned against _comprehensive_ documentation. I don't think many of today's developers have ever been in an organization that seriously tried to be comprehensive? In the old days, some computer software came with a shelf of books. Often they were quite badly written, but official.

</comment><comment><USER8> And out of date documentation can be a footgun.

I would rather a Dev spend time reading well written, self-documenting code than "documentation" that has become months or years out of date.

As systems become large and complex - and evolve - the work to keep documentation up to date becomes enormous. I have seen many project that generate reams of documentation at the start, and for almost all of it to never be updated again even after major shifts in design and technology.

And arguing that documentation can compensate for poorly written code as far as maintainability goes is simply absurd. Yet if it really is a "secret sauce" it would do so.

I would MUCH rather a comprehensive unit/regression test suite than copious documentation, and I think reading tests is one of the best ways, if not the best way, to start understanding a code base.

</comment><comment><USER27> Well, I think even more important than the amount and coverage of documentation is its quality.

I have been in projects, where it would have been favorable if there would have been no documentation at all because the existing one was simply wrong and it took the organization weeks until someone noticed it and got a developer to actually look into the code.

<comment><USER28> This is one of the reasons I tend to prefer comments over external documentation whenever possible. No, there's no magic force keeping comments in sync with the code they document changes, but you at least have a _fighting chance_. Programmers have enough state to juggle in their head as it is without expecting them to even necessarily _know_ what all the external documentation it is they should update. Heck, even with comments it can be bad enough knowing whether some change to this module necessitates changes to comments in other modules in the code that you may have _just looked at_.

It isn't always possible. Very high-level architecture may belong in a format where diagrams are more available, and the high-level design justification for the project itself doesn't have a great place in the code.

<comment><USER16> Similarly, I try to bake the documentation directly into the code. Eg (from a shell):

      OPTION(*line=='[',"[EXPR]","the result of evaluating EXPR as a math expression (see -?m)")
        { ... }
      qsh -?s | grep -F '$['
          '$[EXPR]': the result of evaluating EXPR as a math expression (see -?m)

So OPTION does triple duty as 'comments', documentation, and the actual test for what kind of substitution is being parsed. This tends to be at the mercy of code structure though.

<comment><USER29> Without context, I have no idea what are you trying to imply or document with OPTION?

I can more or less figure out what the code does, but not why it does it. Here you should document why are you grepping for something

</comment></comment></comment></comment><comment><USER30> This is a space that could use a good SAAS product. Like a Rap Genius for software with documentation tied to specific Git versions and tied into flow charts, etc. You could add a VSCode extensions on top to easily add new documentation & see when documentation exists. Open source projects use it for free and private companies essentially pay for it forever. Maybe something exists?</comment>


Student charged after alerting principal to server hack - <AUTHOR> http://www.theregister.co.uk/2008/10/28/student_charged/ <comment><USER2> I wish I could find the link to where I saw the comment, but I'm having tough time. But anyway, I saw a comment by someone who (mostly politely) emailed the school and chastised them for being so harsh on the student. However, they replied that the student actually had a history of being disobedient, and attempting to break the system. It was also noted that the method he used to alert his administrator was NOT in good faith but more of a 'Ha ha... I broke the system what now?' instead of here's how to fix this. That said, I don't think it's right, but it sounds like he really didn't help his case. As much as it stinks, I think we just have to hope that the people with ALL of the facts will form an appropriate conclusion about the case and justice will be served properly, and not as a means to discourage future attempts to 'fix' security holes.

<comment><USER3> He may well be a punk, but that doesn't seem like sufficient justification for THREE FELONY CHARGES at age 15.

<comment><USER4> Dude, he was trying to get a peak at everyone's report cards.

 _Report Cards!_

</comment></comment></comment><comment><USER5> I don't think its right that he is being brought with three felony charges AND suspended from school. I could see some sort of school related reprimand...but really...fifteen years old and he shows them up and their best response is lets press federal charges.

Now, assuming that it is true that he has had disobediance problems previously, attempted to break security previously, and was not acting in the form of a white-hat, something should definitely be done. However, that's like saying you're pressing charges against someone for logging into your computer when your password is on a sticky note at the edge of your screen. Not just schools but everyone has to do their own part in order to protect information and the school didn't do their part. I don't have the facts but it would appear that the student did no extraneous work in accessing the information.

I have to say that I, in a way, relate to this situation. When I went to High School I was pretty much watched like a hawk due to my well known understanding and skill on the computer. I was attempted to be blamed numerous times for when something would happen, mostly by a specific administrator who had a grudge against me. Luckily, nothing to this extreme ever happened and its not like I did anything wrong anyways. I ended up working for the school as an Assistant IT Coord my last couple of years.

I'd also like to bring comment to a point made by another comment on here. As far as poor technology policies and idiotic administration, that's one of the things my venture is trying to work on. Understanding that most of the reason these very restrictive policies are there is because of a lack of understanding compounded with a lack of control for what they don't understand. The other major source is fear of reprocussions and dangers. My venture is focused in the area of Educational Technology and part of what we're doing, especially in southern Illinois at the moment, is trying to create tools/programs/systems and structure policies with schools that alleviate the problems both on the administrative side and the student side. Policy work and simplistic administrator friendly systems are something that are a necessity to persuade uptight school districts into not only accepting technology but being more open with students use of it.

...I may have ended up a little off-topic. :P

</comment><comment><USER6> School officials are highly political creatures, and can be very dangerous when cornered. As a 15 yo, even (or especially) the intelligent hacker type, its tempting to think you can handle them or predict their reactions.

You can't.

Its best just to keep your head down, and your yap shut until you've got a little more experience with this kind of person and a little more ability to defend yourself. Hang tight, wait for your release date (I think they call it "graduation") and _don't antagonize the guards._

</comment><comment><USER7> Yup. Kill the bringer of bad news, as if it's going to save you.

<comment><USER8> He not only brought the bad news, he also looked at files he wasn't allowed to look at (if I read the article correctly).

I fail to see the newsworthiness of this. Surely by now it is common knowledge that hacking is illegal?

</comment></comment><comment><USER9> School administrators are assholes. Policies and actions like this are pretty common place at public high schools. I can't blame them though, they've had to shepherd children around their entire lives, and get paid less than many entry level workers at for profit companies.

</comment><comment><USER10> While I don't really agree with the "he did nothing wrong" tone of the article, I'm sure this is making a great lesson for the kid: never report technical problems or you'll be charged.

 _< /srcm>_

</comment><comment><USER11> So the IT department isn't competent enough to secure its servers, yet it knew how to find him? Sounds to me like he's being stitched up.

<comment><USER12> They probably brought in some consultants or authorities to do the investigating.

</comment></comment><comment><USER13> Curious: did the school, in addition to bringing charges against the student, fire the IT person in charge?</comment>


Show HN: Endorsements for Open Access Research - <AUTHOR> https://plaudit.pub/extension <comment><AUTHOR> Hi HN,

I feel I should add some additional Bigger Picture context here. You might have seen me show up here on Hacker News whenever Open Access gets discussed. I feel strongly about free access to publicly funded research, and Plaudit is where I'm contributing to making a transition to Open Access happen.

The key problem we're trying to solve is that researchers feel pressured to publish in "reputable", but often paywalled, journals. After all, it's still the case that being able to say you've been published in Nature is often a huge career boost.

The way we're trying to solve that is by removing the journal indirection. Rather than the journal's name being a stamp of approval signifying that trusted researchers have looked at and approved of a work, those researchers can indicate that approval directly - without delaying or preventing the work's publication.

It should be noted that this extension is not the primary method with which we hope to collect these endorsements. Rather, the goal is to have an endorsement widget integrated directly by publishers of academic research. This pilot is currently supported by eLife Innovation [1] and the Center for Open Science [2], and I'm working with a few preprint servers to help them integrate it.

That said, I wanted to allow individuals to contribute as well. This extension will inject the widget into the websites of a few explicitly supported academic publishers. Additionally, it will add a toolbar icon to most websites that host scholarly research, allowing you to endorse that research as well. Endorsements added through the extension will be useful to other users of the extension, but more importantly they will add incentive for publishers to incorporate the widget into their website, thus exposing those endorsements.

Good to know: all this is not for profit, open source, and endorsement data is made available openly as well.

I will be hanging around to answer any questions and read all remarks and suggestions you might have, so fire away.

[1] [https://elifesciences.org/labs](https://elifesciences.org/labs)

[2] [https://cos.io/](https://cos.io/)</comment>


Please collapse HN comments - <AUTHOR> Can you please add an option to collapse comments. I find comments very interesting and there are so many responses to each comment that it's difficult to find the second most voted comment <comment><USER2> Hackernews Enhancement Suite [https://chrome.google.com/webstore/detail/hacker-news- enhanc...](https://chrome.google.com/webstore/detail/hacker-news- enhancement-s/bappiabcodbpphnojdiaddhnilfnjmpm?hl=en)

Does collapse comments as well as other nifty features.

<comment><USER3> This doesn't help on mobile, unfortunately, which is the time when I find myself most wanting the feature : (

</comment></comment><comment><USER4> Is there any evidence that Hacker News is even trying to improve?

i.e. - How long can an organization avoid improving itself on the basis of reducing overall risk?

</comment><comment><USER5> It's coming.

<comment><USER6> Please release the arc code. There are people who care about arc out there . . .

<comment><USER7> Have you seen this?

[https://github.com/wting/hackernews](https://github.com/wting/hackernews)

</comment></comment></comment><comment><USER8> In case you use firefox: [https://addons.mozilla.org/en-us/firefox/addon/hn- utility-su...](https://addons.mozilla.org/en-us/firefox/addon/hn-utility- suite/)

</comment><comment><USER9> [https://greasyfork.org/en/scripts/12493-hacker-news- folding-...](https://greasyfork.org/en/scripts/12493-hacker-news-folding- subtrees)

I wrote a userscript that is simple and works well.

</comment><comment><USER10> I use this extension; works well enough.

[https://chrome.google.com/webstore/detail/hacker-news- collap...](https://chrome.google.com/webstore/detail/hacker-news- collapse/pdlifinplmfmoeppfooipommbdljhdmp)

One thing is that it obviously don't help on mobile.

</comment><comment><USER11> On one hand, yes please.

On the other, the experience is way better lately.

Do you remember the "expired link"?

</comment><comment><USER12> Yes please do this.

</comment><comment><USER13> Until they implement it, there's some Chrome addons that'll do what you want.

If you have GreaseMonkey you there's a userscript that also works the same way; [http://userscripts-mirror.org/scripts/review/288192](http://userscripts- mirror.org/scripts/review/288192)

</comment><comment><USER14> The road to Discourse is paved with well intended incremental improvements.

<comment><USER15> The reply system of Discourse always confuses me. When I open replies to a comment, why do I need to see these replies a second time when I scroll further down? It's like they combined the worst parts of linear and tree-based comments.

<comment><USER14> That's the joke. Only time I have used it is on daily WTF and most WTF discussions include some meta about how annoying Discourse is. I find it a little annoying and prefer old fashioned forums, and I particularly like HN!</comment></comment></comment>


The Environmental Impact of Making Snow (2012) - <AUTHOR> https://www.outsideonline.com/1904791/nasty-environmental-impact-making-snow <comment><USER2> The title doesn't correlate to the article at all; they don't actually know what the environmental impact of making snow is. If you pull water from a polluted source to make snow, and then that snow melts and returns to the polluted source, you didn't really change anything. And if there's already a coal power plant running, making snow with that power isn't changing anything; you still need to build an alternate power source before you can shut down the coal plant.

I'm tempted to say the impact is very little, given that there aren't _that_ many ski resorts. Of those that make snow, they might have less than 100 machines making snow, and only when it's needed.

If you want to clean up polluted water, then do that. If you want to get off coal, then do that. But making snow has nothing to do with either of those things.

<comment><AUTHOR> >>I'm tempted to say the impact is very little, given that there aren't that many ski resorts. Of those that make snow, they might have less than 100 machines making snow, and only when it's needed.

There are quite a few ski resorts in the world, but more importantly they are - logically - situated in places with massive ecological importance. And you may be surprised how high-tech snow making has become, at least in the European Alps:

"One morning in 1995, Mattis, who was then a 28-year-old ski-lift engineer, was told he was being redeployed to look after the resort's handful of snow machines. Four years later, he began building his snow-making factory, or atelier neige, installing a 70km network of pipes beneath the mountain that now, after years of expansion and improvement, can cover 65 sq km of slopes in artificial snow at the touch of a button. It is one of the most sophisticated snow-making operations in the world."

Source: [https://www.theguardian.com/world/2019/dec/19/snow- machines-...](https://www.theguardian.com/world/2019/dec/19/snow-machines- fleece-blankets-inside-ski-industry-battle-with-climate-change-alpine-resorts)

<comment><USER2> Having water pipes in the ground isn't inherently bad. And why does having 70km of them affect anything? Your tap water comes from a much larger system of underground pipes, for example.

The footprint of ski resorts is not that large, even though they're in ecologically important places. I'm really struggling to understand the impact of these places. If you want clean water, then clean the water. If you want non-polluting power, then do that. Why is a ski resort responsible for any of this?

</comment></comment></comment><comment><USER3> This is not related to skiing, but assuming there is less snow overall, it seems there is a point where will need to "generate" snow anyway to store water for spring/summer, this is probably still cheaper that building dam/reserve everywhere.

<comment><USER4> Making snow takes energy. (Basically, you need to spray a mist at high pressure, which includes pumping both water and air.)

Dams don't use energy once they're built. Hydropower is renewable and carbon- free.

Furthermore, if you're making snow to store water, you can't control when it melts, and you need to collect the water as it melts, most likely behind some kind of a dam!

<comment><USER5> Ahem! [https://duckduckgo.com/?q=dam+methane](https://duckduckgo.com/?q=dam+methane)

<comment><USER6> Interesting. So the dammed water grows more algae than a moving river which leads to methane release (from the decaying algae?)

" "We were surprised to find that the biological productivity of the reservoir (i.e. how many 'nutrients' like nitrogen and phosphorus the reservoir receives and the associated degree of algae growth) is a better predictor of emissions than is latitude. So, the most biologically productive reservoirs are producing the most methane," writes Bridget Deemer, the study's first author "

</comment></comment></comment></comment><comment><USER7> This is dated Oct 11, 2012

<comment><AUTHOR> Which makes it all the more scary.</comment></comment>


Moviepass pulls support for some AMC theaters - <AUTHOR> https://www.theverge.com/2018/1/25/16934344/moviepass-amc-theaters-support-tickets <comment><USER2> Moviepass is likely running negative gross margins on those expensive urban theaters and this is a hardball tactic to get AMC to the negotiating table to bring those visit costs down. It is a risky move given the Moviepass provides no other direct value to the theaters outside of demand aggregation (putting aside the data play). Given the theater business is somewhat of an oligopoly, we may see the theaters react by consolidating (through partnerships, or outright) in order to increase supplier power. This will be an interesting story to watch as the conflict plays out.</comment>


Turn article web pages into structured data - <AUTHOR> https://www.scrapinghub.com/data-api-news <comment><AUTHOR> checkout [https://info.scrapinghub.com/en/in-depth-analysis-and- evalua...](https://info.scrapinghub.com/en/in-depth-analysis-and-evaluation- on-the-quality-of-article-body-extraction) to see how it compares with Diffbot, newspaper3k, readability-lxml, dragnet, boilerpipe and html-text.</comment>


Nate Silver's book talk at Google: "The Signal and the Noise" - <AUTHOR> http://www.youtube.com/watch?feature=player_embedded&v=mYIgSq-ZWE0

<comment> shawn-butler I can fully endorse his view that poker teaches one to properly "visualize" uncertainty. And that's the hard problem I have seen in other aspects of dealing/communicating decisions to people. We seem hardwired for some reason not to be able to understand uncertainty, prior probability distributions, and the related concept of risk which get muddled with value judgments.

Finding a way to make it graphically apparent makes a big difference for some reason.

I really like the Q&A format of the talk.</comment>