Hacker News new | ask | show | jobs
by maaku 4633 days ago
Actually computer security doesn't change very fast compared to other industries, and is probably a very good fit if you have a math background. But machine learning would be fun too. Stay far, far away from graphics if you are worried about rapid change.

But really, find what you're interested in and do that. It may involve trying them all out, or reading up some reference works on each. Making an important life decision based on “what's in demand” is a very poor choice.

1 comments

Thanks for the advice. I actually didn't know that graphics changed very fast. I'm only partly making this decision based on what's in demand. As long as the area is math heavy and broadly applicable, I'll probably enjoy it.

Also, I was thinking of "in demand" with a more long term view. I would think that security and artificial intelligence would continue to stay in high demand well into the future.

I mostly just want to choose an area where I can use many different branches of math, so I keep my math skills in practice. I also like writing code, as long as it involves math and is not boilerplate or repetitive.

Why do you care about the high demand? We can put that aside for now--if you are a competent coder, you are in high demand...

If you want to have more math, then some subfield in CS theory is the way to go. CS theory have lot of elegant math. complexity, data structure, algorithms, combinatorial optimization, computational geometry. All of them have nice set of mathematical tools you can use. There are also unexpected ones that uses more traditional mathematics, like universal algebra for CSP, functional analysis in graph embedding with little distortion, and topology for computational topology(well that seems obvious, there are certain uses for computational topology, read up on persistent topology, which I guess is part of machine learning now).

Of course, the demands are low for pure theory students. However you can do some practical work. For example http://www.tokutek.com/ , founded by professors who specialize in cache oblivious data structures. Some more practical ones include cache oblivious data structures, sublinear time algorithms, string related algorithms. In Google, there are researchers working on how to optimize ads.

Also, I just don't see how you are going to write non-boilerplate code anywhere. everything eventually become repetitive(unless you use Haskell, anything new become a paper.)

Computer security in general has almost nothing to do with math. Cryptography specifically obviously does (the security and cryptography communities are pretty distinct). However, cryptographic engineering, which is what you would do with just an undergrad degree, has almost nothing to do with math at all.

Cryptographic research, on the other hand, can be math heavy. However, it typically draws on pure rather than applied math. E.g. number theory(RSA/factoring), algebraic geometry(ECDSA/elliptic curves, pairings over elliptic curves), and ideal latices.

> I mostly just want to choose an area where I can use many different branches of math, so I keep my math skills in practice. I also like writing code, as long as it involves math and is not boilerplate or repetitive.

You will be well at home in the field of AI (machine learning being the currently-in-vogue subfield).

Graphics programming isn't that fluid. A lot of hay was made about moving away from fixed-function to the shader model, but since then it's been iterative API changes and growth to better target certain goals. OpenGL is throwing overboard most of the dumb stuff from its earlier versions and is turning into a pretty nice API overall.

Now there's a lot of innovation in terms of specific techniques to achieve certain visuals, but that's the same as any other field - read the paper, implement it. The core techniques should be fairly static for at least the next 4-5 years (because it'll probably take that long for GLES 3 to be widespread) and evolve incrementally after that.

Change is not something you should be worried about there.

Very inaccurate and misleading. You're confusing learning an API (easy) with doing actual graphics programming. Graphics programming involves deep understanding of the target hardware. The level of sophistication of the hardware determines which graphics techniques to pursue for the best results. Often it's a balance of your ability to optimize along with achieving the highest fidelity of output.

For example, availability of floating point render targets -- how do you use them, and for what? How does the hardware handle them? It's different across devices even in the same generation! How does the hardware optimize rendering of opaque vs transparent objects? It's different across devices. Let's get really specific -- how many cycles does a medium precision square root take? Do you use pow or not? How much does a texture lookup cost? Hopefully you can guess the answer by now -- it's different on every device.

It gets exciting when a blend of API and hardware (which includes additional supported and unsupported extensions, which yes, also change with every OS/hardware combination) requires the invention of a novel technique to fully utilize the resources at hand. It's a continual balancing act of visual fidelity and performance with the end goal of squeezing out every last bit of memory and computational bandwidth.

Enough about hardware which is really just an important detail of the field. Being a great graphics programmer requires keeping up to date with the community of blogs and published papers, all of which are a constantly updating source of experimentation and novel techniques. This doesn't even touch on the artistry involved. Being at the top of the field takes extreme dedication and is absolutely not a "learn once and refresh now and then" activity.

Summary: real-time graphics programming is one of -the- most difficult fields to stay at the forefront.

> The core techniques should be fairly static for at least the next 4-5 years.

That's very fast by the standards of other fields :)

Graphics has only slowed down by comparison to its own rapid pace in the late 90's / early 00's.