Music industry hails passage of the Music Modernization Act - <AUTHOR> http://www.latimes.com/entertainment/music/la-et-ms-music-modernization-act-20181011-story.html <comment><USER2> I work for an internet radio company and deal a lot with streaming royalties, I'll try to offer some more context here:

\- "groups representing (musicians)" from the article is, in this case, almost certainly referring to Performing Rights Organizations (aka PROs). The PROs are groups like ASCAP, BMI, and SoundExchange who manage the business of collecting and distributing royalties to artists. When you make a public performance of a work, or when you broadcast it in some way, you're required to obtain license from one or more of these PROs and report your usage of the work to them. They then determine what the artist is owed based on your usage.

\- big service providers in the industry, like Spotify or Pandora, can make "digital direct deals" with labels and content suppliers. This lets them skip parts of the process of reporting their royalties to PROs, and instead they negotiate and pay the record label or content supplier directly. A direct license like this is typically also required if you'll be offering downloads of tracks, not just streaming broadcast.

\- the biggest/best change on the artist side is from the Allocation for Music Producers (AMP) part of the collection of bills passed here, which officially recognizes producers for their contributions to a work and makes them eligible to receive royalties

\- the biggest/best change on the steaming provider side comes from the Music Modernization Act (MMA) part of the collection, which introduces the concept of a blanket mechanical license. Interactive streaming (think on-demand usage where the user has lots of control, not radio-style usage where the user has little to no control) requires a streaming mechanical license, and up until this point, these licenses have been cumbersome to get - you don't get one by default, you have to request one specifically for each track you want to play from the copyright holder, and the streaming provider themselves is responsible for trying to track down the rights on their own. Clearinghouses like the Harry Fox Agency try to simplify this process and provide tools for automating it, but, it is clunky at best. The MMA makes streaming mechanical licenses much more like a noninteractive statutory license, where no pre- approval is required for use as long as the streaming provider is properly registered with PROs and promises they'll record their usage, report it properly, and keep some money on-hand for the eventual royalty bill.

I don't have much opinion on the parts of the legislation that relate to copyright for pre-1972 works.

In short: it should be easier to get paid if you're a music producer, easier to get paid if you're an artist whose work is being used by interactive streaming services but you aren't big enough to be covered by a supplier or major-label direct license, and the barriers to entry for a service who wants to provide interactive streaming just got a little lower on the licensing side.

<comment><USER3> Seems, neutral to positive then? Excepting the part where perpetual copyright seems to be the future (not like this bill would have passed if it took an activist stance against it).

Still, am I the only one who instantly thought that the title "Music Modernization Act" meant that some horrible draconian policy was being implemented, given the past abuses of the "simple name of a bill"?

<comment><USER4> For those trying to parse this thread (like myself), "perpetual copyright" refers to the "CLASSICS Act" that's bundled with the Music Modernization Act. It retroactively extends federal copyright protection to recordings from 1923 to 1972, up to 2067 for recordings between '57 and '72.

IMO it's not the worst, but it opens the door to more Mickey Mouse antics further down the road.

<comment><USER5> This is the biggest issue I see with the act, but I don't think it's too terrible.

'57 recording will end up with 110 years of copyright instead of the normal 95, but 1923 recordings will unambiguously enter public domain three years from now.

In return, we get pre-'72 music standardized under federal copyright law. It'll streamline licensing, and given that state copyright laws can allow for perpetual copyright, I'm hopeful this still represents a modest improvement.

</comment></comment></comment></comment><comment><USER6> From Wikipedia: _The bills in both House and Senate had bipartisan support, as well as strong support from numerous music industry groups representing musicians, producers, and publishers, as well as from digital streaming media services and related industry groups._

Notably missing from the list are musicians themselves (who are the "groups representing them"?) and consumers.

Is this actually a good thing? Will it lead to greater income for the majority of musicians (as opposed to the top 0.1%?). Will it end up raising prices on Spotify or making it harder for new streaming competitors to enter the market?

<comment><USER5> The support list definitely put my hackles up, as did the name. It's not quite "The Patriot Act", but it's in that "embarrassing to oppose the name" vein. To my surprise, it actually seems fine. The lack of representation for artists looks like a product of the law's main features not impacting active performers. The law has four distinct features, none of which have a significant impact on "some up-and-coming band played a song and wants to get paid".

1\. It establishes a non-profit agency to track mechanical license holders of works, and allows streaming services to pay license fees into that agency, which will pass them along. This sounds like it might have bad effects, but in practice it's apparently an attempt to fix the problem of "Spotify can't offer this song because they can't find who they need to pay".

Importantly, 'mechanical license' means "music and words", so this will track who owns Happy Birthday, but not change anything about how Spotify pays performers over "the song as we wrote and performed it". And since mechanical licensing is already compulsory, the fees can go to a clearinghouse without any need to negotiate a price.

2\. It extends federal copyright laws to pre-1972 music. This will undoubtedly help some people and hurt others, but it mostly serves to clear out a rat's nest of state laws. Some much older works will enter public domain in 3 years, newer stuff will receive the usual 95 year copyright window.

3\. Guarantees a portion of mechanical license fees to producers/engineers/etc who played a creative role in the production. Apparently not very controversial.

4\. Fixes some jurisdictional weirdness with royalty rate disputes by spreading the cases across more judges.

Mostly this looks like it fixes one big liability issue ("wait, who do we pay?") and several issues with existing laws, and it looks like artists are indifferent because the situation for people who actually perform a song is unaffected. I'm pleasantly surprised.

</comment></comment><comment><USER7> The act is complicated and difficult to summarise, but they didn't even try.

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

Unlike most Wikipedia articles, reading just the first paragraph is not, in this case, enough.

</comment><comment><USER8> Pretty bad journalism. The article is full of what other people think of this act without ever revealing what really this new act does!

<comment><USER9> It modernizes music. Why are you being such a buzzkill?! /s

The main thing that seems clear is that it streamlines licensing somewhat.

</comment></comment><comment><USER10> What does the new act entail? This article is severely lacking on that front.

<comment><USER11> Apparently it "ensures artists receive the compensation they are owed, encourages fair industry competition, and protects the intellectual property rights of studios nationwide—among other benefits."[0] However, I find it difficult to find anything about how this is actually implemented. Apart from this: "t changes the procedure by which millions of songs are made available for streaming on these services and limits the liability a service can incur if it adheres to the new process. It funds the creation of a comprehensive database with buy in from all the major publishers and digital service providers." [1] Which to me sounds very vague.

Found this also. "The MMA is a bill to be added to legislation with the goal of establishing a new collecting society, called the Mechanical Licensing Collective (MLC), that would be empowered to provide a blanket license for streaming services to companies, covering mechanical rights in any songs not otherwise covered by a digital company's direct deals with music publishers."[2] So if I interpret this quote correctly, it basically means that there's going to be some sort of organisation chaperoning artist and music makers without a license to their music, collecting a license fee from streaming services and paying it to said musicians and music makers?

