skysight-inc/HackerNews huggingface dataset:
I recently started using Phabricator fairly heavily for a review of a large patchset, and I am less than impressed. It could be that the project where I'm using Phabricator didn't set up their review system properly, it could be related to them running svn, etc. And it could certainly be due to my having used Gerrit for 2+ years and Phabricator for a few months. That said..

The problem I have with Phabricator can be summed up in saying that it is a review system which is not tightly integrated with the repo, and that approach has inherent problems. If you actually want to apply the patchset under review in order to run it (or even look at it with other tools), arcanist does not seem to be helpful in finding the correct revision of the tree. You have to communicate with the author via side channels to determine what version of the tree they were running when the patch was created. When arc patch blows up, it is not clear how to recover (picture a git merge with no obvious way to resolve conflicts). I finally got a pointer to the author's git repo and cloned it..

I find it a bit disingenuous that the essay first compares Phabricator to Github pull based workflows, and to gerrit. They go on to criticize pull based workflows, but fail to mention that Gerrit is not a pull based workflow, and gives the same advantages of Phabricator (squashed, linear history). Gerrit has the advantage of being tightly integrated with a repo, and being able to easily fetch the author's work so you can look at it in context, test it, etc.
Of course, knowing that extremists are usually engineers only helps you if you have a known extremist and want to guess his profession. Extremists are a pretty small group, and engineers a much larger one, so I'd have to assume that extremism is still very rare among engineers, meaning knowing whether someone is an engineer or not is completely useless for predicting if they're an extremist.

But hopefully, you've got a STEM degree, and can figure that fact out out yourself ;)
Apple lawyer Ted Olson says creating unlock tool'd lead to an Orwellian society
You sound like someone who went down the Haskell rat hole.

As someone who also has visited that dark and twisted land... I completely agree with you (every post in this thread).

I don't think I ever once experienced the supposed benefits.
>Why? First, loops are only a special case of recursion

In theory. In the actual world, loops are how we're used to think about doing N things.
Possibly because the way we learn math, and the math that most of us learn, is taught procedurally. It's the mindset that many of us grow up with.

I'm not in the valley, and I can't recall ever seeing an ad for functional anything, not even Erlang. I'm sure there's some around, around here, but not enough that I'll see it when I'm casually looking.
Correct me if I'm wrong, but aren't both of these concerns largely covered by any language that has tail call optimization (basically any functional language)?
Even when you have make in windows, there are often unix-isms that tend to go into other scripts as part of a build process.

My own process on windows, is usually to have a linux vm (autostart via hyper-v), that I SSH a few terminals into (conemu ftw), and work in linux... I share via smb/cifs from linux so I can use a gui editor... everything else is in the console, or browser.

Once you get used to it, it works out much better... I've also got most of the nix tools in windows, so some stuff I can just do there. My laptop and work issued laptops are rMBP, I also have a few linux systems/servers at home...

Frankly I don't care too much what OS I'm on... that said, it doesn't take that* much effort to ensure what you are doing can run across the big 3 platforms.
> Good point, languages like JavaScript support both imperative AND declarative/functional styles. A language that lets you do both covers more use cases than a language that only does one.

For what's it worth, some people refer to Haskell as their favourite imperative language. And they are only semi-joking: while the library ecosystem is firmly in the camp of functional idioms, imperative programming is Haskell is pretty nice and straightforward---you'll just have to tag your code with eg IO or the State Monad.
>And even that won't even get close to 3 physical monitors in terms of resolution, simple because the geometric transforms kill your perfect pixels.

