skysight-inc/HackerNews huggingface dataset:
Favorite quotes:

> I pray daily that more of my fellow-programmers may find the means of freeing themselves from the curse of compatibility.

> Society is getting dissatisfied with the performance of programmers and of their products.

> [Program] testing can be a very effective way to show the presence of bugs, but is hopelessly inadequate for showing their absence.

> The purpose of abstracting is not to be vague, but to create a new semantic level in which one can be absolutely precise.

> The competent programmer is fully aware of the strictly limited size of his own skull; therefore he approaches the programming task in full humility, and among other things he avoids clever tricks like the plague.

It's fascinating to see what he expected to be the biggest problems in programming. His discussion of more efficient programming techniques focuses on theorem provers, automated checking of loop invariants and the like, whereas today, the biggest problems typically occur during integration of software components with each other.

But maybe he actually did foresee that:

> I now suggest that we confine ourselves to the design and implementation of intellectually manageable programs.

Regarding provably correct programs: I'm torn here. On the one hand, if we required all programs to carry proofs of their correctness, that would exclude a huge number of current programmers who lack the formal education etc. to carry out these proofs. On the other hand, if all programs that we need would have proofs of their correctness (and thus carry a bunch of helpful invariants and formal specifications), it might be easier to combine all these programs, hence obliterating the need for most programming tasks that are just concerned with integrating multiple programs with each other.

I'll close with the most insightful paragraph from this whole piece:

> There may also be political impediments. Even if we know how to educate tomorrow’s professional programmer, it is not certain that the society we are living in will allow us to do so. The first effect of teaching a methodology —rather than disseminating knowledge— is that of enhancing the capacities of the already capable, thus magnifying the difference in intelligence. In a society in which the educational system is used as an instrument for the establishment of a homogenized culture, in which the cream is prevented from rising to the top, the education of competent programmers could be politically impalatable.

This is fascinating because right now, a lot of people lament that our students are only being stuffed with facts, but not equipped with the methodological knowledge required for their professions.
Quoting the article:

> Then around the late 1870s, U.S. manufacturers of high-end machine tools effectively blocked the country's metric conversion. By that time they were using a measurement system based on the inch and argued that retooling would be prohibitive.
Break the Vigenere cipher [0]. It's not very web-specific, but it'll at least get you up to speed on strings, collections, control structures, file I/O, modules, etc.

[0]https://en.wikipedia.org/wiki/Vigen%C3%A8re_cipher
> To be fair, ethereum has bytecode at its base- almost certainly someone will wrote a more declarative language on top of it now to help minimize the chance that unexpected calling trees can lead to unexpected behavior.

The mismatch between executable code and high-level language is a known attack vector called the "full abstraction" problem. This has already been used to subvert the CLR and the JVM. If your bytecode is not inherently secure, and you permit executing arbitrary bytecode, then any language running on top that builds more sophisticated invariants that aren't enforceable via the bytecode are very likely vulnerable.
It is my belief that after the creation of the NLRB this is no longer possible, though people did it before that.
Michael Stonebraker: The Land Sharks Are on the Squawk Box (2016)
I will second the first part of this - algorithms and data structures. You have to hit the middle ground for those as the language may provide some. So try implementing binary search trees or splay trees and some graph algorithms. You should not pick too many - perhaps 2 from each genre.

At some point you will put these behind you, use pre-written libraries and graduate to an application.
> - It's standard library is small (~700KB), which is a stark contrast to Scala and some other JVM languages, which pretty much demand usage of ProGuard while developing due to large method count.

A Scala Hello World is around 30 kB, it can get more as you keep using more of the standard library, but to be realistic, it's around a few hundred kBs.

Not sure what's the big deal with ProGuard it's just a deployment detail. Compilation seems to be faster with SBT and ProGuard than Java/Kotlin/... without ProGuard.
I've never understood why military computer people need to wear camouflage. You are in an office. I see you.
I agree up to a point, but I doubt any successful business was run by managers who communicated in the style of Heidegger.
> and then with lobbying of various kinds make these places more and more desirable by bringing developments to these areas

