1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
|
#import "@preview/basic-resume:0.2.9": *
// Put your personal information here, replacing mine
#let name = "Jayrup Nakawala"
#let location = "London, UK"
#let email = "jayrupnakawala@gmail.com"
#let github = "github.com/CaptainJack2491"
#let linkedin = "linkedin.com/in/jayrupnakawala"
#let phone = "+1 (xxx) xxx-xxxx"
#let personal-site = "jayrup.me"
#show: resume.with(
author: name,
// All the lines below are optional.
// For example, if you want to to hide your phone number:
// feel free to comment those lines out and they will not show.
location: location,
email: email,
github: github,
linkedin: linkedin,
// phone: phone,
personal-site: personal-site,
accent-color: "#26428b",
font: "New Computer Modern",
paper: "us-letter",
author-position: center,
personal-info-position: center,
)
/*
* Lines that start with == are formatted into section headings
* You can use the specific formatting functions if needed
* The following formatting functions are listed below
* #edu(dates: "", degree: "", gpa: "", institution: "", location: "", consistent: false)
* #work(company: "", dates: "", location: "", title: "")
* #project(dates: "", name: "", role: "", url: "")
* certificates(name: "", issuer: "", url: "", date: "")
* #extracurriculars(activity: "", dates: "")
* There are also the following generic functions that don't apply any formatting
* #generic-two-by-two(top-left: "", top-right: "", bottom-left: "", bottom-right: "")
* #generic-one-by-two(left: "", right: "")
*/
/*
== Work Experience
#work(
title: "Subatomic Shepherd and Caffeine Connoisseur",
location: "Atomville, CA",
company: "Microscopic Circus, Schrodinger's University",
dates: dates-helper(start-date: "May 2024", end-date: "Present"),
)
- Played God with tiny molecules, making them dance to uncover the secrets of the universe
- Convinced high-performance computers to work overtime without unions, reducing simulation time by 50%
- Wowed a room full of nerds with pretty pictures of invisible things and imaginary findings
*/
== Research Experience
#project(
name: "Dissertation: Moral Cover and Watchful Eyes",
// Role is optional
role: "",
// Dates is optional
dates: dates-helper(start-date: "Nov 2025", end-date: "May 2026"),
// URL is also optional
url: "github.com/CaptainJack2491/Dissertation",
)
- Architected a sandboxed evaluation framework with a Virtual File System (VFS) to safely execute and monitor autonomous LLM tool-use across multiple providers (Anthropic, OpenAI, Google).
- Built a provider abstraction layer for glass-box reasoning extraction and a post-hoc interrogation system to adversarially probe agent intent.
- Designed a 3-prong automated judging pipeline (regex, LLM blackbox, LLM glassbox) and ran *960 experimental trials* across exploratory and confirmatory studies.
- Quantified a *"Stealth Gap"*: deceptive intent held steady (~62--67%) under high oversight while output-level detectability dropped (47.8%→35.6%), showing output-only monitoring underestimates risk.
== Projects
#project(
// role: "Lead Infrastructure Engineer",
name: "Hybrid-Cloud Research Infrastructure & Zero-Trust Mesh",
// url: "jayrup.me",
dates: dates-helper(start-date: "Jan 2024", end-date: "Present"),
)
- Developed a hybrid-cloud networking mesh using Tailscale/WireGuard to unify a Dell Precision local node (Ubuntu) with 3 distributed VPS instances into a single secure plane.
- Engineered a custom ingress solution using VPS nodes as forward proxies to bypass CGNAT, ensuring secure, high-availability access to internal research tools without port forwarding.
- Orchestrated 15+ containerized services via Docker Compose, implementing automated backups, resource monitoring, and a centralized NVMe-backed storage tier.
- Optimized a headless development workflow (Arch Linux, Neovim, Tmux) with dotfile versioning for consistent, rapid environment replication across heterogeneous hardware.
#project(
name: "Jayrup.me: Fast Personal Portfolio",
url: "jayrup.me",
dates: "Nov 2025 — Present"
)
- Engineered a dual-interface web server using Nginx to serve context-aware content (HTML vs. Plaintext) based on User-Agent detection (e.g., `curl`, `wget`).
- Architected a Quarto-based publishing pipeline that generates synchronized web and CLI-friendly documentation from a single Markdown source.
- Automated Deployment: Optimized a secure rsync-over-SSH deployment workflow from a local Arch Linux environment to a distributed VPS cluster.
- Focus: Having a light-weight portfolio that is accessible via the terminal
== Education
#edu(
institution: "University of East London",
location: "London, UK",
dates: dates-helper(start-date: "Sept 2023", end-date: "May 2026"),
degree: "Bachelor's of Science (Hons) Data Science and Artificial Intelligence — First-Class Honours (94%)",
// Uncomment the line below if you want edu formatting to be consistent with everything else
// consistent: true
)
- Relevant Coursework: Math for computing, Data Structure and Algorithm, Networking, Database systems, Big Data analysis, Project Management, Artificial Intelligence
// #extracurriculars(
// activity: "Science Olympiad Volunteering",
// dates: "Sep 2023 --- Present"
// )
// - Volunteer and write tests for tournaments, including LA Regionals and SoCal State \@ Caltech
// #certificates(
// name: "OSCP",
// issuer: "Offensive Security",
// // url: "",
// date: "Oct 2024",
// )
== Skills
*Programming*: Python, Bash, SQL\
*ML/AI*: PyTorch, Transformers, LangChain, scikit-learn\
*Infrastructure*: Docker, Nginx, Caddy, Tailscale, WireGuard, Quarto \
*Systems*: Linux (Arch, Ubuntu), Git, rsync, Tmux, Neovim\
|