Who Should Pay for Netflix? - <AUTHOR> http://www.attpublicpolicy.com/consumers-2/who-should-pay-for-netflix/

<comment><USER2> The article is conflating the ISP's _costs_ with the _prices_ paid by consumers:

"And I think we can all accept the fact that business service costs are ultimately borne by consumers."

The above statement seems designed to cause confusion. The implication is that the total price consumers pay is determined wholly by the costs incurred in delivering the service. This may be almost true in aggregate, but isn't true at an individual level.

ISPs offer an all-you-can-eat internet service, but aren't happy with the customer-level margins for the most heavy users (including Netflix users). They could raise prices for heavy users (e.g. by applying caps in the same way as mobile providers) but have chosen instead to engage in different tactics to limit usage or get additional revenue from other sources. Throttling P2P traffic (I don't know which ISPs in the US do this) and asking CDN providers to pay for ports are two examples.

This seems to be like they're increasing the maximum speed of the local pipes ('unlimited water up to 100 litres per minutes!') without being willing to increase the size of the pipes into (and capacity within) their own distribution network.

Am I missing something, or is it just that the business model of offering unlimited high speed internet only sustainable at a higher price?

<comment><USER3> Both this blog post and the Netflix blog post it is responding to seem intentionally confusing. The core issue is that the interests of the consumer and provider are misaligned. In a normal market if the consumer wants more or better service, the provider will make more money by providing the service.

In this case the consumer wants more service in the form of more data for streaming video. In a normal market, the additional sales from the extra data would fund the required infrastructure. In reality, however, since the ISP sells a data rate, not data, they do not get extra revenue from heavy usage customers.

Both of these blog posts miss the mark by misinterpreting the probably rational consequences of this misalignment as unreasonable greed or unfairness. I assume that both of the authors know the real issue here and that these posts are meant to manipulate the public regardless of accuracy.

</comment></comment><comment><USER4> Especially for capped connections we already are paying for it. Say we get 250 gb a month. We should be allowed to use that as we see fit. If that means millions of cat pictures why should that be treated any different then streaming video. The big problem is that in most areas there is little to no competition so we are all stuck.

</comment><comment><USER5> I find the argument pretty compelling. If Netflix usage requires more internet pipes to be upgraded, then it seems logical that Netflix users should pay rather than internet users in general.

However, it all presumes that we can attribute increased demand to Netflix and Netflix alone. Suppose you have two services, A and B, which each require 10 ZB of ISP bandwidth. The ISP builds 20 ZB of capacity and the world is happy. Now a third service, C, comes along and requires 10 ZB more of bandwidth, requiring the ISP to upgrade its 20 ZB pipes to 30 ZB. Does it make sense for the ISP/society to charge service C for that network upgrade? C's only crime is arriving last. Otherwise, it is identical to A and B in terms of the load placed on the network. It seems you me you could just as plausibly blame sustained demand for B as much as new demand for C.

I'm conflicted.

<comment><USER6> IMHO, the extra cost should be passed on to the consumer. This way, we don't get 1 ISP having deals with services A, B and C making people not switch due no other ISP having those same deals and no new ISPs come up because they can't get the same deals because nobody wants to switch.</comment></comment>


Get JIRA for $10 only - <AUTHOR> http://alexander.holbreich.org/2010/05/use-jira/

<comment><USER3> I'd need to be paid a lot more than that to use JIRA.

<comment><USER4> So, the one painful part of Jira, that Atlassian really needs to do something about, (And I say this as a Die-Hard Jira fan with four years of absolute devotion to the product) is the simplification of their field-issuetype- screen-schemes, as well as the myriad other schemes. It took me over a year, and at least five or six sessions of sketching it out onto paper, before I was able to mentally map Custom-Fields, Screens, Issue Types, Priorities, Resolutions, Statuses,workflows and their various schemes in my head. One part that makes it problematic, is Jira is not _consistent_ in how you map schemes to collections of atomic elements like Statuses or Resolutions (Their are no IssueType-Status-Schems, or IssueType-Resolution-Schemes, but there are Field Configuration Schemes, and IssueTypeScreenSchemes)

But, with that one exception, the software is a delight. Fast, even on a tiny platform. Takes 3 minutes to install (The hardest two steps are setting your JAVA_HOME variable and mapping your Server Directory in a config file) - <USER2> on WIndows, Linux, Mac with zero issue. Very extensible, great plugin community. The new 4.x JQL makes sophisticated queries against your issue database a dream.

And it scales well - Our three Gigabyte Memory, 12 Gigabyte Disk VMware Machine has added 18,962 issues this year, and continues to feel light (Now totalling 68,495 issues).

I can type a query like "+VPN +Bandwidth" - and get an answer back in about 2 seconds (Thanks Lucene!) - this with a full text search of all the comments, descriptions, and summaries.

I love the product so much that I even enjoy the people who have issues with it - Nothing better than to have someone point out a problem, and then come back with a 15 second solution that also provides the foundation for solving a whole host of other problems.

It has my recommendations with only minor reservations regarding the complexity (and inconsistency) of their schemes.

Remedy, on the other hand, gets no recommendations whatsoever for their out- of-the-box implementation. I'd love to find someone who has anything to say something good about that product.

<comment><USER5> > Fast, even on a tiny platform.

Really? We have it running on a 2x4 core Opteron 2.2GHz system with 4GB of RAM, supporting barely 60 people, and page load times are slow as hell. And it was even installed and set up by a consultant.

> Takes 3 minutes to install

Sure, if you don't mind that the default install uses (and warns you about!) a non-production-worthy database to store your data.

</comment></comment></comment><comment><USER5> Ugh. Pass. We use it at work. It's a very frustrating piece of software. I'd actually prefer to use Bugzilla, for all its warts. Jira's interface is a pain to use. Changing anything about the bug involves loading a new page, and then saving to get back to the original page. Even worse, the edit page has a completely different layout from the view page, so you have to figure out where everything is twice.

Conflict resolution is nonexistent:

1\. Users A and B click to edit a bug at the same time. 2\. User A changes the assignee and clicks save. 3\. User B changes the priority and clicks save. 4\. User A refreshes the bug page to find that his assignee change has been reverted.

This is pretty basic, people.

The regular search page is a little odd. If you have multiple 'projects', and click on one to filter by project, a little DHTML bit pops out that asks you to reload the page to make sure all the other fields are up to date. Ajax, anyone?

The hierarchy is a bit overdone: Projects, then Components, then Component Modules, then Component Sub Modules. And you can't set default assignees for CMs or CSMs, so they're really pretty useless, aside from wasting people's time trying to figure out another level of granularity as to where to file the bug. To be fair, they're optional, but...

On the plus side, I really like the advanced search query language: basically just a bunch of boolean and comparison operators, with decent autocomplete functionality. Quite powerful, and not at all hard to use.

<comment><AUTHOR> I'm with you by liking bugzilla. It's also my favorite after JIRA. But JIRA better for people with few IT background. Sometimes we do organize project of non IT context or involve people which are not familiar with IT and tracking systems. That people liked JIRA more than bugzilla.

</comment></comment><comment><USER6> get trac for free and save yourself the headache

<comment><USER7> or Redmine... it's worked great for us so far.

<comment><USER4> or RT (issue Tracking), or my Favorite, Jira... Oh, wait. :-)</comment></comment></comment>


A high paying Walmart - <AUTHOR> http://finance.yahoo.com/news/high-paying-walmart--why-does-this-store-pay-it-s-employees-more-than--17-an-hour-145151777.html

<comment><USER2> It's the market at work. Because It's an oil town and cost of living is so high, they need to pay a higher wage.

That's the key. If you could take that money and spend it in another state, it could go much further. I would imagine the cost of living expenses in that town make it so $17/hour is equivalent to roughly minimum wage in other parts of the country.

A higher minimum wage sounds like a great fix, but it's only a great fix until the rest of the economy catches up to the increased prices by raising their prices accordingly. At that point, your dollar goes about as far as it did before the increase.

Australia is a good example of this. I stayed at a hostel when I visited for a week and there were signs up for unskilled day labor work that paid $18/hour. The hostel also cost me almost $100/night US and most meals..even at the cheapest of the cheap places were over $20/person. A soda and a small bag of chips at 7-11 was over $11. The same thing costs me a little more than $4 in the US.</comment>


A UI experiment: show "just the content" - <AUTHOR> http://blog.shopobot.com/so-many-shoes-a-shopping-experiment

<comment><AUTHOR> In response to this thread about how hard it is to see content on the campers shoe site: <http://news.ycombinator.com/item?id=4032486>