I have 3 physical monitors at $DAYJOB and i don't think i see 1:1 pixels on all three simultaneously - certainly i do for the monitor i'm focusing on, but less so on the others, or maybe only peripheral changes. So i think the HMD could get by with a slightly reduced resolution as long as the FOV accommodated peripheral vision.
What do you mean by a stack of state?
Pancake Sort
Even if you don't have the budget for a cash bounty, offering up some amount of free swag (e.g. t-shirts) is a cheap but effective way of attracting researchers. Great example of this is CloudFlare's bounty which is a pretty cool t-shirt and a 1 year subscription.
It's probably your speakers. A human can certainly hear 52Hz, mains hum is 50Hz (or 60Hz if you're in North America) and clearly audible.
Commentary: What If Christian Terrorists Were Blowing Up Muslims? – Truth Revolt
> We can learn more about prioritising the text in this way by diving deeper into the murky waters of web font loading: in my walkthrough on the subject I mentioned two of the most popular techniques.

His techniques uses javascript, which goes completely behind the earlier point he is making about "typography is as strong as your weakest link". If I have Noscript on, I can't see your text correctly. That's your weakest link right there.
What do you think about Codility?
I just couldn't stand it when I saw the following catch phrase.

"Resumes suck. Codility helps you source and test programmers online.
You save time and money by testing programmers before you interview them."

What do you guys think ? I just felt this was something really wrong. Guess it's easier to pick the right companies now.Speaks a lot about the culture of a company if they can't even afford to interview the candidates themselves. Feels companies like Codility are just playing the "pimp" role.
Hybrids don't always get averaged traits. Take my dog, a mutt. She is bigger than both her pure-bred parents, taller by more than an inch. In big cats a tigon, a lion-tiger cross, is bigger than either. The principal even holds true for humans. Obama, of mixed race, is unsurprisingly taller than both parents. This is sometimes called hybrid vigour. My point is that a cross between two different animals doesn't always result in something in the middle. This crossed whale may be very different than either parent.
It depends on what kind of performance problems you have.

Some algorithms are hard to express in pure, strict functional settings. (There's even an impossibility theorem for a few algorithms, but that theorem doesn't apply to pure, lazy languages.) That being said, the worst asymptotic slowdown is logarithmic---because you can always simulate random access memory.

On a more practical side, you have constant factors to worry about, and things like caches. Look at eg Don Stewarts work for how to deal with these in a functional language.

(And, in practice, there's no shame in throwing in the towel and either interfacing with other languages, or even switching to them.)
And second best in terms of sales ;)
How else could you raise the vast amounts of financing needed for such a project? It's not unreasonable that if you put forward $100M on a risky venture, you get x years of exclusive usage to generate a return on investment.

The article mentioned a failed kickstarter for a boston project -- the crowdfunding alternative has yet to be proven for large-scale infrastructure.

But it would be interesting if you could raise a bond like that from private citizens. Literally have people invest in their city by purchasing shares of the municipal bond and have it paid back over 30 years of usage. Not sure why that can't be done... perhaps easier to mobilize $100M from a single private equity group than $1k from 100,000 individuals, perhaps rules about being an accredited investor before you're deemed ready to invest in projects of that scale, or perhaps the lawyers are terrified of dealing with a class-action suit involving a chunk of the populace instead of a small number of private equity firms in the lawsuit if things go wrong.
Gabe Newell on Productivity, Economics, Political Institutions and Corporations
Agreed, though I think the idea was also to remove the chance of any snooping via elint. I do notice the Ruskies choosing electric type writers probably for reliability and evenness of the print output. I remember the IBM Selectrics [0] I used hacking up for "text repro", [1] far superior to manual typewriters that had, depending on the quality of the machine uneven application of ink. If you scan a copy you get superior reproduction.

[0] https://en.wikipedia.org/wiki/IBM_Selectric_typewriter

[1] To make print ready artwork you can type up the text, print a negative and reproduce positive film copy to work with. Old school optical reproduction technology.
Because programming is primarily a business and it's cheaper to hire dumb programmers for whom functional programming is too difficult.
It's rather less complexity. But for switching all your legacy ecosystem (and accumulated knowledge!), FP doesn't have enough advantage for that at the moment.

But, hey, even C++ got lambdas.
Of course those at the bottom of society fear uneducated immigrants the most, they're the ones that will have to compete with them for jobs and share the most space with them.

