The most successful technology humans have ever invented is language. Across human history humans have found many ways to communicate our shared existence. Language allows us to express ourselves, rib our friends when their ego gets too big, and debate over the proper prounciation of the word gif.
Communication is hard. To be precise with your words when explaining a thing, every word matters. Every intention behind what you say, every assumption, every placement of indefinite articles (a dog compared to the dog) has a deep difference in the meaning of your words.
Fortunately, humans are pretty good at working with complexity and ambiguity and even if I said “a dog is eating my food” while it is your dog, you’d understand which dog I meant. Humans love to ascribe meaning based on their life experiences, their environment, and their assumptions about how the world ought to be.
The first assignment I had in an introductory program class was not to write any code. We had to choose literally any task and write with words instructions on how to do exactly that thing. Similar to this video of a dad asking his kids to tell him how to make a sandwhcih. Specificity is hard.
And anyways, most of the instructions we write for people are incomplete. When we say “grab that thing”, we’ve missed likely billions of steps already. To “grab that thing”, the other person has to somehow raise their arm, which means their brain has to send some signal down some nerve to contract and extend muscles in precise movements. But we don’t need to write that down because it’s not an operation we consciously control.
Computers, however, need to be told exactly what to do. Except that’s also a lie. When we write code, we’re only programming the ALU and maybe sometimes other connected devices. There is a whole suite of firmware and hardware processes that take a binary executable and run it. These other things are fundamental, like loading the executable into memory. We might initiate that, but still certain hardware decisions like refreshing the RAM to ensure you still have memory are necessary for operation but not controlled.
Communication is messy. It’s full of assumptions, incomplete truths presented as fact, and interpreted by fallable humans. And yet the world works. Bridges and buildings don’t often randomly collapse, 3-day weather forecasts provide reasonably accurate and useful information, you can scroll on the internet for hours on end rather than doing that new hobby that you’ve almost started. All of this because enough specificity provided by algorithms and the maths that underly them provide enough determinism to allow complex systems to be stable and, more importantly, useful.
In my dayjob, I have almost no idea what I’m fundamentally doing in nearly every task I engage in. Even though software is likely what I have the most understanding of. But if I were to break it down to the most fundamental level of how code goes from text to an executable binary and what every component is doing to estimate pi with something like the little simulation below from the web browser to the ALU, back to something that allows me to see the result, I will miss a detail. Probably starting with what happens when I press enter (even this video gets it wrong, hardware interrupts for the enter key are glossed over).
There is just a lot of complexity that humans have been able to hide. It is possible to detail every single mathematical operation with enough rigor that no details are left out. Because language is powerful, and words are free.
This past year at work, I implemented a Rosenbrock solver which is capable of solving ordinary differential equation (ODE) (or maybe it’s a partial differential equation (PDE) solver). Yet another example of what I don’t know. But it works, and I would like to understand exactly what I did.
I work in numerical modeling of atmospheric chemistry. My job is to support that science that my lab needs by providing software tools that aid in the numerical solving of chemistry for air quality and climate change. Which to me is the neatest thing in the world since it allows me to use both of my degrees. It’s therefore just a little frustrating to have only a rudimentary understanding of the math that allows me to support the scientists I work with.
To better understand the math behind my job I am goint to read two books and try to relay what I learn from them, here ^{1} ^{2}. The authors created many software implementations of the solving algorithms described in the book which can be found here. It seems that the implementation of many solvers used today originate from these implementations. They are all written in Fortran. Throughout this series, I’m going to attempt to translate them to javascript because why not.
Chapter I.1 in the textbook is titled “Terminology”. It starts off with this statement.
“A differential equation of first order is an equation of the form”
\[y'=f(x,y)\]
and we’ve already encountered something that needs to be described in more detail for my dumb brain to understand.
Well kind of. I have some knowledge of math and I do know that this is defining a derivative in terms of a function. It is first order because this equation has a single derivative.
What’s happening here is that the authors are establishing a baseline of mathematical formalism so that the readers (us) can supposedly understand the textbook.
You probably might say “that’s a sine wave!”, and you’d be wrong. A formal way to describe what is above is the graph of the function \(f(x)=\sin(x)\).
And even that could be further defined. What domain does \(x\) live in? \(\mathbb{R}\)? \(\mathbb{R^2}\)? \(\mathbb{C^2}\)?
You see in the world of maths, all of these details technically matter when you want to rigorously prove something from first principles. That formalism populates the mathematical literature and all of the textbooks.
Next we’re given a second order equation. Unsurprisngly, we have an equation that contains the derivative of some function twice.
\[y'' = f(x, y, y')\]
Cool. We have equations which can relate some function (the \(f(x)\)) to the derivatives of another function (\(y'(x), y''(x)\)).
Now these equations are describing ways to determine the rate of change of something. A solution is valid if we can find a function \(y(x)\) that makes this thing equal.
\[y'(x)=f(x, y(x))\]
So let’s look at what that means.
Let’s make a function
Now we want to find some function that will make \(y'(x)=\frac{dy}{dx}=f(x,y)=x\). That means we need to solve \(\frac{dy}{dx}=x\).
\[\frac{dy}{dx}=x \\ dy=x\cdot dx \\ \int dy = \int x \, dx \\ y = \frac{x^2}{2} + C\]Neat. We found a function. But the last missing piece that would constrain this problem would be the initial value, meaining something that would tell us at some point \(x_0\), \(y(x_0)=y_0\). With that information we would be able to determine the value for \(C\) and have a full solution. This is called an initial condition. So that’s all you need to solve a differential equation of the first order. Some initial value, some integrals, and some algebra. Suppose we are told that \(x_0=1\) and \(y(x_0)=5\), then our full solution is
\[y(1)=5=\frac{5^2}/2+C \\ 5-\frac{25}{2}=C \\ C = -7.5 \\ \therefore \\ y(x)=\frac{x^2}{2}-7.5\]And there we have it. We’ve solved our first differential equation. We were lucky, though. This time we had a simple equation that had an exact solution, but most problems that are useful in life don’t have exact answers. We have to answers these problems with emapthy and hard work if it’s a human problem, or the vast field of numerical methods if it’s an ODE problem. Hopefully you’ll enjoy coming along to learn more about these.
Solving Ordinary Differential Equations I: Nonstiff Problems. Springer https://link.springer.com/book/10.1007/978-3-540-78862-1 ↩
Solving Ordinary Differential Equations II: Stiff and Differential-Algebraic Problems. Springer https://link.springer.com/book/10.1007/978-3-642-05221-7. ↩
Part of improving yourself is stating your goals, so here they are, publicly.
The first two are measureable, the last is more of an ideal.
I am not great at communicating, or at least not all of the time. There are a few places that I know I need to work on.
I like data. I want to create visually pleasing things. Now that I’ve rewritten my blog in jekyll, it is actually easier to just write and to add things like d3.js to create neat graphics like this. (The data is made up and was solely for me to figure out how to include these on the site).
Quite hard. Lifestyle creep has already set in so there will be some trimming I need to do. I budget-ish but honestly not strongly. My goal with saving half of my income is to reach financial independence by the time I’m 40.
The way to finanical independencd is entirely about your savings rate.
A savings rate of 50% leads to financial independence in 16 years. I’ve already worked for 4ish years and I’m 28 years old. So, a 50% savings rate should put me at financial independence when I’m 40.
Luckily I’ve recorded that, so I can track it. It’s a busy chart because I include the singular savings rate value for each month, the 3 month rolling mean, and the 12 month rolling mean. My actual goal is to have a 12 month rolling mean savings rate of 50 percent. The first two value help me identify short and medium term trends.
Yep. It’s cheesy. But part of being a human is taking care of yourself, and I firmly believe that taking care of yourself can help strengthen your relationships and lead to more contenment. I want to be a better person, friend, son, life partner, cat owner, all of that. It all starts with self love. I’ll share more thoughts on this in the future.
I did it. I made a very, very short thing for this month, and so it has begun.
]]>The event was well organized. Houston Parks had already dug the holes and placed all of the trees beside the holes. I think in all we planted about 600 trees. It was quite fun. At the end of it, I felt like some of my stress had gone away. It seems impossible to live without causing harm to the earth, but this event let me give the earth some new hats. Doing good feels good.
A few weeks later, I started picking up trash around my apartment. There is a small creek that runs in front of my apartment through a wooded area. It’s really quite idyllic, but the creek transports plastic throughout the entire length of the woods. When the creek overflows, as it often does with more than a light rain, lots of trash is scattered throughout the woods. Sure, each time it rains all of my work will have been undone as more trash is deposited. But, the trash I did pick up was not deposited downstream. Maybe it is useless. I do not care. This is an activity that I can do that makes me feel like I’m making a difference. And anyway, I always feel so much better after I’m done. As a neat bonus, my girlfriend also likes doing this. Trashy dates are a new fun thing for us!
Anyways, it’s Christmas! I’ve been spending a lot of time with my family, playing cards, home escape rooms, and watching all of the same Christmas movies that we do every year. Also, there is lots of good wine and warm coffee. Both good things to be happy about. I am very thankful that I get to spend this time with my family. Time is surely precious.
I hope you have happy holidays and that you find your own way to hug the earth!
]]>I am about to change my life entirely and leave the world of software consulting to become a graduate student in the Atmospheric Science department at Texas A&M. I’d like to share my journey into graduate school and my reasoning for leaving stable employment.
Let’s talk about my education! I started at Texas A&M in 2014 as a physics major. I was intent on becoming an engineer, out of no ambition of my own. Many of my friends in high school had been accepted into various engineering programs, so I thought that I should do the same thing.
As it turned out, I quite enjoyed physics. I guess there was an allure of describing the world with math. It was like looking at the machinery of reality, as cheesy as that may sound. I enjoyed my classes, but I didn’t really have a plan for my life, aside from becoming an engineer. So, I spent my freshman year looking at getting into engineering.
It turns out, the easiest way for me to get into engineering was to add a double degree. At the time, all freshman engineers were in general engineering. In their second semester, they applied to different disciplines, maybe had some interviews, and hoped to get in. I spent 15 minutes in the advisor’s office, wrote three sentences on why I wanted to be an engineer and gave them my GPA, and then I was in. Starting the summer after my freshman year, I had to take some introductory engineering courses
Throughout my first two semesters, I became involved in two science outreach programs organized by Dr. Tatiana Erukhimova, one of the most influential scientists of my life. The first that I joined, Discover, Explore, Enjoy Physics and Engineering (DEEP) was all about making hands on science demonstrations to be displayed and explained at the physics festival that Dr. Erukhimova organizes each year at Texas A&M. It was there that I made my first connections with students who were involved in undergraduate research. Being the impressionable young whatever age I was, that also became a thing I wanted to do.
The second, and most fun program I joined, was what Dr. Tatiana, called physics shows. These shows were about 45 minutes long and filled with fun demonstrations like the magnetic levitation, making liquid oxygen, and many things with liquid nitrogen. I even froze one of my finger nails for science (accidentally). I have a permanently damaged nail, but it was entirely my fault.
Getting into research was pretty easy. I put my name on a list that the physics advisors keep of students interested in doing research. Dr. McIntyre emailed me and I met up with him. He agreed to take me on as an unpaid undergraduate researcher. I started in summer 2015. His is a high energy physics research lab. I was working with a graduate student who was attempting to manufacture a superconductor out of BiSCO2212 that should have maintained a better magnetic field at high voltages. I spent most of my days cleaning the equipment we used to make them. The image to the right is what the ceramic looked like after it had undergone a heat treatment.
However, Dr. McIntyre had more than one research project. There was another which was about putting a particle collider that would be neutrally buoyant in the Gulf of Mexico. The idea was quite ambitious. I think that any one part of the project would have been an engineering marvel. My reservations aside, this project did introduce me to GIS systems and sparked my interest, though I may not have realized it at the time, in earth science. I spent about an equal amount of time in those 6 months downloading and visualizing ocean and wind currents, as well as ocean floor bathymetry. I was a pretty poor programmer. I even wrote a script to plot some things that eventually made my computer run out of RAM. But, I enjoyed programming enough that I changed my electrical engineering degree, to a computer science degree. I was now in a double degree program for physics and computer science.
Eventually my courses between computer science and physics had time collisions and I had to choose between the two. I dropped physics to a minor because I did not have any plans at that point to continue on in physics as a graduate student and I knew that computer science was more marketable. I added mathematics as a minor shortly after that since I only needed one more math class to get a minor.
When I was a freshman and sophomore in college I was extremely embarrassed about my resume. All the activities and work experiences I had were from high school. Granted, there wasn’t much I could do about that my first semester of my freshman year. Yet by the time I was a sophomore I still had not done much aside from the research and physics outreach to bolster my resume. This is not to discount the work that I did in high school. A worked for a family friend on and off at his telecommunications company. A lot of it was physical labor and I learned to appreciate blue collar work. I needed more relevant and recent experience.
In the Fall semester of my sophomore year, I took part in TAMU HACK. A 24-hour hackathon where you and several hundred technophiles get together to “hack” something together. The project that I worked on that night ended up failing in the last few hours because the hardware died. I ended up talking with some company representatives there and one of them told me to apply to a few co-op positions they had. Long story short, I ended up getting one of the positions.
This position offered work experience while in college, but in another state. I started working in what would have been the Fall semester of my junior year. I would have gone back every other semester, including the Summer sessions, to work for this company. I completed the first semester but ended up resigning because some of my family members were having health issues and I felt the need to be in Texas where they were to spend more time with them.
This first company taught me work-life balance. There was a strict 40 hour a week policy. Anything beyond that was heavily discouraged. At this point in college I had been spending almost all of my free time studying. I studied even when I went home on the weekends. One spring break my family took a ski trip and I even studied on the way up and down the mountain. Have a dedicated block of work forced me to try to spend time doing something that was not work. Mostly for me that meant reading. However, the strict 40 hour a week policy was something that I learned to value and to this day is one trait that I will always look for in a company.
On that note, if you work more than 40 hours a week and your job is essential (doctor, lawyer, peace officer, firefighter, etc.), do not think that I am criticizing you for your very important work. It matters. No one dies if I only program 40 hours a week. I do hope that you find ample time for yourself, though.
After resigning from the co-op, I applied to work at Lockheed Martin in the Spring of 2017. I worked there for the summer of 2017 in the cybersecurity division. I did not know what I was applying for when I said that I was interested in working in cybersecurity. I spent that entire summer making power point presentations about the fundamentals of cybersecurity. I did not really enjoy it, but I did learn quite a bit. Lockheed was a cubicle farm from my perspective. They also emphasized working 40 hours, but I got the idea that this mostly applied to the interns and not the full time people. Lockheed was not a good fit for me, so I elected not to go back for another summer when they offered.
The week after I got back to college from working for Lockheed I started looking for jobs in College Station. I found a very small company with about 13 employees called Synchrogrid that was looking for a part-time intern software developer. I applied and was accepted. The work was annoying at times, but not because of management at the company and strictly because the tech stack that was needed to do what they wanted was limiting. I was honestly very happy to be working there. The small number of employees was something I was initially worried about but grew to really enjoy. I spoke with the CEO every single day. I essentially had 3 supervisors, the CEO, a consulting friend of the CEOs, and one of the other full time employees. They were all a joy to work with. The consulting friend of the CEO was one of people kind enough to write a letter of recommendation for me. Here, I learned that I preferred small companies over large ones.
I worked at Synchrogrid for a full year and quit at the beginning of the Fall semester of my last semester in college. For the last 6 months of my employment at Synchrogrid I had been applying to various companies to get a full time job after I graduated. There is a wonderful medium-sized software consulting company in College Station called Capsher Technology. When I went on the interview, I felt very welcome. The atmosphere was very friendly, GlassDoor listed them as having between 50-100 employees, and they emphasized a 40-hour work week. I was very happy to receive an offer of employment from Capsher.
Working at Capsher is and really enjoyable. I learned how to more effectively function on an actual software team. White board communication is heavily pushed at Capsher so my diagramming skills were sharpened. Explaining the issues I was facing clearly was a skill I had to learn, but I did it. At the same time that I was learning to be an effective employee, I discovered the idea of financial independence, or FI. A large chunk of my free time in my first year was spent learning about personal finance, how to invest, what retirement at age 35 or 40 (yes, really, it’s simple math) would look like.
One of the principles of FI is living happily within your means. In particular, some members of the FI community emphasize ideas of stoicism and minimalism. This really resonated. I became quite a bit more introspective and started to ask myself what made me happy. In the beginning this introspection was a driving force for deciding what to spend on. After a few months, my spending stabilized (thankfully to a lower point than when I started, increasing my savings rate), and my happiness dramatically increased. There were evenings when I’d be reading a book, drinking a fine (cheap) glass of wine that I would suddenly think “I couldn’t possibly be more happy than I am right now”, and it was true. I didn’t want for more.
Now, my happiness outside of work was real. Once my financial life was in order I stopped reading about finances and the economy as heavily as I had been. When I was in college I learned about the basics of radiative transfer, the process that determines earth’s energy budget and is how we know that the earth is warming. I was really interested in that and I started to learn more about climate change, mostly through podcasts.
This was fun, but also scary. The problems posed by climate change are immense. They are happening now. They are going to take a great deal of effort to solve. Fortunately, we know exactly what the problem is (too much carbon being released which accumulates and increases the strength of the green house effect, warming the earth) so we also know what the solution is (stop releasing carbon, you bunch of idiots).
The more climate change occupied my mind, the more I became dissatisfied with my job. You see, what I worked on was not helping to fight climate change and that did not jive with my morals. Don’t take this to mean that Capsher is a bad company. By all means, Capsher’s moral values quite strongly align with mine, but the contracts that they had did not offer the kinds of work that were fulfilling to me. I began to look for jobs that I could go to that needed my programming skills and would contribute to climate change mitigation or adaptation. I found a few companies and applied. None got back to me. Even if they had, most were in a different state or country and I wasn’t really prepared to leave Texas just yet.
So, in March of 2020 I emailed Dr. Erukhimova to ask for her advice on how I might get into graduate school for atmospheric science. She pointed me to Dr. Gerald North, who then put me into contact with Dr. Yangyang Xu. Dr. Xu took an immediate interest in me and over the summer of 2020 worked with me on an air quality machine learning model so that we could each see if we would be a good fit to study together. The relationship was appreciated on both sides. Dr. Xu guided me through the admission process.
When my application was being reviewed by the admissions committee, Dr. Ping Yang also took an interest in me. Dr. Xu and him agreed to be my co-advisors and start in January 2021, I will be a graduate research assistant at Texas A&M University pursing a masters in atmospheric science!
]]>