AI Replacing My Job Part 2: Not a Software Engineer
Published:
Gotta start somewhere
Research directions are somewhat contrived—tossing in a couple buzzwords into the mix, adding in a couple extra question marks, all while iteratively testing if the one-line CV header makes sense to ChatGPT. And in the end, the resulting sentence still has no real explanatory power.
For the last couple of days, I’ve been trying to write my statement of purpose (SOP). Reading through a couple examples on cs-sop.org, a realization I’ve made is that none of these are going to help me. Each SOP is organized differently, some telling their childhood story that led them to this PhD, others going straight into the whole “my research focuses on….”
Thus, in typical me fashion, I’ve decided to throw away this whole “academic” yada yada in favor of my witty sarcasm. As the creative writers say, a messy first draft.
Purpose
Spring 2025, I took “What Really Matters? Leadership with No Regrets” with Prof. Khalid Latif and Prof. Yael Shy, a class that maybe over half the NYU population has taken. (Sidenote: highly recommend, attendance is not a burden.) The class centers around the Top Five Regrets of the Dying. One of the regrets is not living authentically. In general, most of us will end up working for someone else, sometimes in a way that doesn’t align with our vision for ourselves.
In one of the first couple of classes, the professors asked us to write what our purpose is in life. You write and keep writing bullet points, each bullet serving as a guidepost, inching you closer and closer to your goal. At the end, you’ll write down something that resonates deeply with you.
Back in high school, I took one of many tacky personality quizzes, this one revealing my core values. Those values are: creativity, curiosity, authenticity, compassion, and meaningful work.
Inspired by these traits, I worked on tying them back into my broader purpose in life. When it came time to apply to my summer internship, I kept myself grounded in this mantra at the top of my document:
To trailblaze, to explore forward in a direction, mapping out paths no one’s mapped before.
Either deeply rooted in my Honkai Star Rail addiction or just fated to be, the word resonated with me deeply. It appeared in many more pivotal life events from then on out, serving as both a mission and a guide for my future endeavors.
Structure
My soon to come to fruition personal statement will start something like this:
I am a repository of my own lived experiences.
At least, that’s how my brain organizes information, and a creative way to claim its type of data structure. In reality, it’s definitely just a neural network, but rather than just clustering nodes of similar information, there are edges between these nodes. It’s to the point some obscure sixth grade photography camp comes to play in enhancing palm vein authentication. I like to call this skill “active recall” though the term is typically used in a different context.
Who I am today is a product of who I was in the past. I can’t exactly be a life-long learner if I haven’t learned from my own past experiences.
If it isn’t quite obvious already, I really love to understand the underlying structures behind our systems. Some of them I’ve figured out, such as why people act a certain way and how I control my emotions to not be bothered by them, as well as the grammatical structures of writing and how they are employed to create meaning.
So I’ve always claimed to be really good at memorizing things, but in reality, I’m very good at finding patterns. There’s usually something that underpins a very specific situation that might be very common. Since there are so many things in the world that fall under a pattern, it’s really easy to remember a pattern, not necessarily the specifics. Like in piano, chord progressions. There are only a finite number of progressions but they might start on different notes. But they all follow the same relative pattern.
I must be excused if I nitpick at the slightly misaligned spacing in many resumes, or the fact that there’s an inconsistency with the past and present tense in starting verbs. To everyone’s writing I’ve ever edited, trust me when I say I’m holding back against your grammar. I sense a disturbance in the force when patterns are broken.
And thus, my “somewhat contrived” research direction is…
Security frameworks for composable systems, focusing on end-to-end guarantees that ensure security persists across complex, dynamic pipelines.
What I really wish for this to entail is being able to analyze the underlying structures of systems. Structure consists of knowing what parts that make up the whole. We can assign the parts a symbol, something that’s semantically meaningful and that we can reason with. Reasoning is important because that’s a prerequisite to enforcing security. Security is all about ensuring that the programmer’s intentions are met.
Oftentimes, security gets misconstrued as the methods and tools at its disposal rather than its core principle. People think cybersecurity is just “hacking” or “encrypting” but really these are just ways we can make our systems more secure. Behind each method is an intention. If I intend my system to only allow specific people, then yes, I should hire some pen testers to perform a red team style test on my system. If I want my data to be private, then yes, I should encrypt the data. Some people might just be interested in exploring the newest encryption methods and all, but that’s only just an aspect of security.
If we can’t even reason how those intentions are being met with the code, then how in the world can we have security? Otherwise all our tools do is be able to identify symptoms of such unintended consequences of our code.
At first glance, all of this makes sense. It’s exactly what programming languages and formal methods research does when applied to the security field. It makes sense until we realize that our current hot and developing technologies can’t be defined with our current tools. We now have systems where we can’t defend against each unintended consequence that might occur. The scale is just too big.
Putting all of the above into practice
My two research experiences thus far are pretty different but have very similar core properties.
To summarize, this summer, I worked on acoustic embeddings of live transcriptions for audio deepfake detection and prevention. Our approach secures the audio during creation with robust and dynamic signatures. Summer 2023, I worked on Theorem-Carrying-Transaction (TCT). TCT is a runtime concolic technology to faithfully verify safety properties of smart contract transactions.
Property | Acoustic Embedding | TCT |
---|---|---|
Symbols: Converting something big and raw into something semantically meaningful. | Raw audio signals are transcribed, converting waveforms into words. | Variables are extracted from Solidity compiler files, allowing us to perform symbolic execution. |
Per trace execution: Each individual concrete case is secured rather than some end state of the system. | Speeches are secured during creation time, when a high profile speaker speaks into the microphone. | The symbolic execution engine runs on a specific transaction trace, converting to Boogie to be verified in Z3. |
Weaving with structure: Security properties are tightly coupled with the structure of the system. | Echoes of the transcript hash are directly added on top of the audio signal being played back for the audience. | If the transaction is verified, the proof is carried along with the transaction itself to be completed. |
Why do we need symbols, per trace, and weaving with structure? There are two main reasons for this need:
Scale: In the past, we had comparatively smaller programs, allowing us to utilize static verification and security checks to account for every possibility of an exploit. Now, our systems are massive and highly composable. In AI pipelines and blockchain ecosystems, there are an unprecedented number of actors, components, and interactions. Static verification is not enough to secure these systems. This is why we need symbols and per trace reasoning. Symbols give us a structure to reason with, while per trace reasoning gives us a reasonable scale to deal with.
Probabilistic behavior: AI is inherently probabilistic, returning results based on some higher probability than another answer. This means that our outputs are no longer deterministic. For example, the same prompt might return different answers. Making assurances is difficult, but not exactly too impossible. We have methods to embed data provenance into media to prevent against AI tools. And some results in our LLMs should be deterministic, allowing us to check against a ground truth. If we can turn our results into some sort of symbol that can be checked against another known truth symbol, then we’ve solved many security problems with LLMs.
Ending remarks
My mission is to find structure in systems we might not necessarily believe exists or even should exist. How can we apply our existing knowledge of static analysis into our dynamic systems? How do we reason with larger-scale technologies with unpredictable behaviors? These are all questions I seek to answer with a PhD.
I hope I made my research direction a little less contrived. So basically, please accept me. I’m really cool and awesome.