{"basics":{"name":"Thomas Haslam","email":"13haslat@gmail.com","phone":"(+44) 07562 544129"},"skills":[{"name":"Languages","keywords":["Typescript","C#","Python","Rust"]},{"name":"Frameworks","keywords":["SvelteKit","Vue","React"]},{"name":"Databases","keywords":["SQL","MongoDB","Prisma"]},{"name":"Development Tools","keywords":["Git","Vitest","ESLint","XUnit","Playwright","npm","Github Actions"]}],"work":[{"name":"Cambridge Kinetics","position":"Software Engineer","startDate":"2022-09-07","endDate":"2025-12-31","location":"Cambridge","url":"https://www.cambridgekinetics.com/","summary":"Started off by working on various consulting projects before shifting to the launch and continuous development of their new product, Kinabase.","highlights":["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"]},{"name":"Gearset","position":"Intern","startDate":"2021-06","endDate":"2021-09","location":"Cambridge (remote)","url":"https://gearset.com/","summary":"Worked 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."},{"name":"Softwire","position":"Intern","startDate":"2020-06","endDate":"2020-08","location":"London (remote)","url":"https://www.softwire.com/","summary":"Worked 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":[{"institution":"University of Cambridge","studyType":"MEng","startDate":"2018-09","endDate":"2022-07","area":"Engineering (specialising in Information and Computer Engineering)","score":"4th Year: Merit, 3rd Year: 1st, 2nd Year: Unclassed due to COVID-19, 1st Year: 1st"}],"projects":[{"slug":"arcade","description":"Games 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.","html":"<p>Games website built using SvelteKit, focusing on encouraging competitiveness via global leaderboards\nand using server verification of high scores to prevent cheating.\nCurrently features 20+ games, with around half using <a href=\"https://pixijs.com/\">PixiJS</a> for rendering.</p>\n","name":"NoNotParty Arcade","startDate":"2023-04-07","url":"https://www.nonot.party/"},{"slug":"methodoku","description":"Daily randomly generated version of a popular bellringing puzzle.\nInspired 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.","html":"<p>Daily randomly generated version of a <a href=\"https://www.ringingworld.co.uk/purchase/shop/methodoku-mayhem.html\">popular bellringing puzzle</a>.</p>\n<p>Inspired creating games with a similar daily puzzle + leaderboard format on <a href=\"/projects/arcade\">my games website</a> after noticing that\nmany people were still playing it long after I&#39;d lost interest in adding new features.</p>\n","name":"Methodoku Online","url":"https://methodoku.vercel.app/","startDate":"2023-03-19","endDate":"2023-04-15"},{"slug":"cugcr","description":"As 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.\nThe new site is more performant and mobile-friendly.","html":"<p>As the CUGCR webmaster, decided to recreate the entire website using React after accidentally permanently deleting some old news articles using the old site&#39;s admin interface.</p>\n<p>The new site is more performant and mobile-friendly.</p>\n","name":"CUGCR Website Rewrite","url":"https://www.cugcr.org.uk","startDate":"2020-09-01","endDate":"2020-09-19"}]}