212

My plan as an undergraduate was unequivocally to be a pure mathematician, working as an algebraist as a bigshot professor at a bigshot university. I'm graduating this month, and I didn't get into where I expected to get into. My letters were great and I'm published, but my GRE was bad and my grades were good but not perfect. My current plan, I guess, is to start a PhD program at my backup school, then reapply to the better schools next year.

Reality is starting to hit, though, and I'm starting to think about "selling out." I would still love to work in algebra, but I'm not as in love with the Ivory Tower as I was a few years ago, and I don't want to give up my entire life for it. If the institution isn't going to let me do what I wanted to do, or if I'll never be as talented as I wanted to be, it isn't worth the sacrifice. In other words, I'd rather be a well paid applied mathematician in industry than a poor, mediocre pure mathematician at a low end university.

The problem is it seems that most of the applied jobs out there are all about analysis / continuous mathematics, and I am firmly in the algebra / discrete camp. I really do not want to spend my life solving fluid flow PDEs. I always hear about cryptography as an "applied algebra" job, but I'm not particularly crazy about working for NSA or a telecom (plus crypto can't be the only option).

I read some of the answers from Can I use my powers for good? but it's not clear to me which of these suggestions value algebraic thinking. Many seem very quantitative, rather than structural - is it possible to avoid this in industry? Also, I have a lot of debt from a long undergraduate career across several majors, so "how much" is unfortunately also a concern. I don't want to sell out cheap.

  1. Are there applied math jobs in industry which focus on structural mathematics reminiscent of abstract algebra, earn an appreciably high salary, and aren't cryptography?

  2. How would one best go about pursuing these jobs starting as a recent graduate / first year graduate student?

amn
  • 121
  • 6
