I might be misreading your comment but it seems to me you're linking this too closely to AI, as I believe you'd see a similarly international makeup of researchers in any STEM field in the US. If I recall correctly, something like 20-30% of professors in the US are foreign born. This would probably be even more for younger researchers (PhD students, postdocs) as there's a greater proportion of people willing to spend a few years abroad than their whole adult life.
The US is the largest research hub in the world, and it offers (or offered) outstanding conditions for research. I believe this to be as old as WW2, and it certainly didn't start with AI. Higher salaries, more diverse career opportunities (academia is more porous to industry in the US than many other countries), and the ability to hire more and better candidates for the workhorses of a lab: PhD students, postdocs, technicians, research scientists.
Re: supply side, undergraduate education (including Master's in some countries) has become basic infrastructure in a developed (or developing) country, and countries like China, ex-USSR or the western European nations have solid traditions in this regard, with many offering comparable (or surpassing) education to the best US universities in specific STEM topics. However, save for China, I believe a majority of these countries have not invested in research to match their growing pool of Master's (or even PhD) graduates.
Wouldn't a decent compromise be to extend the capabilities of the C preprocessor, so that we could iterate over types at preprocessing time?
That way, we could instantiate for a great number of types more easily, while keeping implementations in source files. You can always do an instantiation macro, but it still becomes painful when the number of template arguments (and their possible values) increases.
I know there's the Boost PP library but I personally find it incomprehensible once you try to nest two+ loops.
What do you mean by this? I've been using those libraries on mac ARM and AMD processors, are you referring to intel-specific implementations? How about the sparse matrix solver, what do you use?
This all hinges on the fact the variance is homogeneous to X^2, not X. If we look at the standard deviation instead, we have the expect homogeneity: stddev(tX) = abs(t) stddev(X). However, it is *not linear*, rather stddev(sum t_i X_i) = sqrt(sum t_i stddev(X_i)) assuming independent variables.
Quantitatively speaking, t^2 and (1-t)^2 are always < 1 iff |t| < 1 and t != 0. As such, the standard deviation of a convex combination of variables is *always strictly smaller* than the convex combination of the standard deviations of the variables. In other words, stddev(sum_i t_i X_i) < sum_i t_i stddev(X_i) for all t != 0, |t|<1.
What this means in practice is that the convex combination (that is, with positive coeffs < 1) of any number of random variables is always smaller than the standard deviation of any of those variables.
Math isn't about memorizing closed-form solutions, but analyzing the behavior of mathematical objects.
That said, I mostly agree with you, and I thought I'd share an anecdote where a math result came from a premature implementation.
I was working on maximizing the minimum value of a set of functions f_i that depend on variables X. I.e., solve max_X min_i f_i(X).
The f_i were each cubic, so F(X) = min_i f_i(X) was piecewise cubic. X was dimension 3xN, N arbitrarily large. This is intractable to solve as, F being non-smooth (derivatives are discontinuous), you can't well throw it at Newton's method or a gradient descent. Non-differentiable optimization was out of the question due to cost.
To solve this, I'd implemented an optimizer that moved one variable at a time x, such that F(x) was now a 1d piecewise cubic function that I could globally maximize with analytical methods.
This was a simple algorithm where I intersected graphs of the f_i to figure out where they're minimal, then maximize the whole thing analytically section by section.
In debugging this, something jumped out: coefficients corresponding to second and third derivative were always zero. What the hell was wrong with my implementation?? Did I compute the coefficients wrong?
After a lot of head scratching and code back and forth, I went back to the scratchpad, looked at these functions more closely, and realized they're cubic of all variables, but linear of any given variable. This should have been obvious, as it was a determinant of a matrix whose columns or rows depended linearly on the variables. Noticing this would have been 1st year math curriculum.
This changed things radically as I could now recast my maxmin problem as a Linear Program, which has very efficient numerical solvers (e.g. Dantzig's simplex algorithm). These give you the global optimum to machine precision, and are very fast on small problems. As a bonus, I could actually move three variables at once --- not just one ---, as those were separate rows of the matrix. Or I could even move N at once, as those were separate columns. This could beat all the differentiable optimization based approaches that people had been doing on all counts (quality of the extrema and speed), using regularizations of F.
The end result is what I'd consider one of the few things not busy work in my PhD thesis, an actual novel result that brings something useful to the table. To say this has been adopted at all is a different matter, but I'm satisfied with my result which, in the end, is mathematical in nature. It still baffles me that no-one had stumbled on this simple property despite the compute cycles wasted on solving this problem, which coincidentally is often stated as one of the main reasons the overarching field is still not as popular as it could be.
From this episode, I deduced two things. Firstly, the right a priori mathematical insight can save a lot of time in designing misfit algorithms, and then implementing and debugging them. I don't recall exactly, but this took me about two months or so, as I tried different approaches. Secondly, the right mathematical insight can be easy to miss. I had been blinded by the fact no-one had solved this problem before, so I assumed it must have had a hard solution. Something as trivial as this was not even imaginable to me.
Now I try to be a little more careful and not jump into code right away when meeting a novel problem, and at least consider if there isn't a way it can be recast to a simpler problem. Recasting things to simpler or known problems is basically the essence of mathematics, isn't it?
While those are certainly indicators of interest, is their absence an indicator of lack of interest? In other words, "has side projects" is sufficient to prove "likes programming", but I don't think it's necessary.
There's only 24 hours in a day, and mastering any serious curriculum already takes the majority of those.
Then there's family: some have parents to support, and/or a spouse they can't just ignore all evening to sit in front of a terminal typing git push.
Lastly, plenty of people learn or tinker on their own, but they don't all have the (socioeconomically loaded) reflex of marketing themselves with a github repo.
Of my whole Bachelor's, Master's and PhD cohorts, I haven't known one person to have a github repo outside of employment. Some were building little things on the side but sharing them informally, never in public.
What you're looking for is people with no social life, no responsibilities towards anyone or anything (even just being an immigrant can be a huge time and energy sink), and with the social background to confidently market themselves by putting what's objectively noise online.
I happen to have kids and have always spent about 30 min a day, more like an hour, every day, looking at some side coding side projects. Being doing that before I was dad, now less since I am. But I still do. I'm past 50 now and I must admit the quantity of work I put out on side projects have decreased.
Side projects requires passion, not discipline, not effort, just passion. And that's what I'm looking for. When you like what you do you're generally good a it.
Now, I have hired people who don't have side projects, of course, they're not that common but not rare neither. And the side project question is sure not the main question. But that's a cool differentiator.
Moreover, questioning people on their side project is always more fun for them.
And of course, people with side project sometimes day dream so you have to keep them busy :-)
And having a github repo is a 15 minutes job. And most of the time, nobody will care about your side project. It's not like your marketing yourself. As I have said, I don't care about the stars. Just looking at what you do on the side, what interests you in a domain that is not far away from your job.
And side projects are always cool: I have interviewed people who were working on their game engine, planet trajectories, web sites for friends, playing with machine learning, writing little tools like Javadoc,...
I just wanted to comment on the "out of distribution" solution the author proposes, partly for the young grads on this forum.
Going "out of distribution" in abilities also means your job prospects go "out of distribution". When you specialize, so too does the kind of position you'd be the better fit for. This can mean radically fewer possibilities, and strong geographic restrictions.
To give an example, my PhD topic concerned something "that's everywhere" but, when you look at things more closely, there's only < 10 labs (by lab, I mean between 1 and 3 permanent researchers and their turnover staff) in the world working on it, and around that many companies requiring skills beyond gluing existing solutions together, in which case they'd just as well hire a cheaper (and more proficient) generalist with some basic notions.
This isn't even a very abstract, very academic field, it's something that gets attacked within academia for being too practical/engineering-like on occasion.
I understand the "belly of the curve" gets automated away, but consider that the tail end of the curve - producing knowledge and solutions to novel problems - has been for a long time, since Gutenberg's invention of the printing press, if not oral communication. The solutions scale very well.
A researcher's job is, almost by definition, to work themselves out of a job, and this has been the case since long before AI. Once the unknown has been known, a new unknown must be found and tackled. There's very, very few places in the world that truly innovate (not implementing a one-off novel solution produced in some academic lab) and value those skills.
I don't mean to be overly bleak, but it doesn't necessarily follow from this automation that the freed salary mass will go towards higher-level functions; just as likely (if not more), this goes towards profits first.
Seems like the hope, for OOD workers, is that matching weird employer needs with weird employee capabilities is a belly-of-the-curve problem that's about to get automated away.
You can see it with smoking. Only 20 years ago (I'll take France as the example), you could smoke indoors in restaurants and many public places and, a few years before that, even in classrooms.
Recently, it was forbidden in public parks and similar places. A perhaps still minoritary segment of the population would like it outlawed even in e.g. restaurant and bar terraces.
Since France remains behind on this compared to the US, you can get a time-traveling experience regarding this right now, by boarding a plane from Paris to e.g. Boston or back. You won't find a terrace where you're allowed to smoke (or even vape) in Boston (at least I didn't) or, if you're American, you might find the French very comfortable smoking right under your nose.
There is no doubt these are good policies as far as public health is concerned. But they outline how, in the tug-of-war between personal freedom and safety, there has been a tendency lately for safety to win.
Other examples, as far as I'm aware, there weren't even speed limits on non-agglo roads before the 70s (France, again). Drinking (under the limit of manifest ebriety, and the tolerance must have been pretty lenient) and driving was not illegal until 1970. You could drive a motor scooter/moped including on high speed roads (though they wouldn't break 40km/h unless unbridled) from the age of 14 without any paperwork, nowadays it requires a minimal license. I'm very doubtful people didn't know this was a dangerous situation, or that they didn't care, I think they simply prioritized freedom and simplicity over living in a zero-risk society.
I point to these safety regulations because they're where the compromise between social order and personal freedom is most evident, but they're only manifestations of a broader change of the Zeitgeist, in my mind.
Another clear tendency seems to be an obsession with so-called insecurity which, according to politicians and a worryingly large portion of the French (judging by election results), is at an unbearable all time high; in fact, violent crimes have never been so rare (for comparison, murder rate is 1/5th that of the US).
Everyone seems obsessed with risk and danger, be it the right of being mugged, or the left of precarity (which I can better sympathize with). It seems one half of the population wants to live in a police state with no personal freedom, and the other wants to live in an absolute socialist state with no financial freedom.
Just to conclude, it also seems the newer generation has been found less promiscuous, which, to me, is not a very adventurous attitude.
The US is the largest research hub in the world, and it offers (or offered) outstanding conditions for research. I believe this to be as old as WW2, and it certainly didn't start with AI. Higher salaries, more diverse career opportunities (academia is more porous to industry in the US than many other countries), and the ability to hire more and better candidates for the workhorses of a lab: PhD students, postdocs, technicians, research scientists.
Re: supply side, undergraduate education (including Master's in some countries) has become basic infrastructure in a developed (or developing) country, and countries like China, ex-USSR or the western European nations have solid traditions in this regard, with many offering comparable (or surpassing) education to the best US universities in specific STEM topics. However, save for China, I believe a majority of these countries have not invested in research to match their growing pool of Master's (or even PhD) graduates.
reply