Comments:"I Wasn’t Prepared to Work « Symbo1ics Ideas"
URL:http://symbo1ics.com/blog/?p=1803
Before I started working, I lived in my half-basement bedroom of my father’s house. In there, I was equipped with a few large laser printers, a wall covered in dry-erase boards, a few bookshelves, a computer, and a bed. I was perhaps fortunate that between high school and the time I moved out, I wasn’t demanded of much: maybe to keep my room clean and to help out around the house occasionally. As a result of living a cushy life with relatively few pressures, I was allowed to explore and learn things as I pleased. My bedroom was my own intellectual incubator, my own study, and my own library.
During high school and beyond, I was pretty smart. At least, I think so now in hindsight. I learned to program in C and C++, Haskell and Standard ML, Scheme and Common Lisp, and so on. In each of those languages, I’d written substantial things. In fact, I wrote the most substantial code in C and C++: arbitrary precision arithmetic libraries, interpreters, and compilers were my favorite. I had these grand plans for big software projects, and often I’d actually follow through. (Except for Doron, which is monumentally difficult.)
More importantly though, I had a voracious appetite for mathematics. I never achieved expertise in any area of mathematics, but I thought I knew enough to begin writing books about particular subjects. In particular, I started writing a book on computer algebra, since the knowledge in the field is so divvied up and I sought unification.
I recall spending hours rummaging through the theorems of commutative algebra and field theory in order to write more elegant proofs for my book. I remember spending a streak of 12 hours doing dry algebraic manipulations and clever summation computations by hand in order to both usefully construct and prove the following identity I discovered (worked for all positive integers $m$) which came out of a particular integral from physics and probability theory:
\begin{equation*}
0=\sum_{k=0}^{m}\sum_{j=0}^{k+m-1}(-1)^{k}{m \choose k}\frac{[2(k+m)]!}{(k+m)!^{2}}\frac{(k-j+m)!^{2}}{(k-j+m)[2(k-j+m)]!}\frac{1}{2^{k+j+m+1}}\text{.}
\end{equation*}
I was very adept at algebra and calculus. To a mathematician, such adeptness is probably a boring skill, but it was a skill necessary to do effective experimental mathematics. (To elaborate, experimental mathematics is a lot about discovery and gut feeling. Being able to do algebraic manipulations, on-the-fly, is a valuable skill and decreases the mental bridge between problem and solution.) I was so adept at calculus that I completed a university level multivariable calculus, with coursework, midterms, and a final, in less than a week.
More important though than being adept at mental symbolic manipulation was the insight into creatively solving problems that I had. There is one particular remarkable instance of this that comes to mind, that amazes me to this day, which I’ll try to describe from memory.
When I was 16 or 17, I was exploring the relation $x^y = y^x$, just for the hell of it. What pairs of $(x,y)$ satisfied that relation? I boiled the problem down to studying the function $f(x) = x^{1/x}$. I started off doing some typical surveying, such as finding extrema.
During my surveying, I came to the following function:
\begin{equation*}
\delta(x) = x\left[1+\frac{W\left(-\frac{1}{x}\ln x\right)}{\ln x}\right]
\end{equation*}
where $W$ is the Lambert-$W$ function (a non-elementary function which comes up when solving equations such as $y = x^x$). When I plotted this function, it appeared that it was approaching an asymptote, specifically $\alpha(x) = x – 1$. But how could I show this? I guess the typical way I’d do this now is to show that $\delta(x)
If we have our point represented as a column vector $p=(x, \delta(x))$, then we can apply a linear transformation $R_\theta$ to rotate that point about the origin clockwise. We get
\begin{equation*}
R_{\theta} p
= \begin{pmatrix} x'(x) \\ \delta'(x) \end{pmatrix}
= \begin{pmatrix} x\cos\theta+\delta(x)\sin\theta \\ \delta(x)\cos\theta-x\sin\theta \end{pmatrix}.
\end{equation*}
If our hypothesis that the asymptote is to exist, then there must be a $0\le\theta\le\pi/2$ such that
\begin{equation*}
\lim_{x\to\infty} \delta'(x)
\end{equation*}
After a fair bit of simplification and algebraic razzmatazz and handwaving, we get the following limit:
\begin{equation*}
(\cos\theta - \sin\theta)\lim_{x\to\infty} x
\end{equation*}
At this point, even though from a formal analytic perspective, the limit did not exist, from the informal, given-all-of-my-previous-reasoning perspective, I just had to find the value of $\theta$ that made sure that limit wasn't an issue. And that's just when $\cos\theta = \sin\theta$ which of course is at $\theta=\pi/4$.
Now that I know that we need to rotate the entire plot by $\pi/4$ in order to get a horizontal asymptote, and since $\pi/4$ corresponds to a unit slope, it was just a matter of finding the value of $c$ in the equation $\alpha(x) = x + c$. How did I go about this? I took advantage of the following fact: $c$ must be the value such that the shortest distance between $\alpha$ and $\delta$ at each point approaches $0$. How baroque! Given a line $Ax+By+C = 0$ and a point $(p,q)$, the shortest distance between the point and the line is
\begin{equation*}
\frac{\vert Ap + Bq + C \vert}{\sqrt{A^2+B^2}}.
\end{equation*}
From this, I came upon the conclusion that the distance between the asymptote and the curve was
\begin{equation*}
d = \frac{1}{\sqrt{2}}\vert \delta(x) - x - b \vert.
\end{equation*}
Great. Similar to the procedure above, take the limit as $x$ approaches infinity, and we get $x = \pm(b+1)/\sqrt{2}$ for $b+1$ positive and non-positive respectively. Therefore, the limit will vanish if $b=-1$, which means our asymptote is $\alpha(x) = x - 1$.
After all of that, I came up with, through experimental ways, methods for approximating $x^{1/x}$ using rational functions, very reminiscent of Padé approximations.
I've digressed greatly. But my point was that at that time of my life, I guided myself down paths that I thought were extremely interesting and insightful, at least compared to my approaches to things today. While the end result was never very interesting, the path, and the decisions made, were. While I did take advantage of Google, papers, and books, I spent a lot of time exploring and attempting to solve problems on my own.
I was approaching my 20s and I had to get a job. Living at home off of my parents was not sustainable, and wasn’t conducive to a better future.
I began doing non-consulting, full-time work several of years ago. During the span of those years, I have made moves between the plains, the mountains, and the coast. I have learned a good deal (though I don’t claim expertise) about different facets of the tech industry from different perspectives. But I also took a great hit. I got stupid.
Working at any of the companies I’ve been at has never really been an intellectual pursuit, even though such a pursuit was the main driving force in my betterment up until I found work. It has been an exercise in solving a problem using given tools (and often, no more), and doing it quickly. What does that mean? It means I can’t spend 12 hours doing the equivalent of bumbling around finding interesting or ingenious solutions to things, it means I lookup on Google and StackOverflow what the correct way to read in a file line-by-line, copy-paste the code, and modify it. I could definitely write my own, but why bother swapping in that memory when the L2 cache—that is the internet—has it already? Unfortunately, this toxic habit leaked, and I find doing the same thing for other problems I have, including math problems. I have developed the hazardous mindset common in programming, “if it has already been done, why should I do it?” It is a dangerous inverse of Not Invented Here, or NIH syndrome.
With all of the moving around, I could never create the same homely environment as I had previously. While I lived in Colorado, I managed to get a very large schoolhouse chalkboard in my cramped bedroom. It was literally a foot or two away from my bed. I had a very small desk to fit a monitor. I had no printers hooked up. My books were in tall disorderly towers, not on a shelf.
Here in Silicon Valley, it’s even worse. I have an aesthetically nicer place, but I now don’t even have a desk or desktop machine. I type from a small laptop on my couch, being held up by a pillow. I have no room for a chalkboard or whiteboard, unless I wanted to cover up half of my mirrored closet.
But the environment matters a lot less than the fact that when I get home from work—which is a two hour commute each way (sorry, I can’t afford to live in downtown San Francisco)—I just feel like being mentally incapacitated. Occasionally I have a little spark of brilliance (relative, not absolute) that motivates me to write a short bit of code, but the code is never more than one or two hundred lines. It usually consists of some little trick.
How has this affected me? I’ve mentally atrophied. I now feel like I can’t talk about any subject with more than a centimeter of depth. A half a decade ago, I could dive with you to the penetralia of convergence theorems of hypergeometric series, but now I cannot. Even my programming has taken a toll even though I do it every day. I find myself abstaining from studying advanced topics in programming and computer science, and instead sticking to this comfort zone of what I know. I contemplate blaming this last issue on the fact that Silicon Valley is quietly cutthroat; you need to be the best at what you do in order to land jobs at e.g. Google. If I stay in my comfort zone, I am able to keep small unimportant details of a particular language, tool, or implementation in L1 brain cache, which proves useful during interviews. (Feel free to see my last post Interviewing In Silicon Valley on this subject.)
I find both my attention span when I read books, and my ability to comprehend them, has at least decimated. Previously simple equations describing neural network behavior, like
\begin{equation*}
\frac{\partial E}{\partial W_{j,i}} = -a_j\varepsilon_i f’(\mathbf{W}_i\cdot a),
\end{equation*}
take a while longer to reason about.
In order to repair myself, one of perhaps two things needs to happen: I need to rethink my lifestyle and re-evaluate the boundaries of what I can and cannot do (e.g., can I force a more balanced work-life proportion without getting fired?), or I need to change my domain of work (e.g., get a degree and go into academia or a research lab). Traditional Silicon Valley software engineering certainly isn’t a fulfilling, or healthy, way of life for me right now, but neither of those options appear to be very easy.
I wasn’t prepared to work. My mind wasn’t. Had I known the burden that an average (or above average) job would put forth, I might have re-evaluated my decision to rush off to stuff my bank account.