I was recently walking amongst the Flatirons at dusk, and I suddenly came to an interesting intellectual discovery. It seemed fairly profound to me, though ultimately the nature of the realization is fairly simple, once you consider it for a second. Before I describe the precise nature of the discovery, perhaps I should give some level of indication why it seemed so profound. On a personal level.
In an increasing number of my pursuits, I’ve recognized that there seems to be a conversation of sorts going on between different aspects of reality. In particular, I tend not to be one of the participants in the conversation, but either my impulsive actions or intellectual activity seems to be the medium by which this conversation occurs. I suppose my latest discovery is one particular instantiation of this phenomenon. If nothing else, simply observing this conversation is somewhat remarkable. The trick, I suppose, is realizing that the conversation is even happening in the first place. Only then can you actually witness it as it occurs. It took me about 21 years to actually figure out it was happening. My simply describing it will make it patently obvious, and perhaps some of you that have been involved in research-based endeavor have already come to a similar realization.
In order to explain my realization, I first have to explain the nature of physics. Particularly, what theoretical physics is all about. Now, I recognize that some might have a viscerally negative reaction to my even bringing up physics, likely because of some poor experience in high school. First of all, let me say that I’m not actually going to be describing physics from a high level, rather than actually doing it. So don’t stop reading even if you feel some degree of repulsion towards physics. Second of all, before I even describe physics, let me say that in my experience, physics is either profoundly frustrating and difficult, or shockingly easy. There’s very little in-between. More specifically, if you take the time to develop an intuition for the most basic principles governing a particular theory, working with the theory becomes remarkably easy. And if you don’t develop that intuition, you’re literally screwed. Physics becomes exponentially more difficult. In my experience, this is why so many people believe they are “bad” at physics. The American school system (especially high school, but certainly college as well) teaches students to memorize facts. It does not teach students to develop intuition for the first principles governing a particular topic. Thus, students are typically totally unprepared to engage with something like physics, wherein the material becomes exponentially more difficult if you opt to approach it using a “memorize everything” learning framework. Hmm, I’m going down a rabbit hole. All that is to say that physics might not be as hard as you think, and it’s possible you didn’t approach it correctly.
Anyway, if you actually know me, I’ve probably already given you this particular speech, and it’s certainly not the main body of that which I wish to discuss at the particular moment. So, let’s move on to what’s actually interesting.
In order to describe how theoretical physics works, I first need to describe how math works. In essence, one first defines particular entities of different types. Then one describes concrete rules for how the entities interact with one another. Finally, one typically manipulates the entities in question according to the rules provided which leads the creation of a new state that logically follows according to the definitions used to describe the entities. So, for example, a number is an example of an abstract entity defined within the context of mathematics. One then can define operations such as addition and multiplication, both of which take two numbers and produce a new number. Not only that, but rules such as the “distributive property” (which you probably remember from basic algebra) define basic rules that govern relationships between addition and multiplication.
Ok, the actual particulars of math aren’t important. Basically, all you need to understand is that math provides a framework for creating abstract (typically symbolic) entities, and defining rigorous, deterministic rules for how these entities interact.
Ok, so now I’m in a position to describe what theoretical physics actually does. It’s actually pretty simple. First, you observe something in the physical world. This could be anything from gravity, to temperature, to windspeed. Really anything. Then, you observe how different mathematical structures behave. More precisely, you study what happens to different mathematical entities when you apply previously defined rules to these entities. Thirdly, you attempt to find a mathematical structure that behaves similarly to the physical phenomenon you observed (in some capacity). Finally, you manipulate the mathematical entity and then map it back onto the physical system, which effectively allows you to predict how the physical system will behave.
I think probably I’ll give a related example to explain this more clearly. What is a map? A map is a simple two-dimensional image that is a representation of geographical features in a particular area. We’re all familiar with maps. Now let me ask you this. Is the map the same thing as the actual land it represents? Obviously not. Is the map perfect? No. So why is it still useful? It’s useful because it’s a good enough representation to help you perform some action. Maybe let’s be more specific. Let’s say you’re in Denver, and you’re trying to drive to Salt Lake City. If you don’t have a map, it becomes substantially more difficult to acquire the information necessary to make it to Salt Lake City. Which exit do you take? What’s the right highway? However, if you possess a map, and the map is a sufficiently faithful representation of the different features you’ll encounter on your way to Utah, then you can make accurate predictions about how you should best approach your journey. In other words, if you want to get somewhere, you need information about what lies between you and your destination. The map allows you to easily acquire this information because the map is incredibly accessible. Far more accessible than acquiring this information by interacting physical terrain.
This is precisely the same reason why a physicist tries to find a mathematical structure that behaves in the same ways as some physical phenomenon. Instead of trying to drive from Denver to Utah, the physicist is interested in figuring out how some physical system is going to behave. More specifically, the physicist is interested in figuring out how some system will behave in different environments and situations. There are two ways of acquiring this information. First, you can simply empirically observe how the entity behaves in a variety of different situations. More specifically, if you’re trying to figure out what something does in a particular situation, you can simply attempt to observe that thing under those conditions. So let’s say you’re interested in how electrons behave at very low temperatures. One way to acquire this information is to simply observe electrons at very low temperatures. Ok, great.
But what’s the problem with this approach? Any time you want to figure out how something will behave in a new situation, you need to find a way to observe the system under those particular conditions. Typically, this is either difficult or effectively impossible. What if you’re trying to figure out how electrons behave at the center of the sun? That’s a pretty tough one to directly observe.
Luckily, there’s another option. Instead of just empirically writing down how electrons behave under a wide variety of conditions, let’s say you instead try to find a mathematical structure that behaves in the same way as those electrons under different conditions. Let’s say you find such a mathematical structure. That’s pretty great! Why? Because if you wish to acquire information about how the electron behaves in a new environment, instead of observing it in that new environment, you can simply simulate the behavior of the electron using the mathematical structure you’ve found. In particular, instead of observing the electron in the new environment, observe the equivalent mathematical structure in an equivalent mathematical environment. And why would you do this? Because working with the math is much easier than working with the actual system.
Just like the example with the geographical map, it is much easier to acquire information from a mathematical structure than a physical structure.
Ok, so just to reiterate, this is literally all that happens in theoretical physics. First you observe something. Then you find a mathematical structure that behaves in the same way. This mathematical structure gives you an easier way to acquire information about the physical system in question. Boom. Done.
That ended up taking longer to describe than I previously thought it might. Well, whatever. Now let’s get to my realization.
I’ve presented physics in a fairly simple light. Observe something. Find math that behaves similarly. Use the math to predict something about the thing you observed.
However, I’ve left out one crucial step in the process. Namely, I haven’t talked about how to efficiently work with the mathematical structures you find.
Now it is true that math should behave according to certain rigorously defined rules. However, typically in something like physics, you have something you’re trying to find, and you need to mess around with the math to get it in a form that gives you the information you want. And this can be pretty monstrously difficult.
I imagine you’ve likely experienced this, regardless of whether you hate math or if you’re a theoretical mathematician. Typically, in school, math question questions are frequently phrased as “Here’s some stuff we know. Now solve for X.” And it typically requires some brain power to solve for X.
In fact, given the rules of math, in any given situation, there are usually an exponentially large number of different options available for how you can possibly manipulate an equation. So the question is, how do you figure out how to manipulate the math to get the information you want?
In my experience, I’ve found that perhaps the most powerful way to do this is by developing an intuition for how to mathematical entities in question should behave. Then you can let your intuition serve as a guide for how you should perhaps manipulate certain equations.
But here’s the question: what is that intuition? What is actually going on when you follow your intuition?
Here’s the thing I realized. If I told you to imagine a ball spinning in front of you, I imagine you’d be able to conjure up this apparition in your head. In fact, it could likely be more than just a 2d image in your head. You could probably imagine holding the ball, touching it. Engaging with it with your different senses.
I realized that when I talk about using my “intuition” to solve some problem in math, what I’m really doing is conjuring up some physical representation of the mathematical quantity in question to give me insight into how I should proceed. In other words, my intuition is almost precisely the opposite of what we do in physics.
In theoretical physics, you find math that behaves in the same way as a system. However, in using intuition to work with mathematical structures, you’re basically conjuring up some physical representation of the mathematical structure to give you insight into how you should manipulate the given mathematical structure.
When you’re dealing with physics, typically the subject of your intuition is actually the physical system you’re describing in the first place.
Ok, this post is stretching on a bit long, but here’s what I’ll say. Up until my little walk in the Flatirons, I wrongly conceptualized the process of mathematical modeling as being simply simple one-time back-and-forth between the physical world and the mathematical world. Namely, you attempt the convert the physical world into the mathematical world, you work with the mathematical world, and then you convert back to the physical world.
I’ve realized that in this sort of process, there’s actually much more back and forth between mathematical knowledge and physical intuition. And at a certain point, it begins to feel as though the physical and mathematical worlds are engaged in conversation, with your brain being the medium by which this exchange takes place.
I find this quite compelling.
The Orchid Project aims to replace a wide swath of modern mathematics with a set of digital structures that can be understood and manipulated by humans and computers alike. To understand how Orchid will fulfil this goal, it is fruitful to first consider the nature of mathematics. Mathematics is the study of abstract entities with stable characteristics and behaviors. Over the past millennia, human beings have developed a set of written symbols used to describe the characteristics and behaviors of these abstract entities. These written symbols allow humans to reference properties of the abstract entities being studied and perform symbolic manipulations on these entities in accordance with well-defined rules.
Modern mathematics is a symbiosis between the human mind and the aforementioned symbol set. Without the human mind, the symbols are essentially worthless and only interact with reality in accordance with physics of their constituent physical materials. Without the symbols, humans would have to reason about abstract entities without any outside assistance, and therefore would suffer from the limitations of human memory and intelligence. Together, however, there is a beautiful symbiosis. The abstract structures live within the human mind, but they can be compressed and stored compactly within the symbol set of mathematics.
However, this brings us to an interesting philosophical question: why is mathematics useful? Mathematics is useful simply because there is stable structure in reality as perceived by humans. The term "stable" is defined here to simply mean "existing for a non-trivial duration of time". While there are, of course, no guarantees about the stability of the different entities perceived within reality, there nonetheless seem to exist a very large number of entities that exhibit some degree of stability.
One particularly fundamental reason contributing to humanity's evolutionary fitness is the human mind's ability to create a model of the stable structures in the human’s environment, and act according to this model. If, for instance, a human learns there is a meteor directly overhead, the human will use their internal model of the world to reason that they must run away in order to survive.
While the importance of the brain's ability to harbor an internal representation of reality cannot be understated, humanity has progressed even further by creating spoken language. Spoken languages allow groups of humans to translate the representations stored within their brains into a set of stable auditory signals. These auditory signals are then decoded by other humans and translated into neural representations of the world.
Forming and reasoning about internal neural representations of the world takes time and effort, and frequently humans form the same sorts of representations. For example, even without communicating, multiple humans could easily learn that a meteor overhead probably means grave danger. Spoken language is an incredibly tool because it decentralizes the effort required to formulate internal representations of reality. As a simple example, a person entering India for the first time several millennia ago might never have interacted with a tiger before. The person could either learn about the dangers of tigers by experiencing one for himself/herself, or he/she could communicate with the locals and learn that the big striped orange and white cats ought to be avoided. The latter option obviously better lends itself to human survival.
Spoken language is a miraculously useful tool, but it suffers from the fact that audio signals decay rapidly, thus requiring two humans to be in immediate contact while communicating. This limitation is addressed by written language, which is next in the chain of incalculably useful human developments. The written word can last for centuries or even millennia, and therefore allows humans beings to share neural representations of reality across wide swaths of time.
So where does mathematics fit into all of this? Languages like English or Mandarin allow humans to describe a large portion of either their perceived reality or even hypothetical situations, and typically rely on some context for understanding. “How fast did Blake run?” I might ask. “Fast,” or “slow,” or “faster than Usain Bolt,” you might answer. Given my current context, I’ll probably form an internal representation of the events you witnessed that isn’t too far off from what you actually perceived. However, the words “fast,” “slow,” and even “faster than Usain Bolt” are all very imprecise, and effectively lose all meaning without the ill-defined context I described.
Mathematics attempts to address this lack of precision by describing both the structures and context in terms of abstract imagined entities with infinitely precise characteristics and infinite stability. To my question of how fast Blake ran, you could instead answer “44.83 ± 0.9 km/h.” You could also provide me with a mathematical model of Blake’s trajectory using polynomials and describe the Blake’s physics using Newtonian mechanics. Given the definition of kilometers, hours, and real numbers, someone 300 years from now would still be able to form a highly accurate internal representation of Blake’s speed, were they to desire that knowledge.
Mathematics therefore gives humans the ability to describe reality with far greater detail, precision, and accuracy than languages like English or Mandarin. The toolset of mathematics has also informed the development of some (if not all) of humanity’s most impressive modern technologies.
Why, then, has mathematics not replaced the languages of the world? If mathematics can provide such superior descriptions of reality, why don’t we entirely replace “the old technologies,” like English? The reason we haven’t done this is because mathematics comes with a high cost. It’s really, really hard. The reason why “Einstein” has become synonymous with “genius” is because Einstein formulated a mathematical description of the world that was more consistent with reality than previous attempts. Mathematics isn’t nearly as forgiving as world languages. While humans can rely on mutual context to convey information with language that would otherwise be imprecise or inaccurate (think metaphors or sarcasm), well-defined mathematics doesn’t allow for any of that behavior.
Before I continue, I’d like to once again emphasize how critical both language and mathematics have been to the improvement of the human condition. Even though I will talk about how Orchid aims to achieve a superior technology, the importance of both mathematics and language should never be taken for granted.
So where does all this leave us? Spoken/written languages can describe a broad swath of reality, but they are imprecise and typically rely on ill-defined and brittle context to actually convey meaning. Mathematics can describe some aspects of reality in incredible detail, but it is difficult to use and struggles at generalizing to complicated systems.
The Orchid Project aims to move beyond language and mathematics for formulating representations of reality by utilizing advances in computers to significantly lower the costs associated with mathematical descriptions of reality. As previously described, right now mathematics is a symbiosis between the human mind and a symbol set, wherein the actual mathematical structures live in neural representations within the human mind but can be represented compactly within a set of written symbols.
Put in high level terms, Orchid transforms neural representations of mathematical entities into computer data structures, which can be created and manipulated by computers. While this is easily said, the ramifications of this statement are enormous. By making this translation from the brain to the computer, Orchid allows computers to “think” about mathematics like humans do.
While you could probably see the importance of this concept after a moment or two of thought, let me perhaps provide some motivation for why this could be revolutionary. Modern computer architectures are capable of roughly a billion operations per second. The spiking rate of a neuron in the human brain is about 200 spikes/second. If we equate a single spike as being approximately equal to a single clock cycle, then a computer processes information more than 5 orders of magnitude faster than the human brain.
What this means, in more accessible terms, is that a task that would take the human mind 1,000 years could be completed by a modern computer in under 4 days. This example obviously makes some irresponsible assumptions about the similarities between the human brain and computers, but the point being made remains valid.
With that said, by drastically reducing the cost associated with mathematical descriptions of reality, Orchid aims to give human beings a tool that robustly addresses the limitations of both languages and mathematics in formulating representations of reality. In accordance with the historical trend outlined throughout this text, one can hope that the tools provided by Orchid can aid in both a drastic improvement of the human condition and the progression of organized complexity within reality as a whole.
Sup readers. Prepare yourselves for another disjointed post. I’m basically using my blog as a repo for and log of my thought processes.
K, so basically a big thing that I’ve learned about myself is that even though I really enjoy learning about pretty much anything technical (math, physics, CS, etc) it’s immensely hard for me to stay motivated to continue working on a project unless I can very easily discern why the project benefits humanity. That’s part of the reason why I’m really enjoying my current project.
Oh wait. I forgot that I haven’t written a single blog post about my current project yet. RIP. I’ll do that soon. Basically, I’m trying to build a social media platform that psychologically incentivizes healthy, non-violent conversations about traditionally controversial and polarizing topics. I’m bringing this up simply because I perceive the goal of this project as being of upmost importance for the future health of the purportedly self-healing super graph that is humanity.
Anyway, back to Orchid. The reason I bring all this up is because in past months, I haven’t really been able to come up with a compelling reason why building Orchid would be beneficial to humanity, which has meant that it’s somewhat difficult to remain motivated to work on it, which in turn means I haven’t prioritized working on it, which means I haven’t worked on it all that much.
Orchid, however, has been dancing around the back of my head for the past couple of months simply because I think it would be super cool if it worked. If nothing else, it would give me a way to work on learning things like QFT without the overwhelming frustration of working with ginormous equations with pencil and paper. While I personally don’t see learning QFT as a particularly meaningful pursuit at this juncture of my life, the equations that govern quantum fields are super, super juicy, and it’s fun to play around with them.
Anyway, in trying to come up with ways that Orchid could benefit the humanity graph, I’ve had a couple ideas. This first one kinda showed its head in my last post, but I’ll flesh it out a bit more here. Basically, if Orchid works as I intend, it will essentially create a method for storing mathematical entities of all varieties in well-defined computer data structures. Neat. Additionally, the rules governing mathematical manipulations of these particular mathematical entities will also be stored in similarly well-defined computer data structures. The reason why this is compelling is because computers would then have the ability to work with and manipulate these structures on their own, without human interference. Obviously, the algorithmic approach the computers would take in manipulating the mathematical structures would be defined by humans, but it would essentially allow computers to perform the same sorts of computations humans do all by themselves.
Why is this potentially cool? Because up until this point, most mathematical software is essentially super-powered calculators. Mathematica, for example, has been built over the last 30 years, and during that time, human beings have translated all varieties of mathematical processes into code. There’s a reason it takes up like 20 GB. It’s gigantic. But if you want to numerically solve erf, like I did back in high school, well then boy is Mathematica for you. How is orchid different? Instead of having a bunch of hard-coded algorithms for solving and manipulating previously defined mathematical expressions, Orchid allows you to define entirely new mathematical entities and the rules that govern them. This, furthermore, allows users to have a central location for creating a manipulating all varieties of mathematical entities.
Not only that, but the computer itself would have a way of creating and manipulating exotic mathematical structures. This means that computers would be able to do what previously could only be done with pencil and paper, or on a blackboard. Instead of slaving away doing a bunch of predefined calculations, computers could actually be “doing the math” in the same way that humans have for the last several centuries.
I imagine it might not be immediately clear why computers doing pencil and paper mathematics would be beneficial to humanity. Let me explain as clearly as I can. Mathematics has provided humanity with perhaps the most robust and effective method for quantitatively understanding the world around us. And when humans better understand the world, they can make better predications about the state of the world. As I’ve discussed in previous posts, whenever a structure exhibits stable characteristics and behaviors, that structure can be effectively utilized in the creation of another, larger stable structure. In this context, that means that whenever humans are able to understand the stable characteristics and behaviors of a system, they are frequently able to use that system in a manner that increases humanity’s overall fitness.
Theoretical physics, as a field of study, is perhaps the best and most well-established example of what I’m describing. The phone in your pocket, the missile defense system that keeps you safe, and the lightbulb that illuminates your house are each examples of the staggering amount of technologies that fundamentally would not exist without developments in theoretical physics.
And what is theoretical physics? It is the practice of modelling physical systems in terms of well-defined mathematical structures, and then making predictions about the systems themselves using well-defined mathematical manipulations on those structures. In case you are wondering, experimental physics is the practice of designing and carrying out experiments to gather data on physical systems. Analyzing these data sets is what allows theoretical physicists to determine the degree to which their models accurately describe reality. So, if you’ve ever wondered what those nerds up in national labs, universities, or particle accelerators are doing, it’s that.
Physics is all fine and good, but I’ve found that much of what goes on in modern day physics doesn’t actually seem to affect many people. Some of it certainly does, but a good deal of it is documented in papers that 99.99% of humanity can’t understand and don’t really do people any good.
However, there are plenty of other real-world systems that could be analyzed using the aforementioned methodology. Data scientists are basically the people attempt to understand large data sets using machine learning or other statistical methods. From what I understand of current practices in data sciences, there really isn’t a large amount of coming up with novel mathematical models for understanding data sets in a manner similar to theoretical physics. There certainly is some, but nothing compared to physics.
And there’s a very good reason for this: coming up with appropriate mathematical models for different systems requires a huge amount creativity and intellectual capacity. In other words, it’s really, really hard. Ever wonder why everyone thinks Einstein was so smart? It’s because he came up with extremely precise mathematical frameworks for describing relativistic systems. He did a bunch of other stuff too, but he’s celebrated mainly for his ability to create compelling mathematical models for physical systems. And let me tell you, General Relativity is no small pill to swallow. There are a ton of moving parts and different mathematical structures at play, but my gosh, the resulting theory is objectively gorgeous.
Anyway, I could fawn on about GR all day long, but that’s not why we’re here. The reason Orchid is compelling is because it would drastically simplify the process of coming up with mathematical models to describe different systems. Not only that, with the right set of algorithms, the computer could by itself create mathematical models to describe data sets.
That last sentence probably didn’t have the desired effect on you, so let me rephrase. Orchid could potentially allow a computer to do the same thing Einstein did that made him famous as one of the smartest people in history.
IMHO, that’s pretty dank. But even if that last bit doesn’t happen, Orchid would still provide humanity with a framework for easily constructing and manipulating mathematical entities, which could in turn be used to understand the world around it with a degree of precision previously unattainable.
Well, maybe that’s being overly optimistic. We’ll see.
Anyway, when I started this post, I wasn’t going to talk about Orchid, I was going to give the recipe for consistently and efficiently modelling a system mathematically. Here goes.
Just hit page 7, which is about 5 pages longer than I thought this post was going to be, so I’m going to wrap this sucker up. I guess as one last thing, if this stuff interests you, shoot me an email. After leaving Berkeley, I haven’t talked to a lot of people interested in this stuff.
May your socks always come bedecked with cool designs. Peace.
Bon-frikin-jour, brethren! What a week it has been. Last night my housemate and I journeyed into San Francisco to see the SF Symphony perform Saint-Saens’ Organ Symphony among other pieces. The Organ Symphony has a special place in my heart because:
This schmeag named Jean-Yves Thibaudet debuted a spicy, spicy tango concerto for piano which was also quite fun. Monsieur Thibaudet is apparently one of the sauciest pianists still trotting, but I certainly hadn’t heard of him before this concert. Perhaps I need to make a better effort to remain attached to the culture of classical music. Perhaps not.
Now then, onto Orchid! Gracious me. I just looked at the Orchid project, and to my general horror I have only posted one piece about Orchid. This is slightly egregious because Orchid is hands down my most time-consuming personal project right now (aside from Project Supernatural, which implicitly consumes several hours per day), and literally the whole point of XFA is to document such endeavors. Perhaps I should just drop all pretenses of XFA being anything other than a brain dump for me. That would certainly be easier to explain in person. Eh, I like it as it is.
So what’s the latest news with Orchid, you ask? I think I’ll give a bit of an update as to my general progress, and then I shall give an account about how this project is affecting my life.
Superficially, Orchid has changed very little since I last posted. Actually, it literally doesn’t even properly compile, so to the untrained eye it may appear that I’m doing everything all wrong. However, if you take a peep under the hood into the code base, you’ll see an expansive evolving architecture for this project. You may remember from previous posts when I was noisily complaining about Orchid being the most organizationally challenging project on which I have ever worked. Well, blessed readers, nothing has changed. I’m not gonna lie. This is hard.
For my own personal gratification, I will now give a bit of an overview on how this project is working from a software perspective. If you consider yourself above computer science nerds, by all means, skip these next paragraphs and go to the part of the story where I tell the tale of Orchid provoking emotional breakdowns.
If you read the first post, you will know that one of my principal goals for Orchid is for it to look really good. Like Latex, for those of you who are familiar. This, in practice, is very difficult to accomplish. At the beginning of the project, I had to make the very big decision about how I want to actually render the math onto the application window. This is tricky, because I need the computer to be able to tell what mathematical terms are being clicked, which means the computer has to know where the terms are being rendered on the screen. This isn’t a problem if you’re using a text editor, and the computer only has to worry about one line of text. It is a problem if you’re trying to allow for more complicated mathematical expressions that aren’t linear in writing.
Because I really am trying to avoid reinventing the wheel as much as possible, I ended up settling on a slightly strange approach to the problem. During my research, I noticed that people have gotten really good at rendering math on web pages. Web pages are nice because you can add behaviors to each of the individual html elements that can allow you to easily detect if some element has been clicked or is highlighted, or whatever else.
Now then, JavaFX (which is what I’m using to build this application) has a cute little feature called a WebView, which can be used to display web pages. With Orchid, I basically have a WebView as the main editor window, and in the background, Orchid is just adding html to and manipulating the WebView’s DOM. I’m actually quite happy with this approach because I can very easily use the application to convert the entire editor window into html, which can then very easily be converted into a pdf.
This approach is, however, a bit quirky because I’ll have JavaScript listening to what the user is doing with respect to the main editor window, and the JavaScript will communicate this to the Java on the backend, so it kinda feels like I just stuffed a website into a desktop application (which is exactly what happened).
Another reason Orchid is a bit strange is because it doesn’t really lend itself to a MVC architecture. This is simply because each mathematical term in the model has a one-to-one correspondence with an html element in the WebView’s DOM, so it actually ended up making most sense to have each piece of the model be able to contribute to the view. So then, while the controller is abstracted from the model and the view, the model and the view are extremely parallel in nature, which is interesting.
Gracious me, if you don’t like CS, I super hope you didn’t read those last paragraphs. It honestly may not have been comprehensible to those of you who do like CS. Whatever. Let’s go right on ahead to how Orchid is messing with my life.
A simple axiom of my current existence is that I would rather be working on Orchid than doing my schoolwork. While this is of course in part due to the fact that I find Orchid more exciting that things like finding the infimums of sets, there are also more subtle reasons. Interestingly enough, ever since I started working on Orchid, whenever I’m doing math or physics, I’m always subconsciously trying to figure out how I would approach the current problem with Orchid, once it is completed. Because Orchid is inherently category-theory based, this mindset is actually quite useful in understanding the subtleties of various equations.
However, this has also started biting me in the butt. There are some topics in physics that Orchid will be able to handle incredibly easily and efficiently, and so now it’s frustrating to do my physics homework by hand because I know how much faster and easier it would be to do it with Orchid.
So then, the very idea of Orchid is making me frustrated with my math and physics homework, which isn’t exactly where you want to be when those are the subjects you’re majoring in.
Another reason I find Orchid to be particularly compelling is because it’s literally a perfect marriage of math, logic, and computer science. It’s kinda my ideal project. And because of that, I would rather be working on it than, well, most anything else.
Finally, I have found throughout my life that I tend to learn more useful information from my own personal projects and academic pursuits than I do in my classes. This is simply because school and classes can’t tailor their curriculum to the interests of each student, so they just teach you a ton of generally useful information, most of which you may never need. When I’m working on a personal project however, whether it be Orchid, building XFA, or ever learning Quantum Mechanics back in High School, I’m only learning information that is personally gratifying and applicable to my interests.
Now, I’m going to complain like an annoying twit.
I’m generally just frustrated with college in general. There, I said it. It feels like I’m spending a tremendous amount of time learning somewhat useful information when I could be spending my time learning and applying more practical information.
Gracious me, I’m starting to annoy myself. I’ll get straight to the point. My frustration with academics coupled with my liminal spiritual state has made me particularly prone to emotional crises. Two days ago, I hit the emotional nadir of my semester. I wasn’t doing great, I’ll admit.
Well whatever, enough complaining. I know for a fact that some part of me loves all the math, physics, and CS I’m doing in school right now, so I’m just trying to bring that mentality to the forefront of my mind.
Wow, I’m fading. I suppose if you want to take something away from this post, know that Orchid is a fun and cool boi. I got midterms to study for. Peace.
Greetings, Celestials! And, I suppose, hello to the rest of you intent on reading my blog. Goodness me, I can’t keep away the readers. It’s honestly a problem. I’m getting too big too fast.
Now then, right to the matter at hand: the bringing about of the apocalypse. A more accurate title to this post probably would have been: “Today I Learned Tensorflow.” But nobody cares about Tensorflow. Everyone cares about the apocalypse. And we both know that the only reason I created this blog in the first place is to fill the void in my life created by a lack of meaningful relationships with a mass following of faceless, digitalized human beings. Heck, maybe I should start taking to a chatbot. I think if that should ever happen, I would be contractually obligated by life itself to finally visit a therapist.
What is Tensorflow? Even some of you non-CS nerds probably know what I’m talking about. To put it in brutally technical terms, Tensorflow is the tool that computers will use to gain consciousness and take over the world. In less technical language, Tensorflow is a programming library that (you guessed it!) Google put together to facilitate the creation of a variety of neural networks. I’m guessing nearly all of you are at least peripherally aware of the term “Machine Learning.” Neural networks are basically the hottest thing right now in Machine Learning (and honestly in Computer Science as a whole), and Tensorflow is a good way to put them together. Goodness, now I’m just being repetitive. Am I high?
Anywhoooooo, Tensorflow is basically a gauntlet of power, and I myself, Daniel P. Geisz now yield this power (its literally free, open-source software. I just downloaded it). So what then is all this talk about me starting the apocalypse?
Well, faithful readers, for many moons now have I been deeply enamored with the idea of a piece of software that can itself write code. If chatbots can speak to us so well that we can’t even tell they aren’t human, it must be pretty easy to train a neural net to write code, right?
Wrong. Even though language and our ability to communicate is one of the central aspects of humanity separating us from animals, writing a chatbot is almost the “Hello World” of recurrent neural networks. Programming, however, is a much more complicated endeavor. If you’re programming a chatbot, you can essentially just feed it text from reddit or twitter, and eventually it will learn which words should go next to one another in response to a piece of text from an external (human) source. Easy peasy, lemon squeasy. If you want to teach the computer how to code, you have to provide it examples of code. But even then, we can already see the issues that might crop up. For one thing, I would imagine that a piece of autocoding software would probably be taking some form of a command from a human being. If it were otherwise, we’d basically be spelling out the destruction of humanity by the robotic hand. So then, in order to train the system, you have a large database of code with precise documentation about what the code is trying to accomplish. This is all well and good (it isn’t) but 99.9% of all programmers have this nasty habit of not documenting their code. So then, on github, we have a gigantic, gigantic source of example code, but there’s no way to tell the neural net what the code actually means.
Hold on. I feel like I’m rambling. This is dangerous. One could make a very strong argument that every single thing I’ve put on XFA thus far is me rambling, and to that I humbly urge you to frack off. However, I very much value my sizable following of digital humans, so I feel I should be more direct.
*Deep breath in, deep breath out*. Ok we’re good to go.
Why do I want a computer that can program itself? I suppose that’s the fundamental point I ought to address. And to that, I can provide a very clear answer. It would be deeply, deeply dope (you’re welcome, Joey) if I could tell the computer to write me an application, and it would just do it. Writing software takes a tremendous amount of time, and as I have learned from the Orchid project, it is a conceptual and organizational nightmare. Now usually, conceptually and organizationally nightmaric projects are my idea of a fun Friday night, but they are really incredibly time consuming.
Many, many people may disagree with me, but I think one of the most interesting things that humans do is propagate complexity. Compared to the rest of the universe, we’re really quite good at it. However, it’s really quite exiting to image what humankind will produce in the next 30 years at our breakneck speed of innovation. What’s really quite amazing about human beings, however, is our ability to generate new ideas. The implementation of these ideas is really just the time-consuming part. This is by no means a new idea, but if we can minimize implementation time and maximize our creativity, we can do cooler stuff. I suppose you can call that Geisz’s law. My back-subconscious is actively trying to come up with counterexamples. Bad dog, subconscious. Let forward-conscious have this one.
Gracious me, I’m losing steam. Holy cow, wait! I just wrote 2 ¾ pages in 35 minutes! By Jove, that a new record! I have contented myself with a 3 page per hour pace, but I just blew that out of the water! I guess I normally put more thought into the words I write. It’ll be interesting to see what I wrote this time. Amazing what happens when you practice something. Maybe I’ll take the AP Lang test again for fun. How I loved mercilessly tearing apart various authors in those rhetorical analyses.
As a closing note, in the immortal words of Harrison Kinsley, “Programming is a superpower.” I recognize that a large portion of the word probably considers programming to be a field that is too difficult to learn, but it really isn’t. Then again, I did spend most of high school trying to convince my peers that Physics isn’t difficult to learn (which it is, btw). Regardless, if you think your life could do with some spicing up, consider learning python. That’s all for now. Be sure to ring the bell. It really helps out the channel. Also if you have the means, consider donating to my patreon. It really means the world to me. Also, I’m happy to announce we just reached 2.3k subs. I can’t thank you all enough for your support. Hugs and kisses. I’m out.
What is up, my people? It’s truly been a phat minute since I last posted to XFA. Actually that’s not true. I wrote something on Tuesday. It’s been exactly four days since I last posted. That isn’t a phat minute at all.
Well, regardless, as the title suggests, my life is now in full overdrive. One consequence of this, as alluded to in the first paragraph, is the fact that once again, my perception of time is actively failing. This tends to happen during the academic semester, so it’s not that worrying.
Now then, I feel compelled to explain the nature of the overdriven-ocity of my life, and I shall now do so. There are really six main contributors to the maximum overdrive:
Funny story: when I started writing those bullet-points I thought I would only have three main contributors to maximum overdrive. Amazing how quickly three things turns into six things.
Now then, some quick notes about the above list. While 20 units is, I’m pretty sure, a fairly heavy course load, I’ve heard legends of some schmeags who have taken 40 (40!!) units in a single semester. I’m honestly not sure how that’s actually physically possible. All that is to say that I’m not trying to dump a weird flex on you unassuming readers by quoting my course load. Actually, that’s my only note. Next paragraph.
I’ve been wanting to write a couple short posts this week but I haven’t had time, so I think I’ll include the most important of them here.
This should fall under Project Supernatural, but whatever. Last Wednesday night I had a pretty deep conversation with one of my friends. Deep conversations are really just the sauce. Later that night, my baked-in Christian instincts kicked in and I almost thanked God for the conversation I had before I remembered that I’m not actually Christian right now. However, those of you who have read my posts for Project Supernatural will know that I’m making an effort to interact with the divine/unknown/transcendent/God/gods/flying spaghetti monster, because if that is possible it is something I would like to experience. This is a bit difficult to describe, but after I had fought down my instinct to mindlessly and guiltily thank the Christian God for the conversation I had, I concentrated my attention on the aspect of reality that is outside my comprehension and I thanked whatever superintelligence may exist outside of my perception for the conversation I had with my friend.
What happened next was even more difficult to describe. My normal baseline levels of stress and anxiety were siphoned out of my body, and the more I concentrated on this notion of the unknown, the more I began to feel some part of my being trying to pull away from my physical body. It was remarkably peaceful. The feeling was so intense that I actually became somewhat convinced that I was about to have a vision or some experience that would transport me away from my physical senses. Unfortunately, there was no vision this time. That would be quite neat. But it was a remarkably interesting experience.
I suppose as a parting thought, while the aspect of reality that we experience by means of our senses is an interesting and, in many ways, comfortable place for us to dwell, I would encourage you all to open yourselves to the possibilities associated with the unknown. If nothing else so that I can carefully log your experiences to aid in my own deductions. Au Revoir!
Good morning, schmeagy deags. I bring tell of great tidings. I have finally started birthing an Orchid. To formalize the previous statement, my mind has begun the painful, several-year-long process of giving birth to Orchid. What is Orchid? Certainly not a human child. I don’t have the biological hardware for that. Will it be as good as a human child? I suppose that will be for the world to decide.
You’ll notice I never answered the first question. To put it in the most boring way humanly possible, Orchid will be a piece of mathematical software. Bleh. To put it in a far more intriguing way, Orchid will be a tool that allows human beings to mercilessly take advantage of the parts of computer that are better than humans to construct magnificent pieces of logical structure with extreme simplicity.
If you’re at all involved in STEM, you probably have some level of familiarity with Mathematica, Maple, or Matlab. For the uninitiated, these are all programs that have been developed over the course of several decades and are essentially superpowered calculators. I do not mean for Orchid to attempt to overthrow these three giants of this particular industry. That would be ultimate folly for several reasons:
Goodness, that was only two reason. Last I checked, “two” doesn’t fall within the set of numbers described by “several.” Well I think they are both good enough. Those of you familiar with the Big Three mathematical programs know the staggering breadth of mathematical material that they support. What then could I possibly wish to accomplish with Orchid? What will Orchid be able to do that these pieces of software cannot?
I will answer by giving you the story that motivated Orchid in the first place. Last semester, I wanted a break from my regular schoolwork, so I bopped on over to the law library and violently threw open Steven Weinberg’s Foundations of Quantum Field Theory. That book is, in a word, dense. With my other courses last semester, I took me about four months to get through the first (real) chapter of the book. I was finally at the point where I could start working through the problems at the end of the chapter. To many of you readers not actively involved in physics, you may be wondering why on Earth I was purposely subjecting myself to the third level of hell. To many of you readers actively involved in physics, you may be wondering why on Earth I was purposely subjecting myself to the third level of hell. To those of you readers who actually enjoy theoretical physics, you will know exactly why I was purposely subjecting myself to the third level of hell, and understand I was doing this for the same reason a drug addict will go to any lengths to get another sweet, sweet hit of whatever particular substance has been giving them problems.
Because I was in Weinberg’s book, the problems were hard. Like really, really hard. However, I wasn’t annoyed by the length of the problems, I was annoyed at how I was doing the problem. I was naturally doing everything with pencil and paper, and I found that I was constantly rewriting extremely long equations with an incredible number of moving parts. I think everyone except the true weirdos can agree that the act of constantly rewriting extremely long equations is incredibly tedious, but it is also extremely prone to errors. Eventually, blessed readers, I had had enough. You better believe I wanted to find the Lie Algebra of the Galilean group, but at a certain point, a girl has got to put her foot down. I, being the metaphorical girl, fled the Law Library feeling particularly defeated.
As a budding computer scientist, however, I had another reason to be frustrated. Literally one of the biggest purposes of computers is to do simple monotonous tasks that probably could be done by humans. Why couldn’t I just use a computer to find the Lie Algebra of the Galilean group for me?
With this question glistening upon my tongue, I started a deep dive into the documentation of all the major pieces of math software with which I’m familiar. These pieces of software are incredibly good and fast at doing standard computations in a wide variety of fields in mathematics. Their issue is that they don’t allow you to define your own logical structures with their own rules. The particular piece of mathematics that I needed to do cannot easily be done using the Big Three.
I then began researching the incredibly huge variety of other pieces of mathematical software. The closest thing I found to a software that could solve my problems are two programs called Coq and Lean. Let me tell you, the language and interface for both of these pieces of software are absolutely disgusting. Coq in particular has that “90s software” feel that makes everyone want to amputate one of their feet.
From the beginning of this venture, I felt I would likely need to develop my own piece of software to accomplish my needs, and as I continued to research, the requirements and features of what I now call Orchid came to me as though from a half-remembered dream. In essence, I have two main requirements for Orchid:
As a final note, some of you overly masculine readers may ask why I am choosing to call the system Orchid. I could give you some hooplala about Orchids being beautiful yet unique, or them having cool adaptations that mirror logical structures. That ain’t true. I wanted to name it something cool that in my mind evokes a similar emotion in my being as when I think about the Euler-Lagrange equation. “Orchid” therefore, fit the bill remarkably well.