Available July 202712-month placementCanterbury, UK

KshitijJha

I build backends and the interfaces that sit on top of them. I like the problems where you have to go and read how the thing works.

Now
Dev intern, Imatic
Next
Placement, July 2027
Scroll
01

The short version

Who / where / why

I’m twenty. I studied in Mauritius and I’m based in Canterbury, starting stage 2 of a Computer Science degree at Kent this September: the certificate I finished in Mauritius took me straight into the second year. Two internships came before the degree rather than after it, which was not the plan but turned out to be the useful order.

The work I like is the kind where the answer isn’t in the documentation. At my current job, an internship with a software house in Dar es Salaam, I was handed a reporting stack nobody had written down, and the only way through was to read the network traffic and work backwards. That investigation is now informing a decision about 300+ reports. That’s the pattern I keep coming back to: go one level lower than you have to, and the problem usually stops being mysterious.

I write backends in C#, Go, Python and a lot of SQL, then build the interfaces on top of them in Next.js because I don’t enjoy handing off an API and never seeing it used. Outside of that I dive, I lose to FromSoftware bosses, and I reinstall Fedora more often than I need to.

Based
Canterbury, UK
Currently
Software Developer Intern
Imatic Technologies Limited
Reading
BSc Computer Science with a Year in Industry
University of Kent, stage 2
02

Where I've worked

2026 to now

01 / Software Developer Intern, Jun 2026 to now

Imatic Technologies Limited

I was hired to build one API. I ended up building it twice, in two different stacks, so the team could argue about a migration using numbers instead of opinions.

  • Built 9 REST endpoints across 6 resources in C#/.NET 8, then rebuilt the same API in Node.js so the team could compare the two while deciding whether to move off ASP.NET MVC.
  • Developed the Next.js prototype that consumes both services, including a proxy layer and role conditional routing.
  • Wrote MSSQL stored procedures handling multi mode read and write paths against a 7 table schema, working in SSMS with SQL Server running in Docker.
  • Delivered a Stimulsoft Reports.JS proof of concept by reverse engineering integration patterns nobody had documented. The write up fed a stakeholder decision affecting 300+ Crystal Reports.
C#/.NET 8Node.jsNext.jsMSSQLStimulsoftDocker

02 / Software Developer Intern, Jan 2026 to Mar 2026

CubeStone Consulting

My first real codebase with someone else's money on it. Solo build, front to back, and I wrote the schema too.

  • Built a Fleet Management REST API on my own in C#/.NET 8, using Dapper for data access against SAP HANA, and authored the supporting table schema.
  • Developed a React Native client that consumes the API end to end.
C#/.NET 8SAP HANADapperReact Native
03

Education

Where the degree is coming from
Sept 2026 to 2029

University of Kent, Canterbury

BSc Computer Science (Hons) with a Year in Industry

Starting at stage 2 on direct second-year entry, off the Mauritius certificate. Kent International Scholarship holder. Placement year runs 2027 to 28, so I am free for a 12 month contract from July 2027.

2025 to 2026

Middlesex University Mauritius

Certificate of Higher Education

The qualification that carried the direct second-year entry to Kent.

04

Things I've built

8 selected

01 / Go, 2026

Concurrent TCP Chat Server

I wanted to actually understand concurrency instead of trusting the runtime to sort it out for me.

Raw TCP, no framework. A listener hands each connection to its own goroutine, a shared register maps connections to users, and a mutex guards that register because several goroutines write to it at once. I got failures out of it: deadlocks, a concurrent map access race, WaitGroup misuse. I found each one by reasoning through the synchronisation model instead of adding sleeps until the crashing stopped. It's the smallest project on this list and the one that taught me the most.

Client AClient BClient CListenergoroutine× N, one per connMutexRegisterWAITGROUP MISUSEFIXEDDEADLOCKFIXEDRACEFIXED
found by reasoning through the model, not by adding sleeps until the crashing stopped.
Gonetgoroutinessync.MutexWaitGroup

02 / Python, 2026

Metals CFD Trading Bot

I wanted to know whether the strategies people post online survive contact with live data. Mostly they do not, and I wanted that answer from my own logs rather than somebody's screenshot.

Gold, silver and copper CFDs on the Capital.com API. EMA 9/21 crossover with RSI(14) confirmation, ATR(14) for stop sizing, a 1.5x ATR stop against a 3x ATR target, 1% account risk per trade, one open position per instrument. I fixed the stopping criteria in advance so I could not move them once it started losing. The lesson that stuck was infrastructural: GitHub Actions' built in cron was unreliable across a two hour test window, so the schedule now comes from an external trigger and the workflow listens.

TARGET3.0x ATR(14) aboveENTRYEMA 9/21 cross, RSI(14) confirmSTOP1.5x ATR(14) below2R1R
1% account risk per trade, one open position per instrument. The stopping criteria were fixed in advance, so they could not be moved once it started losing.
PythonCapital.com APISQLiteGitHub ActionsDiscord