Sounds like they're providing a valuable service to me.
Unfortunately that site is very questionable although still might be the best resource. The person who runs it changed the interface to make it difficult to compare languages as well as it used to, and he purposely doesn't include many implementations and languages that people send him.

There is no ISPC or Julia, the C and C++ benchmarks use SIMD intrinsics specific to gcc, the benchmarks are run on core 2 processors... etc. etc.
Authy solves this problem and lets you share among devices.
I personally would really hesitate before picking a language that will be hard to hire for to build a business around. Yes, you'll be more productive in the short-term, but a business is more than just code and you will need to wear those hats too before you'll have enough understanding and resources to hire those out.

At this point, I'm fairly certain your first hire should be someone to take the engineering load off of you. Engineering will be the only thing you really, truly understand about your business and so it will be the only thing you'll be able to effectively manage others doing.
NYT doesn't have a pay wall for the first 10 articles per month.
I don't know anyone there - and I always disclose my conflicts (usually by avoiding threads where i'm conflicted)
UTF-8 Everywhere (2012)
Scala's Road Ahead – By Martin Odersky
It's mostly tech money and foreign investors.

No: It's mostly about supply not meeting demand. See http://jakeseliger.com/2015/09/24/do-millennials-have-a-futu... or http://www.amazon.com/TheRent-Too-Damn-High-Matters-ebook/dp....
Instant Clojure REPL startup
> In academic research and in entrepreneurship, you need to multiply your effectiveness as a programmer, and since you (probably) won't be working with an entrenched code base, you are free to use whatever language best suits the task at hand.

... with the extreme caveat that your language has bindings to {insert language with libraries that already implement 50-85% of your functionality}.
Select the best language for the task in hand.

At the end of the day, they all ultimately control the same instruction sets on the chip's either directly or indirectly through a framework or libray and/or operating system.
As it's been said several times on hacker news (sorry for repeating it one more time here):

In some countries calling yourself an engineer without having an appropriate degree issued by an engineering school is a crime (although, seldom enforced in software).

Whether the school should have a software department at all was a big discussion at my school at the time. They decided to keep it.

EDIT: Sorry, to be clear, we agree: it's just adding a bit more information to your point.
I maintain a programming language that can be built as C or C++. There is no significant difference the overall execution time of "make tests" when compiled either way, and the executable sizes are close. (No options are used to disable any C++ features; just the compiler command is switched.)
I have a "things I don't care about password" that's long, easy to type, and easy to remember. It's about 20 characters, which is sufficient for most services that don't have two-factor authentication, but annoying because some archaic systems STILL have a maximum password limit for ridiculous reasons that suggest one-way hashes are not being used.

Wherever two-factor is available, it's turned on. Usually through my phone, which has its own passcode and won't display text messages on my screen. I'm curious as to how secure this really is, but I suspect this is reasonably difficult enough to hack that someone would have to be targeting me specifically to be able to reliably pull my SMS token out of the air and match it up to my login before I used it within a few seconds and invalidated it. If someone decides to target me specifically, I have bigger problems.

For my email, my banking sites, and all the things that I really would rather someone else please not log into, I have a unique password. This is still long and easy to type; the only advantage of these passwords is that I am sure to not share them in any modified form anywhere else on the internet, which protects against these sorts of cross-site password theft attacks. (Even for my shared password I have a pattern that makes it uniqueish, but that pattern is simple enough that a human could probably reverse engineer it.)

