3,187 karma · joined June 17, 2008
https://www.ajdecon.org/
During middle and high school my passions were physics and computers, but I never thought that computing could be anywhere near as fun as doing lab science. So I did a B.S. in Physics and a bunch of nano-scale and solid-state research, then went on to grad school in materials science and worked on polymer and colloidal physics and microfabrication. I still think that the degree in Physics was the best thing I could have done at the time, and I learned a ridiculous amount from it.
During grad school I learned that academia involved far more grant-writing and politics than I enjoyed, and that I really did enjoy working with computers more than doing bench science. I left with a Masters and got into high-performance computing, doing a lot of sysadmin and a little software development on compute clusters with a small company doing HPC as a service.
These days I'm in Silicon Valley (Santa Clara), but I still work on HPC clusters (at Nvidia) and I'm still heavily focused on scientific and technical computing. I love what I do and I love that I'm still supporting scientists and engineers, though I do miss the lab bench occasionally. I still read a lot about physics, but my work and most of my side projects are focused on HPC.
More importantly, I have a wonderful wife who plays roller derby and two cats that demand an inordinate amount of attention; I fence epee, and have since college; I play a lot of board games, read a lot of science fiction, and still pick up my trumpet every once in a while. Life is good most days. :)
He also teaches the Coursera machine learning course: https://www.coursera.org/course/ml
1) From the employer perspective in a startup: do you actually want an employee who's going to stay longer than a few months, based on any reason except the company and the work?
2) From the employee perspective: unless you're an extremely early employee, discounting the equity portion of a startup compensation package is probably the correct thing to do...
1) Cooking. I have a few standbys that I can make on a regular basis, but I'd like to expand a bit and find some more dishes both my wife and I enjoy. (She's a vegetarian, I am not.)
2) Systems / low-level programming. Mostly for my own amusement, but I'd like to have a better understanding of operating systems and how software interacts with hardware in general.
3) Improved parallel programming. I'm an HPC sysadmin and I am good enough with parallel programming to get by with helping debug users' code, but I'd like to be a lot better, especially since I often interact with complex applications that scale to thousands of nodes.
4) Math and physics refresher. I have a B.S. in Physics but I've been in computing for a while, and I'd like to re-assure myself that I know about more than computers. :) I plan to spend some time on old books, notes, and problem sets for both basics (Mechanics, EM, Quantum) and some favorite subfields (solid-state).
5) Machine shop skills... probably take some classes at the TechShop in San Jose.
And of course, just about anything I see that I think looks interesting in the next year. :) Be interesting to look at this list again next December and see what I actually did.
In terms of background, I started off in physics and gradually drifted into HPC. From the number of ex-physicists I meet, this does not seem to have been a unique experience...
If you don't have a map, you might ask a local for directions or take a cab if you're in a hurry to get somewhere that you don't know the location for. If your map is wrong, you are more likely to actually end up in the wrong place -- and then become that much more confused and make poor decisions while trying to find your way without it.
The cliché is that humans are fundamentally social creatures, and I think one of the primary ways we maintain the high engagement in a discussion thread is by becoming interested in the other participants, not just the topic. That's usually a good thing, because it motivates us to respond and care about the discussion, but it also means that people will go off-topic, get into heated arguments, or bring up memes and social topics.
If it were possible to strictly enforce rules against off-topic or non-technical discussions, I suspect engagement would drop very quickly. Learning is a strong motivator, but I doubt it provides the same semi-addictive feedback loop that the social aspects of a site do.
(I don't have any evidence beyond my own gut feelings based on web forums over the years --- happy to be proved wrong! A high-engagement non-social discussion forum would be an interesting place.)
Second-order results were an awesome new job doing something more fun; a huge increase in my day-to-day happiness and satisfaction; getting married; and an even more awesome job, and a move to California.
As a sysadmin, I do my best to make the network as damn near perfect as possible; but as a developer, I still generally assume the network is unreliable and plan accordingly.
Re 1: As yolesaber said, most decent IDEs/editors should give you tools to deal with parens. As for pretty-printing equations: I used to have a Perl script that would convert code to LaTeX according to certain rules, but it's lost in a previous job's IP. Still, this should be reasonably achievable with a set of regexs + LaTeX assuming you use a consistent syntax throughout for your equations, without too many ambiguous cases. :)
Not saying autoconf is awesome (I curse it on a regular basis), but the configure step itself is worth keeping around.
> switch to ereaders
Unless they're seeing different ereaders than me, that kills most detailed and colored diagrams in science textbooks. Also makes the experience worse in many geography, history, etc. courses.
> abandon the practice of lecturers performing the exact same lecture term after term when a recording will do
Recordings don't pause to answer questions mid-stream. A chat room or forum is probably good enough for upper-division courses where students have probably learned decent learning skills, but even freshman college courses probably need a human available at some point. Suppose they could be restricted to study sections...
> move towards homework and exams that can be marked by a computer rather than by hand...
There go essays and critical thinking questions in every literature class, to start with. Also a lot of the more useful evaluations in my engineering and science courses probably couldn't be marked by a computer.
To be clear: I think Coursera and similar efforts are awesome, and are an excellent supplement to college educations. I think they could also manage partial replacement of a minority of college courses. But especially with typical college students, who are not self-directed learners, I don't think it's the kind of replacement that will help budgets much.
From a practical perspective, part of what this means is that even more seemingly-distinct services will depend on the same infrastructure. We're seeing this already, as every time AWS experiences downtime, a bunch of web services go down. It will be interesting to see what effects this has on everyday business, as outsourcing internal infrastructure (email, calendaring, file storage, etc) becomes even more popular.
I've seen similar projects in the distributed-memory space (tiny clusters like Limulus[1], MicroWulf[2], or LittleFe[3]). These things are great for educational purposes, and the low cost makes them a lot of fun for classes and workshops. LittleFe, for example, supports distributed-memory and GPGPU programming and teaches you about clusters, and the educational program at the Supercomputing conference lets some educators build one and take it home for free.
But for professional work, I think a workstation-class PC, maybe with a GPU, is always going to win out.
[1] http://limulus.basement-supercomputing.com/ [2] http://www.calvin.edu/~adams/research/microwulf/ [3] http://littlefe.net/
From the article TechDirt links to: "Declassified US Air Force counter-intelligence documents, released under US freedom-of-information laws, reveal that military personnel who contact WikiLeaks or WikiLeaks supporters may be at risk of being charged with "communicating with the enemy", a military crime that carries a maximum sentence of death."
So far I haven't seen anyone link to the document itself, so it's all third-hand.
* Access to the RHEL repositories, with faster updates than CentOS or alternatives.
* Ability to upgrade to supported tier.
* Possibly: access to RHN pages with their forums, documentation, etc?
None of which would be huge advantages to me, but I can totally see the potential value.
I ended up deciding the people skills would be easier to teach because, frankly, the culture of the field demands a lot more in terms of technical skills than it does in people skills. The bar is set a lot lower for people skills among developers than it is for programming skills, and in my opinion, pulling someone from "horrible" to "competent" communication is easier than pulling someone from "ok" to "awesome" as a developer. But the truly skilled, in either area, are hard to find and worth their weight in gold.
I suspect that companies which are product-focused can probably get away with (a little) less concern for deadlines, as they can more easily push back a release if they want to focus on quality. I've often worked in service or client-oriented settings, and the temptation of hiring the Gabriella is real: she might not be the best programmer, but at least she actually answers your damn emails when the client is angry! It's not a recipe for long-term quality, but occasionally short-term is really damned important. :)
Scientific applications which involve a lot of interprocess communication -- for example, large CFD simulations -- can get a lot of benefits, especially since the popular MPI implementations are highly tuned for those types of apps. Also there's a ridiculous amount of legacy code, which leads to the usual lock-in effects.
edit: clarification
- 1: I'd modify "Programmers who don’t code in their spare time for fun will never become as good as those that do", to be "Programmers who don't code in their spare time for fun will never be as good as they would if they did". I definitely believe coding for fun helps your skills, but I've seen too many "just-a-job" programmers code circles around others on the same teams who had side projects and kept up with the trendy languages. It's not a clear differentiator, just a data point.
- 2: Unit tests don't help you code in the same way that a safety net doesn't help you walk a tightrope: this is technically true, but not a helpful statement in reality.
- 10: Print statements are "valid" in that they often work, but when a debugger is available it's almost always the right way to go.
The big challenges included finding talent (good sysadmins are not easy to find), keeping the right balance between employees and customers (you always need more employees than you think), and setting realistic expectations for pricing. When coupled with hosting, customers are often unprepared for how much extra management really does cost... If decoupled, would be interesting to see how you could price it.
- Asked intelligent questions - Followed up in a timely manner - Helped out when flights were delayed traveling to an interview (arranged hotel) - Been unfailingly polite and helpful
On the other hand, I have never once had a good experience with a dedicated recruiting firm. So maybe all the good ones are working for tech (or other domain) companies?