The middle and upper classes can afford to feel nice about supporting unrestricted immigration for the longest, because they don't have to see or acknowledge the problems it causes until it's too late.

You see the same kind of hypocrisy in the US west coast, where wealthy liberals treat poor southern conservatives with contempt and ridicule for their "racist" opinions of immigrants... up until the "white tech dudebros" started moving into their cities, at which point they used every law on the books to impede development and prevent newcomers from integrating into their society...
Why Great Traders Specialize
You're surely right, but to me the important aspect is not only to make a package that run everywhere but also bring the mobile security scheme to desktop ie have apps that are sandboxed and run on top of a well-defined runtime with well-defined APIs.
In that sense Xdg-Apps have a bigger mission that AppImage so maybe we can't really compare them
True to a degree. Languages that promote the use of recursion often implement tail call optimization so if the process is an iterative recursive process (all state is captured in args on recursive call) then the perf issues you mentioned don't apply. The latest version of JavaScript will include this optimization.

I also disagree wrt it being more difficult to debug, understand, etc. Your mileage may vary here.
Off the top of my head, not many. One might be densely cross-linked documentation markup stored on GitHub but officially published elsewhere. If you have reason to use absolute paths and want your docs navigable everywhere, you need to do something to about the `/$USER/repo/blob/master` vs. `/doc/wiki` (or whatever).

Or, to ease writing said docs, you might wish to resolve "fake" urls like `wiki:Batman`, which should point at https://en.wikipedia.org/wiki/Batman ...which I guess still amounts to prepending, doesn't it?
many != all
Between Excel and SQL, I'd say collection-oriented programming has pretty much taken over the world.
entr(1) –  Run arbitrary commands when files change
I use the extension Stylish on Chromium to change all the fonts on all websites. I don't have that computer with me, but it's something like:

* { font-family: "Myriad Pro" !important; }
code, pre {font-family: "Inconsolata" !important; }

I do this because the fonts on my Linux box either render strangely or are downright ugly, especially ones loaded from some other website (I consider myself a designer before a UNIX geek).

You can do this natively on Firefox though, and Firefox is much better at it. With Firefox on OS X I use either Charter or Iowan Old Style for serif, Adelle Sans for sans-serif, and Monaco for monospace.
Probably not, I don't see him getting off the couch anytime soon.
I'm interacting with 3 monitors right now (well, was, then I got distracted and started reading HN).

I think the more important way to unpack that assertion though, is that if you watch people studying using pens and paper, almost everyone has a specific way they end up laying out papers and books on their desk - and the reason we still do it that way, by and large, is because you get a lot more desk real estate then you get screen real estate.
This is because the developer community, aside from some long-time system hackers like Linus who know what's at stake (most of whom are Linus's age or older), do not think in terms of building software that will last and adapt to changes. They think in terms of "old and busted" and "new hotness" and that their job is to migrate everyone off the old and busted and force the community to adopt new hotness. Hence the churn in GNOME, hence systemd.
This is why I enjoy the HN comments. Although, I should probably be upset that you sent me down a Wikipedia rabbit hole (the theory is interesting!): https://en.wikipedia.org/wiki/Ungulate#Cetacean_evolution
No, just more likely to be a 10x extremist.
I think it both adds and strips the VXLAN header and then does the checksums. Probably depends on the vendor.
Venture Capital 2.0
It was also me, 2-3 years ago.

Then, your manic episode was me, 20 months ago (the having a "Kundalini awakening" and believing I was raising the vibrational frequency of the universe part - not the hospital admission or lithium prescription part, I managed to chill out without much need for professional intervention).

Your point of view now was me, 18 months ago, believing all my problems had stemmed from purely materialist/biochemical causes, and rejecting all the spriritual stuff as dangerous woo.

Since then, I've found a balance that seems, as objectively as one can be about one's self, to have me in a much better place.