We're experimenting with UI for browsing huge sets of options like shoes. What do you think? Refreshing or overwhelming?

<comment><USER2> I think: noscript unfriendly.

Then, it seems crowded. But that's what physical shops are like. Not sure if it's good or not.

<comment><AUTHOR> Thanks for the feedback! Since we were experimenting with density here, it is fairly extreme. The verdict is out on whether the extra density is valuable when user are in real shopping scenarios.. That's what we'll be testing with different categories and tweaks.

</comment></comment></comment><comment><USER3> I like the look. I don't like the way the horizontal scrollbars appear on mouseover; it's a distraction when I'm moving my mouse over the page.

<comment><AUTHOR> Good feedback. This was a compromise to allow mouse users to scroll without having to show the scrollbars all the time. There are other approaches we can explore.

</comment></comment><comment><USER4> This doesn't have much to do with the core idea you're testing, but I'm not wild about the filtering UI. If I click on "Fashion Sneakers" it filters the results, but there's no clear way to get back. It also seems like once you're viewing fashion sneakers, that shouldn't be a link anymore (I get frustrated when a page links to itself). A normal breadcrumb system should work fine.

</comment><comment><USER5> Showed it to my sister, who is much more interested in shoes than I am. She disliked the small size of the icons, and she had trouble finding the brands of shoes she was interested in. She also wanted to be able to more easily sort by style; she wanted flip-flops, and couldn't easily just look for all flip- flops.

<comment><AUTHOR> Thanks for this feedback. The filtering system is pretty non-existent in this version (just one level of categories), and that will have to be integrated.

Adjusting what's show in the view is important - either with search, or filter, or by organizing by similar items. Those other pivots will built on top.

For this v1 we were mostly exploring the feeling of this much density and scale of results - so helpful to hear that she thought the images are too small.

</comment></comment><comment><USER6> I think this is really great for products such as shoes, when basically just looks matter. Left/right scrolling works well with magic mouse, and probably even better on touch devices. Just add simple social features ala Pinterest and you have a winner.

<comment><AUTHOR> Thanks! Agree that the 2d scrolling works best with magic mouse, or touch, or a good trackpad. We have lots of ideas for social features too - but one test at a time..

</comment></comment><comment><USER7> All of the white New Balance athletic shoes are for women. Where are the NB men's shoes?

</comment><comment><USER8> The demo is down.

<comment><AUTHOR> Thanks. It seems up right now, but with this many users it's taking a while to complete the queries to get started. Sorry about that!</comment></comment>


Money Is Losing Its Meaning - <AUTHOR> https://finance.yahoo.com/news/money-losing-meaning-100023306.html <comment><USER2> That's because the bulk of the money doesn't actually flow to the economy. Banks, multinational(cartels) and other rent seekers hoard the money.

1\. Banks build their reserves to lend but they don't change lending standards so the money doesn't flow out.

2\. multinationals buy stock back to raise stock values up instead of bigger dividends

3\. coastal real estates prices just go up and up.

4\. educational costs have skyrocket over the decades. Did calculus become more complex?</comment>


New tools for open source maintainers - <AUTHOR> https://blog.github.com/2018-04-18-new-tools-for-open-source-maintainers/ <comment><USER2> The main thing I want to hide in minimized comments are "+1 fix this plz!" comments on bugs, comments that add nothing above and beyond a thumbs-up reaction.

The "reasons" Github offers for minimizing comments are: Spam, Abuse, Off Topic, Outdated, and Resolved. "+1" isn't exactly any of those. (I guess they're kinda "Spam" but they're not unsolicited commercial messages.)

<comment><USER3> Maybe the missing feature here is that GitHub should "just" automatically minimize +1 comments. Or even better, delete them without sending a notification to maintainers/watchers, and automagically have the user who posted it add a thumbs up to the original issue.

(Personally, I would consider them spam.)

<comment><USER4> > automagically have the user who posted it add a thumbs up to the original > issue.

I was astonished that they didn't do this when they introduced the emoji reactions feature.

<comment><USER5> Part of the problem is deciding what the +1 should be attached to. Some people comment +1 just because they want to see a PR merged. Some +1s are intended to be associated with a specific comment.

<comment><USER6> But there's other systems for that; what you're describing are 'bumps' that have been in forums and such for forever now, and I'm sure that e.g. an upvote system (or sort by +1 reactions) would replace that system.

I think it could be done on a per repository basis, like, basic behaviour rules just like at forums and other such communities. It's then up to the maintainer / moderators / whatever to allow or disallow +1-style comments, and what the 'punishment' would be. They could then also tweak a setting that auto hides comments if they're shorter than X characters.

<comment><USER7> You can sort by reactions on the issues list, if that's what you meant.

</comment></comment></comment></comment></comment></comment><comment><USER3> Minimized comments (hot take): A fancy new feature for AMP developers to ignore serious security and openness concerns about AMP.

Namespace retirement: Agreed with Nullability, just disable username reuse, it causes a lot more oddities than just cloning projects from unknown sources, old comments link to incorrect users and the like, it's awful.

Accidental PR protection: So this won't affect anyone, if I read it correctly, who types something in the PR description? As long as that's the case, fine, but I definitely don't want to overly impose upon the drive-by contributor... as an occasional drive-by contributor. (Sometimes I fix spelling errors, someone's gotta do it.)

<comment><USER8> I'm really hoping they're only blocking PR's from non-collaborators if the PR description is empty. Requiring someone to be a collaborator on a repository to open a PR is a step backwards to me. It's really nice to notice a trivial fix like a typo when browsing the code, fix it in the integrated editor and hit PR right there. I could see having the option to disable PRs useful, but removing the functionality entirely

<comment><USER9> I think they meant, when the contributor is also not the author of the changes. At least I hope this is what they meant.

<comment><USER3> Ah, I didn't catch that, and that's a plausible read. Because any contributor making an edit has push access to the source branch.

</comment></comment></comment></comment><comment><USER10> The "retirement" feature is a good start, but oddly over-engineered. Just stop allowing username reuse, period!

<comment><USER11> Maybe it is in order to prevent something like domainsquatting – just for usernames.

</comment></comment><comment><USER12> This comment hiding is a good feature. For judicious use, it greatly enhances the experience for both collaborators (people with write access to the repositories) and viewers. When overused, it allows collaborators to do what they want, as they should be able to, because GitHub provides tools for organizing communities* rather than communities themselves. For astute viewers, it provides a chance to observe the way that the collaborators manage their communities.

* For an alternative of having shared ownership of open source, see Zed Shaw's post about Launchpad [https://web.archive.org/web/20120318224723/http://sheddingbi...](https://web.archive.org/web/20120318224723/http://sheddingbikes.com/posts/1299555462.html)

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

</comment><comment><USER13> Can someone explain the Pull Request restrictions?

What does: "the changes are not explained in the commit body" actually mean?

Is this opt in?

<comment><USER14> I see this new feature as a bug.

If you don't like a pull request close it or ignore it. But disabling accidental and "drive-through" pull requests sounds very bad to me.

<comment><USER15> Sometimes people use compare view and accidentally create pull requests without description from branches on which they do not have any commits.

On popular projects this happens often enough to become annoyance for maintainers.

I don't see any case when opening a pull request from someone else's branch and without a description could be done intentionally.

</comment></comment></comment><comment><USER16> I really hope they add some sort of "highlighted" or "closed by" comment feature as well. I've occasionally had to lock closed issues to stop a flood of "+1" comments from crowding out the comment that fully addressed the originally reported problem. Manually hiding or deleting all new "+1" comments would be a lot of work in these cases

</comment><comment><USER17> > [...] The author is not a bot account [...]

How does GitHub identify "bot accounts"? I thought there is just one type of user accounts. You can give the API tokens generated on that account to a bot. But there is no flag in the settings to make it a "bot account".

<comment><USER18> I think when GitHub says bit, they mean app.

</comment></comment><comment><USER19> I get all this by not using github.

Minimized comments: I run the mailing list and can enable moderation at any time.

Retire namespace: I control the web server and so every aspect of the URL after the domain name.

Unwanted pull requests: no different from unwanted anything else.

<comment> fake-name Downside: Holy shit fuck mailing lists. They're _terrible_.

Major downside: You miss a huge percentage of possible contributors.

<comment><USER20> This is fairly sad, because a lot of software is still maintained using mailing lists. Often not because it's the best solution, but because it's the least bad (for some). Also, if one wants to ensure that the whole lineage will be with us 20 years from now, a mailing list is a better bet than all the Gerrits and Githubs of the world.

