skysight-inc/HackerNews huggingface dataset:
Usually mathematics is taught in a progression, and layers are built upon more basic layers. A 'non-mathematician' is someone who does not consider it their life's goal to solidify their expertise in mathematics, so they may choose other disciplines to obsess over, or no disciplines at all. Either way, a teacher of a class for 'non-mathematicians' who wants to explore depth in a certain area of mathematics cannot assume that this population of 'non-maths' will understand jargon or any concepts that aren't specifically explained within the scope of the class. Thus they must proceed axiomatically, being sure to avoid using concepts that haven't previously been defined.

Conversely, a class for "mathematicians" would be one with some background that can be used to begin from, depending on the average grade-level or prior education of the students.

So in a nutshell to teach deep math concepts to 'non-maths', one has to start from the beginning and define each concept in order, ignoring wider scope for the sake of reaching the goal. 'Math' students can start at a middle-depth, depending on their background.
It's also a fantastic way to see how one thinks, one's problem solving approach, debugging skills and the like.
Sorry for the confusion, I totally misread the comment I was replying to. Yes, I agree that LaTeX is more convenient for writing mathematical stuff.
In the afternoon, also Lightning Scalability, Sidechain Scaling, Timestamping are good topics.
Microsoft probably has the best research division in technology.
A lunar space elevator ( https://en.wikipedia.org/wiki/Lunar_space_elevator ) can be constructed out of kevlar today.
The New Digital School
Hi everyone

Allow me to introduce myself. My name is Tiago Pedras and I’m a Web Designer from Porto, Portugal where I’ve been teaching all things about the web since 2006 at ESAD, School of Arts and Design.

## The project
This year I’ve been involved in launching The New Digital School (http://thenewdigitalschool.com/), an international web design school with a new approach to education.
So throughout 10 months, students will be in touch with a series of 10 industry renowned creatives, who we’re inviting for a 1 week masterclass each, engage in real-world projects from industry partners and develop their own career or product with our guest mentors. Great speakers such as Vitaly Friedman (Smashing Magazine), Aarron Walter (InVision) or Stanley Wood (Spotify) have already confirmed.

Between all of, this students get to enjoy the lovely and sunny city of Porto, named “The Portland of Portugal” by The New York Times (http://tiny.cc/a2mpfy).

## Why we’re doing this
I’ve taught many people from Designers to Developers and always been keen in finding the best ways to teach them the best things, the right way. The web is simply too broad and dynamic to be well taught through traditional academia and curriculum. This is web education done right.

## Where are are
Right now we’ve started applications and the school year starts in January 2017.

In case you're interested in knowing more I’ve recently presented the project at Mirror Conf (http://tiny.cc/00mpfy).

## And finally, the invitation!
We believe there’s a lot of changes that need to be done in design education and so we’ve given a first step towards it. Towards empowering the designers of tomorrow and creating better equipped professionals. So we would love to have your support in raising and sharing this topic as we think it will be of interest to your audience.

Hope to hear from some of you soon!

Best,
Tiago Pedras (@tiagopedras)
Ask HN: Mazda CX-5 or Honda CR-V?
Budget: ~$25K. I prefer comfort and value for money.
This entire comment is deeply ignorant and ill-spirited. You don't understand Burning Man. There's nothing wrong with that; it's not an easy thing to understand, particularly if all your knowledge is second-hand anecdotal.

Where you go astray is when you pass judgment anyway. You are not qualified to judge the moral value of peoples' experiences at Burning Man any more than they're qualified to judge the value of your own experience and efforts.

There's a lot to legitimately critique about the event. I'm sorry you feel unwilling to see it at face value - at which point interesting discussions can really happen - and instead want to go for a fatalistic scorched earth policy of bringing down an entire community based on your own biases and personal projections.

That community will continue to welcome you if and when you ever approach it with some humility.
> soulless cookie cutter process that makes people feel like a commodity

I agree most should steer clear from them, but the interview process is often an accurate representation of the level of the team:

* If the interview involves a copied a set of questions off the internet, verbal or written, they don't have the skills on the team to have a dynamic discussion.

* If the interview doesn't have enough standard questions, then they're either inconsistent or might rely heavily on certain people's intuition, the latter which could go either way but the former could mean complete disorganization.

* If they expect you to know the circumference of the Earth (equatorial 24874 mi/40030 km, meridional 24860 mi/40008 km) and capital of Sumer in 2281 (Uruk), then they could be interested in someone that has a scientific mind, great memory, and likes trivia or is very into history.

* If they give you problems to solve, they want to see and hear how you think.

* If they give you homework, they probably just want you to provide solutions in code and figure things out on your own to some extent, and the amount of time they give you to do that is indication of how they estimate tasks.
Do you have any tips on encouraging upstream projects to invest in reproducible builds?

Our ideal world would be fully reproducible builds with a complete chain of custody. We have some of it, but not the whole kit and kaboodle.

But we can't really do this so long as we rely on unreproducible upstream build configurations.
You might consider using tags instead of categories. People might look at categorizations in different ways. So you might tag your projects with languages, industries, etc. You can seed these values without a lot of thought and without painting yourself into a corner.
I agree that unit testing is a waste if the project requirements change quickly. Unit tests can take ages to write and if the project requirements are changing constantly, then you keep having to update them and it slows down development and kills productivity - I've seen this happen many times in previous companies.

Unit tests only make sense for components of a system which are BOTH critical and stable.
I think that integration tests are often way more useful for most projects.
You forgot this: (
Pairing for interviews is a good idea if you pair. But it's not a good idea if you don't: I don't like pairing, and I don't really want to work somewhere where it's a big part of what they do. I won't perform as well in an interview pairing, which ksbisfil info of you do pair, irrelevant if not.
Nixos goes to a great length to steer towards reproduceability. They run builds in chroots, they set all ctime to past 0, they make all directories except the output directory read only, etc. But even then compilers have all sorts of quirks, like running certain code paths multiple times and deciding which one runs faster on ~this~ CPU.

The biggest conceptual mistake we are making is that by default compilers always build for ~this~ machine, linking to this libraries. This makes it so the state of the machine inherently changes with every compilation (aka compiling is not a purely functional operation anymore). If I could go back time and change automake and glibc, cross compiling and explicit dependency handling should be the norm.
(As an aside, containers would greatly benefit too as you wouldn't need to package an entire linux distribution with every binary)

I am sometimes amazed, sometimes disappointed by this reproduceability problem. Computers supposed to be machines that can do the same thing again and again without a mistake, but this is not the case anymore. We have so many layers of complexity and everything is bolted together with duct tape. We focus on developer convenience in the short term but in the long term we completely loose determinism. Sure we can write more code faster than before, but building software is more problematic than ever.

Yet, somehow everything seems to be going to this direction, in fact some people celebrate it and compare it to biology or evolution. I just call is "accidentally stochastic computing".
> This is what I don't understand about software engineer hiring. They are ignoring important criteria about fit for the actual job, and focusing on criteria that is either orthogonal or completely irrelevant.

Oftentimes, the people actually designing the hiring process have an imperfect understanding of what work software engineers actually do. They ask the software engineers for input, but optimizing the hiring process to be orthogonal a software engineer's core work responsibilities, so they aren't necessarily going to give ideal advice.
No, it's not too bad that assholes are called out.
Ah, this was extremely well explained, thank you; I've encountered the strong / static (and weak / dynamic) dichotomy before but I didn't grok the difference until now.
It's important for HN to keep its distance from tldr culture. Longer articles are ok, even if many of us won't read them. It's true of any post that most people won't read it.

Snap summaries make for reflexive reactions. That's the shallow kind of discussion we're hoping to avoid here. What we want is reflection, which is slower, takes more energy, and leads to more considered exchanges.

More on the reflexive/reflective distinction: https://hn.algolia.com/?dateRange=all&page=0&prefix=true&que...
In summary with my comments in brackets:

1. Keep regression tests around for up to a year - but most of those will be system-level tests rather than unit tests. [System-level since context of how software was being used is important.]

2. Keep unit tests that test key algorithms for which there is a broad, formal, independent oracle of correctness, and for which there is ascribable business value.

3. Except for No 2, if X has business value and you can use a system or unit test use a system test for X. [Context again.]

4. Design a test with more care than you design the code. [They need to do something meaningful rather than just be there as a metric.]

5. Turn most unit tests into assertions. [Assertions describe properties you code should always have before, during, or after executions. Just use assertions for such checks that instead of hiding them in tests.]

6.Throw away tests that haven’t failed in a year. [Controversial claim. Says they tell you nothing. I believe the author thinks the design and assertions should make the software right from the beginning with the tests telling you where you're screwing up.]

7. Testing can't replace good development: a high test failure rare suggests you should shorten development intervals, perhaps radically, and make sure your architecture and design regimens have teeth.

8. If you find that individual functions being tested are trivial, double-check the way you incentivize developers performance. Rewarding coverage or some other meaningless metrics can lead to rapid architectural decay.

9. Be humble about what tests can achieve. Tests don't improve quality: developers do.

There's a lot of good points in there, though. Talks about combinatorial explosion where tests often don't even measure correctness. Talks about how maintenance burden goes up over just good system testing and assertions with minimal unit testing. Meantions Toyota Production System showed you keep human in the loop and let them do any analysis that requires brains while automating just the mundane stuff. Mentions how hardware engineers duing Design-for-Testing philosophy embed little probes in most of their blocks to catch violation of correctness conditions during testing. Kind of black box plus deep, white box. Says that systems could similarly be wired so the system tests would set off alarms when they should. Just a few gems I saw.

I agree a shorter version of this essay would be beneficial.
That's not true at all. People hedge their risk all the time. Do you think that every single person who takes a plea bargain is guilty of the crime they're charged with?
As it was mentioned somewhere else, asking for a full legal name and a shorthand form ("what you'd want us to call you") is a good solution that covers both usecases.
I've also seen a similar tool that claims to do a partial evaluation of candidate's code. Guess what does it do! Assume that the expected answer was

42

and your code emitted

4

it'd give you 50% marks for the test case.

--

As an aside, such tools would give you a 0 even if you coded the perfect algorithm but goofed up the final printf.

Robotic evaluations might work, but not in the current form.
I just posted a summary for you in this thread.
> we don't know if they use bare bone MySQL or not

No, we know this exactly, because companies freely discuss it. (I've worked for 2 of the companies I listed, and over the years have attended conference talks by pretty much all of the other ones I mentioned.)

The vast majority of these companies use an unmodified copy of either stock (oracle) MySQL, Percona Server, or MariaDB. Of these 3 major options, Percona Server is the most common among large-scale companies.

The companies that modify MySQL (Facebook, Twitter, LinkedIn, Google, Alibaba) readily open-source their changes. They're not really forks, it's more like a patch-set that they port to new versions. They make nice improvements that are often incorporated into Percona Server and some eventually are reimplemented by Oracle to be put back upstream.

The one big exception is Amazon, which doesn't open-source its changes. But aside from them, it's an open source ecosystem. Having companies with "expertise to modify MySQL and use their own branch" is a good thing and this is exactly why it's a good example of MySQL's popularity!
I don't see the point of a programming language allowing itself braining fucking its users(developer) for serious use
I agree - I don't think competitive programming should be used as an interview tactic. That being said, if you look at the rating distribution of TopCoder/Codeforces problems, most interview problems (even at Google) tend to be around the 1500 Elo level. Around the 1900 Elo level and above, I think it's an extremely strong signal for a very talented thinker.

I'd much rather prefer a discussion about a previous project (open source or at work) with pointed questions about the code/design choices, a take home, etc.
I get you, c13k. This is why I upvoted your first reply and I answered with something other than "how dare you not be nice". I knew there was more to your comment than what it let appear.

The part where you say you could have penned the article yourself? I deleted that before I posted my reply because I didn't want to bother people in here. My plant/process is wrong and I can't think clearly. I have no experience, no job, and no skills I can think of and still don't live alone. I was so focused on trying to be a success my way, it incremented the number of days I was a failure in the eyes of the people who are dearest to my heart. There are few things that hurt more than being considered a failure by your loved ones when everything you're doing, you're doing to take care of them. Though as certain as I am my situation could be better, I am certain it could be worse. I notice that and try to enjoy the things I do have, like family. But there's a divide that was created trying to be a success without even the success. I chased trains going opposite directions and ended on none. Love from a failure isn't worth much. I was in a lot of trouble during college and my wish at the time was that none of my old parents die before I graduate. I chased my ideas in a race against time.

I still have a few friends, the only ones I will probably have. The ones who didn't indulge in schadenfreude and where there for me. I won't lie to you and tell you I'm not saddened. I'm almost 30 and would have loved to spend time with my family while I lived with them. All the trips you don't go, all the pictures on which you're not, all the occasions you were absent. Time is not something to be messed with and we tend to take things for granted. I used to know that, then something changed and I forgot.

But it could be better as certainly as it could be worse.
NCBI has dbSNP, a database of important SNPs, with statistics on the variation of alleles among different populations. See e.g. [1]. From there you could compute the answer to your question.

[1] https://www.ncbi.nlm.nih.gov/SNP/snp_ref.cgi?rs=rs6564851
Part of the interview for my last job involved interviewing me about debugging, which I thought was neat. "What's wrong with this code?" All the samples were relatively simple - less than 30 lines each?

- Double delete, caused by not following the rule of 3 in C++, which would likely crash
- Multithreading code missing volatile or memory barriers (which segued into a discussion of it's disassembly)
- Nonvirtual delete through base pointer

Extremely realistic - it's all stuff I've seen and fixed in the wild (this was for a non-entry gamedev job involving plenty of C++)
This is a problem that the GNU Guix package manager[0] (and presumably its inspiration Nix[1]) are helping to solve. Any two git checkouts of Guix with the same git hash on the same architecture should produce bit-identical builds across time and space for many of the programs it packages. It's not true for everything they package yet, but they're making progress.

(Some might find the documentation for the `guix challenge` command interesting: https://www.gnu.org/software/guix/manual/html_node/Invoking-...)

[0] https://www.gnu.org/software/guix/
[1] https://nixos.org/nix/
Having a friendly interview process, to us, is a competitive advantage. As is not requiring multiple onsite interviews, too many phone calls, and even making the onsite interview not take all day (we try to wrap up by 1pm unless a candidate is shadowing an engineer for a day, which we typically do for more senior hires). Having a concise interview process often lets us get offers out the door while candidates are still navigating 'Round 3' and 'Coffee with a lead engineer' and other nonsense with the bigger companies.
What are the implications if we don't start from a trusted compiler?

e.g. we have compilers A and B. Either of which may, or may not, have back doors. Is it possible to detect back doors via compilation?

A complex backdoor can detect compilation of A or B, and insert different backdoor code into each. But will those back doors be identical?

i.e. is there a a compilation path (A -> B' -> B'', etc.) such that we can either detect that the backdoors are either bit for bit identical, or that there are no back doors?
I get all that. But what I'm saying is that he has a distinctive voice.

It's refreshing to have someone who isn't so polished. Sure, the dude stutters and stammers, but it's not to the detriment of being able to parse whatever he happens to be saying, ist it? This softer-touch presentational style is where he has derived so much reverence, envy, and cultural capital.
Advertisement purposes.
> I think many people assume that interviewers are looking for "thought process" but from my experience as a hiring manager for 6 years, in reality you'll find that most are just looking to "gotch-ya" the candidate. Many interviewers seem to enjoy making a candidate "sweat" as some source of pride.

What you describe is a horrible approach to interviewing, and points towards dysfunction more than anything else.

In my opinion, the second most appealing non-technical character trait for an engineer is empathy. (Curiosity being #1.) If you have an interviewer who goes on a power trip and actively tries to abuse a candidate, what does that tell you about their company?

Everything is PR, and how we interview engineers tells a lot about how we deal with each other. Would you like to work in a place where being nasty is considered normal - or even desirable?
Persons are different. If someone is balanced, already introverted and has no trouble living in the moment and being happy just breathing and moving then I maintain that meditation can have prolonged adverse effects outside the period of actual meditation.

If another person is extroverted, perhaps even to the point of being hyperactive, then meditation (as you described it) may help.

In general I see very little connection though between meditation and intellectual output. Many famous people who are known for taking to Buddhism did so after accomplishing
their major works.

I also doubt that meditation, even if it leads to a rested mind, helps focusing in noisy environments.

[same person as above -- sorry dang!]
Well, it's not like he wanted to do it.
It is!

I hasten to add that it isn't perfect. We hire across the intro-extraversion spectrum, but there's an ongoing concern that we're biased towards extraverts. Especially in Labs, which is the consulting wing.

Another problem is that many candidates are just plain nervous. We do our best to set people at ease and to be upfront that there's no right or wrong or trick answers. But interviewing is just scary. I expected to fail and so felt no pressure -- had I felt that more was on the line, maybe I'd have done worse.

The third -- this is a very common negative opinion -- is the argument that we don't give candidates a fair opportunity to show their expertise.

We will usually try to assign one project where their résumé claims expertise and another one that they're unfamiliar with. The former to take a sounding of their expertise, the second to get a feeling for their approach to the unknown.

It's not always possible to do this, simply because it's a vast field and candidates come with very varied backgrounds. And those candidates who are declined often feel that we've denied them a fair chance by throwing them into an unfamiliar technology.

These are all fair criticisms. My best answer is: we are not trying to trick or exclude anyone upfront. Ultimately the hiring decision is made by future peers, so we want to be fair but firm.

Hiring is just hard.
Can we please add a (2009) to the title?

This is a classic paper on reproducible builds, everybody is working on since.
Better overview: http://www.dwheeler.com/trusting-trust/

Older discussion, 7 years ago:

* https://news.ycombinator.com/item?id=1104338
Not to mention the game that inspired Minecraft.
Startup stress: Handling competition
Sure, the ads are targeted specifically for you, that's not manipulation, which would be misleading someone to do something.

I realize there's a grey area though.
> Do you think this will cause a ban?

Much like everything, only if they find out. To get an anonymous experience in these websites you'll have to assume a fake identity.
A gentle introduction to Prolog (2013)
One day I'll have to work with people who learned from
this (and others like it), and it will be a long painful road
to help them unlearn.

Quoting from the link you've mentioned:

#define add(a, b) a + b

I couldn't agree with you more.

--

To elaborate:

add(1, 8) * add(5, 1)

wouldn't yield 9 * 6 = 54, but

1 + 8 * 5 + 1

which is 42. One might say that it's correct, since it's the Answer to the Ultimate Question of Life, the Universe and Everything.
Engineers like yourself, who don't want to pair, self-select out before applying.

Which is fine! There's plenty of variety in this industry to find preferred practices, peers and environment.
I dont think so, I haven't seen anything like that
I'd really like to see the full transcripts.
By the way, what I mean by "geometry" is basically reading Euclid and working out the proofs with a straightedge and compass. What I see in the high school geometry homework I've come across is something else altogether.
Because this technique was used to bypass EBay's JS blocker a while back.