CV %20--%3e%3csvg%20width='24'%20height='24'%20viewBox='0%200%2024%2024'%20version='1.1'%20id='SVGRoot'%20sodipodi:docname='download.svg'%20inkscape:version='1.4.3%20(0d15f75042,%202025-12-25)'%20xmlns:inkscape='http://www.inkscape.org/namespaces/inkscape'%20xmlns:sodipodi='http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd'%20xmlns='http://www.w3.org/2000/svg'%20xmlns:svg='http://www.w3.org/2000/svg'%3e%3csodipodi:namedview%20id='namedview246'%20pagecolor='%23505050'%20bordercolor='%23eeeeee'%20borderopacity='1'%20inkscape:showpageshadow='0'%20inkscape:pageopacity='0'%20inkscape:pagecheckerboard='0'%20inkscape:deskcolor='%23505050'%20inkscape:document-units='px'%20showgrid='true'%20inkscape:zoom='11.930303'%20inkscape:cx='-3.3528067'%20inkscape:cy='14.91999'%20inkscape:window-width='1920'%20inkscape:window-height='939'%20inkscape:window-x='0'%20inkscape:window-y='32'%20inkscape:window-maximized='1'%20inkscape:current-layer='layer1'%3e%3cinkscape:grid%20type='xygrid'%20id='grid252'%20originx='0'%20originy='0'%20spacingy='1'%20spacingx='1'%20units='px'%20empspacing='8'%20/%3e%3c/sodipodi:namedview%3e%3cdefs%20id='defs241'%3e%3cinkscape:path-effect%20effect='mirror_symmetry'%20start_point='12,0'%20end_point='12,24'%20center_point='12,12'%20id='path-effect1'%20is_visible='true'%20lpeversion='1.2'%20lpesatellites=''%20mode='vertical'%20discard_orig_path='false'%20fuse_paths='false'%20oposite_fuse='false'%20split_items='false'%20split_open='false'%20link_styles='false'%20/%3e%3cinkscape:path-effect%20effect='mirror_symmetry'%20start_point='30,23.545847'%20end_point='30,45'%20center_point='30,34.272923'%20id='path-effect6126'%20is_visible='true'%20lpeversion='1.2'%20lpesatellites=''%20mode='free'%20discard_orig_path='false'%20fuse_paths='true'%20oposite_fuse='false'%20split_items='false'%20split_open='false'%20link_styles='false'%20/%3e%3cinkscape:path-effect%20effect='mirror_symmetry'%20start_point='30,10'%20end_point='30,30'%20center_point='30,20'%20id='path-effect6124'%20is_visible='true'%20lpeversion='1.2'%20lpesatellites=''%20mode='free'%20discard_orig_path='false'%20fuse_paths='true'%20oposite_fuse='false'%20split_items='false'%20split_open='false'%20link_styles='false'%20/%3e%3cinkscape:path-effect%20effect='mirror_symmetry'%20start_point='30,13'%20end_point='30,50'%20center_point='30,31.5'%20id='path-effect425'%20is_visible='true'%20lpeversion='1.2'%20lpesatellites=''%20mode='free'%20discard_orig_path='false'%20fuse_paths='false'%20oposite_fuse='false'%20split_items='false'%20split_open='false'%20link_styles='false'%20/%3e%3cinkscape:path-effect%20effect='mirror_symmetry'%20start_point='49.54956,11.853962'%20end_point='49.54956,40.066391'%20center_point='49.54956,25.960177'%20id='path-effect421'%20is_visible='true'%20lpeversion='1.2'%20lpesatellites=''%20mode='free'%20discard_orig_path='false'%20fuse_paths='false'%20oposite_fuse='false'%20split_items='false'%20split_open='false'%20link_styles='false'%20/%3e%3c/defs%3e%3cg%20inkscape:label='Layer%201'%20inkscape:groupmode='layer'%20id='layer1'%3e%3cpath%20style='fill:none;stroke:%23ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round'%20d='M%2012,3%20V%2017%20L%207,12%20m%205,-9%20v%2014%20l%205,-5'%20id='path1'%20inkscape:path-effect='%23path-effect1'%20inkscape:original-d='M%2012,3%20V%2017%20L%207,12'%20sodipodi:nodetypes='ccc'%20/%3e%3cpath%20style='fill:none;stroke:%23ffffff;stroke-width:2;stroke-linecap:round;stroke-linejoin:round'%20d='M%203,21%20H%2021'%20id='path2'%20/%3e%3c/g%3e%3c/svg%3e)
Skills
- Languages- Typescript, C#, Python, Rust
- Frameworks- SvelteKit, Vue, React
- Databases- SQL, MongoDB, Prisma
- Development Tools- Git, Vitest, ESLint, XUnit, Playwright, npm, Github Actions
Experience
Cambridge Kinetics / Software Engineer
7th September 2022 - 31st December 2025Started off by working on various consulting projects before shifting to the launch and continuous development of their new product, Kinabase.
- Architected and developed a significant proportion of the most complex features of Kinabase, including computed fields, aggregations and the automation system
- Pushed for high code quality in Kinabase, reviewing most pull requests for the project and doing several "Tech Talks" on good programming practices
- Migrated a farming client's legacy PHP sensor data syncing system to fully unit-tested Typescript
Gearset / Intern
June - September 2021Worked on various features and QOL improvements for the company's Salesforce DevOps software, culminating in working with UX to design and build an entirely new user-facing page. Mainly used C# for backend and Javascript for frontend code, but also gained some knowledge of SQL and Kubernetes.
Softwire / Intern
June - August 2020Worked in a team of 5 other interns on a feature for a multiplatform phone app, with core and Android code in Kotlin and iOS code in Swift. Also worked on a static site to support our feature made using React, and learnt a lot about how agile development works on a day-to-day basis.
Education
University of Cambridge / MEng Engineering (specialising in Information and Computer Engineering)
September 2018 - July 20224th Year Project: a Python-based project to optimise the pacing strategy for the Individual Time Trial event through a direct collocation method
Projects
NoNotParty Arcade
7th April 2023 - PresentGames website built using SvelteKit, focusing on encouraging competitiveness via global leaderboards and using server verification of high scores to prevent cheating. Currently features 20+ games, with around half using PixiJS for rendering.
Methodoku Online
19th March - 15th April 2023Daily randomly generated version of a popular bellringing puzzle.
Inspired creating games with a similar daily puzzle + leaderboard format on my games website after noticing that many people were still playing it long after I'd lost interest in adding new features.
CUGCR Website Rewrite
1st - 19th September 2020As the CUGCR webmaster, decided to recreate the entire website using React after accidentally permanently deleting some old news articles using the old site's admin interface.
The new site is more performant and mobile-friendly.