I remember I wanted to check out what was happening in Postgres, since it's my favourite database. But the sheer complexity of getting to the code diffs and comments and all that... I quickly gave up, because the environment was rather unfriendly to newcomers (actually, I didn't completely give up, I just browsed the Github mirror, which was the only usable part of their version control).

And I'm not blaming them, it works well for the core devs, but they can't expect many new contributors (and contributions are even things like documentation, tests etc.!). Which is a pity.

<comment><USER21> > (actually, I didn't completely give up, I just browsed the Github mirror, > which was the only usable part of their version control).

What makes our git own git repo unusable?

[https://git.postgresql.org/gitweb/?p=postgresql.git;](https://git.postgresql.org/gitweb/?p=postgresql.git;)

I personally find that quicker to get around in than github.

<comment><USER19> Man, why doesn't gitweb serve up the clone links as links that you can right click and copy?

You have to swipe the cursor over "[https://git.postgresql.org/git/postgresql.git"](https://git.postgresql.org/git/postgresql.git") and copy; how lame.

CGIT is so much nicer. It also serves up tarballs out of tags. If you do a "git tag foo-123" and push it out, then on your CGIT interface, there will be a foo-123.tar.gz URL for download (as well as .bz2 and .zip), pulled right out of the repo.

Still, either is light years ahead of github's presentation of repos.

> _What makes our git own git repo unusable?_

I know; WTF? From grandparent's comment I got the impression that Postgresql must be using CVS, or just tarballs in a FTP directory or something (and that someone kindly made a git repo and put it into GH).</comment></comment></comment></comment></comment>


What do we do about bad startup advice? - <AUTHOR> http://www.saintsal.com/2013/05/bad-advice-halo-effect/

<comment><USER2> Interesting problem to solve. It certainly exists. Look at the life/business/sales coaching industry. There are almost as many chiefs as there are Indians.

I think it comes down to "buyer beware" and a little common sense. If someone is going to give you advice, it should be from their own personal experience and not theory or hearsay.</comment>


Peeping Tom: A free (open source) site pinger - <AUTHOR> http://terrbear.org/?p=253

<comment><USER2> Excellent Terry, nice and simple and free, have bookmarked this for use very soon.</comment>


Best Video Editor to Make Videos with Pictures and Music - <AUTHOR> https://play.google.com/store/apps/details?id=com.gomin.slideshowmaker.videoeditor.videomaker.musicvideo <comment><AUTHOR> Hi everyone, today I would like to introduce to you an useful video editor to make videos from photos and music. With this Video Editor, you can create cool videoshow with many beautiful effects without following complicated steps.

This free video editor also has a rich and unique collection of transition effects with many beautiful designed themes that you can not find them anywhere. In particular, I'm impressed by the various genres of music collection in the app. There are many kinds of music for you to choose such as rock, jazz, blues, R&B, and EDM, and it's all free. In addition, you can also use the music or audio files that you have downloaded in the device. Especially this video edior is up to date with many new hot music so you can keep up with the latest trends. In order to help you understand more about this music video maker, I will list in detail each feature and how to use it!

Outstanding features of Videoshow: Beautiful interface, easy to use Professional features to edit and make videos in second Many unique and interesting transitions effect Diversity of beautiful video themes collection Various genres of music and effects updated regularly Unlimited number of photos to create videos Export high quality video in seconds Smart backup library helps you manage videos easily Customize video output quality (you can export in HD format with the highest definition) Edit the length of your favorite videos and music tracks as you like Light capacity, does not take up much memory, stable and smooth operation on all devices Integrating social networking platforms, helps you share quickly and easily

Above are the outstanding features and how to use VideoShow. With just a few simple operations on mobile phone, we can make videos with pictures and music to share memories and get attention on social networks. Download this wonderful VideoShow now to experience the difference for free!</comment>


Duck.com is owned by Google - <AUTHOR> http://duck.com

<comment><USER2> Google acquired the domain when they bought On2, a video code company which was originally called the Duck Corporation. @yegg (founder of DDG) tried to buy it from Google in 2010. He gave his take on it the last time this was posted to HN:

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

</comment><comment><USER3> This is not a Show HN. "Show HN" is for something you've made that other people can try: [https://news.ycombinator.com/showhn.html](https://news.ycombinator.com/showhn.html).

It doesn't go on posts like this, or everything would have it. After all, every post is implicitly showing HN something.

</comment><comment><USER4> they should also buy chicken.com , which I do not own btw

</comment><comment><USER5> So?

</comment><comment><USER6> this is sad.</comment>


A Map of Mathematics - <AUTHOR> https://www.quantamagazine.org/the-map-of-mathematics-20200213/ <comment><USER2> For those unaware of it, here is a "map" of mathematics that mathematicians use, called the Mathematics Subject Classification:

[https://cran.r-project.org/web/classifications/MSC-2010.html](https://cran.r-project.org/web/classifications/MSC-2010.html)

It is arguably less useful for someone who is not a mathematician, but does illustrate how difficult the problem of classifying all of mathematics is.

Both "maps" have their uses.

<comment><USER3> > _00Axx General and miscellaneous specific topics_

The structure of any successful classification system: these things, those other things, and everything else. ;)

<comment><USER4> Almost as good as:

> 83Fxx: Cosmology

> \- 83F05: Cosmology

> \- 83F99: None of the above, but in this section

<comment><USER5> No one mentioned Borges, I'll do it: [https://en.wikipedia.org/wiki/Celestial_Emporium_of_Benevole...](https://en.wikipedia.org/wiki/Celestial_Emporium_of_Benevolent_Knowledge)

"The list divides all animals into 14 categories: those belonging to the Emperor, embalmed ones, [...] those that from afar look like flies."

He snuck in "those included in this classification" at #8, too.

</comment></comment></comment></comment><comment><USER6> This is a much more entertaining map of mathematics in about 10 minutes [https://www.youtube.com/watch?v=OmJ-4B-mS-Y](https://www.youtube.com/watch?v=OmJ-4B-mS-Y)

For a history of mathematics NJ Wildberger's lectures are easy to listen to. [https://www.youtube.com/watch?v=dW8Cy6WrO94&list=PL34B589BE3...](https://www.youtube.com/watch?v=dW8Cy6WrO94&list=PL34B589BE3014EAEB)

<comment><USER7> > entertaining map of mathematics

They have also done videos on _Map of Computer Science_ and _Map of Physics_. Do check them out.

</comment></comment><comment><USER8> That's the most annoying navigation I've seen in a while, and that says something.

<comment><USER9> Not being able to scroll back up is definitely a first for me.

<comment><USER10> Nor being able to use page up/down. :(

</comment></comment></comment><comment><USER11> The lack of backwards navigation and scroll is irritating, though.

</comment><comment><USER12> This reminded me about Tegmark's map of relationships between various basic mathematical structures:

[https://arxiv.org/pdf/gr-qc/9704009.pdf](https://arxiv.org/pdf/gr- qc/9704009.pdf) (on page 2)

</comment><comment><USER13> Their classification is curious. It seems similar to Wikipedia's list of Quantity (Numbers), Structure (Algebra), Space (Geometry), and Change (Analysis). And yet, they put geometry under "Numbers" and don't really seem to address Algebra at all.

<comment><USER3> A more realistic taxonomy would be discrete (number theory, graph theory), continuous (geometry, analysis), and discrete properties of continuous things (topology, applications of analysis to number theory).

<comment><USER13> Oh, that's interesting. Do you have a more detailed version of this taxonomy you could point to?

The thing I like about Wikipedia's version is that the high-level concepts are sufficiently abstract while still providing an intuition as to how the different disciplines can be applied.

</comment></comment></comment><comment><USER14> I like that the related Quanta articles are linked from each concept. The idea of teaching maths as an ontology of concepts and tools is very appealing because it creates a "why," for each aspect. It's as though code did for math what the blues scale did for music, where suddenly a lot of amateurs could string a few ideas together and make something useful and good.

I'm working through "Content, Methods, and Meaning" now and what makes it great is it starts with what necessitated the invention of methods. The model in the Quanta map has a lot of potential.

<comment><USER15> I'd say this is part of the mainstream move from an "industrial" society (with mostly human robots and computers) to an "information" society (with mostly human modelers and architects, as robots and computers are now machines).

We now start with the "why", see where knowledge fits in the puzzle of reality, where it plugs and how to find it; then only on a need-to-basis do we go deeper into the 'how'.

</comment></comment><comment><USER16> I love this map of mathematics, but in explaining concepts, the website shows unfurling images that scrolljack[0]. The inability to scroll back up makes me feel trapped in the content.

[0]: [https://medium.com/@paonecreative_87456/scrolljacking-the- us...](https://medium.com/@paonecreative_87456/scrolljacking-the-usability- nightmare-2a5bbb4273d0)

</comment><comment><USER17> Not being able to scroll back up is really annoying, closed the page after seeing that.

</comment><comment><USER18> Does anyone have suggestions for good books on the history of Mathematics?

<comment><USER19> Stillwell's _Mathematics and its History_ is, imo, excellent.

<comment><USER20> Stillwell is a fantastic historian, +1 to the recommendation.

</comment></comment></comment><comment><USER21> What an infuriating format for an article.

</comment><comment><USER22> Reminded me of this. [https://www.sciencealert.com/this-mind-boggling-map- explains...](https://www.sciencealert.com/this-mind-boggling-map-explains-how- everything-in-mathematics-is-connected-3)

<comment><USER23> Hand-drawn cartoon map of a conceptual arrangement are very hard to get to grips with. Is there's an actual structure there that could be modeled by a Voronoi diagram, or is it just an elaborated doodle? OK, all conceptual maps are arbitrary to some extent, but the nice thing about the one int he OP is that the relationships are discrete.

</comment></comment><comment><USER24> Interesting reminds me of a clustering I once did using a SVD to cluster fields of mathematics [https://github.com/bnlcas/ArxivStudy](https://github.com/bnlcas/ArxivStudy)

<comment><USER25> Very nice!

</comment></comment><comment><USER26> "Explore our surprisingly simple, absurdly ambitious, and necessarily incomplete guide to the boundless universe."

Okay you have my attention now.

</comment><comment><USER26> this might be obnoxiously unrelated but this site has probably the coolest usage of particle.js i've seen yet.

</comment><comment><USER27> While mathematics is often motivated by physical phenomenon, it's epistemologically misleading to present physics as math or vice versa. All too common pet peeve.

</comment><comment><USER28> Neat, but the site seems to hijack the history (and by proxy the back button on the browser) which is a somewhat annoying pattern of development.

<comment><USER23> _You are in a maze of twisty little passages, all alike._

Agreed. But I was pleasantly surprised to find the map is built out of a HTML table and extremely simple js, and longer I looked at it the more I liked it.

I'd go so far as to say it's the back button that needs to change, rather than the site. By that I mean, it's often rather useful to have a stack-based history of your explorations around a map (like this, or a deep dive into Wikipedia, or...), but it'd also (obviously) be nice to pop the whole stack for this site and jump back to HN in a single step.

After all, why _are_ browser history and bookmark navigation so linear when the way we use the web is not? It's like being forced to use turtle graphics or turn-based navigation to connect places on a geographic map. The bookmark manager in browsers is super primitive and hasn't really evolved in 20 years.

Likewise, think about when you have a plethora of open tabs; I've had as many as 400 at times, spread across 7 or 8 windows, with heavy insite overlap (ie I might have 10 tabs pointing at different books or products, multiple tabs going to a specific news outlet, multiple tabs pointing to different Wiki and Git pages etc.). Yet my open tabs are arranged in highly linear fashion along the top of each browser window, and there's no simple way to pull back from looking at the individual pages to looking at the map of my page universe.

tl;dr We use the web in a nonlinear way, like jumping around a dynamic tree, but the browser limits us to an ant-like perspective where leaves are privileged over the tree.

<comment><USER29> You might like the history tree in next browser: [https://next.atlas.engineer/](https://next.atlas.engineer/)

<comment><USER30> That's a bit like Vim's undo tree which is incredibility useful.</comment></comment></comment></comment>


Ask HN: What do you do with downtime at work? - <AUTHOR> I'm just in a transition period between two different projects at work and the new one is still in a discovery phase, so I am finding myself with a significant amount of free time for a week or so.<p>What are your go to activities to make the most of this time? <comment><USER2> First and foremost, relax and recharge. The hard work will come again soon enough. Go out to a long lunch or have a team lunch or something, for example.

Second, take some time to take care of yourself professionally. Now's a good time to network with former colleagues and other people you haven't talked to in a while, to spend some time learning about something that will enhance your skills or to make sure your résumé is up to date.

Lastly, take some time to clean up your workplace. Take care of old tech debt items, update documentation, and, in general, take care of any part of the systems you work on that have been neglected for a while. There's always something that needs maintenance.

</comment><comment><USER3> The worst thing is idling browsing on the web. It really drains energy

Then, if you say you have free time, there is a high chance you did not look hard enough. Is there really no document you could read, noone you could talk to ? Very often, when I find myself idle, I realize there are things I could do.

If really you are idle, check how much you really need to stay at work. In some environments, you could very well take some time off, or spend less time at work, and nobody would care. 7

In some work, you need to do sometimes 14 hours working days for long period. It would be fair, and is sometimes accepted that in exchange you go back home at noon on some other days.

</comment><comment><USER4> Learning! Reading relevant books, talking with colleagues. Or doing orgamization overhead, such as the preparation of an issue tracker or a wiki for the new project. Thus you are fully prepared once the new project starts.

</comment><comment><USER5> I'm surprised that your manager hasn't assigned specific tasks to do.

If I were in your position, I'd take some holidays. That would be the best way to recharge.

If you still have to go to work, then brushing up on some skill in an area that will help you be more productive in the next project is probably a good idea. That could be increasing your proficiency in a language, framework, libraries. A small side-project to automate some rote task could also be very beneficial.

</comment><comment><USER6> Something useful is to write the copy for the future project. Writing the draft for the docs too as if the project was already shipped. It helps a lot with focus and alignment. Making sure we want to build the same thing. Adding new ideas. This is basically a period with no constraint as no code is written yet and no sunk cost to hinder your thoughts.

A useful exercise is to imagine you're making a tour video showing off what the product does. What would be in that video, and then the code to write to make that happen becomes clearer.

Also, reflecting on the project that was done and all the hidden skeletons can be useful. The mistakes and inefficiencies. How to avoid those in the new project? For example: it was super hard to add functionality or remove it in the previous project. The next project starts by being extensible, with a plug-in architecture with zero change to add am extension. You write how you would add extensions and then write the code to allow that flow.

How to transfer the learning from the previous project on to the next one, and just individually but as a team.

</comment><comment><USER7> Take a break if you were working too much before spend a day or two relaxing, rejuvenate, read books.

Else, whenever I get some free time, I use to clear my Pocket reading list, read my open tabs which I opened to read but couldn't get time, after clearing my tabs I really feel good :P

Or you can always learn something not just technical but also a life skill.

</comment><comment><USER8> Here's a good process, when you're bored:

1\. Imagine random projects you're interested in e.g. _" Dog door alarm", "3d maze online"... "nearest toilet app"_

2\. Try and find if someone has done it; search Github, Google etc

3\. If it's been done _GOTO step 1._

4\. Else; Try and build it!

This method works for personal and professional ideas

</comment><comment><USER9> Work on scripts/automation/testing. Do any prep work or reading/research.

Get any systems setup, updated, patched etc.

Learn new tech and methodologies that may help you in the new project.

</comment><comment><USER10> I'm usually learning on the active days; the best time to pick up a tool related skill or keyboard shortcut is while you're active.

Downtime days sounds like a good time for light play. Something like Codepen is a good example, all kinds of CSS art, and figure out how they work. Maybe mess with some animation on existing code. Maybe find a new way to write documents and tests faster.

</comment><comment><USER11> How often do the people here find that they have too much of down time at work? a bit tangential but asking since i find myself in this situation a bit too often.

</comment><comment><USER12> Browse HN - look for content I am interested in learning.

Setup coffee/walk with teammates.

Work on internal hack projects.

Purge the backlog.</comment>


Thank you for rejecting me YC - <AUTHOR> As I looked in my inbox and seen an email from YC, I stopped everything I was doing and had a moment of stillness. A quote from Tony Robbins came in my head "nothing in life has any meaning except the meaning I give it". So before I opened it, I asked myself "what does getting rejected mean? And what does getting in mean?" I knew the odds were against me. I'm a solo founder, I have interactive wireframes completed, and no previous startup experience, but regardless I applied because I know that Bylder will make a real impact on peoples lives. So I decided that if I get rejected I will work harder and smarter than ever. I decided that if I get rejected that I will live with no fear because the worst thing that can happen is that we get rejected. But as long as I learn from this, improve from this, I know I will become a better person, founder, and human overall. So I want to thank you Y Combinator for the opportunity and the hope to apply but also for rejecting me for the YC Summer 2015 batch.
I wish everyone who is got invited good luck. I hope for everyone else to keep their head up and work harder, smarter, and more intense than ever before.
Best, Omar Amiri Founder of Bylder.net email@example.com <comment><USER2> I kinda miss an explanation for what Bylder is actually supposed to do.

Gleaning from his website that is supposed to be a meta job search meets online resume system. Double bonus against it: he will have to fight against double networks effects (it is useless unless there are both recruiters and employees on it) and (like dating services) once he has a match his users doesn't get any happier, they walk away (at least in this case not in pairs).

<comment><AUTHOR> Ya, you're right. I'm completely updating the site now to make it clear.

I see what you mean about the double network effects but because of my bad copy it comes across that way but essentially Bylder is like Kayak for job search and users would be linked to the employers career page to apply.

</comment></comment><comment><USER3> [https://www.google.co.uk/search?q=Bylder](https://www.google.co.uk/search?q=Bylder)

Seriously, have you googled your product/company name?

</comment><comment><USER4> Aww good for you Omar. I got rejected too (solo founder, also very early stage). I blogged about it and now I'm over it. Good luck with everything!

<comment><AUTHOR> That's good. I just hope this motivates you more than ever before.

Good luck :)

</comment></comment><comment><USER5> We have also been rejected and your post has been very inspirative

<comment><AUTHOR> Thank you, I really appreciate it.

</comment></comment><comment><USER6> The moral of the site: If you are a broke college grad who can't seem to find the perfect job, then just throw up a fairly standard wordpress/jquery site that boldly claims to be the ultimate job seeker's solution. As long as you provide a side-by-side comparison between yourself and the 30+ billion valued behemoth in that space that shows your solution with twice (!) as many check marks, then you have given a self-grounding truth as to why any potential investor would not be better served throwing their investment dollars into the Cracks of Doom.

Unattributed quote found on the site:

"This is really revolutionary. Bylder is taking the job hunt to the 21st century."

This kind of rhetorical device is NOT the way to instill the greatest investor confidence.

<comment><AUTHOR> Absolutely true. Awesome advice, thank you.</comment></comment>


What actually happens if a city gets nuked [video] - <AUTHOR> https://www.youtube.com/watch?v=5iPH-br_eJQ <comment><USER2> One of the greatest articles that I have ever read was a narrative of some of the people who survived the Hiroshima bombing, recounted a year after the event. [https://www.newyorker.com/magazine/1946/08/31/hiroshima](https://www.newyorker.com/magazine/1946/08/31/hiroshima)

</comment><comment><USER3> # August 6, 1945

      In the Enola Gay
      five minutes before impact
      he whistles a dry tune

      Later he will say
      that the whole blooming sky
      went up like an apricot ice.

      Later he will laugh and tremble
      at such a surrender, for the eye
      of his belly saw Marilyn's skirts
      fly over her head for ever

      On the river bank,
      bees drizzle over
      hot white rhododendrons

      Later she will walk the dust,
      a scarlet girl
      with her whole stripped skin
      at her heel, stuck like an old
      shoe sole or mermaid's tail

      Later she will lie down
      in the flecked black ash
      where the people are become
      as lizards or salamanders
      and, blinded, she will complain
      Mother you are late. So late

      Later in dreams he will look
      down shrieking and see

      ladybirds
      ladybirds

_Alison Fell_

<comment><USER4> I had not seen or hear-of this poem before. I'm familiar with the bombing of Hiroshima from a historical standpoint, but I can't say that I really _understood_ this poem. I searched online for an explanation. I found this document. It looks like some sort of literature homework. It helped quite a bit.

[http://essalanglit.weebly.com/uploads/1/0/5/4/10543533/augus...](http://essalanglit.weebly.com/uploads/1/0/5/4/10543533/august_6_1945.pdf)

</comment></comment><comment><USER5> In my agency days, I produced this video (which was part of a larger campaign about surviving a nuclear attack in a city). Was a ton of fun, and quite sobering: [https://vimeo.com/29382035](https://vimeo.com/29382035)

</comment><comment><USER6> A nuke would not "desintegrate" steel-reinforced concrete buildings.

</comment><comment><USER7> For me, throwing bombs like this in Hiroshima and Nagasaki are as evil as the holocaust.

<comment><USER8> What's your reasoning?

<comment><USER7> I don't see a difference on the evilness rate of who kills a two hundred thousand or who kill a million civilians. I understand each side had different reasons, but I am talking just about the evilness on that. During the war, everybody is evil.

<comment><USER8> Oh ok, so your personal definition of evil just includes every belligerent act.

<comment><USER7> Yes, when civilians are involved.

<comment><USER8> Right, so if someone takes military action with a non-zero chance of civilian death then they have committed an evil on par with the holocaust, no?

<comment><USER7> If he kills thousands, for sure. No difference between thousands or millions, it is the same evilness rate. After some point, there is no difference in cruelty.

<comment><USER8> What is that point? What is the moral difference between hundreds and thousands, or dozens and hundreds.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER9> You never nuke a city once. To overwhelm missile defense you must send many nukes to increase your odds of success.

So imagine multiple nukes peppering the same city.</comment>


Show HN: Notion- all-in-one workspace for your notes, tasks, wikis, databases - <AUTHOR> https://www.notion.so/ <comment><USER2> It's great to see, that people see real value in the market for project management SaaS solutions. We started developing Zenkit ([https://zenkit.com](https://zenkit.com)) 1 1/2 years ago and have since then seen an explosion of new and amazing solutions coming to the market. I take that as a sign, that we're in the right market. I'm very excited about our future, and Notion's.

</comment><comment><USER3> I looked at Notion a while ago as part of my ongoing quest to find a good Markdown editor. Notion isn't aiming to be that, but like a lot of products in this space, it can kind of do it depending on what exactly you're looking for. Anyway, I went back to Emacs for Markdown, but the idea of Notion (for its actual intended use case) still seems really cool to me.

</comment><comment><AUTHOR> Notion is not my product, but I found it today at Product Hunt. I thought it was nothing cool at the first moment, but I really liked the idea team is executing.

</comment><comment><USER4> Mac and Windows? Thanks, I'll pass.

&good luck

<comment><USER3> It has a web interface. Admittedly, their Firefox support has been less than perfect, but it works pretty flawlessly in Chrome.</comment></comment>


Photographs of Hidden Spain - <AUTHOR> https://www.magnumphotos.com/arts-culture/society-arts-culture/cristina-garcia-rodero-espana-oculta/ <comment><USER2> I hope nobody thinks these shots are somewhat representative of the country, even when they were taken(70's and 80's). At first glance I thought they were taken in the early 60's at most.

(Yeah, I know the "hidden" it's in the title itself and should warn about generalizing what's being shown, but still).

<comment><USER3> I am from Galicia and shot #3 is definitely not representative from Galician Carnival. Galicia is a gorgeous destination, especially during Summer, but don't expect to have the kind of fun that the guy in photo #3 is having :-) Here are a couple of videos that provide a much better representation of what Galicia currently is: [https://www.youtube.com/watch?v=uG1hkCzefL0](https://www.youtube.com/watch?v=uG1hkCzefL0) and [https://www.youtube.com/watch?v=ZtUqecPNXgI](https://www.youtube.com/watch?v=ZtUqecPNXgI)

<comment><USER4> You can definitely find popular festivals in Galicia where getting drunk is the main goal, if that's your thing. I'd say it's a waste of time, though, given how beautiful and great Galicia is. Better to get wasted closer to home.

</comment></comment></comment><comment><USER5> Fascinating.

I have a two week vacation planned in August to Galicia, Spain to visit the hometown of my great-grandfather. Will have to add some of these small towns to our list of places to visit.

<comment><USER6> The one with the man taking a piss directly to the camera? That's Galicia ;-)

Jokes aside it's the most fascinating region in Spain, believe me. You'll enjoy.

</comment></comment><comment><USER7> Happy to see a photo of La Alberca. It's probably one of the most beautiful places in Spain, full of traditions, but very often forgotten by Spanish people, because it's isolated from the rest of the country and nowadays too few people live there. That may be the reason that it's still a magical place for some of us.

</comment><comment><USER8> i really do not like magnum. They were the ones responsible for google removing the save image link in google image search.

<comment><USER9> Professional photographers haven't had an easy time protecting their work in the digital/internet age. I'm guessing you don't believe their craft has any value that can't be easily replaced by a hoards of amateurs with digital image collection devices in their pockets and crowdsourced curation. Even then, you'd have to admit that people who were making a living at this thing and were forced to abandon it by changes in technology should be afforded some consideration.

<comment><USER8> inability to right-click+save some how protects their work?

Photographers achieve success not due to successful prevention of users from downloading images they've made available on the internet. Skills, marketing, client-base, luck, are things that determine whether photographers are successful.

<comment><USER9> >inability to right-click+save some how protects their work?

There was a time, not long ago, when photographers (and apparently some courts) thought this would keep people from appropriating work without permission.

In the end, it's a very minor inconvenience that can be easily bypassed. I'm not sure why it would inspire so much ire from anyone.

<comment><USER10> You don't see why ineffective government action that fails to do the one thing it was designed to do, but inconveniences everyone else would draw so much ire?

</comment></comment></comment></comment></comment><comment><USER11> I think you can find peculiar people in every country.

</comment><comment><USER12> That's very cool. It's also nice that some of those customs are still alive and kickin' in some parts of the countryside.

<comment><USER6> I'm not sure most of the pictures are recent enough.

</comment></comment><comment><USER6> This is absolutely fabulous. Thanks for sharing.

</comment><comment><USER13> Warning: NSFW content on the 3rd photo I saw.

</comment><comment><USER14> What do these masks in the photos symbolize?

<comment><USER15> Some info here: [https://en.wikipedia.org/wiki/Capirote](https://en.wikipedia.org/wiki/Capirote).

</comment></comment><comment><USER16> NSFW yoo

</comment><comment><USER17> At least one shot is NSFW.</comment>


Facebook accused of massive fraud in new lawsuit filed by Cook County - <AUTHOR> https://arstechnica.com/tech-policy/2018/03/cook-county-illinois-sues-facebook-and-cambridge-analytica-over-data-breach/ <comment><USER3> I wonder if the statute of limitations to sue Facebook over allowing the Obama campaign "ingest the entire US social graph" [1] has expired. Red states and Republicans should jump on this bandwagon too. Allowing Facebook data to be used in elections is either fraud or it isn't, regardless of whether the candidate benefiting from it is the one the press likes or not.

[1] [https://www.washingtonpost.com/business/economy/facebooks- ru...](https://www.washingtonpost.com/business/economy/facebooks-rules-for- accessing-user-data-lured-more-than-just-cambridge- analytica/2018/03/19/31f6979c-658e-43d6-a71f-afdd8bf1308b_story.html)

<comment><USER4> > Allowing Facebook data to be used in elections is either fraud or it isn't

No, that's not how fraud works.

<comment><USER3> I agree with you. But the attorney for Cook County, who filed this absurd lawsuit, does not.

<comment><USER4> I don't see evidence for that.

Particularly, I haven't seen any argument that Obama transferred information out of its app for other uses, instead of using it within the app in exactly the method allowed by FB's public policies. While those policies may have been laxer than some would prefer, the Illinois lawsuit relied heavily on the fact that the info was used outside the parameters of those policies, while users were ensured it would be used only within the policies, and that FB was aware of the unauthorized use and failed to notify or arrest it, and indeed benefited from it.

The thing that is charged as a violation is not "using Facebook data in an election campaign", but "using personal data without even the kind of consent that comes from acting within public policied on how data will be used."

<comment><USER3> _Particularly, I haven 't seen any argument that Obama transferred information out of its app for other uses, instead of using it within the app in exactly the method allowed by FB's public policies._

That is actually not the case. The public policies at the time stated that the data gleaned from any app was to be used solely for the purpose of operating the app. Obama, however, with the full knowledge and consent of Facebook, used this data for campaign strategy and ad targeting. They downloaded the entire US social graph (also something no other app was allowed to do), and then used that data far outside of the publicly disclosed purposes.

So if they can legitimately be sued for failing to do enough to stop Kogan/CA from using the data in violation of publicly stated policies, they suffer even _more_ liability in the Obama case, as they were active and willing participants in Obama's activities that also violated the publicly stated policies.

<comment><USER4> > They downloaded the entire US social graph (also something no other app was > allowed to do)

That would be germane to a campaign finance complaint (this appears to be an issue of automatic flagging followed by discretionary response, which also happened in the CA case, and those are fraught because it's very hard to say that the terms and pricing were the same as generally available to other customers and not an in-kind donation of special services), but not to the kind of complaint being made here.

<comment><USER3> _That would be germane to a campaign finance complaint_

That may be, but the crux of the complaint - allowing third parties to use data in a way that was not consistent with publicly disclosed policies - <USER2> occurred in the Obama case. The only difference seems to be that the actions of Facebook in assisting and endorsing the violations were willful in the Obama case, whereas the allegation seems to be that they were simply negligent in the Kogan/CA case.

<comment><USER4> > whereas the allegation seems to be that they were simply negligent in the > Kogan/CA case.

No, the allegations in the CA case—the specific lawsuit being discussed—is that they were willful and based on Facebook's corporate strategy of selling itself on the basis of the platform as a tool to manipulate behavior.

<comment><USER3> Which is also what the Obama campaign took advantage of. The victims of the Obama campaign - those that did not know that their data would be used in this way and did not authorize it - approximately 199 million people - all have causes of action against Facebook if this lawsuit is allowed to proceed.

<comment><USER4> > Which is also what the Obama campaign took advantage of.

I was refuting an alleged difference.

> The victims of the Obama campaign - those that did not know that their data > would be used in this way and did not authorize it - approximately 199 > million people - all have causes of action against Facebook if this lawsuit > is allowed to proceed.

Well, no, even if we assume otherwise identical material facts, the state law in this case has a three-year statute of limitations for private causes of action.

Also, the Obama 2008 and 2012 campaign committees presumably were dissolved years ago, so other than suing Facebook, there's no one to sue, even if the statute of limitations wasn't an issue.

<comment><USER3> _Also, the Obama 2008 and 2012 campaign committees presumably were dissolved years ago, so other than suing Facebook, there 's no one to sue, even if the statute of limitations wasn't an issue._

There are exceptions that vary between jurisdictions with regard to the Statute of Limitations, but you may be right that it has expired and there may be nothing that can be done. If that issue can be overcome, you may also be right that the Obama committees are gone, however Facebook has plenty of money to go after.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER4> Cambridge Analytica and Facebook, the latter largely based on poor response (which, along with some of Facebooks marketing, is used to suggest willful cooperation) when the abuse by the former was discovered.

</comment><comment><USER5> Really digging this Facebook dogpili vibe.

</comment><comment><USER6> "Facebook… is the largest data mining operation in existence."

You know what? It's actually a true statement. Just add Google as a co- conspirator.</comment>


They Know Much More Than You Think - James Bamford on the NSA - <AUTHOR> http://www.nybooks.com/articles/archives/2013/aug/15/nsa-they-know-much-more-you-think/

<comment><USER2> This is a good read. James Bamford has been at this for many many years.

I'm surprised that nobody has commented. Is this a dupe, or is there "spying fatigue" here on HN, because of all the stories?</comment>


Coronavirus vaccine could be ready in six months - <AUTHOR> https://www.bloomberg.com/news/articles/2020-04-11/coronavirus-vaccine-could-be-ready-in-six-months-times <comment><USER2> Other teams make similar claims. I'm glad to hear many teams around the world work in parallel.

"Israeli scientists: 'In a few weeks, we will have coronavirus vaccine'" [https://www.jpost.com/HEALTH-SCIENCE/Israeli-scientists- In-t...](https://www.jpost.com/HEALTH-SCIENCE/Israeli-scientists-In-three- weeks-we-will-have-coronavirus-vaccine-619101) The article now says April/7th, but the URL including 'in-three-weeks' was submitted 40 days ago ([https://news.ycombinator.com/item?id=22472771](https://news.ycombinator.com/item?id=22472771))</comment>


How can more layers be more efficient? - <AUTHOR> http://www.lispcast.com/more-layers <comment><USER2> How can layers be more efficient?

Let's see: your computer's multiple layers of caches in the "memory hiearchy" are all extra layers between the processor core and memory.

If you were to turn these off, it would be a complete slug.

Layers are faster when they can intelligently:

* filter requests (higher layer blocks some useless request avoiding time-wasting calls into lower layers where the same conclusion will eventually be reached).

* aggregate requests (the higher layer notices that multiple small/incremental requests can be rewritten to an aggregate request that is available in the vocabulary of the lower layer; I/O buffering is a common example of this).

* provide caching (already covered)

* provide bypass. A system with N layers can be faster with N+1 layers if the new layer is able to bypass some of the layers below it in some cases.

* use alternative providers for the lower level services. Related to bypass: for this situation, don't use all these existing layers; go this way instead.</comment>


Post-launch analysis of an e-commerce build in modern perl - <AUTHOR> http://perlisalive.com/articles/14

<comment><AUTHOR> I like the fact that the authors regard pulling together chunks of CPAN with custom code to be a middle ground between "buy or build".

While installing N distributions from CPAN for large values of N can be annoying, I think the way CPAN hangs together tends to lead to more granular releases of software which enables this sort of thing to a greater extent than I've seen on other projects - I'll happily reach for a CPAN module rather than writing a dozen lines of code.</comment>


Understanding What It's Like to Program in Forth (2008) - <AUTHOR> https://prog21.dadgum.com/33.html <comment><USER2> Forth is truly amazing in terms of what you can do with very little RAM and CPU power. It is quite possible to have a working interactive development environment and production implementation in only 4-8 kibibytes of RAM. In the world of small memory 8 bit computers it was amazing.

I think Forth can be useful to learn today, at least to stretch the mind to realize that not all programming languages have to be variants of Algol. It can also be a fun game as suggested by the article. I have enjoyed fiddling with it, including re-implementation of the language, and I can recommend it to others as a fun Bazaar toy. In addition, the book Starting Forth is amazing and still worth reading, because it shows that complex topics can be explained clearly and with humor.

However, for actual production use, I do not think the Forth programming language is ever going to return to widespread actual use. Our computer systems are far more capable, and if you have to program a tiny of computer, you would use a larger computer for programming instead of trying to fit your development environment within a few K of RAM. Nowadays the big constraint is development time, including the time to develop the resort code the time to read existing code to modify it. Forth doesn't do as well by those measures. When something is trivial another languages, but it's a puzzle to solve in Forth, that is not a good thing. That does not mean that Forth is a bad programming language, it is a very good programming language, but it is designed and optimized for a situation that is increasingly unlikely.

<comment><USER3> I have known an embedded engineer for probably a decade now.

He uses Forth.

I watched him write a tiny forth kernel in a Kb of RAM or so, then run a dictionary through it to get a brand new CPU bootstrapped in what could be as little as a day.

Very impressive. That system got an assembler / disassembler used to make new system words and other words fast.

Modifying a Forth system, and I say that due to how Forth is really an environment that becomes capable of the application, depends lot on who made it and what one can know of their thought process.

What I thought interesting about this guys approach us a fairly pure Forth is used to bootstrap. Then one that is a lot more comfy gets made for the longer get term.

Once that stage is reached, and there are good tools, assembler / disassembler, monitor, word viewer, etc... Forth can be made less of a puzzle.

One can even add other syntax, an interpreter, if desired.

The product is more like a dev system, self hosted and capable.

I find it all compelling, but as you say, much different.

<comment><USER2> That's a plausible use case. Question is, if the engineer goes away, how long would it take to replace him? Languages do not take too long to learn, but Forth programs are often hard for others to read.

I think most people prefer cross-compilation on small systems for professional use.

If you are doing it as a hobby, ignore everything I just daid. I see the fun in it, and applaud it. Enjoy!

<comment><USER3> Again, depends on how the Forth is done.

Counter question:

Given the obvious savings, why not invest some of that into a second person to retain a clear advantage?

Do what most people prefer and get results that most people get.

There are other ways to success.

<comment><USER2> > There are other ways to success.

Absolutely. I've played with Forth many times, and enjoyed it. But when it comes to building systems that people _pay_ to develop & maintain, I haven't found any use cases recently. No doubt there are some, but I suspect they're much less justifiable today.

<comment><USER3> Let me expand a bit. Was tired when I wrote the snarky comment.

In a typical corporate environment, yes. Your thoughts ring true.

It is a big world outside that scene, and many playing there can benefit from Forth. That is the utility. People who grok Forth flat out solve hard problems like no other.

Tool for that toolbox, essentially.

</comment></comment></comment></comment></comment></comment><comment><USER4> Sometimes I feel discussions on HN always go into the weeds with people going back and forth while losing sight of reality.

I used Forth professionally for well over a decade. I made truckloads of money with the end products. One of the companies I was involved with, which was 100% Forth, sold for just south of $20 million USD.

Customers don't go to Home Depot to buy drill bits. They go there to buy holes.

The world could not care less if solution A was coded in C, solution B in Forth and solution C using a keypad to enter machine code. All they care about is the best solution at the best price.

I have always felt that the distinction between experienced and less experienced engineers is that those with experience focus on what matters —delivering value to customers— while the less experienced folk needlessly burn time on theory, languages, code editors and other stuff.

25 years ago I made over $500K with a small 6502 embedded system used to help control lab equipment during cancer research lab tests. I made this box with a 6502, a couple of UARTS, a 2x16 LCD display and four pushbuttons. The box sold for $2,000 each. Sold piles of them. The code was written in Forth. The buyers could not care less. Neither did I frankly. I love Forth, but, at the end of the day, it's just another tool.

Customers want holes.

<comment><USER5> _Customers want holes._

At one level I entirely agree. But at another, when it comes to the holes they drill in the bathroom to hold the toilet roll, and the holes they believe were drilled in the pickle fork holding the wing onto the 737-max, they feel very differently about the holes. The first one, They don't much WANT The toilet paper falling off, but its kinda meh. The second one, being told uncle fester was given a hand drill from the barn and told to ream 'em good and deep doesn't fill anyone with joy.

Customers want _the right kind_ of holes.

<comment><USER4> These kinds of analogies are not intended as precise engineering or business definitions. They are simple thinking tools used to deliver a point.

If you are in the business of delivering holes for aerospace customers your focus should be on delivering the kinds of holes they need. At the end of the day, they still only care about holes. That's what they are buying.

Most customers using a software-based product could not care less if it was created using vim and python or toggle switches and machine language. They are after the solution to a problem; that's all they care about.

Our customers don't buy language features, compiler flags, stacks, lists, dictionaries, classes, variables or functions.

<comment><USER5> Aphorisms have to be tested. "Did you drill these holes to required tolerances and was the material tested for overheating and delamination" is not that far off "did you use llvm or gcc and what compile time options did you use"

<comment><USER4> You missed the point. Forget about holes and think about what customers are looking for. The answer is a solution to a problem. Nobody buys a car because they are after one with body panels made with hydro-forming rather than a sequential press. They are after a vehicle that addresses the transportation needs they might have. They could not care less if it was designed using SolidWorks, Fusion 360 or Siemens NX.

They are looking for a hole.

</comment></comment></comment></comment></comment><comment><USER6> I experimented with Forth with my Apple II (I had serial number 71, one of the early ones!). I liked the interactive bottom up REPL coding style, but I found it difficult to read code that I had written the week before.

After playing with Forth, I bought Pegasus Lisp for the Apple II and for me Lisp hits a sweet spot of concision, bottom up REPL development, and readability.

That said, I can see why some people like Forth if they are very experienced with it and can get things done quickly.

<comment><USER7> Reading the book 'Thinking Forth' will help you write legible code.

<comment><USER8> I second this, IMO to a first approximation reading that book is the way to understand programming in Forth.

[http://thinking-forth.sourceforge.net/](http://thinking- forth.sourceforge.net/)

</comment></comment></comment><comment><USER9> The thing that's wrong with Forth is it promotes eschewing verbal identification of variables for the sake of positional. This is promoted as good mental exercise, but is just bad language design. As Rich Hickey said, we humans prefer to identify things in terms of keywords, not positions. For any method with more than a couple parameters, kwargs are more convenient than positional arguments or, worse, implicit args on the stack. This is why concatenative languages are doomed to be just a forgotten cul-de-sac off the highway of the history of programming languages.

<comment><USER10> I frequently see arguments of the form "X is good; Y doesn't have X; therefore all typeof(Y) are doomed". I don't understand. Didn't you just give a criterion for success? Why can't we make a new Y2 that has X?

In this case, it doesn't even seem difficult. I've seen multiple stack-based systems that allow items labels. They don't use them for arg-passing (AFAIR), but I don't see why they couldn't.

I'm not even convinced that positional arguments are fatal for language design. _Most_ popular languages today lack named arguments. They're usually only named on the callee side. I'm sure we've all run across a C function call that looked like foo(a, b, c, d, e, f, g, h), and cursed the author under our breath, and then counted out to the argument number we wanted to change.

Languages succeed or fail for many reasons, but I don't think I've ever seen "calling convention" be the deciding factor (no pun intended).

In the more general sense of concatenative (not necessarily stack-based) languages, Unix pipelines are a common example, and they don't seem to be doomed.

</comment></comment><comment><USER5> When we did forth(like) languages in computer science kindy (back in the 70s and 80s) the lecturers used to smirk because real languages like ADA took 20 passes and built huge models and were therefore more betterer and gooderer for some value of complex. Having the thing function as a stack machine in Reverse-Polish meant you didn't have to parse anything, it was basically already there for you sitting on the top of the stack (dock of the bay) watching the PC come in.

I think the smirk was misplaced. What they needed to do was talk about this in comparative language classes and about why people drive to small(er) languages, and fitness for purpose, and what kind(s) of things happen when you force people to think this way, vs why you drive to COBOL and what you force people to think and do, when you go there. They're all turing-complete. They're all capable of expressing the same things, at some differing level of complexity and cost, in some variant of machinery.

<comment><USER11> If it were up to me to design curricula for CS, I'd do the entire thing in Ada, with the exceptions of "Data-Structures & Algorithms" being in Lisp and "Machine Architecture" in Forth — both of these classes would have a "Compilers & Interpreters" prerequisite where they would be provided the specification-files for Forth and Lisp interpreters/compilers which the students would implement, and _that_ is what they would use in the aforementioned classes — not only would having the curriculum in these less- popular languages help emphasize that the important part is the underlying- theory (rather than hyped-up language-of-the-month), but making its prerequisites actually matter and introducing an element of software- maintenance would do a lot to produce good graduates.

</comment></comment><comment><USER12> That is an unfair comparison. Forth is designed to run on metal, with no os, no stdlibc, no vector. Can any of other language do that?

In fact, by just adding first class function, retro forth makes the code way easier to read.

<comment><USER13> > That is an unfair comparison. Forth is designed to run on metal, with no os, > no stdlibc, no vector. Can any of other language do that?

Not much of a stretch with C, really - there's a reason its used to write operating systems ;) (the standard library is mostly about OS interaction which is irrelevant in the bare metal/no OS context)

On some systems, C requires a minimal library for compiler-emitted intrinsics (e.g., for 16/32-bit multiplies on 8-bit systems, for floating point, etc).

<comment><USER14> I think you misunderstand. When the parent says "designed to run on metal" they don't mean "designed to be cross compiled to produce binaries that run on metal", they mean "the compiler, editor, etc. are all running on metal."

<comment><USER15> One of the very first things I thought of when I heard about WASM is, "Oh.. It would be _so_ fun to build FORTH on that". I never got around to it (yet) and from a quick search, there are already a ton of implementations. But I think this is one of the things about FORTH: it's not just that you can run it on the metal. It's that you can _easily_ build a FORTH environment for pretty much any metal you can think of. Bootstrapping from absolutely nothing to a very productive environment is really an empowering feeling. I always thought it was a shame that there are so many people who have made a Lisp, but so few that have made a FORTH. I kind of feel like both of these tasks should be required material in school... Though I only have nebulous feelings about why it is valuable... Not sure I could explain it to someone who hasn't done it already.

<comment><USER16> I haven't done any serious Forth programming in 30+ years, but every time I see a limited resources programming environment, I immediately get the urge to implement Forth on it. "This new game is going to include a DCPU-16 virtual computer you have to program? Great, all I need to do is implement Forth on it..."

Luckily for my already very limited spare time, so far I've managed to resist this urge.

</comment></comment></comment></comment></comment><comment><USER17> It's an assembly language for a 2-stack VM. It's never going to be easy but it is hella-fun to play with.

</comment><comment><USER18> Ran across this post years before I started playing with Forth (recommend the whole blog, he's a great writer).

Later I was going through a Forth phase and came back to it to tackle the puzzle it poses, here's my take on it:

[https://mnemnion.github.io/blog/2014/01/12/those-dadgum- adde...](https://mnemnion.github.io/blog/2014/01/12/those-dadgum-adders/)

I hope this illustrates the raw power of the Forth paradigm a bit better than the OP.

</comment><comment><USER19> I was following along until the author stopped explaining new syntax.

"over", according to forth.com, copies second item to top... ( n1 n2 — n1 n2 n1 )

But I get lost with >r, r>, r@, and !

<comment><USER20> They move top cell from stack to return stack or vice versa. r@ and r! are effectively equivalent to r> @ and r> ! ... or was it r> @ >r and r> ! >r

</comment></comment><comment><USER21> James Hague has a lot more Forth experience than I do. But I would initially write this function something like this:

        variable v1  variable v2  variable v3
        : vadd v3 ! v2 ! v1 !
          3 0 do  v1 @ i cells + @  v2 @ i cells + @  +  v3 @ i cells + !  loop ;

Or, alternatively:

        0 value v1  0 value v2  0 value v3
        : vvadd to v3 to v2 to v1
          3 0 do  v1 i cells + @  v2 i cells + @  +  v3 i cells + !  loop ;

I mean, yes, you _can_ make it a puzzle. But you don't _have_ to. These versions will be slower than Hague's first working version and probably the second too, but all of Hague's versions are slower (with any Forth compiler I've used) than what GCC will give you for the C version. And what GCC will give you for the C version, even if it improbably manages to vectorize, is also a lot slower than what you'll get if you do your vec3 math on your GPU. So maybe when it comes time to rewrite the naïve Forth version above, because it _is_ slow, you should just code an SSE assembly routine and skip the manual loop unrolling at the Forth level, or restructure the whole system to do the vector math on the GPU.

Or maybe not. James Hague is a smart guy and he's shipped a lot of code, in assembly, C, and Forth. But I'd like to understand where my reasoning is going wrong, because I can't see it.

My perspective on Forth is that it's the thinnest possible layer on top of raw machine code that gives you all the fundamental mechanisms for improving your leverage. You need structured control flow, so it has IF ELSE THEN, DO LOOP, BEGIN WHILE REPEAT, and a couple of others. You need expressions, so it has an operand stack. You need procedural abstraction, so it has a return stack, which also serves to store loop counters. You need labels both to make your code readable and so that you can patch your code without overwriting parts of it with JMP instructions to wherever you have free space to put the patch code, so it has words. You need metaprogramming, so it has IMMEDIATE. You need run-time polymorphic procedure dispatch, so it has ', EXECUTE, DEFER, IS, and CREATE DOES>. You need namespace management, so new definitions hide old definitions with the same name, and you also have wordlists.

The problem with all these wonderful mechanisms is that they can become an attractive nuisance, as you futz around trying to find the perfect way to express your intent in the smallest, clearest amount of code, navigating the tradeoffs imposed by the sparse toolset. But you don't have to do it that way. You can just write simple, straightforward code that gets the job done with no fuss, and move on to the next problem. Forth lets you do that, too.

That said, I find it easier to get my code working in assembly language than in Forth, and I don't know if that's because I don't know Forth well enough, because Forth is inherently less practical than assembly language, or just because Forth somehow fails to fit my brain. My guess is that I fall for the attractive nuisances too often and waste my time with unproductive futzing. And that's what this blog post looks like to me.

<comment><USER2> The problem with using global variables (like this) is that it's not thread- safe. Many Forth systems supported multi-threading (each thread gets its own pair of stacks), even on resource-constrained systems. If you're going to have names like this, named parameters AKA local variables are a better solution.

<comment><USER21> Those aren't global variables; they're just variables. They _are_ statically allocated, which you would think would lead to the problems you describe. But multithreaded Forth systems traditionally use cooperative rather than preemptive multithreading, and since VADD doesn't invoke any words that can yield to another thread, it can be assured that no other instances of VADD will mess with its variables while it's running. So that problem doesn't actually exist unless you're using something like GForth's experimental pthreads interface. In that case you could define the variables as "user variables" (TLS, in more widespread terminology) as well as the possibility of making them stack-allocated variables as you suggest.

I like stack-allocated variables, and they'd be the obviously correct solution in a language like C; but ANS Forth doesn't have them (oh, I see they've been added in Forth-2012; thank you!), they make it harder to factor words, and some of the other problems they solve in Algol-family and Lisp-family languages have other solutions in Forth, so the case for them is not as strong.

Also, traditionally, multithreaded Forth systems were multiuser; each task had its own dictionary. So a fourth way to avoid the problem (in addition to procedure-local variables, cooperative multitasking, and user variables) is to load the definitions above after spawning the potentially interfering task rather than before.

</comment></comment></comment><comment><USER22> "Better than Sudoku? Yes."

I would have went with riding a 5 EUR motorized kids skateboard without any protection and never looking back. But that's a good analogy too.</comment>