[0][https://mashable.com/article/music-modernization-act-your- mo...](https://mashable.com/article/music-modernization-act-your-money/)

[1] [https://www.billboard.com/articles/business/8216857/music- mo...](https://www.billboard.com/articles/business/8216857/music- modernization-act-what-is-it-why-does-it-matter-jordan-bromley)

[2][https://blog.songtrust.com/what-is-the-music- modernization-a...](https://blog.songtrust.com/what-is-the-music- modernization-act)

</comment></comment><comment><USER12> [https://archive.is/wE4qo](https://archive.is/wE4qo)

Viva la GDPR...

<comment><USER13> Don't blame the GDPR (read: basic human rights to privacy) for the LA Times not respecting them.

<comment><USER12> I really don't blame the GDPR, I'm glad LA Times publicly acknowledges that they don't respect their readers.

HN should totally have a bot for this kind of links, and automatically add the archive link in a comment.

<comment><USER14> Does hitting the "web" link underneath the URL help in this case? You could pull the Google cache I think.

</comment></comment></comment></comment><comment><USER15> I'm glad I'm not the only one who felt confused and underwhelmed after reading this piece! I wanted the details.

</comment><comment><USER16> Why is it I'm so dubious that anything "hailed by the Music Industry" will prove beneficial for anyone except the corporations who own the copyrights?

<comment><USER17> You can bet that if no record labels are speaking out against this law that it directly benefits them in some way.

</comment></comment><comment><USER18> > is that it guarantees that writers of pre-1972 songs receive federal > copyright protection

it is a sad day for the constution, and for the Public....

Nothing pre-1972 should have any copyright at all at this point, Copyright should be for 14 years + a single 14 year extension if the Human Creator is still alive to file for the extension.

28 years is the MAXIMUM anything should be copyrighted for, 14 years if the copyright is held by a company

The erosion of a vibrant Public Domain catalog is one of the greatest travesties of modern human civilization

<comment><USER19> One could argue if you made something, you're entitled to the rights.

If a painter makes a painting, he'll be able to pass those down to his children. But if a musician makes a song, it'll end up in the public domain after X years.

<comment><USER20> The intellectual rights on the painting (can anyone reproduce it, in say, print, without the rightholder's agreement) are quite separate from the property rights on the physical embodiment of the painting.

Literature is closer to music in this aspect, as neither has any physical property. Copyright on both is limited.

<comment><USER21> And if someone invents a way of creating nominally perfect three dimensional reproductions of paintings, such copies would be legal.

</comment></comment></comment></comment><comment><USER22> Musician here. This means jack. Also kid rock? I mean I understand why he is there. Trumps base... But that dude just sucks.

</comment><comment><USER23> Kid Rock? This Congress? Whatever they are doing is fucked, and you can bet on that.</comment>


Install and Update All Your Programs at Once - <AUTHOR> https://ninite.com/

<comment><USER2> Something like this for Mac? I use brew cask and have my own file: [https://github.com/pathikrit/mac-setup- script/blob/master/se...](https://github.com/pathikrit/mac-setup- script/blob/master/setup.sh#L27-L65)

But, a nice UI on top of brew casks would be nice!</comment>


Will Foursquare Be Marissa Mayer's First Big Acquisition At Yahoo? - <AUTHOR> http://marketingland.com/will-foursquare-be-marissa-mayers-first-big-acquisition-at-yahoo-19448

<comment><USER2> I hope not! Mayer needs to work on fixing Yahoo from the inside-out. I want to see Yahoo start launching some interesting products on their own.

</comment><comment><USER3> If it is, then it will be her first big mistake.</comment>


James Comey Cannot Be Trusted with a Trump-Russia Investigation - <AUTHOR> http://time.com/4634613/comey-fbi-investigation/ <comment><USER2> I havn't read the article, but the title suggests a strong bias which needs to be dealt with first.

Why does Russia need to be put as a bogey man?

They are a peoples like any other peoples. Wouldn't it be better to get along commercially, which is what Trump is doing, rather than define them as 'the bad guys' so that the warmongers can make up so sort of reason to keep their war machine running?

Come on, are we going to invade them? Are they really going to invade us? Whoever 'us' might be?</comment>


Show HN: The Music Makers Podcast – A sampling of articles from across the web - <AUTHOR> http://musicmakers.fm

<comment><AUTHOR> Hey all, I've just recently released my podcast, The Music Makers, and thought it would be of interest to the HN crowd. For the show, I take an article, read it, and then talk about it. It's a pretty simple concept really. I've got hundreds of articles in my Evernote folder and decided it was time to actually do something with them.

Also, it's given me the opportunity to be in contact with some pretty cool people, as I ask their permission to read their work. Unexpected benefit.

I'd love any feedback y'all might have! Hope you enjoy it.</comment>


Generating Wideband Speech from Narrowband - <AUTHOR> http://www.rowetel.com/?p=6692 <comment><USER2> Subjectively i don't like the reconstructed audio.

I have thought about this kind of reconstruction and wonder if the right goal is reconstruct the original waveform as opposed to reconstruct the subjective experience.</comment>


Ask HN: Still using thesixtyone? - <AUTHOR>

There was a lot of discussion here and elsewhere when thesixtyone released it's new design about 5 weeks ago. At the time many people applauded the redesign and many people hated it. I'm curious as to how many of those who started using it 5 weeks ago still use it, and how many of those who used it before the redesign still love/hate it. I know the founders are extremely busy but I'd love to get their input as well.<p>Full disclaimer: I had/have an artist page there, I don't like the redesign, but I wasn't invested enough in the page to be particularly upset. I've also been slightly annoyed that there is _still_ no way to delete my account. <comment><USER2> I used the site both before the re-design and after.

 _love_ the re-design.

Lots of reasons:

-the core of thesixtyone is about discovery and the problem with many discovery sites is they are too bogged down with choices. the browsabilty of the new design is commendable.

-all of the stuff they are clearly doing around machine learning is more obvious in the second version

-the new design is edgy and i'm sure they knew they would alienate some users, but it's also gorgeous. about time artistic content was more aligned with artistic design.

sure, there are definitely a few usability kinks (trying to delete a song from a saved list, for example) but am i confident that they'll fix them eventually? absolutely.

</comment><comment><USER3> I was a semi-regular user before the redesign, didn't particularly like the new look and have pretty much stopped using the site.

</comment><comment><USER4> I had never used thesixtyone until the redesign made waves here. That discussion made me finally try the site. Now I use it a lot.

Not sure if that helps answer your question, though.

<comment><AUTHOR> It does. When the redesign happened my perception was that the attention drove a lot of new traffic/sign-ups, and I'm curious about how many of those users have remained active.

Edit: I probably should have made more effort to clarify this in the original question: I'm curious about the success of the redesign because the interface is quite adventerous, and I want to gather more information about it's acceptance for taking into consideration when designing my own interfaces.

<comment><USER5> I joined after seeing a story on techcrunch about the redesign. I had never heard of it before. I am extremely fond of the new design. Its simplicity really appeals to me and I've been using it everyday for 5-6 weeks. Previously I was using spotify and have not even opened the application since.

</comment></comment></comment><comment><USER6> I was on t61 fairly early but never used the site much. I use it much more after the redesign. Now it's on par with Pandora as my go-to music source. Pandora is more reliable; thesixtyone is experimental.

OTOH: last.fm has lost me. It's like facebook for musical tastes, except none of my frinds use it. Many of my friends and relatives use Pandora and they seem to get the new t61. I think a lot of people are looking at formats like last.fm and the old t61 and saying "I don't need a facebook for every niche of my life".

<comment><USER7> I used to use Pandora, and then I switched to T61 because I liked the type of music I found on T61. I enjoy the idea that I'm hearing new, independent artists that actually sound fantastic. The whole redesign debate is pretty pointless to me. It hasn't affected my usage at all, and I think it's actually really pretty and unique.

</comment></comment><comment><USER8> Somehow, the social element is gone now and the interface lost its appeal for me. As for the game is gone! From daily logins I am now to about once/twice a week. I only login to listen to my favorite artists. I hate the redesign, I like to look at lists and choose, scrolling is so 90's. (Karma 28000 Lvl 14). Hope for the sake of the owners and artists of the site it works for them, but certainly does not work for me anymore.

I understand your frustration.

</comment><comment><USER9> I was never really a frequent user. I have some friends that didn't know of the site pre-redesign, but have since discovered it and love it.

</comment><comment><USER10> I used to go semi-frequently. I have specific musical tastes. Now, I can't help but get it to shuffle to something like 9/10 songs that I would never want to hear.

Limiting to a genre, in the old version, it used to be 1 or 2/10 that I didn't care for. I've tried a few times, but effectively have stopped using it. I can't find the same feature. The "moods" thing is not nearly as effective. It feels like it's become a radio station, and I don't listen to it for the same reason: I have no control over what it plays, and it seems to play "pop" (don't read that literally, just "things lots of people listen to") music all the time, and never what I want to hear.

I also, generally, find the new interface very difficult to use. Lots of mystery meat navigation and hard work to find what I'm looking for.

</comment><comment><USER11> I used it for a few days after the redesign but have since resorted back to pandora. I've got a few stations that I've been listening to for a while and I've provided a great deal of feedback for which songs I like/dislike. A few of my stations really nail it for me at this point.

</comment><comment><USER12> I used it a lot before and I use it a lot now. It took a bit of getting used to, but I rather like the new design. I've found that I'm listening to a lot more new music, where before the redesign I just kept listening to the same stuff over and over.

</comment><comment><USER13> I hadn't heard about it before the redesign and started using it based on the initial "user uproar" post on HN.

That said, there are a lot of interface quirks that still need to be worked out, specifically in the area of "doing something and getting back to the stream you were listening to" - so many times I go into my profile and am not sure how to go back to the "mood" or whatever I was listening to. There are also a few times when I want to force the slideshow stuff to start again but it doesn't.

I haven't seen the previous design but the non-visual design (making an MMO out of discovering new music) is quite good.

<comment><USER14> I started using the site and getting back also confused me - but apparently hitting Back button helps :) But some in-page way to go back wouldn't hurt.

</comment></comment><comment><USER15> Compete shows traffic shot up in January.

<http://siteanalytics.compete.com/thesixtyone.com/>

<comment><AUTHOR> upvoted because I should have thought to look at this first. On the other hand, Alexa shows that traffic increase as being pretty temporary: <http://www.alexa.com/siteinfo/thesixtyone.com> (especially look at the last 6 months)</comment></comment>


Show HN: LEWT – Lazy Enterprise for Hackers Without Time - <AUTHOR> http://www.jwije.com/LEWT/

<comment><USER2> Why CLI?

<comment><USER3> Why not CLI? It is for hackers and CLI is faster than everything else.

<comment><USER2> CLI is not "faster than everything else". In some cases it's faster, and in some cases it isn't, especially if a GUI alternative is well-designed.

I asked the question because invoicing (and exploring/updating databases in general) is something that is always slower via CLI vs GUI.

I know there are CLI hipsters out there that think that typing long commands in a terminal is somehow cooler or more pure or whatever, but sometimes GUI is just faster.

In this case, if you're someone who lives in a terminal, maybe the effort of switching out to a browser is painful for you. I don't really understand that use case, but it's certainly possible.

The purpose of my question was more along the lines of, "Is this a CLI tool because you want the API to use elsewhere? Because you want to script certain repetitive tasks? Or because you just don't like switching out to a browser?"

<comment><AUTHOR> Fair point. GUI is definitely faster for putting together an invoice (i.e. on paypal). However LEWT is all about extracting your data from existing sources and processing it, I maintain my invoicing data (hours worked) directly in my google calendar now so I manage that all in a GUI. I use LEWT to pull and process that data. I agree that monkeying around in a CLI isn't always great, for me however the convenience and time savings comes from only having to maintain my data in one spot. To try and answer your question - its CLI for expert convenience, it has an API so it can be wrapped in a GUI of your choosing at a later stage.</comment></comment></comment></comment>


An Intro to Integer Programming for Engineers: Simplified Bus Scheduling - <AUTHOR> https://blog.remix.com/an-intro-to-integer-programming-for-engineers-simplified-bus-scheduling-bd3d64895e92 <comment><USER2> Google has a very nice suite of optimization tools, including an integer programming solver and a constraint solver, for third party use. Docs here: [https://developers.google.com/optimization/](https://developers.google.com/optimization/) I got a chance to use it at work lately and it really is magical how you input a problem description and it outputs a solution.

The documentation is hit or miss in some cases. MPSolver is pretty well documented. The more powerful constraint solver . . . well, I have no idea how to use the SA or Tabu search features, and minimal confidence that I'm doing anything correctly, except that it seems to emit correct-ish answers.

<comment><USER3> SA and Tabu are both heuristic, so you're never going to get anything but correct-ish answers (definitely no guarantee of THE correct answer).

<comment><USER2> I think you mean that they will not necessarily find optimal solutions, at least when the problem size is large. I understand that. What I don't understand is how to verify that they're giving me anything better than local search. I also don't have the background to know what settings to use (initial temperature in the SA case or the similar setting for Tabu search) nor which heuristic better suits my problem.

<comment><USER4> I'm not familiar with Google's particular implementation of these, but with the right value of the parameters, they are equivalent to local search. You could test with these parameters and see if the solution changes.

In the simplest implementation of Tabu Search, a maximum tabu list length of zero will never reject any candidates.

A simple simulated annealing should become a naive local search if the probability of rejecting a candidate solution is zero.

As far as which heuristic is better: I'd avoid premature optimization when solving optimization problems. Pick one, and if you're satisfied with the results, then go with it? Academics usually test their heuristics against benchmark problem instances with known optimal solutions (or if no optimal solution is known, best known upper bounds). That would be a bit more thorough.

<comment><USER2> Yeah, I think the main issue is that I have only tested on pessimal problems so far. In this case, I'm only able to find one or two solutions before I run out of time to iterate, so neither Tabu nor SA are giving me much. Monday I'll be doing some more testing on realistic problems and I'll be able to get a better idea of which solution is best. Or maybe I'll find that I don't need heuristics at all, since the real problems may have a much lower branching factor than my pessimal case.

<comment><USER4> Only one or two feasible solutions? That's a little suspicious, but in general feasibility isn't any easier than optimality.

If you'd like to talk optimization/metaheuristics feel free to shoot me an email (in my profile). I have a fair bit of experience with them so I might be able to point you in the right direction.

<comment><USER2> I only have a few milliseconds to do the search. I erred in what I said though. I find one or two _improvements_ on the initial result during the time I have allotted.

I'd reach out, but I doubt the company would approve of talking to a third party about the details of internal work. We also have some experts internally who I can talk to if I get stuck. :) Thank you for the kind offer, though.

</comment></comment></comment></comment></comment></comment></comment><comment><USER5> I'm always glad to see articles about integer programming as it's an incredibly powerful tool which deserves to be more widely known.

However, I'm not sure the example chosen was the right introductory problem. As illustrated, we don't get the certifiably optimal solution because the true optimal solution may involve one of the duties we didn't randomly generate. If we don't get the optimal solution, why not just use a heuristic? Yes, there's a brief allusion to column generation which can address this problem, but surely there's an introductory problem which can be solved without requiring the user to think about column generation or similar?

<comment><USER6> Yeah, having read it I can't help but feel that a simulated annealing approach might end up generating a better result. If only because the limiting factor for simulated annealing is how quickly you can generate random duties and check some objective function, and not how quickly you can solve some NP complete problem for a large number of variables.

Of course having found a couple of good combinations of duties with simulated annealing there's nothing stopping you from trying the integer program on those (+ variations) to try and find a better version.

</comment></comment><comment><USER7> When I think of constraint-based problems I think of Prolog. A web search revealed several Prolog solutions to the bus scheduling problem. These solutions were all easier to read and understand than the imperative solution presented in this article. I then got to wondering if anyone had solved this problem using miniKanren. If they have, I couldn't find it or no one has ever posted such a solution.

<comment><USER8> I second this. Prolog is extremely well suited for combinatorial optimization, and combinatorial tasks in general. There is also significant overlap between constraint programming and integer programming: Many tasks can be easily solved with both approaches or a combination of them, and sometimes one of them is more suitable.

Several Prolog systems ship with great implementations of both approaches.

<comment><USER9> > Prolog is extremely well suited for combinatorial optimization, and > combinatorial tasks in general.

I believe that it _can_ be well suited for such problems—that is, that it is possible to write good solutions to them [0]—but isn't someone diving in without much experience likely just to write solutions that are age-of- universe slow because of combinatorial explosion?

[0] I don't know if it's available online anywhere, but Richard O'Keefe's "The craft of Prolog" (well worth reading for anyone interested in problem solving, programmer or not) has a gorgeous explanation of how to solve the problem "find a 9-digit number such that the `n`-digit initial [or maybe final?] segment is divisible by `n` for each `n` from 1 to 9", starting with the most naïve approach and progressing to a much more efficient one. It has a punchline that, for the benefit of anyone who hasn't read it, I won't spoil here.

<comment><USER8> For example, here is a Prolog version that describes the task you mention via _constraints_ on integers:

        solution(Ds) :-
                length(Ds, 9),
                Ds ins 0..9,
                foldl(segment_divisible(Ds), Ds, 1, _).

        segment_divisible(Ds, _, I0, I) :-
                I #= I0 + 1,
                length(Finals, I0),
                append(_, Finals, Ds),
                reverse(Finals, RFs),
                foldl(digits_number, RFs, 0-0, N-_),
                N #= I0*_.

        digits_number(D, I0-P0, I-P) :-
                I #= I0 + D*10^P0,
                P #= P0 + 1.

We can use it to _generate_ solutions, for example:

        ?- solution(Ds), label(Ds).
        Ds = [0, 0, 0, 0, 0, 0, 0, 0, 0] ;
        Ds = [0, 0, 0, 0, 1, 2, 6, 0, 0] ;
        Ds = [0, 0, 0, 0, 1, 5, 1, 2, 0] ;
        Ds = [0, 0, 0, 0, 2, 7, 7, 2, 0] .

To _exclude_ solutions where the leftmost digit is 0, we can simply impose an additional _constraint_ on that digit. In addition, we are free to try different search strategies, completely decoupled from the constraints:

        ?- solution(Ds), Ds = [First|_], First #\= 0,
           reverse(Ds, Rs), label(Rs),
           portray_clause(Ds), false.
        [9, 0, 0, 0, 0, 0, 0, 0, 0].
        [8, 1, 0, 0, 0, 0, 0, 0, 0].
        [7, 2, 0, 0, 0, 0, 0, 0, 0].
        [6, 3, 0, 0, 0, 0, 0, 0, 0].
        [5, 4, 0, 0, 0, 0, 0, 0, 0].
        [4, 5, 0, 0, 0, 0, 0, 0, 0].
        etc.

Constraints allow us to easily describe and efficiently such tasks. Note that this is very different from naive exhaustive search: The constraint solver automatically _prunes_ those branches of the search space that cannot lead to a solution.

<comment><USER9> Thanks! I forgot a constraint: we must use exactly the digits 1 through 9 (of course, each once). I assume that could easily be incorporated?

<comment><USER8> Yes, this is easy to add, since there is a dedicated constraint called all_distinct/1 that we can use to express that a set of integers be pairwise _distinct_.

In this concrete case, we get this by simply adding all_distinct(Ds) to the query. For example:

        ?- solution(Ds),
           all_distinct(Ds),
           reverse(Ds, Rs),
           label(Rs).

This yields Ds = [6, 5, 4, 8, 7, 3, 1, 2, 0], in addition to other solutions. Now we only need to add that none of the integers must be 0. We can express this (for example) with the additional constraint Ds ins 1..9:

        ?- solution(Ds),
           Ds ins 1..9,
           all_distinct(Ds),
           reverse(Ds, Rs),
           label(Rs).

However, when you run this query, you get _false_ in return. This means that there is _no_ solution that satisfies all these constraints at the same time.

Therefore, the task you mentioned was probably about the _prefices_ , i.e., the _initial_ segments of the number. We can easily express this with small modifications to the program above:

        solution(Ds) :-
            length(Ds, 9),
            Ds ins 1..9,
            all_distinct(Ds),
            foldl(segment_divisible(Ds), Ds, 1, _).

        segment_divisible(Ds, _, I0, I) :-
            I #= I0 + 1,
            length(Prefix, I0),
            append(Prefix, _, Ds),
            reverse(Prefix, RPs),
            foldl(digits_number, RPs, 0-0, N-_),
            N #= I0*_.

        digits_number(D, I0-P0, I-P) :-
            I #= I0 + D*10^P0,
            P #= P0 + 1.

With this program, we get:

        ?- solution(Ds),
           label(Ds).
        Ds = [3, 8, 1, 6, 5, 4, 7, 2, 9] ;
        false.

This means that there is a solution, and it is in fact _unique_! This is determined very efficiently thanks to the _pruning_ that is automatically applied by the constraint solver.

<comment><USER9> I'm sorry for the delay; I didn't realise that you'd responded. I couldn't find the O'Keefe book to look up the exact challenge, but I think you've correctly reverse-engineered and solved it. Thanks again!

</comment></comment></comment></comment></comment></comment></comment><comment><USER10> I like how this tutorial takes the practicality a step further by suggesting and showing how to use a specific library to avoid having to try to solve the problem yourself

But for an understanding of the problem space and a good place to start trying to answer this unsolved problem.. this is still my favorite integer programming explanation:

> and i found this integer programming tutorial comprehensive in offering > practical applications of the desired algorithm(i)

do any of these examples explain the problem best for you? can you write a program that will solve this question for you? now change the values of the variables, increase the number of variables does your algorithm still work on these other inputs?

can you rewrite the algorithm to give the correct answers for these other inputs?

can you develop enough coverage to prove all possible inputs return correct values?

if your coverage is substantial, seemingly complete, can you write against your algorithm to find inputs that will still require you to further develop the algorithm?

for me, i felt i was able to follow the explanation for how the author found the answer and through that was able to start to see the shape of the coverage necessary to accommodate such a problem (ii)

this specific tutorial is on integer programming.. one of karp's 21, and through reduction(iii) on our understanding of 0-1 integer programming we can understand all of the other 21

(o) 1972: Richard Karp: Reducibility Among Combinatorial Problems : [http://www.cs.berkeley.edu/~luca/cs172/karp.pdf](http://www.cs.berkeley.edu/~luca/cs172/karp.pdf)

(i) [http://mat.gsia.cmu.edu/orclass/integer/integer.html](http://mat.gsia.cmu.edu/orclass/integer/integer.html)

(ii) [http://mat.gsia.cmu.edu/orclass/integer/node4.html](http://mat.gsia.cmu.edu/orclass/integer/node4.html)

(iii) 1971: Stephen A. Cook: The Complexity of Theorem-Proving Procedures: [http://4mhz.de/download.php?file=Cook1971_Letter.pdf](http://4mhz.de/download.php?file=Cook1971_Letter.pdf)

<comment><USER11> +1 for Mike Trick. The man is one of the best ambassadors the OR community has right now.

</comment></comment><comment><USER12> A well-written tutorial, but mildly annoying that it starts off with a basic off-by-one error; 9am to 9pm is _13_ trips, not 12, so the total trip number is 52 (which indeed is the number of trips shown in the example, not 48 as stated just above).

<comment><USER13> I interpreted it as the bus starting at 9am and stopping at 9pm, making for 12 trips of one hour each. So the off-by-one error would be in the code generating the possible trips.

In fact, the code as shown only produces 48 trips, instead of the 52 given. I had to actually run it to make sure the Python interpreter in my had wasn't buggy. No idea what code they actually ran to get that result.</comment></comment>


Show HN: DropConfig – version-control and hosting for your configuration files - <AUTHOR> https://www.dropconfig.com <comment><AUTHOR> Hi! We are Clay and Dzmitry, and we built [https://www.dropconfig.com](https://www.dropconfig.com)

DropConfig is a version-control and hosting for configuration-files. Our goal was to liberate constants from the code and let them live their own separate lives. DropConfig does that and requires no new infrastructure and no new dependencies in your code.

After working on many projects over the years, we noticed that every time we hand the project off, we reinvent a super-simple "back office" UI allowing users to change some aspects of application "on-the-fly".

For example:

\- language-translation files

\- web-widgets settings (IDs, colors etc)

\- temporary banners ("down for maintenance", "new release" announcements)

\- CSS rules

After talking to our friends we realized that other developers run into the same problem all the time. For them, for ourselves, and for you HN, we built DropConfig :)

DropConfig is for all cases where you have a JSON configuration file, which is updated more often than you are comfortable making app-releases. Think of it as something between Firebase and Github: immediate availability of Firebase yet change-audit and access-permissions of Github. Plus speed and reliability of CDN.</comment>


Anti-inflammatory agents may reduce symptoms of major depression - <AUTHOR> https://www.psychologytoday.com/au/blog/expressive-trauma-integration/201911/anti-inflammatories-help-major-depression <comment><AUTHOR> Anti-inflammatory agents may reduce symptoms of major depression, suggests a new study (n=1,610), which adds to the mounting evidence that there is a connection between emotional functioning and inflammation, suggesting that inflammation may trigger depression, almost like an allergic reaction.</comment>


Cirque du Soleil files for bankruptcy and cuts 3,500 jobs - <AUTHOR> https://edition.cnn.com/2020/06/29/business/cirque-du-soleil-bankruptcy/index.html <comment><USER2> This is truly sad. Cirque is one of those organizations that creates magic. Every single thing they do (on stage) has clearly been obsessed over, refined to perfection, and rehearsed beyond any possible doubt. Part of the joy of their shows is beholding a group of people who care that much about their work.

On the other hand... later on in this article, it points out that Cirque du Soleil is $1 billion in debt. That probably didn't happen in the past three months. Perhaps Cirque is yet another swimmer who's being exposed when the tide goes out, as Hertz was.

<comment><USER3> Their debt comes from their acquisition. I'm not sure I understand how this is even possible, but it seems that hedge funds are able to buy entities (like Cirque du Soleil) and transfer the cost of acquisition as a debt for the acquiree -- and, of course, not be responsible for this debt.

<comment><USER4> Same thing that happened to Toys R Us if I recall correctly.

So sad.

<comment><USER5> I mean KKR and Bain took over Toys R Us in 2005 and it filed for bankruptcy in late 2017. At the time of the LBO in 2005, Toys R Us was already hurting and not in the best place. Though we can't know the path not taken, it's probable that Toys R Us would have shut down earlier, the LBO might have been its best chance of success.

Based on the articles that I've read about the LBO, I think there is an argument to made that Toys R Us was mismanaged after the takeover: a gargantuan sum was spent every year to service the debt that was taken on after the LBO. People point out that because of this, Toys R Us was unable to make the capital investments to compete with Amazon and big-box stores.

But it's not clear to me that TRU could even begin to compete, even if they had the money for capital investment. Most of TRU's business is holiday gifts, which is particularly sensitive to disruption by online retailers. No one is stopping into TRU at the last minute for same household staple, everytime someone needs a toy you know in advance (birthdays, holidays, etc). Because of this, how could they ever have competed with Amazon?

</comment></comment></comment></comment><comment><USER6> The Bloomberg story is a lot better. It talks about some of the upcoming options, and it says Cirque will likely survive in a smaller form, so I doubt this is Chapter 7.

[https://www.bloomberg.com/news/articles/2020-06-29/cirque- du...](https://www.bloomberg.com/news/articles/2020-06-29/cirque-du-soleil- files-for-bankruptcy-following-shutdowns)

<comment><USER7> Bloomberg is consistently the best source of business and finance journalism, even over the Wall Street Journal.

<comment><USER5> Bloomberg is in the business of supplying news to people who actually really care about the details (traders, investors, etc), while WSJ is not. It's amazing how great Bloomberg is and how far they've expanded in recent years: tv, podcasts, longform, breaking news, etc. Like Google, this is all possible because of their obscenely profitable core product (the Terminal), though unlike Google, Bloomberg actually is in it for the long-haul.

</comment></comment></comment><comment><USER8> Cirque du Soleil served as a case study for innovation[1][2] in the business book _Blue Ocean Strategy_ (2004)[3].

[1] [https://www.blueoceanstrategy.com/bos-moves/cirque-du- soleil...](https://www.blueoceanstrategy.com/bos-moves/cirque-du-soleil/)

[2] [https://www.blueoceanstrategy.com/teaching- materials/cirque-...](https://www.blueoceanstrategy.com/teaching- materials/cirque-du-soleil/)

[3] [https://en.wikipedia.org/wiki/Blue_Ocean_Strategy](https://en.wikipedia.org/wiki/Blue_Ocean_Strategy)

</comment><comment><USER9> Sad. Love the Cirque aesthetic.

</comment><comment><USER10> There's also investigations ongoing into some of the people behind Cirque du Soleil, see e.g. [https://circustalk.com/news/franco-dragone-prosecuted-for- fr...](https://circustalk.com/news/franco-dragone-prosecuted-for-fraud-and- money-laundering)

</comment><comment><USER11> RIP</comment>


Facebook Removed Over 2 Billion Fake Accounts, But The Problem Is Getting Worse - <AUTHOR> https://www.buzzfeednews.com/article/craigsilverman/facebook-fake-accounts-afd <comment><USER2> Come on, Buzzfeed. One source says 3 billion and you say 2 billion. Get your shit together.

<comment><AUTHOR> This is amusing, thanks for pointing this out. It looks like the AP said 3 billion yesterday, as cited here: [https://www.apnews.com/d276ebdec5224398b9d70a6424bdee7b](https://www.apnews.com/d276ebdec5224398b9d70a6424bdee7b).</comment></comment>


After 25 Years Studying Innovation, Here Is What I Have Learned - <AUTHOR> https://www.linkedin.com/pulse/after-40-years-studying-innovation-here-what-i-have-christensen/ <comment><USER2> > The word innovation has become a buzzword routinely used to describe things > that are new, shiny, feature-rich, and, in some cases, breakthrough.

Word-inflation is real.

Here at Purdue, a new building on campus is called the Innovation Design Center[0], which I find insultingly presumptuous.

Next thing you know Panda Express will call itself gourmet dining. Oh wait, they already do[1].

What I find interesting is the company uses that word in graphics but I never see it on official, indexed text on their site. It's like they're trying to fly under the radar with subliminally audacious advertising by minimizing the paper-trail.

But maybe that's overly paranoid, because it looks like they also have an Innovation Kitchen[2].

Is there a term for words that only really make sense retrospectively or maybe should be prefixed by "trying to" in the present tense?

Someone ~trying to be~ an innovator/ entrepreneur.

[0] [https://www.purdue.edu/bidc/](https://www.purdue.edu/bidc/) [1] [https://en.wikipedia.org/wiki/Panda_Express#/media/File:Pand...](https://en.wikipedia.org/wiki/Panda_Express#/media/File:Panda_Express_logo.svg) [2] [https://www.pandaexpress.com/innovationkitchen](https://www.pandaexpress.com/innovationkitchen)

<comment><USER3> You are putting the word "innovation" on a pedestal. There is no clearly defined threshold above which a new application of a product, process, or idea must pass before it can be called "innovative", and how innovative something is depends strongly on context. What seems like a triviality to one person might well be an innovation to someone else.

There are many places and contexts where people are doing incredibly stupid or inefficient things, and the application of simple centuries-old or apparently obvious ideas might well qualify as "innovation".

For example, consistently using paper checklists in a hospital has a huge impact. [https://www.newyorker.com/magazine/2007/12/10/the- checklist](https://www.newyorker.com/magazine/2007/12/10/the-checklist)

<comment><USER4> Excellent Article! The "Genius" of "Simplicity" exemplified.

</comment></comment></comment><comment><USER5> It's kind of crazy to me that people are discounting his ideas simply because he mentioned that he believes in God. I've read his books and had a chance to meet him. He's brilliant (and that's despite the fact that he recently had a stroke and at the time had difficulty concentrating). Read any of his books... He was able to come up with really simple models that explain some pretty complex competitive outcomes that had perplexed a lot of people for decades.

</comment><comment><USER6> > _But God is different. Because he has an infinite mind, he does not need to > aggregate above the level of an individual. As I thought about this, I > realized that the way God would measure my life is different than how we > measure each other's. Instead of aggregating all my accomplishments, > comparing them with the accomplishments of my friends and colleagues, and > then giving me a grade, he would simply want to know how I helped other > people. It will not be about my degrees, books, or awards, but about the > lives I was able to assist along the way._

This author sounds like a deeply confused person.

<comment><USER7> Eh, I think focusing on helping others over prestige and external acclaim is a healthy way to approach the world, no matter how you come to that conclusion.

<comment><USER8> I disagree. Read their words carefully and it appears they never gave up the old mentality. They just changed how they define achievement.

I'm not saying not to help others - just that I think their mentality is still a reflection of the desire to achieve

<comment><USER9> I think that is the point. Moving ones personal definition of achievement from superficial to meaningful. There is a innate desire to do something useful(achieve); and you can't get rid of that. What you can do is decide what you focus your desire and actions towards.

</comment></comment></comment></comment><comment><USER10> Clayton Christensen divines God's methodology. Most of his other points were also cliche-ridden. Something is wrong here.

<comment><USER11> > cliche-ridden

hmmm. have you read his book "The Innovator's Dilemma" ? I was shocked that it's already 25 years old. I think it maybe be _the_ seminal book on disruptive innovation. Low-end disruption, new-market disruption, "job to be done" AFAIK - those are all Christensen.

If there's cliches there - I suspect they came about in the shadow of his body of work over the years.

</comment></comment><comment><USER12> I see a number of people reacting negatively to the 'God' section. I also had an issue with it. Let me explain why I found it odd: He spends most of the article asserting his points by tying them to real examples or at least ones that resemble common events we all see. He then launches into moralizing with God as his touchstone "But God is different. Because he has an infinite mind". No, I don't think he was talking about Eisenstein's God or some other abstraction. I don't disagree with his broader points about how you should measure your worth, but he could have made them in a much more effective way by just asking the reader to imagine the outcome of a life lived for only yourself.

<comment><USER13> I somehow had no problem with the usage of God and found it pretty effective, infact, maybe the other alternative you suggest seem a little obscure.

</comment></comment><comment><USER14> In my experience when people claim to be innovating, it tends to follow the 90% rule - i.e. 90% of it is crap.

<comment><USER15> haha. There's a name for that. "Innovation theater". Happens in many large companies.

</comment></comment><comment><USER16> He doesn't really explain here (IMHO) the nub of his "disruption": if people want an easier, cheaper product, why don't great firms just make it?

A. Because their present customers, around which the entire business is optimized, _don 't_ want them (they want faster/better, not easier/cheaper). And finding and serving those other customers is a completely different ballgame. Really, a different business.

i.e. his point wasn't really about great new products, but _why didn 't existing businesses do them._

BTW It isn't very _predictive_ ; he predicted iphones wouldn't amount to much.

<comment><USER17> Christensen's Harvard colleague Rebecca Henderson has done some research how the organizational structure of big companies gets in the way and prevents them from re-organizing around innovations. Tim Harford has an interesting article on the subject: [http://timharford.com/2018/10/why-big-companies- squander-bri...](http://timharford.com/2018/10/why-big-companies-squander- brilliant-ideas/)

<comment><USER18> I feel these explanations are always post facto. "Oh they didn't react, it was so obvious, those silly dinosaurs!"

Well a hundred World Changing Mega Hyper Super Switchy Disrupt-o-Trends come along every month. _Nobody_ knows which of them will pan out. Asking a giant company with a stable, reliable way of turning money into more money to drop everything at every rustle in the leaves is not reasonable.

</comment></comment></comment><comment><USER19> an academic talking about innovation, that's my favourite kind of people. He probably never invented something. Its like someone talks about architecture but never build a house. He has now skin in the game.

ah, doing "consulting" does not count. Why? [https://www.youtube.com/watch?v=rp6_3UQLi2Y](https://www.youtube.com/watch?v=rp6_3UQLi2Y)

</comment><comment><USER20> Isn't it great to help people?

</comment><comment><USER21> tl;dr: Oxytocin > Dopamine.

<comment><USER22> I think I know what you're getting at; I'd like to read a much better comment than this one explaining what you see as the core truth of what the author is saying.</comment></comment>


What's the Best App for Making Memes? - <AUTHOR> https://www.theatlantic.com/technology/archive/2018/08/killer-memes/566498/?single_page=true <comment><USER2> This is great. There is a huge opportunity to create an app to create modern- day memes. They all have certain aesthetics. Many of them follow templates that are correlated with the content. Some earn their cred from simply having a certain over-compressed JPEG vibe. I'll admit I am addicted to surfin memes. My wife and I will sit for hours in silence, passing them back and forth and just laughing constantly.

So, to all the folks here saying GIMP or MSPaint and call it a day ... you are missing the boat. The modern-day instagram/twitter memes are an entirely new vector of communication. The bar is getting lower, it will get lower, and there is a way to capitalize on this.

One day soon an app will exist that will allow you to make memes the same way instagram allows you to tap one finger and make a photo look like it was taken on a polaroid camera. If you do it right to where you can produce content like heckoffsupreme, sonny5ideup, tanksinatra, middleclassfancy, gayvapeshark, etc... with a few taps and some original verbage you'd make a killing.

Also super glad to see heckoffsupreme get an honorable mention. They are some of the best, no doubt.

<comment><USER3> I do not disagree with you that there is a huge vacuum in the market for a good meme making app and that this will be extremely profitable for whoever gets it right and is able to execute and build a large user base.

That being said, as someone who has been making memes for 6+ years I can tell you hands down no mobile app will ever compare to the power of photoshop, or GIMP for that matter. Even if it was possible for a mobile app to do everything photoshop can do, the small screen size and touch screen interface is a huge issue that can't be solved without plugging a mouse + keyboard into a tablet, at which point, just use a computer.

There is an interesting phenomenon that the younger generation is so enamored with mobile apps and devices that many of them don't realize how certain use cases/work flows simply are always going to be way better on a desktop or a laptop. I would characterize your comment as saying its possible to profit off of the ignorance of a certain subset of today's 15-25 year old's when it comes to this fact.

I know there are so many brilliant people in this generation who are going to be sick nerds one day. But lots of others only interact with computers via their phones and don't even realize how silly they are being by refusing to make memes on a laptop.

<comment><USER4> > That being said, as someone who has been making memes for 6+ years ...

This made me smile

<comment><USER3> What's really funny is that all the time I put into learning how to make meme's and animated gif's caused me to accidentally do a lot of professional graphic design work for my company. As a programmer who works in early stage startups, I have found having the skill set to be able to work with tools like GIMP to be invaluable. Sometimes dealing with artists can kinda be a pain and its nice to be able to just make this stuff myself and skip all the back and forth.

</comment></comment></comment></comment><comment><USER3> "some memers have found the current suite of mobile applications so lacking that they choose to create their memes on desktop computers instead. "On your phone, you're never going to be able to do as much as you could as on a computer," says Noam, who memes under the account @listenintospitandgettingparamoredon.

Ronnie, who memes under the handle @mspainttrash, is part of a group of meme makers that works exclusively in MS Paint."

Finally I thought, a voice of reason! Someone is going to mention GIMP or photoshop. But then they go straight for MS Paint and then totally ignore the idea of using a desktop to make memes and go right back to the "problem" that you need 4 apps to make a shitpost. LOL! Someone tell these kids about GIMP please

</comment><comment><USER5> At what point did "Meme" start to mean any image with text in it?

<comment><USER6> Exactly

        Image Macro != Meme

But I think we lost this battle.

<comment><USER7> They're expanding beyond just image macros. Especially the surreal ones, or [https://knowyourmeme.com/memes/deep-fried- memes](https://knowyourmeme.com/memes/deep-fried-memes)

<comment><USER8> GIGANTIC SCREEN-OBSCURING POP-UP. INSTANT BACK BUTTON.

</comment></comment></comment></comment><comment><USER9> I made a cartoon maker that allows the mashup of memes: [https://www.superanimo.com/](https://www.superanimo.com/)

I'm making a bet that the future of memes are short videos that tell more of a story than a simple image macro. Hopefully I can turn SuperAnimo into an app someday but right now it's just a buggy website no one uses. It's still my favorite project though - so I'll keep plugging away at features and maybe one day I'll get some users.

</comment><comment><USER10> I find /r/surrealmemes fascinating, but never really thought about the lack of tools for hacking stuff like that together.

</comment><comment><USER11> Someone ought to do app for blocking memes. Something like AdBlock Plus or uMatrix.

</comment><comment><USER12> Photoshop. or Gimp.

I mean it's superimposing text, possibly at different fonts, sizes, angles; then combining various images, again possibly at different rotations, and then applying filters.

Tools exist for this.

A "meme making app" made sense when it was just top and bottom text over an image, but these people are basically saying they want a heavyweight image editor.

<comment><USER13> You think elementary schoolers and other non-techies are going to either pay $15/mo for photoshop or delve into the ux dungeon that is Gimp? Not a chance.

<comment><USER14> The elementary school filters probably block all the gimps.

</comment></comment></comment><comment><USER15> Memetastic on f-droid works well!

</comment><comment><USER16> And this is why memes sucks now... people take it way too seriously. Four different apps? Most of this stuff could be done with only Paint.net.

<comment><USER17> It seems people want to be doing this on their phone - that's the problem.

<comment><USER18> The sort of people who make memes often only have a phone.

<comment><USER11> Damn, that was my thought exactly!</comment></comment></comment></comment>


Ask HN: What was the last time a requested feature was implemented ? - <AUTHOR>

With some regularity people are being sent to the 'feature request' page to post suggestions about things to add to HN.
It is one of the longest threads since HN was launched, and there are many good suggestions in there, some of them quite old that have not made the cut without any reason given.
This seems to result in two things, an increase in the number of feature requests in regular posts, and a feeling that the feature request page simply exists as a way to vent this stuff so that it can then be safely ignored.
To verify, is the feature request page still actively monitored ?
Has there been a documented case in recent history (say the last couple of months) where a request from the feature request page was picked up and actually implemented ?
And if those cases do not exist would it be an idea to reboot the feature request thread ?
And to tell people if their feature request is not going to be honored why that is ?
I'm appealing especially to those people that always feel the need to point people to the feature request page (assuming you don't do it for the easy karma boost) to prove that it is actually 'live', after all you are sending people there you must have some proof that it works. <comment><USER2> Hackers want features -> they are ignored -> they learn arc and submit patches themselves -> ... -> arc becomes the dominant programming language. Definitely an arc conspiracy.

Seriously, it's just a small non-commercial niche news site with basic functionality. People running it have more interesting stuff to spend their time on. I wonder if reasonable proposed _patches_ are accepted.

</comment><comment><USER3> It's a little ironic that HN is not particularly responsive to feature requests from the community... in contrast to how YC recommends startups be run.

There's that idea that appropriate profit motives are an important way to make things happen. Therefore, one way to make HN more responsive to requests would be to make it into a startup. Not that that should happen.

<comment><USER4> We advocate that founders pay a lot of attention to users, not that they literally do what users ask.

What keeps users here is not features but the quality of the links and the comments. So that is what I spend the most time on. E.g. we have really good software for catching spam, and also semi-spam promoted by voting rings. There are also a number of subtle tweaks to prevent flame wars.

The last code I released (the day before yesterday) was to enable the system to ignore the flags of people who flagged too indiscriminately. Which in turn depended on code I wrote to study how big a problem bad flagging is. Like good defense, this kind of work is generally invisible. Even news.ycombinator.com/classic is something I wrote for myself to try to gauge whether quality was declining.

<comment><USER3> I totally agree; it's just the incongruity.

The epic _feature request_ thread seems vestigial: you often responded there 800-900 days ago but haven't for 428 days, I'd guess because HN has outgrown it.

<comment><USER4> Yeah, is kind of cheesy to use an ordinary comment thread. But a new, purpose- built feature request system is one of the many potential new features that, while a good idea in principle, would take significant time and yet have little effect on the quality of the site.

<comment><AUTHOR> What about simply giving meta discussions (including features) a place of their own ?

That way if there is an interesting one (and it does happen, even if rarely) it has a spot and doesn't get killed because it takes up valuable space on the 'new' page.

<comment><USER4> I've been thinking about that for a while, if only because if there was an official place for meta-discussion, I could make people stop cluttering the real threads with it. On the other hand, maybe this feature would make the site more attractive to the kind of people who like meta-discussion, when I want it to be less attractive to them.

<comment><AUTHOR> Well, since some of it is useful, give that it's own spot and leave the flag and kill options in place to control the meta discussion should it get out of hand.

Just like in wikipedia there is the 'talk' page, it's out of band but it is not out of control.

That seems to be a good middle ground.

</comment></comment></comment></comment></comment></comment></comment><comment><USER4> One of the main points of the feature request page is to separate feature requests from submmissions. You want to do this because most are either duplicates or bad ideas, and yet (like all meta discussion, including this post) tend to get a lot of upvotes. The feature request page serves that purpose even if no one reads it.

I do check it occasionally. I know search is the main thing people want. But explicit "features" are not my top priority now. The top priority is to maintain (or if possible improve) the quality of links and comments. More details here:

<http://news.ycombinator.com/item?id=830485>

<comment><AUTHOR> Ok, are you open to collaboration ?

That way other people could do the stuff that is not priority to you.

I'm more than willing to really dig in to arc if I know the effort is not in vain. (other than learning arc, which is interesting in and of itself but that would be 'academic' interest, nothing productive).

<comment><USER4> I don't think it would necessarily be a net win. The kind of code that really matters (e.g. techniques for suppressing fluff posts, trolls, and flamewars) I deliberately don't talk about or release publicly. And if some random person wrote, say, a feature-request feature for HN, I'd probably have to spend more time cleaning it up than it would have taken to write from scratch. Plus I'd have to turn into a project manager. Life is too short.

I am happy to incorporate specific fixes, though. I greatly appreciated dfranke's warning about the security hole he found. And if someone wanted to try profiling HN in order to make it faster, I'd be interested to hear what they discovered.

<comment><AUTHOR> > Life is too short.

Possibly. But if you really want this to go I'm sure if there is one spot where you'd have no shortage of people willing to help out it would be HN.

Also, where would Linux be if Linus had decided that he'd have to make each and every change himself ?

I understand that you wish to keep the 'secret sauce' secret, that makes good sense. No need to make it easier on the spammers to figure out how to bypass the various features that keep the junk in check. Otherwise HN would turn into a useless linkdump in a heart beat.

But stuff like article tagging would be tremendously useful, especially in combination with a filtering function.

The feature request thread has lots of good ideas, if you want I can spend some time to make a digest.

I realize you have lots on your plate but that is precisely the reason why 'life is too short', if the end result of that is that HN feels stagnant (and in some ways it does, even though I can see there is some subtle tuning going on behind the scenes and by the number of restarts) then that seems like a lost opportunity to me.

HN - and arc - are clearly your babies and you get to make the calls, but I'm sure there are enough people of caliber here to help out, and if you tell them 'not good enough' when they present a patch I'm sure they'll try harder, that way you could simply do the quality control end of that.

It'd still be work, but a lot less work than building all those features yourself.

Another thing that came to mind the other day is maybe you do not want to risk eclipsing digg by building a HN that is too good, is that a factor here or rather not ?

<comment><USER4> I'm sure I could find better hackers here than just about anywhere else, but I don't want to be Linus.

<comment><AUTHOR> I think the chances of you becoming Linus are remote :)

But still, HN feels like it is purposefully limited. That's fine if that is the stated policy, but then you might as well shut down the 'feature request' thread and state that the policy is to keep HN in the form that it is today besides tuning things to accomodate growth.

On another note, I realize that HN being written the way it is must be quite hard to split across multiple machines, should the need come for that do you have plans in that direction ?

And while we're talking about the feature request thread:

I put a fairly simple one in that would make flagging nonsense a lot easier for the people keeping an eye on the new page as well as less load on the server because of the extra pageview to get the 'discuss' page for spam links. Simply add a 'flag' option to any articles appearing on the new page that are also on 'noobstories', or alternatively add 'flag' links to the 'noobstories' page.

The main reason for this is that HN can be very slow and if you do not have to leave the page it will save a lot of time while flagging.

</comment></comment></comment></comment></comment></comment><comment><USER5> I'm happy to not get down-modded below 10 points anymore if I say something critical about the US president.

</comment><comment><USER6> So far as I can tell, HN wasn't built to be a home for a community as much as it was built as an experiment in Arc.

</comment><comment><USER7> _after all you are sending people there you must have some proof that it works._

that doesn't follow. The feature request thread os the communally accepted place for feature requests, whether it works or not is a separate thing.

Also, your implication that it needs restarting if it doesn't work doesn't make sense - it's still an accurate record.

</comment><comment><USER8> news.arc is open-source, right? So if you want a feature, just add it.

<comment><AUTHOR> <http://news.ycombinator.com/item?id=830156>

<comment><USER5> It could be kept bare to keep away the digg, TC crowd etc.

<comment><AUTHOR> > It could be kept bare to keep away the digg, TC crowd etc.

Possible, but then let's just have that as a statement out in the open, then we can be done with it.

Instead of pointing people to the 'feature request' thread we could then give that as an answer. Right now it almost feels like giving someone a pacifier or a placebo.

In another thread someone literally used the words 'so he stops bothering us'.

<comment><USER5> There can be a conflict of interest between YC (ie PG) and HN users, particularly long-term ones. That's how I've come to terms with it. This forum is first and foremost a hook for entrepreneurs into YC and a way for PG to assess potential investees by their participation and statements. Everyone else is going along on their ride, at the core.</comment></comment></comment></comment></comment>


Making History: NASA and SpaceX Launch Astronauts to Space - <AUTHOR> https://www.youtube.com/watch?v=Aymrnzianf0 <comment><USER2> Rescheduled to Saturday due to thunderstorm activity.</comment>


Ask HN: Why aren't people making tablets with normal OS? - <AUTHOR>

Samsung Galaxy (and zillion others) run Android, iPad runs iOS and so one. RIM playbook alone seems to run a normal Linux operating system.
I would have loved to buy a tablet if it could run an operating system like Windows 7 or Ubuntu.
Processors are getting faster, hardware is cheaper then why the hell have something as tacky as Android on your device? Wouldnt a tablet shaped device with normal OS (may be with interface tuned for smaller screen) make more sense? <comment><USER3> Normal OSes were designed with a mouse and keyboard in mind, which is a big reason why Microsoft's original Tablet PC's were such a huge failure - <USER2> tacked on some interface elements that were supposed to make it easy to interact with a pen, but it was never more efficient than using the mouse and keyboard. The reason they caught on this time around was because Apple designed the tablet around the fact that multi-touch would be the only way people would ever interact with it. Given that iPads are flying off the shelves, you have your answer as to why tablets aren't getting normal OSes.

</comment><comment><USER4> There are Windows tablets running Windows 7 in fact. The problem isn't that they don't make them, it is more that the media just covers the ones running the "latest and greatest" OS, which at this point in time the ones getting the most attention are Android and iOS. Mainly because of the competition between the two and they tend to be a bigger user favorite over Windows.

</comment><comment><USER5> Tablets have been around with normal operating systems for years.

HP have the TX series which is pretty nice, I used to have one of them.

One big difference is they're stronger internals = heavier + less battery.</comment>


Ask HN: Elitist or reasonable concerns on state of front end development? - <AUTHOR> My freelancing to date has largely consisted of ML, stream processing, data integrations, microservices, and other backend work. However, more recently I've shifted to include frontend work with react/reflux/react-native/electron and I have run into a high number of issues with development practices. I find myself declining most work for obvious lapses in development practices and, on occasion, "duped" into accepting a client that sounds good on paper but isn't.
I have observed a severe lacking in areas like:

  - Testing (i.e. usually none, which is often spun like an odd pro that they are so "fast")
  - Devops (e.g. lack of repeatable/automatic deployments, things must be hand-touched, no continuous integration)
  - Project management (e.g. no tracking of bugs, features, etc via issues, no milestone usage, no documentation)
  - Git/Github basics (e.g. don't break the branch when doing PRs, create useful commit messages)
  - Understanding of CSS/HTML basics (e.g. best practices, standards, anti-patterns)
  - Understanding of React/Flux basics (e.g. child keys, anti-patterns, bastardizing with some weird approach)
  - Understanding of functional programming basics (e.g. immutablity, HOFs, pure functions)
  - Understanding of computer science basics (e.g. weird custom approaches that poorly mimic trees, no big-o concerns that hurt perf, memory leaks)
  - Separation of concerns (e.g. making UI components know about and concerned with the data persistence layer)
  - Security (e.g. secure credentials committed, pretty much an afterthought)
 Are these issues simply the norm for frontend development and something I just need to get used to OR is perhaps my frontend network itself poor and something I just need to work on building up to more "solid" clients? I understand few companies are perfect and I am not asking for it all, but coming across clients with lapses in all these areas is what concerns me. <comment><USER2> So, a few of those are kind of elitist.

React/Flux is still _super new_. Hell, there are like a dozen Flux frameworks out there with more on the way, and people are still arguing over what it looks like. So, you shouldn't ding people for that.

Functional programming is something that, at least for what you've mentioned, is a nice-to-know and easily explained insofar as it matters to front-end devs.

Security tends to be a rabbithole and something that, if taken seriously, can really slow down a project. So, it makes sense to market yourself as "Hey, I can backfill your security holes". No reason to be high and mighty.

CS basics is something you can again explain, or charge a premium for.

Devops is a pretty vague and bankrupt concept. Lack of automated deployments is not necessarily bad, it may just not be how they roll. Lack of automated _builds_ and _tests_ is a different matter. Deployment/adminny stuff is typically a pain point in any org, and it just sucks. Look at it as an opportunity on selling them how to do it the Right Way.

The stuff that I _would_ absolutely be concerned about would be lack of testing (if they won't even acknowledge the deficiency), the lack of understanding git and project management, separation of concerns, and the CSS/HTML basics.

~

Long story short, though, is that it is exceedingly rare to see any shop that has everything on that list squared away--and if they did, they wouldn't be hiring freelancers to save their ass.

<comment><USER3> Well said. I do somewhat agree with OP however, in that there's probably a deficit of well trained (or classically trained) engineers in front-end world - especially as it becomes increasing that the "meat and potatoes" of the application logic resides in the front. That being said, it does seem a bit snobbish to be complaining about a lack of understanding for particularly specific areas that are arguably outside the realm of the front-end landscape.

</comment></comment><comment><USER4> The reason you're valuable as a freelancer is because you know things that their existing developers do not. Take this lack of knowledge as a gift: it's how you can add value to their organization and justify raising your rates. (You do want to select for companies that are _open_ to implementing these dev practices, and sell them on the benefits up-front. But a company that wants to implement all of these but doesn't currently have the headcount for it is a gold mine. It's an opportunity for you to improve the efficiency of a whole _team_ instead of just writing some code.)

</comment><comment><USER5> Poor practices are more common among front-end developers, partly due to people coming in from non-programming fields (graphic design, for example) and partly due to people who should know better saying "it's JavaScript, JavaScript sucks, fuck it, I'm not responsible."

Don't get sucked in to the JS blame game. There are many excellent tools and libraries available (e.g., Karma for cross-browser testing; JSHint for static analysis; npm for installing and updating packages) and good practices are entirely possible. Keep up the good fight.

I have a screencast series on this topic at [http://www.letscodejavascript.com](http://www.letscodejavascript.com) (subscription required) and an essay on tooling and workflow at [http://www.letscodejavascript.com/v3/blog/2015/02/javascript...](http://www.letscodejavascript.com/v3/blog/2015/02/javascript_tooling) (free).

</comment><comment><USER6> While freelancing I've seen team members being oblivious to how much work would be involved in actually making an area of their product good and not realizing how badly techdebt can compound in the weeks and months ahead when not solved early (usually because "we need to move fast").

An example would be CSS. Many developers hate writing it and think it's a trivial toy that even a monkey can write properly. Sure, to get something up and running it takes little effort to get the presentation right in CSS. But making something maintainable that won't slow down your velocity after a month of adding/removing/modifying rules and class names is an entirely different thing. Yet I've rarely met a client that didn't have a severe tech debt with their CSS – I'm usually not called in to fix that – even those with refined testing and devops processes. Though they usually believe that their CSS is fine.

</comment><comment><USER7> About that: \- Testing: Yes, for sure there is a lack of understandment in testing specially in frontend, here i have seen that a lot of the test depends on the framework that you are using, also testing in front is relatively new, and not really standarized.

\- Devops, well if you are not seeing test, very hardly you would see the value of continuos integration, and tipiclly this process involves a lot of backend and even some server configuration, and as many say in here most frontends right now come from design backgrounds.

\- Project management. This is more like a "company culture" issue, the way the do this mostly depends on how the rest of the company values this in frontend development.

</comment><comment><USER8> Last summer we where actively recruiting (senior) front end engineers in London. To try to filter, part of the first interview consisted of very simple CS related questions:

\- JavaScript has a `.sort()`, if it didn't how (or what) would you implement it?

\- Can you explain briefly what a Linked List is?

\- Given that JS is all about Maps, can you describe me how an hashtable works?

Sometimes just by asking the `.sort()` I got replies like "Why do I need to know that? the sort already exists! Sorry I am confused, I thought I was applying to a senior front end position".

Regarding dev ops (even if just generating the build pipeline) I got answers like "No way! that is hardcore"

Everything else also lacked overall, specially testing.

<comment><USER9> I can relate from interviewing several people for senior positions. Many had never heard of a linked list and didn't know how hash tables worked.

</comment></comment><comment><USER10> You've pretty much described the frontier of modern web development, some of this stuff is still being defined, lots of it is yet to reach mass- penetration.

It would be pretty nice if there was an "all of the above for dummies" guide.</comment>


ArcaOS 5.0 now available: new OS/2 distribution - <AUTHOR> https://www.arcanoae.com/arcaos-5-0-now-available/ <comment><USER2> So this is the same deal as with eCos, i.e. the provider doesn't have source access to the innards and just fiddles with some common drivers and desktop tools?

<comment><USER3> According to their About page [https://www.arcanoae.com/about/](https://www.arcanoae.com/about/) :

Arca Noae was founded in July, 2014 when several of the developers who previously worked on the eComStation project felt that the future for the platform looked bleak, a feeling which came about due to lack of progress (or any work being done at all), therefore demonstrating a distinct lack of commitment on the part of the project's new owner.

</comment></comment><comment><USER4> The problem I have with these OS/2 "modernizing" projects is how the feature- set locks them out of 64-bit long mode. I think the only way to really try to revitalize OS/2 is to jump to 64-bit and seamlessly run 16-bit apps in a VM/emulator. But at that point you might as well just run OS/2 in a VM, which works really well even on free options like VirtualBox. So it seems like there is only a small and shrinking audience for a native 32-bit OS/2.

</comment><comment><USER5> I was reminded of this ([http://techland.time.com/2012/04/02/25-years-of-ibms- os2-the...](http://techland.time.com/2012/04/02/25-years-of-ibms-os2-the- birth-death-and-afterlife-of-a-legendary-operating-system/)) when OS/2 turned 25 in 2012. So this year marks its 30th anniversary.

From page 3:

> In New York City's subway system, for instance, the travelers who gain > entrance by swiping their MetroCards over 5 million times each weekday do so > with the assistance of IBM's theoretically defunct software.

</comment><comment><USER6> Classic Mac OS seems to be the system from that era that's no longer available. There's still Amiga systems on the market. RISC OS is available for Raspberry Pi. DOS lives on in the form of FreeDOS. And now there are two OS/2 distributions (eComStation and ArcaOS).

<comment><USER7> You can't forget BeOS, currently alive in the form of the open-source reimplementation Haiku. In spite of their perpetual Alpha status, I'm still continuously amazed that it's even half as good as it is.

</comment></comment><comment><USER8> the pricing model is also from the 1980s.

<comment><USER9> As is the website. I like how they describe the new graphical features without including a single screenshot.

EDIT: To be sure, I'm genuinely interested in what it looks like.

<comment><USER10> Their installation Guide has some previews:

[https://www.arcanoae.com/wp- content/uploads/wiki/ArcaOS50_In...](https://www.arcanoae.com/wp- content/uploads/wiki/ArcaOS50_InstallationGuide.pdf)

</comment></comment></comment><comment><USER11> Do they actually have access to the source code? Or are they just sort of propping it up blindly and hoping the features they add hold together

</comment><comment><USER12> TIL that ALSA is available under LGPL (Uniaud, the sound-system in ArcaOS is ALSA based).

</comment><comment><USER13> Are there orgs out there still running OS/2 ?

<comment><AUTHOR> The eComStation site lists some orgs who are using it - [http://ecomstation.com/](http://ecomstation.com/)

<comment><USER14> > Belgacom, Belgium

Wasn't that the one NSA hacked?

</comment></comment></comment><comment><USER15> Someone will buy it that has some really old hardware attached to a machine that they just cannot let go.

</comment><comment><USER16> Is there anything OS/2 can do but other OS cannot do? Hope to be enlightened ... :-)</comment>


The Skype Hyper - <AUTHOR> http://www.economist.com/people/displaystory.cfm?story_id=9904716

<comment><USER2> "Increasingly, people with goods to sell set up their own websites and find buyers by advertising on Google's search pages."

Really?

</comment><comment><USER3> I'm fascinated by all the "Google is omnipotent" under-current in articles like this these days.

It makes me think to the contrary, that Google is vulnerable somewhere, and its continued dominance is _not_ inevitable.

<comment><USER4> I wouldn't say they were implying Google is omnipotent. The following quote from the article pretty much paints Google in the stupid corner as well:

"By buying Skype, the internet phenomenon of 2005, eBay started a bubble. Google, with its purchase of YouTube, the cyber-star of 2006, inflated it further. And Microsoft and Google now appear tempted to add more froth by investing a silly sum in Facebook, the latest big thing."

I just think Google has recently outmaneuvered its opponents (ebay/yahoo/microsoft) and the press coverage reflects that it's temporarily the top dog.

<comment><USER3> Possibly, but this is the part I was referring to:

 _"Like Yahoo!, its neighbour in Silicon Valley, eBay may be gored by Google, the ubiquitous search engine. Increasingly, people with goods to sell set up their own websites and find buyers by advertising on Google's search pages. Google has also begun offering online payment and telephone services that compete directly with PayPal and with Skype."_

Can Google _really_ dominate all those different areas? The current media certainly seems to think so.</comment></comment></comment>


Death at St. Paul's (2014) - <AUTHOR> http://www.historytoday.com/richard-dale/death-st-pauls <comment><USER2> Just 3 years later, Martin Luther famously nailed his 95 theses [0] to the door of Wittenberg chapel in Germany, protesting the sale of indulgences in the Catholic Church. It was the beginning of a profound "revolution" known as the Reformation that broke the power of the Catholic church.

If you have an hour, I'd highly recommend this early church history talk [1].

Also, the bible referred to was a translation into the vernacular under John Wycliffe[2] which the Catholic church tried to supress.

[0] [https://en.m.wikipedia.org/wiki/Ninety- five_Theses](https://en.m.wikipedia.org/wiki/Ninety-five_Theses) [1] [http://www.antiochbiblechurch.org.za/multimedia- archive/faci...](http://www.antiochbiblechurch.org.za/multimedia- archive/facing-the-giants-early-church-and-middle-ages/) [2] [https://en.m.wikipedia.org/wiki/Wycliffe's_Bible](https://en.m.wikipedia.org/wiki/Wycliffe's_Bible)</comment>


Announcing debug-me - <AUTHOR> http://joeyh.name/blog/entry/announcing_debug-me/ <comment><AUTHOR> I wonder why it isn't using Keybase, but only the GnuPG WoT. It could use both, right?</comment>


Does FriendFeed Solve a Problem, or Highlight One?  - <AUTHOR> http://www.readwriteweb.com/archives/friendfeed_information_overload.php <comment><USER2> Obviously FriendFeed is for people who _want_ lots of information from their friends. If all you wanted was a digest every few months of your friends' doings, you'd be using ourdoings.com.</comment>


Timeline – a high-resolution event log - <AUTHOR> https://github.com/lukego/snabb/blob/timeline/src/core/timeline.md <comment><USER2> I've been running into Luke Gorrie's cool projects in different languages since my early university days in 2006. Somehow he always does inspiring stuff, and gives off a really friendly vibe. Cheers!

</comment><comment><USER3> > The timeline is a high-resolution event log that stores entries in a shared- > memory ring buffer

What problem is this solving exactly? Why can't one write multiple log files (i.e., without sharing anything). Also, shouldn't log entries be stored on disk in most cases?

<comment><AUTHOR> This is for latency sensitive applications, where you're counting cycles and can't possibly afford to write nicely formatted log messages to a file. (Or can't really even afford system calls in the main loop).

So there's a main application process, which does its logging by adding messages to the shared memory ring buffer, with a message format that's designed to be compact and cheap to write. And then there's going to be a reader which reads the log messages, and actually does something with them (filter, format, write to log files, whatever).

<comment><USER3> Can't the logging be handled by a different thread, which subsequently writes the log entries to a file? This is how most loggers work I suppose (keep the main thread free from logging-work as much as possible).

And because you use threads instead of processes, you get shared memory for free.

<comment><USER4> This is not a replacement for an application logger or syslog or the like. This is for sampling traces of extremely high throughput and low latency networking systems built atop snabb.

<comment><USER5> You may be right, but please don't make the criticism personal ("you're just not getting it", "while failing to understand", etc.) It makes the thread worse and typically provokes worse yet.

<comment><USER4> I edited my comment to reflect your criticism, but I disagree with it. It's pretty clear the person I was replying to just didn't even read the original posting.

<comment><USER5> Assuming that's true, you still shouldn't be personally abrasive in HN comments. Being right doesn't make it ok; it often makes it worse.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> This is trying to replicate Java/Log4J2/Disruptor in Lua?

<comment><USER7> No. You could build dtrace with software like this, whereas the entire stack you mentioned only cares indirectly about per-message cycle overhead. This is for when your tight loop, like your routing engine or game loop, wants to kick out numbers at timestamps as fast as it can and other software deals with making them presentable. It's a great technique.

This is built for networking software/hardware, where every cycle matters, and is actually extremely useful to me in a couple domains. I'm impressed disabled messages only sink five cycles so I assume there was hand tuning done here.

Edit: And I'm right, it's a hand tuned logical compare (cool): [https://github.com/lukego/snabb/blob/timeline/src/core/timel...](https://github.com/lukego/snabb/blob/timeline/src/core/timeline.dasl)

If you want reasons to learn assembly, there you go. Too few folks wielding it in typical Web operations, where it would be extraordinarily useful in any number of hot paths. Just requires care.

<comment><USER8>
      local memory      = shm.map(shmpath, ffi.typeof("char["..size.."]"))

mmapp'ed, so buffer memory is always 4096 aligned.

      -- Log entry format (ring item)

      ffi.cdef[[
        struct timeline_entry {
          uint64_t tsc;                    // CPU timestamp
          uint64_t ip;                     // Instruction pointer of logger
          uint32_t aux;                    // TSC_AUX: core (bits 0-7) + numa (12-15)
          uint32_t reserved;               // (pad to 64 bytes)
          uint64_t msg_id;                 // category:24, message:24, priority:16
          uint64_t msg0, msg1, msg2, msg3; // message arguments
        };
      ]]

And 64 bytes long. Just like a cache line, probably not a coincidence? No unnecessary slow memory traffic or cache pollution. Nice.

Such a shame TSC_AUX is always 0 on Windows and most Linux kernels as well. Oh well. It's not that much code or work to write CPU core index and NUMA group to an MSR when bringing up a CPU core.

<comment><USER7> Yeah, no kidding. The author did their homework and this is really good code to study. I'm with you, it's almost certainly not a coincidence.

It's aging a bit, but Ulrich Drepper's seminal paper on memory comes to mind: [https://www.akkadia.org/drepper/cpumemory.pdf](https://www.akkadia.org/drepper/cpumemory.pdf)

Say what you want about Drepper's style and personality, but that paper told me (a) he's an incredibly knowledgable dude and (b) I'll always have more to learn, especially about cache.

<comment><USER8> Looks like he's not writing to "reserved" field. So CPU will definitely need to read the cache line at current log entry before write (RFO, read for ownership).

I'm not sure whether current CPUs are smart enough, but in theory writing 64 bytes at once to cache aligned address could avoid RFO. If it's L1/L2/L3 miss, that could be 100-200 cycles saving.

Might have also been better to do RDTSCP first. Otherwise it'll also avoid reordering instructions. And sabotage attempt to avoid RFO.

Anyways, not sure, didn't profile. (And by profiling I mean using those countless CPU performance counters to figure out what's going on in the mysterious black box.)</comment></comment></comment></comment></comment>