Samuel Handwich
  • 2,621
  • 9
  • 24
  • 37
  • 66
    No matter what you do, get at least one mainstream programming language under your belt such as C, C++, Java or Python. – Alex R. Apr 17 '13 at 23:23
  • 3
    http://cstheory.stackexchange.com/questions/10916/uses-of-algebraic-structures-in-theoretical-computer-science – dls Apr 17 '13 at 23:24
  • @Alex Thanks for the response. I have a couple years work experience using C++ (and some high level programming languages) as an undergrad research assistant in another department and am learning Python as a hobby. Perhaps I should have included that in my post. – Samuel Handwich Apr 17 '13 at 23:28
  • 9
    I think the NSA must be the number one employer meeting your criteria. I know plenty of strong post-PhD mathematicians -- some of whom *also* have full-time academic jobs, in some cases at bigshot universities -- who work part-time for NSA and find it plenty interesting. In fact, that the work is very interesting is generally cited among their reasons for continuing to do it. So I wouldn't write off NSA so fast. – Pete L. Clark Apr 17 '13 at 23:49
  • I should say that I do not work for NSA despite the above, but in my defense I do have a full-time academic job which is more than enough to keep me busy. (@amWhy: my last comment got cut off. You can now see that I am asking the OP to reconsider.) – Pete L. Clark Apr 17 '13 at 23:52
  • Deleted! @Pete. And I agree, that the OP may want to reconsider...not that I'm in industry and not that I find the prospect to *be* in industry very enticing...but, that may be *my loss*! – amWhy Apr 17 '13 at 23:53
  • 1
    @PeteL.Clark Noted. At the very least I must say this: NSA may not be a bad idea, but it is an idea I already know about, so this question is simply a request for alternative options. – Samuel Handwich Apr 18 '13 at 00:00
  • What are some of the other areas you accumulated credit? (you mentioned switching majors)...Is there a way to "capitalize" on those credits/areas of study, in ways that will let you work with math? Eg. editing, publishing, writing? (Could be put to use at work in the publishing industry, e.g., and other similar pursuits...) You mention programming: imagine the kind of work you could do that would directly employ you interest in/knowledge of algebra. – amWhy Apr 18 '13 at 00:05
  • I have a double major in physics and a previous B.A. in writing and multimedia design. – Samuel Handwich Apr 18 '13 at 00:21
  • 13
    I'm a published PhD with good letters and good GRE scores, but after graduation, my unwillingness to relocate and the subsequent difficulty of finding a permanent academic position pushed me into the software industry. I'm really enjoying what I do and learn, and I have time on the side to study mathematics and do independent research. I'm not saying I'm abandoning academia forever, but I could imagine worse fates other than staying in industry. – rschwieb Apr 18 '13 at 16:59
  • 12
    I vote to not close this question. –  Apr 21 '13 at 07:17
  • @Alex Which one of those languages would you prefer for a physics graduate? – Lays Apr 24 '13 at 00:01
  • 1
    @Lays: I think it heavily depends on what and where you are working. If you're not experienced with programming i would say start with python and then java. – Alex R. Apr 24 '13 at 02:32
  • @Alex Thanks, python is my preferred choice after all. – Lays Apr 24 '13 at 02:47
  • Well, I will testify that telecomm is a rich source of applications of algebra. It is not clear whether you enjoy life better in the industry side or in the academic side. For some samples of algebra in use, take a look at [this question in MO](http://mathoverflow.net/questions/92192/hot-topics-in-error-correcting-coding-related-to-interesting-math). – Jyrki Lahtonen Apr 24 '13 at 16:42
  • Not learning a programming language fluently is one of my great regrets,one I'm trying hard to repair. But by all means,that's important advice. – Mathemagician1234 May 20 '13 at 03:13
  • @Mathemagician1234 There is no point in learning a programming language *fluently* if you don't need it immediately. Once you understand basics of programming you can learn any language at any time you wish. And one of the biggest myth floating around here is that people need advanced knowledge of computer science and programming to be a software developer. I know many many with degrees in biotechnology and environmental engineering who are working as software developers now. They didn't have ANY programming knowledge when they joined. All they needed was a three month training. – Mohan May 20 '13 at 03:23
  • @SamuelHandwich, you're in graduate school now? – grayQuant Oct 28 '13 at 20:02
  • @grayQuant Yup. – Samuel Handwich Oct 28 '13 at 21:51
  • @SamuelHandwich - When I read this, I thought someone had just read my mind. Do you mind if I ask what you decided to do? Did you end up pursuing the Phd? – Terrence J Sep 27 '15 at 05:41
  • 1
    @TerrenceJ I'm pursuing the PhD. My hope is to work in research somewhere in industry or government, and I fear I'll hit a glass ceiling if I cut out early with an MS. Anyway, what you probably want to know is this: I ended up changing fields to algebraic topology, which I now apply to machine learning. It's reasonably close to the compromise I sought between math with applications and math that felt like algebra. I did have to pick up a lot of statistics, but that turned out to not be so bad. I'm not yet sure if it will work out long-term, but for now, this path appears promising. – Samuel Handwich Jul 01 '16 at 01:14
  • By the way, I would be interested in hearing what you decide to do with your career too, @TerrenceJ (as well as any other aspiring algebra sellouts that may read this thread in the future). – Samuel Handwich Jul 01 '16 at 01:22
  • Something that others haven't mentioned is cryptography and coding theory in general. – martinkunev Feb 28 '19 at 08:15
  • @SamuelHandwich I felt exactly the same way! I'll start a PhD program this fall at my backup school too. My school is great for algebraic geometry but not very well-named. I was quite worried recently until I read your post and thought "wow, there's someone on the same boat". I had headed for algebraic geometry during most of my undergrad and turned to number theory recently since it "connects more with the real world"(coding, maybe). I don't know if it will work or I'll end up studying finance eventually. Anyway, I'm still seeking for the "equilibrium". – Johnny Apr 16 '19 at 14:06

10 Answers10

172

First, let me say that I'm impressed by your maturity and wisdom. It's not easy to recognize your own limitations, accept them, and adapt. Most people have to learn the hard way, by living through a few decades of struggle and frustration. Some people actually enjoy struggle and frustration, though. Your choice.

I have been an "industrial" mathematician for 40 years (I "sold out" long ago). I work in the software industry. I don't have a Ph.D, and I don't write research papers (not very often, anyway). I don't spend a great deal of my time doing mathematics, and almost no time at all doing original mathematics, but I do write "mathematician" on my tax return every year. My work is interesting (to me), and I've made quite a lot of money.

From the suggestions below, it's clear that some people judge the fabric of a profession by reading its research literature. This is a hopelessly misleading approach. What happens in day-to-day work in any industry is very far removed from what you read in research papers. If you want to know what it's like working in industry, you should ask people who work in industry. And this is not a very good place to do that. Most of the people who hang around here are university faculty, grad students, and (recently) kids trying to get someone to do their homework for them. If you want to know what software developers do, for example, ask at StackOverflow.

I'll repeat some of the advice from others. Learn some computer science. Learn about basic algorithms, and get good at programming in some mainstream language like C/C++ or Java (not Haskell or OCaml). It's not that difficult, and it's great fun when your code works.

Accept that no-one is likely to pay you to do original research (except on a very small scale as part of a larger project). Especially not mathematical research. People in industry are expected to create working saleable products/processes/systems with a high degree of predictability. Research is too risky. If it were less risky, and the results were more certain, then it wouldn't be research.

Think about what it means to "sell out". One definition says that selling out is doing what society (and your employer) want you to do, rather than what you want to do. But society (or your employer) will only be willing to pay you if your work is valuable to them. So, in some sense, selling out is inevitable unless you're going to be a hermit poet or you're independently wealthy. The best you can hope for is that your work is interesting and fulfilling (in addition to being valuable), and that you don't have to do anything that you find morally distasteful. If you think that making money is distasteful, stick to academia.

To answer your question, I'm not personally aware of any places in industry where significant numbers of people spend time pondering the workings of abstract algebraic constructs. I don't say that they don't exist -- just that I'm not personally aware of them. My mathematical work mostly involves differential geometry (in 2D and 3D space), approximation of functions, numerical methods (root finding, minimization, etc.), very simple linear algebra, and occasionally a bit of algebraic geometry. I very rarely do any original mathematics. I typically use software packages written by other people, and I only need to know enough mathematics to understand the limitations of these packages and their applicability to my problems. If you want to work on the development of the mathematical software tools used by people like me, check out companies like Wolfram, MathWorks, MapleSoft, Rogue Wave, NAG. But be aware that these are (mostly) fairly small companies and they don't employ very many people. And they won't hire you unless you have good programming skills.

I mostly work with manufacturing companies -- people who design cars, airplanes, consumer electronics gadgets and so on. Think about what those companies are trying to do -- they want to create more attractive products, more quickly, with lower costs. How can you (and your expertise) help them do that? Contemplate this until you identify some place where you can imagine that you might fit in and be happy. Or, pick some other industry and go through the same sort of reasoning. The key is to find some place where your skills can add value.

Stop thinking of your work as your life. You'll still be the same person, regardless of whether you're winning Fields Medals or hacking code. Your children will love you just as much either way.

bubba
  • 40,254
  • 3
  • 55
  • 107
  • 35
    Thank you again. This post has significantly affected my outlook in the past six months. – Samuel Handwich Sep 25 '13 at 05:10
  • 2
    Glad I could help. Good luck on whatever path you choose. – bubba Sep 25 '13 at 08:13
  • 1
    Regarding your comment on programming skill, how long would you say one, with a background in years of experience in Matlab, reasonable amount of Python and VBA, needs to be competent in C++? – Hans Feb 17 '14 at 03:19
  • @Hansen. Hard to say. Obviously there are levels of competence. You should be able to write simple programs within a few days. It will probably take several months before you are able to write complex code that has optimal performance. C++ gives you a great deal of control over low-level processing, and figuring out how best to use this flexibility takes some skill and experience. I don't consider myself to be a C++ expert. You might get a better answer on Stackoverflow. – bubba Feb 22 '14 at 03:03
  • @Hansen. Also, bear in mind that VB expertise is a marketable skill, though not so much in mathematical areas. Python, too, though to a lesser extent. – bubba Feb 22 '14 at 06:38
  • Thank you, bubba. I understand what you are saying about VB and Python being marketable. But are you saying Python is less marketable than VB? That is a bit surprising. – Hans Feb 22 '14 at 13:19
  • @ Hansen. Yes, I would say that VB skills are more marketable than Python skills. Vast amounts of software are written in VB. I suspect VB usage is shrinking (people switching to C#), and Python usage is growing, but Python is still a long way behind. In scientific computing, Python might be ahead. Take a look at some employment sites, like Monster.com. – bubba Feb 22 '14 at 23:39
  • The definition of selling out is trying to go for the money. To think that would automatically mean doing "useful" or "constructive" stuff is a bit naiive. Some of the most lucrative things have historically been in reducing usefulness, restricting access and steering peoples thoughts and emotions. – mathreadler Dec 14 '15 at 14:19
  • 5
    @mathreadler -- I suggested that "selling out is doing what society (and your employer) want you to do". Certainly your employer will want you to do things that make money, and there are many ways to do this. I didn't use the word "constructive". And I'm much too old to be naive :-) – bubba Dec 30 '15 at 13:53
  • Great answer+1. May I ask for a little bit of advice if you have the time? I am currently on an MSc course on informatics-my BSc was on applied Math-and though a career on Cryptography was my initial motivation to apply, lately I find myself dabbling in Computational Mechanics. What would be the ideal programming skills to pursue such a course? Fortran seems to be the language of choice on a program I found but when I asked a couple of friends (both PhD in Computer Science, working on IT) they said it was obsolete. This view seems to be shared by my professors as well. Is Matlab an option? – MathematicianByMistake Nov 11 '17 at 12:22
  • @MathematicianByMistake -- you really ought to ask a new question, but ... – bubba Nov 12 '17 at 04:25
  • 2
    @MathematicianByMistake -- Fortran is the traditional language of engineering computation. It still has a few advantages, but is used very little for development of new SW. I don't recommend spending much time on it. Matlab is a so-called "high-level" language, so it's not really comparable to Fortran. It's a good language for prototyping, but it's not used very much for production SW systems. C++ would probably be the best choice for you. It's an ugly and horribly complex language, IMO, but if you want to work in industry, C++ skills are very valuable. – bubba Nov 12 '17 at 04:34
  • @bubba Thank you very much for your valuable input! Can't say that I really enjoyed my experience with C++ till now so that might be a problem. PS I really did not think it was worthy of a new question but perhaps I will post one. If so I will let you know! – MathematicianByMistake Nov 12 '17 at 10:47
31

The tech company Twitter is using a software library called algebird. From their GitHub page:

Abstract algebra for Scala. This code is targeted at building aggregation systems (via Scalding or Storm). It was originally developed as part of Scalding's Matrix API, where Matrices had values which are elements of Monoids, Groups, or Rings. Subsequently, it was clear that the code had broader application within Scalding and on other projects within Twitter.

Their discussion goes on to explain why they needed to write such a software library:

Implementations of Monoids for interesting approximation algorithms, such as Bloom filter, HyperLogLog and CountMinSketch. These allow you to think of these sophisticated operations like you might numbers, and add them up in hadoop or online to produce powerful statistics and analytics.

I asked around for why Twitter needs an abstract algebra library. One of the authors Oscar Bokyin, said it had to do with databases.

CS.StackExchange What are uses of Groups, Monoids and Rings in Databases ?

Cardinality can be thought of as a functor from the category Set to the groupoid of isomorphism classes in that category, which we identify was Natural #'s.

In their case, they need to estimate cardinalities of subsets on a scale where it's impossible to check the membership criterion on every single element of the set. So probabilistic counting methods come to the rescue, taking advantage of how these values are stored in a computer.

These probabilistic counting algorithms can be added, multiplied by scalars, etc. behaving like natural numbers.

cactus314
  • 23,583
  • 4
  • 35
  • 88
17

I will jump on the bandwagon of answers suggesting computer science. Algebraic thinking is deeply embedded in the design of programming languages - especially categorical structures like functors and monads. As a teaser, the Java language was invented by James Gosling, whose thesis was titled "Algebraic Constraints". I know that Microsoft Research does a lot of programming language theory, and I suspect that that would be a good place to apply your algebraic skills to real software and make some good money in the process. You might try learning the Haskell programming language to get a feel for how some of these ideas fit together; Haskell makes some of these algebraic concepts show up right on the surface.

You would also probably do well at a company that uses functional programming languages, instead of designing them. For example, I know that the wall street firm Jane Street writes their software exclusively in OCaml, and I know they do some research on effective functional software design, and that they customize the language to suit their needs. These tasks can be algebraic in flavor, and while they would involve more structural design and less proof, a similar set of skills apply. I bet they pay good money for people who love algebra.

There are many other areas of computer science that rely on algebra. Others have mentioned graphics and robotics, but I would point to the common ancestor of those two fields, which is computational geometry. If you take a look at the Computational Geometry Algorithms Library (CGAL), which is the most widely used geometry library, you will note that it is based on an algebraic core (with concepts like "group", "ring", and "field"). As a shameless plug, doing computational geometry for fun led me to develop this very algebraic library. Computational geometry has to answer very discrete questions like "is this point on this line", and so a common approach is to represent numbers exactly instead of approximately. This means that you get to ignore all of those annoying analysis problems that come up when using approximation. CGAL has a pretty extensive list of projects that use it --- this may be a good place to find employers.

These two fields rely on algebra in different ways. Programming languages will use concepts like "algebraic structure", "functor", and "formal proof", whereas geometry uses concepts like "field", "ring", "matrix". So if you like designing algebra, the former might be a better fit, whereas if you like using algebra, the latter may be. Of course using something and understanding how it fits together always go hand in hand, so in either area you will have opportunities to both use and design algebra. Both of these fields also have a range of people working on them, from pure academic research to very applied software development, so you should be able to find a way to fit yourself in.

One more thought is that advanced physics relies heavily on algebra (although you also have to do integrals!) My senior-level course in Quantum Mechanics certainly relied on linear transformations, eigenspaces, and a number of related concepts. I don't know how you can "sell out" with that, but I'm sure it's possible.

mdgeorge
  • 222
  • 1
  • 12
12

I suggest you to consider a career in computer science, where algebraic structure appears everywhere and analysis (to my knowledge) appear less frequently. But I must say it seems insane to give up one's mathematical career just because one thought he/she is not good enough in a certain subject. One year ago I even do not know what $L^{p}$ space really is(as you can tell from my questions), and now I am on the road to work on index theory using analysis. If you really want to work on mathematics you should not give up so early and so easily. Otherwise, you should quit math as soon as possible.

Bombyx mori
  • 18,968
  • 6
  • 43
  • 102
  • 15
    I am not giving up, just looking at other options. The motivation has nothing to do with being bad at analysis (I'm okay at it, I just dislike it). It comes from being realistic about my expectations of academia. – Samuel Handwich Apr 21 '13 at 18:28
8

Last years I had to deal with some generalizations of automata, and I found that in this theory there are plenty applications of algebra (primarily, semigroups and categories). I mean not only the classical results (Eilenberg, Arbib, etc.), but also new problems that appear in the study of very-very large machines. Perhaps, in this area you will be able to combine algebra and "selling out".

Boris Novikov
  • 17,021
  • 1
  • 19
  • 31
8

Learn numerical linear algebra. Given that you have strong abstract algebra background, you will find linear algebra and algorithms to be cake walk. You may want to look at this question for more details.

Why study linear algebra?

Almost all jobs, where you want to do some sort of math, inevitably needs numerical linear algebra. I cannot overemphasize the importance of linear algebra, since most of the problems solved in the industry fall into two main categories:

$1$. Linear problems.

$2$. Linearizable problems.

  • 3
    Agree. Linear algebra, and especially numerical linear algebra, have a wide range of applications outside of mathematics. I don't agree that it's a "cake walk" -- understanding the mathematics and creating reliable software are two different things. – bubba Apr 25 '13 at 03:35
  • Hmm, sorry for the necro, but : Also once you have gotten up to speed with linear algebra you can start doing abstract algebra with your linear algebraic tools using for example representation theory. – mathreadler Jul 21 '18 at 22:17
7

I remember reading that algebra, particularly geometric algebra, is quite useful in robotics. Basically, one can describe the ranges of motion of robot arms using abstract algebra. Here are two links that might spark your curiosity:

http://www.prometheus-us.com/asi/algebra2003/papers/selig.pdf

http://www.springer.com/cda/content/document/cda_downloaddocument/9781848829282-c2.pdf?SGWID=0-0-45-1125048-p173923419

Alex R.
  • 31,786
  • 1
  • 35
  • 74
  • 7
    While algebra may be useful in robotics, somehow I'm sceptical that the day-to-day work of someone who works in robotics will primarily involve algebra-like work. I'm guessing it's more something like: occasionally, the knowledge of algebra can come in useful. – ShreevatsaR Apr 21 '13 at 07:43
  • 1
    From my experience, people who write software that controls robots (and other jointed mechanisms) do make some use of abstract algebraic ideas. Not a lot, but some, at least. But the people who do this work are a fairly small group. The larger group of people who merely *use* robots don't need to know how this software works internally. Of the people who work in (industrial) robotics, I would guess that less than 1% know what a Lie group is. – bubba Apr 25 '13 at 03:22
  • 3
    Note that both of the documents cited above were written by academics, not by industrial roboticists. – bubba Apr 25 '13 at 03:29
  • 1
    Related to both robotics and computer graphics, so I'll put my comment here: professors at my university sometimes talk about using algebra and algebraic topology in computer vision. In fact one of the professors here does a lot with applications of topology. Computing homologies is certainly something that needs algebraic background, but is very useful in applications. (There are tons of books in the applied and computational topology direction! Check them out! Maybe topology will give you more ways to use algebra.) – Gyu Eun Lee May 20 '13 at 03:37
6

I've just started looking into computer graphics as part of a project I'm working on, and it seems to involve a lot of linear algebra and a bit of abstract algebra. There are entire software development jobs that are just image processing and computer graphics in many different industries, not just defense and games. You may have to deal with some continuous math, but the closer you are to the VRAM the more likely you are dealing with just a bunch of integers. You might research Open GL and DirectX to get an idea of what's going on in 2D and 3D computer imaging.

Todd Wilcox
  • 1,263
  • 1
  • 12
  • 17
  • Yes, there is a lot of linear algebra in computer graphics. But it is very very simple linear algebra (mostly just fiddling with 4x4 matrices). Also, all this linear algebra has already been done by the people who wrote OpenGL and DirectX. People who use these packages don't need to know much linear algebra. – bubba Apr 25 '13 at 03:07
  • 1
    @bubba: so wouldn't it be a push to work for Microsoft to work on DirectX? – Alex R. Apr 25 '13 at 16:52
  • 1
    Maybe. But, again, the mathematical part of DirectX is pretty trivial, it seems to me. My guess is that most of the current DirectX development is aimed at making it go faster, which is a programming problem rather than a mathematical one. But, anyway, if the OP wants to find out what it's like to work on a DirectX implementation, I'd recommend that he go ask at StackOverflow. I doubt that anyone here knows much about this (including me). – bubba Apr 26 '13 at 01:42
  • @bubba: I'm a professional software engineer working in graphics domain. I constantly use Direct3D (the part of DirectX which has graphics-related code) and OpenGL. Most code dealing with linear algebra is hand-written by programmers for their application. Also, there're lot of domains in CS where linear algebra is vital. Computer vision (OpenCV), parallel computing (OpenCL), graphics/game/simulation engines (OpenGL), speech recognition, bioinformatics, etc. to name a few. [See this](http://www.mit.edu/~kepner/LAinCS.pdf) for a the complete list. – legends2k May 21 '14 at 14:15
  • Agreed that pre-written libraries such as [GLM](http://glm.g-truc.net/0.9.5/index.html) (a linear algebra library for OpenGL) exist so that programmers use them without knowing the required linear algebra, those who know it are always in demand, else you wouldn't have questions like [this](http://stackoverflow.com/questions/14607640/rotating-a-vector-in-3d-space/14609567), [this](http://stackoverflow.com/questions/17195055/calculate-a-perpendicular-offset-from-a-diagonal-line/17195324) or [this](http://stackoverflow.com/questions/22715044/c-opengl-wireframe-cube/22715392); +1 to @AlexR. – legends2k May 21 '14 at 14:20
  • 1
    Yes, it does seem that lots of people can't figure out 3D rotations. But, from a mathematician's point of view, this is a very simple form of linear algebra. Anyway, input from someone who actually works in industry is valuable, and is what the OP needs, I think. – bubba May 22 '14 at 05:01
5

NSA is not the only place for cryptographers. There are various research labs like HP , Microsoft Research labs where cryptographers and number theorists are hired.

Also, algebraic coding theory is another area where you can apply your skills of abstract algebra.

Mohan
  • 13,820
  • 17
  • 72
  • 125
0

My profession as a DVB and Video/Audio Content Security engineer brought me to go over the Abstract Algebra. It allows me to go in depth of the every aspect of cryptographic primitive, as it prevails and pervasive in Cryptography.

  • Now, in Digital video broadcasting , error correction in channel coding like Reed-Solomon, BCH codes and others are the classic example of Abstract algebra (group and its cosets, fields and rings). I see how simple looking cosets are used as a error correction in communication.
SSA
  • 326
  • 2
  • 4