David Murdoch
London-based · 07793 380037 · dsmurdoch357@gmail.comSenior frontend developer who writes flexible code and delivers products. I started coding in 2009. I have been devoting the bulk of my professional time to programming since 2016. I can write Java, JavaScript, Python. When I talk about code I strive towards a precise description of what code is doing. For example how data flows through the redux store. Dispatch Action => Store => Middleware => Reducer => Selector => UI. This does not always translate to a high-level interpretation of a feature but when working with peers, I can easily communicate what I can do and what I can't do. And what I can do is quite a lot these days...
Experience
DigiVault
DigiVault is a crypto-asset custodian. The task was to develop a new website portal for their clients to transfer assets. The previous portal was developed by contractors, written with create-react-app and used a heavy use of redux-observable to handling application state. The core dev team of DigiVault was backend Java developers. They knew basic HTML and basic JS so the use of redux-observable and rxjs was a lot of cognitive and code overload for their team. Also they weren't fans of JSX. They opted to build a new portal using Svelte with the same current features as the legacy portal. I got to use a broad range of technologies at this role. The backend was written in Java using a framework called gradle that was heavily inspired by Express.js. They used BDD tests written in python and behave for integration testing. The idea was to use a simple scripting language that both frontend and backend developers could understand and share a common module. For integration tests on the frontend we used the playwright library. Svelte was an interesting framework. Very similar to React. Custom hooks were much harder to make without a `useEffect` hook. I took on the role so that I could work on more custom components. I ended up using the `tweened` store quite a lot, would be nice to have that in react.
ShipServ Ltd.
Worked with development tool nx and Next.js Experience with the material design system Gained proficiency in TypeScript
Ageas Insurance Ltd.
Using React in re-platforming a legacy web portal. The legacy site included an iframe within which the Worldpay checkout took place which come January will not be PCI compliant. The web portal was being moved to a serverless middleware.
Smarter Click
First experience with IAM integration Extra awareness of AWS tools such as CodePipeline, CloudFront and aws-amplify Cypress integration tests
QA Consulting Ltd.
Consultant work for the Home Office - First experience with the React library - Worked on converting the gov design system into CSSinJS components: https://github.com/govuk-react/govuk-react - Focused on writing forms and data fetching - Wrote unit (jest) and integration (selenium) tests - Some experience of redux before migrating to Context API - Worked within Scaled Agile (SAFe) process - Employed by QAConsulting, the client was HODDaT within the Home Office
Education
Southend High School for Boys
A2 Levels: 1 A*, 1 B, 2 C
AS Levels: 3 A, 3 B
GCSE: 9 A/A*, 4 B
2:2 MPhys Physics with Nanotechnology, University of Southampton
Projects
IMH website
A website for my parent's company. Built with Tailwind anc Gatsby and uses Contentful as a CMS
Noughts and Crosses
The tutorial example from the reactjs.org docs in tailwindcss stylings with TypeScript typings
FizzBuzz
Numbers 1 to 100 where any number divisible by three is replaced with the word "fizz", and any number divisible by five is replaced with the word "buzz"
Totally not XSS vulnerable
An example of a XSS vulnerable site. A list of usernames and passwords are stored in IndexedDB and an example username in the form that can be used to print the list in a table
Layout Proposal for Twitch Streamer I watch
AustinShow uses a video call app to do a battle royale style show. During the elimination stage he introduces a bottom three stage that can sometimes be hard to follow
Interests
- Running
- Swimming
- Films
- Cycling