My quality of life, as reflected in my work/career, my friendships/relationships and my sense of contentment and happiness, is good and has been steadily improving for many months.

I take no psychiatric or any other medication (I had been on benzo's then SSRI's years ago). I eat healthily (not obsessively), drink only moderately and socially, I sleep well, and I do regular conventional exercise with increasing ease.

I also practice holotropic breathwork [1], occasional kundalini yoga, nutritional supplementation (mostly amino acids and minerals like calcium and magnesium), near infrared light therapy [2], kinesiology and self-muscle-testing [3].

I don't make any specific claims about the efficacy of any particular practice, but overall the system seems to be working.

I don't believe I have any magical powers or access to secret wisdom about the true nature of the universe.

I find merit and value in the philosophies of public figures across the spectrum of thought on these matters; Richard Dawkins, Sam Harris, Daniel Dennett, Rupert Sheldrake, Bruce Lipton, Lissa Rankin, Bernardo Kastrup, Rudy Tanzi, Sir Roger Penrose, and the late Wayne Dyer.

I don't believe any of these people are 100% right, but neither do I think any is 100% wrong, and each has been very valuable to me and many others in developing an optimal approach to life.

And this is the most important point.

It's unhealthy to adopt either materialism or spirituality with extreme conviction, just as it's unhealthy to reject either of them with extreme prejudice.

Extreme anything is unhealthy.

Balance, restraint, modesty and tolerance is healthy.

I understand why you need to adopt a staunch anti-woo position right now given what you've been through.

Just be careful not to be too contemptuous and dogmatic against philosophies and practices that others find beneficial in more healthy and balanced ways than has so far been possible for you.

But thank you for sharing your journey and insights so candidly. More people need to be made to feel comfortable talking about this stuff, and it helps the world when you lead the way.

[1] http://www.holotropic.com/about.shtml

[2] http://nutritionalbalancing.org/center/htma/supportive/artic...