03 / Python, 2025

VendingMachine

A university brief I refused to keep small.

A Tkinter GUI talking to a multithreaded TCP socket server over SQLite. The brief asked for none of that. I added live currency conversion across USD, GBP, INR and MUR, plus sales analytics in matplotlib. It was the first time I had two processes that needed to agree with each other, which is a specific and annoying kind of problem.

PROCESS BOUNDARYTkinter GUIcurrency conversion, chartssocket servermultithreadedSQLitesingle writerrequeststate
The brief asked for one process. Two of them having to agree with each other is a specific and annoying kind of problem, and the reason this one was worth over-building.
PythonTkinterSQLitesocketsmatplotlib

04 / JS / XSLT, 2025

Seraphim Records

An excuse to use XML and XSLT instead of treating them as legacy trivia, and to find out how messy real music metadata is. It is messy.

A record store front end where the album data gets scraped in Python from music APIs, structured as XML, then transformed into HTML with XSLT. The transformation layer does the job frameworks hide from you, which was the whole reason I built it that way.

HTML/CSSJavaScriptPythonXMLXSLT
Source
Seraphim Records, screenshot of the running interface

Weekends, hackathons, team builds: shipped fast and with help

05 / TypeScript / Python, 2026

NitiLens

DayZero 2.0, CodeNex SRMIST

Hackathon, team of four, built against the clock. The idea was to push a policy through the perspectives of the people it lands on instead of the people who debate it.

A four stage pipeline sitting on top of an LLM. A classifier, then four specialist agents reading risk through a fiscal, labour, equity and regional lens, then up to 50 synthetic personas grounded in NSSO and Census 2011 demographics, then a coordinator that pulls the disagreements into one briefing. Most of the engineering is orchestration and prompt design rather than novel modelling. The hard part was batching the persona calls so the thing returned inside a demo slot. We sanity checked it against MGNREGA, which has twenty years of published outcomes to check against.

Next.jsFastAPILLM agentsVercelRender
Source
NitiLens, screenshot of the running interface

06 / Python, 2026

Polymarket Weather Bot

An experiment in whether a prediction market prices weather badly, and an excuse to read about forecast verification, which I knew nothing about going in.

It blends ECMWF, GFS and UKMO ensembles with two deterministic providers into a single distribution, adds a climatological prior weighted by how far out the forecast is, and only logs a prediction when its edge over the market clears ten points. Everything resolves against historical records and scores itself on win rate, ROI and calibration. It is still running. The honest verdict is that the sample is nowhere near big enough to claim an edge.

ECMWFGFSUKMOdeterministic x2blendpriorby lead timedistributionedge >= 10 ptselse log nothing
Every logged prediction resolves against the historical record and scores itself on win rate, ROI and calibration. The sample is nowhere near big enough to claim an edge.
PythonOpen-MeteoSQLiteGitHub ActionsPolymarket API

07 / TypeScript, 2025

Halo Student Drives

Campus transport was expensive and students were already driving the same routes anyway. The hard part was trust, not the software.

A ride sharing platform pairing verified student drivers with riders. Driver verification, a dashboard with listings and analytics, route filtering, ratings, all on Firebase Auth, Firestore and Storage. Built with Harshil Patel and shipped to a live campus audience.

Next.jsTypeScriptFirebaseTailwindVercel
Source
Halo Student Drives, screenshot of the running interface

08 / GDScript, 2026

Platformer

An excuse to learn Godot outside a browser tab, in an engine built for exactly this.

A small 2D platformer in Godot 4.7: a player controller, an enemy, collectible coins, killzones, and a game manager tying the run together. Exported to WebAssembly, so it runs in the browser with no engine install.

Godot 4.7GDScriptWebAssembly
05

Tools

What I actually reach for
Languages
C#GoPythonTypeScriptJavaScriptSQL
Frameworks
.NET 8ASP.NET MVCReactNext.jsReact NativeFastAPIDapper
Data
MSSQL / SSMSSAP HANASQLiteStimulsoftCrystal Reports
Tools
GitGitHub ActionsDockerVercelLinux (Fedora)

Recognition

  • MDX Speed Coding Competition 2026

    1st Runner-Up

    50+ competitors across several universities.

  • Kent International Scholarship

    Holder

    Awarded for entry to the University of Kent.

  • Oracle Academy

    Certificate

    Database Foundations.

06

Off the clock

The non-CV half
07

Status

I’m looking for a 12-month placement starting July 2027.

Questions are welcome long before then. If you want to talk about backends, Go concurrency, diving, or why a boss fight feels good, that also works.

Student visa holder from September 2026, eligible for full-time employment during the assessed placement year.

Based
Canterbury, UK
University of Kent, stage 2