The only real exception to this strategy is things that can be password-less, though that carries its own weirdness. All of my remotely-accessible SSH servers use private key authentication and have passwords enabled for sudo, but don't allow SSHing in using that password. (So they are effectively single-factor for login and userland access, which can still do a lot of damage but requires a computationally difficult key, and two-factor for root access.) This carries its own issues; I have to keep my private key files somewhere, and even if I use multiple keys for each machine I log in from, all it takes is one rogue login to hose my server. I either put all my eggs into one basket by using some sort of encrypted store, or I spread out my attack surface, increasing its complexity, and decreasing the chance that I'll have successfully patched all the holes up. I also don't like that there's no way I could reasonably memorize a private key, so the option of NOT storing it kind of doesn't exist. At best I can try to protect the key in some way.
> Shocking in his case as he was a true programmer (computer scientist).

How was that shocking? Someone has to be the first to introduce or pioneer a distinct profession to the rest of the world, he was pretty much among that select group. It's like saying you're a 3d printer in the past few years, without anyone having a clue this was an actual profession people spent their days on.

And that's today, in a world where we're more educated and more open to the notion of rapidly changing professions. If you want to know, the people who work those desks at the municipality usually have only a high school degree, the mandatory minimum (not for the job, but as a person raised in the Netherlands). And in the 1950s that minimum was only six years of education, i.e. primary school only. None of this strikes me as shocking in this full context, unless you're shocked by the notion there had to be someone to pioneer a profession for the first time in their municipality and we happen to be talking about him and his anecdote.
Purely functional (persistent) data structures which are natural in GC-d functional languages are a research grade topic in C++/Rust. (Edit: AFAIK: It is due to the additional ownership management/bookkeeping required if there are concurrent access and modification.)
The comments here are so far not good. The big problem in Seattle, as in many other U.S. coastal cities, is zoning, which prohibits the supply of housing to rise to meet demand. See my post, "Do millennials have a future in Seattle? Do millennials have a future in any superstar cities?" (https://jakeseliger.com/2015/09/24/do-millennials-have-a-fut...) or "Zoning's Steep Price" (http://object.cato.org/sites/cato.org/files/serials/files/re...) for more detail.
It's Finally Here Internet of Things Security Certification
just in case you happen to come back: I didn't take a whole lot of them but I have a couple of the less crappy ones I took here https://www.eversnappro.com/album/561701
not really opposite imho, the point is 'explained slowly and methodically', seeing professor's face is completely optional
Do Schools Matter for High Math Achievement?
> you'll be more productive in the short-term

I'm not so sure. One of the advantages of these more mainstream languages is the combination of an incredibly large selection of libraries and many people having already made the mistake you will make. This means when you run into an issue, there are already several posts on stack overflow about it, and you move on without issue.
I doubt Djikstra would have been Djikstra is he communicated in such a sterile way. His writing achieved the ends he sought. He's memorable and endlessly quoted which gives life to his ideas beyond what is immediately provable.

You might argue this is improper, but I think that's a bit morose. I dread the day when all people write like that second sentence.

That's not to say someone should emulate him, though. It's not that it's wrong, it's that they're bound to fail and produce something tinny and derivative. That's the thing your revised sentence has going for it: it's as cheap as it is limp.
Are there any good sources on what sort of generative trickery a good cracking tool will use?

I've noticed that the OSX Keychain 'memorable' password suggestions are almost always /(\w+\d+[[::punc::]]+\w+)/, which is enough of a pattern to probably make an explicit generator for which will match much faster than a naive brute-force.
I work for a company working with hydrodynamics (Potential Flow) and all of our main hydro code is written in Fortran and we don;t plan on moving away from it. Its too easy for non-software oriented engineers to write performant code in with a low barrier to entry.
Interesting. I liked Arch at home, but I could never really use it. I would end up going back to Windows for gaming.

Anyways, three-and-half years ago at work I got the chance to install Arch. Three years later, the only issue I ever had with wildly doing 'pacman -Syu' was GRUB, which got screwed at some point. I got scared back then, but I had the Live USB dongle to the rescue and I could access Arch own wiki with my phone. Anyways, I could quickly solve the problem.

Six months ago I did the install from scratch, and this time I have yet to face any issues with package installation/upgrade/dependency resolution. Even AUR packages sometimes if they fail you just have to make small adjustments to the PKGBUILD file and be done with it.

It’d be nice to know what kind of packages you’ve been having issues with: at work I deal mostly with Ruby, Erlang, and database engines. As for other packages, Synaptics input and... probably that’s what. Also, whatever dependencies Awesome WM and fish shell require.
Sure, but I thought we were talking about what makes for good management. Bad managers either need to be reformed or fired.
How are zlib, gzip and Zip related?
they also dodge the need to set up port forwarding, which is why we use it on our kiosks when the customers don't want to set up port forwarding.
It's a uniform. Apparently, they all started wearing the ACU uniform when mass deployment to Afghanistan and Iraq happened, as institutional acknowledgement that even if you're in the Pentagon, you're part of an organization that is also fighting in the field.
I do something similar but I'm not happy about it at all. But I'm also afraid of password managers themselves becoming compromised.
I've had terrible neck/head muscle tension as well as very strong tinnitus as far back as I can remember. And for me, reductions in the tension has correlated with improvements in the tinnitus.
Yeah, the parent comment was oversimplifying things. That particular solution only works for values of n != 3λ+1 (λ = 0,1,2,...). If you read the paper, they provide a number of different constructions, each one covering a different subset of n.

For n=4, I believe you'd need to use construction B, which is (k, 1+((2(k-1)+n-1) % 2n)) and (2n+1-k, 2n-((2(k-1)+n-1) % 2n)). Your resulting coordinates then become:

(1,4) (2,6) (3,8) (4,2)
(8,5) (7,3) (6,1) (5,7)

I think that should be a valid solution.
Not to mention that Fortran has come a long ways from your father's (or my) Fortran IV.
Ferbivore probably meant "in addition", not the booting process.

http://idioms.thefreedictionary.com/to%20boot
Author here. Content will be similar to my other screencast at www.learnelixir.tv, but with more actual app building.

See www.learnphoenix.tv/upcoming for details on planned episodes.
Promise-log: shortcut for console.loggin' your promises
What Is Obedience? Understanding Obedience to Authority
"Set in 2027, when no child has been born for 18 years and science is at loss to explain the reason, African and East European societies collapse and their dwindling populations migrate to England and other wealthy nations."

Terrific but possible scenario. Quote from "children of man synopsis"
It looks good, but I think pitching the benefit of Phoenix instead of pitching the benefit of the screencasts is a mistake.

I'd imagine the people willing to buy are already convinced that Elixr and Phoenix are awesome.

Also, it seems to make sense to do a subscription instead of a flat amount, OR do both.
Or click on the Resources tab, and the video's downloadable in HD or SD, along with the slides as a PDF.
> optional one time pads

Any good reason why this wouldn't be the default? Speed + key exchange transmissions, maybe?
Using dependent and polymorphic types for safer development of smart contracts [pdf]
At the time, computing didn't have the market penetration it has today. In other words, even if IBM and Microsoft had 99.9% of the market (which they had not), it didn't matter because only a tiny part of the population had computers at home and even less so in their pockets. Today's internet penetration is way bigger, almost anyone at least in the West has either a phone, laptop, tablet or desktop with a way to access Google and Facebook. Won't just go away as easily.
1. XML is just a notation, and being declarative is not in itself a guarantee of easy verification: Prolog is declarative and yet Turing complete (though it's important to note that you don't need to be Turing complete to be hard to verify!). So while declarative is an excellent idea, it doesn't help with the problem of deciding what exactly the language can do to be both useful and relatively easily verifiable.

2. Absolutely, but I think the whole motivation behind projects like Ethereum is to replace the law with algorithms. I think that any computer scientist with a basic understanding of complexity would see why this is impossible, but the idea persists. Eventually, someone who's less ideologically pure would find a way to reconcile the utility of cryptocurrencies with the necessity for human law.
There is already infinite space for windows. By moving them into physical world, you're actually imposing a limit on the available space.
Prices for the sale of consumer goods are subject to some special rules, mostly to prevent bait-and-switch advertising. But actual typos happen all the time and are corrected. There are a great many instances of airline websites getting prices horribly wrong. These contracts are not normally honoured and wouldn't be enforced by a court (40,000$ tickets for 50$ sort of things). Much depends on the specific facts and whether the price is obviously a mistake.
I got ME disabled in BIOS on my Lenovo S30 (manufactured around 2012 I think). Do you think this option in BIOS setup insufficient to turn it off? Is the ME still running and listening to commands coming from the network?
Author here. I do make an effort to bring out Erlang and BEAM wherever possible in my screencasts.

One thing to keep in mind is that many developers coming to Elixir/Phoenix come from Rails, where these idioms are lacking. They need to change their mindset. They're looking for "How do I do X" tutorials, so I try to create those and use them as opportunities to introduce Erlang/BEAM.
> your life leaves too much room for your mind to wander

Well, for me mind wandering is the creative state, and something often richer, fuller and more interesting than mundane stuff. When walking or hiking, one of the most important things is to allow my mind stroll too (but its much better when it has some background stimuli).

While sometimes I regret not leaving in "now" because of being to busy, I rarely ever regret mind wandering. Even if it comes at a price - see "A Wandering Mind Is an Unhappy Mind" - Daniel Gilbert http://www.danielgilbert.com/KILLINGSWORTH%20&%20GILBERT%20(....
Minecraft was somewhat popular a few years ago. :P

Runescape also used to be a pretty big one, even if it's been shrinking lately AFAIK.
This is just a variation on the "what language is best" debate, like we see here. https://news.ycombinator.com/item?id=11932675

Whilst C based apps can be made to run efficiently, its not efficient to code with the usual tools compared to other languages and IDE's (think big customer development bills), and thats even before you get into the debate of whether some code runs faster with multiple threads on multicore cpu's whilst bearing in mind the ram & bus limits, cpu cache collisions, available cpu instruction sets and so on.

More people really should get over the "awesomeness" of the clockwork turk machine, unless they are easily pleased?
Thanks! Your statement gives me good insight and I find it helpful, and it seems to complement @jonahx's comments.
I'm really surprised that "Learn you a Haskell" is not in the Haskell resources list.
I know that. So why not post the search link instead - i.e. one that will work for everyone? Or HN could implement a "search on Google" feature to get around it. Requiring readers to a) know this hack and b) perform it on a mobile device keyboard is the ultimate in poor usability.
Indeed, there was quite a bit of govenment overthrowing, mostly at gunpoint and backed by the USSR. Of the The Black Book of Communism's 94 million estimated victims 74m were outside the USSR so there were issues there. https://en.wikipedia.org/wiki/The_Black_Book_of_Communism
The really interesting problems have the property that there is no library written for them yet. Granted, you need some kind of interaction with the outside world, but this is easy to handle in another language layer.

The "existing libraries" are only going to be efficient if your entrepreneurship is based around the idea of rehashing or recombining existing tooling, which is already there. But far from all projects has that property.

Also, one of the really intriguing thing about splitting your service into smaller micro-service based architectures, is that you can mix and match different languages. Which gives you the ability to pick languages which suits a solution.

A good example is the TensorFlow system by Google. Model building usually happens in Python, but you then load that model into a thin C++ layer which serves the requests on the network as a standalone application. The same approach can be taken with some of the more advanced languages.

Even better, as a startup, the least of your worries straight away is horizontal scaling. Modern machines are so fast you can run an incredible amount of concurrency on a single large node, so why bother too much with scaling? This help the micro-service model even more, as there is less reason to worry about the communication overhead.