[3] http://www.livestrong.com/article/325815-techniques-for-self...
If `we' is imperatively trained programmers, then Yes.

For anyone else---normal people without programming experience, or programmers trained in different paradigms---loops are not special.

Of course, we mostly talk about programmers here, and imperatively trained programmers are in the majority.

In any case, lots of languages have gotten map and filter, and people seem to adapt to them just fine. We just have to wait another decade for the more interesting combinators to trickle down.
Alright.
Even though its not really needed, and complicates things more, I was oddly attracted to the variable length instructions. I realize this would be a bit less attractive if it wasn't _my_ project, but I wanted to anyways. My basic design was one byte for the instruction (could be divided into two nibbles, one for the type, one for the actual instruction), and one byte for the registers. This allowed me 255 instructions max, and max 16 registers.

I then just started listing off the registers I needed. I could try to make up my own method of keeping track of the stack, base and instruction pointers, but I didn't really care enough. I also liked the _cdecl method of function calling in assembly, so I kept with that design as well. This meant a return register. The rest were split between caller and callee save registers, and I tried to give them a decently easy to remember mnemonic. Compare that to x86! I also realized I needed a null register which would indicate no register was used for operations (ie a `mov *(0x0), %ret` where there is no register for the first argument). I think I'll enforce this convention to make %null a little more useful. Unless the user tries really hard, I'll prevent anything from changing the contents of null from 0, making it useful for comparisons, and popping unwanted data.
So as far as I can see, living in the UK, we treat life as a sort of 'survival of the fittest' game, but with seemingly arbitrary conditions applied.

For example - we consider a person with a physical disability to be worthy of support (presumably because we reason that they're unable to work).

We consider a person of advanced age worthy of support (again, they're unable to work, and probably supported society in the past via working).

There are a few other categories of human that we think of as being deserving, and income support recognises this.

The flaw here as far as I can see is that we basically say that if you don't fit into one of the above categories, you must be fit to work, and so if you're not working you're doing so via choice, and if you choose not to eat that's your problem to deal with.

To me it's just a really basic error of logic and I don't know how to even come close to correcting it.

People talk often about the fact that they don't want to be taxed, or whatever. But why don't they care about paying for the disabled?

Is it that they don't want to pay for people who just aren't trying? It seems to me that unless unemployment is at 0% such an argument could never be valid.

I think that income support is a great idea, by the way, I just find it an odd situation that we're in, almost like a really bad compromise. Surely we should try to help everyone, or help no-one, not unfairly select groups based on them having a 'bad enough handicap'.
One could make a case for a spreadsheet being a limited kind of pure functional programming language.
Since we know that every second (software) engineer is a 10x genius Ninja, we're already talking about some extreme stuff right there.
There are ways to write things that are similar with Haskell. Just like there are design patterns for functional techniques in imperative languages, there are design patterns for imperative techniques in functional language....

So for example, here you could make a nice little EC2 DSL that would get your stuff (for the actual Haskellers: Free Monad):

spotPrices :: Region -> EC2 [SpotPrice]
spotPrices = GetSpotPrice -- DSL Leaf, executed by runEC2

spotPricesForAllRegions :: [Region] -> EC2 [SpotPrice]
spotPricesForRegions regions =
concat <$> MapM spotPrices regions

Your spot price update function becomes something even simpler now:

runEC2 :: EC2 a -> EC2Config -> IO a
runEC2 = stuff -- this is where you call whatever EC2
-- lib is available

updateSpotPriceFile :: [Region] -> IO [SpotPrice]
updateSpotPriceFile regions = do
spotPrices <- runEC2 (spotPricesForAllRegions regions)
(myEC2Configuration)
writeToFile (toJSON spotPrices) "spotprices.json"
return spotPrices

I'm not going to port all of it, but with a more functional version you could avoid having to keep on making EC2 clients all over the place, and you could keep your config in one place.

The problem is that it's pretty obtuse if you don't know the right design patterns. There's a myth in FP circles that design patterns are for OOP only ("we have functions, we don't need observer patterns!"), but it's a myth. But if you get good, you can write some pretty concise code + get all the goodies.

Haskell has the whole GHC thing, and also the issue of lack of good library documentation (or lack of libraries on certain stuff)...
I think the difference is in other languages I don't have to think about these things any more than I think about what IRQ my sound card is on.

In the CPAN case, if cpanminus is the "good one", then it should be installed by default and CPAN.pm needs to tell you to use that instead or just be deprecated. I don't want 5 choices in package managers, I just want the good one. :)
I think it's an interesting question, but I was disappointed that the linked article didn't really take any steps towards answering it, beyond simply hypothesizing that it's a possibility.
Agreed. I'm not going to waste my time jumping through hoops for a company if they haven't even made a commitment to talk to me yet. This is not a great formula for hiring the best developers, who have many options and don't have to put up with this kind of nonsense. (On the other hand, maybe the companies who are using this service aren't looking for the best developers, just minimally competent ones.)
Some of them.

If you have exponential run times, I don't think tail call optimization would help you.

Of course, that claim with the exponential run time in the first place is ludicrous: sure, you'll have a hard time implementing the Ackermann function with loops. But that's a problem with loops, not with function calls.

I say function calls here, because recursion in function is just a special case of function calls. You gotta have functions in a modern language in any case, so recursion comes for free. No need to introduce another concept like loops and clutter up your language.
The original paper states the following:

The drives in our study are custom designed high performance
solid state drives, which are based on commodity
flash chips, but use a custom PCIe interface, firmware
and driver.
Recursion is great! I find recursive algorithms much easier to understand
It would hose only your "usermode" apps, which would be a small subset -- likely smaller unpopular apps that lag in the distro repository. The system as a whole would remain intact, so you can logoff and clean up the mess as root. What hack would rely on some specific app being deployed in user-mode anyway? To do what, steal user files it already has access to?

It's obvious that "usermode" should be the exception and not the norm, but from a security standpoint it's exactly the same as compiling and installing with custom prefixes.