{"version":3,"sources":["Components/Projects/Projects.js","Components/Home/Home.js","Components/NavBar/NavBar.js","App.js","serviceWorker.js","index.js"],"names":["Projects","className","xs","sm","md","lg","xl","href","target","rel","Home","Header","Toggle","as","Card","variant","eventKey","Collapse","Body","NavBar","bg","Brand","Link","NavLink","to","exact","path","component","App","Boolean","window","location","hostname","match","ReactDOM","render","document","getElementById","navigator","serviceWorker","ready","then","registration","unregister"],"mappings":"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","file":"static/js/main.38afdd4a.chunk.js","sourcesContent":["import React, {\n} from \"react\";\nimport Card from 'react-bootstrap/Card'\nimport Container from 'react-bootstrap/Container'\nimport Row from 'react-bootstrap/Row'\nimport Col from 'react-bootstrap/Col'\n\n\nconst Projects = () => {\n return (\n\n \n
\n \n \n\n \n\n \n
\n
\n
\n

\n Membership System\n

\n\nAs part of my Level 4 Software Developer Apprenticeship, there was an end point project. Given a brief with some business requirements to create a RESTful API for a Card Membership System. The deliverables for this were a design document, implementation code, testing and user guide. An MVP approach was taken and the basic functionality highlighted in the brief was delivered within 5 day timescale. This was done using .Net Core and SQL and using Dapper as the ORM. Testing was done using Moq and Xunit.\n\n
\n
\n
\n
\n\n GitHub\n\n
\n \n\n
\n
\n\n\n\n
\n\n
\n\n
\n\n )\n}\n\nexport default Projects;","import React from \"react\";\nimport Container from 'react-bootstrap/Container'\nimport Card from 'react-bootstrap/Card'\nimport Accordion from 'react-bootstrap/Accordion'\nimport Col from 'react-bootstrap/Col'\nimport Row from 'react-bootstrap/Row'\nconst Home = () => {\n return (\n\n \n
\n \n \n \n\n \n
\n \n I am an experienced Software Engineer working in an Agile team. I have practical experience working in a multi-disciplinary team using Scrum and Kanban frameworks, on a large-scale project. Adhering to good practices and always open to learning new ways to improve. Fault finding, code review, unit/integration testing and documentation.\n
\n
\n
\n
\n LinkedIn\n\n
\n
\n
\n

\n Technical Experience\n

\n
    \n
  • .Net Core (C#)
  • \n
  • ReactJs
  • \n
  • Microsoft SQL Server
  • \n
  • Dapper
  • \n
  • Azure Table storage
  • \n
  • Azure Blob storage
  • \n
  • Some experience with Kubernetes
  • \n
  • Some exeperience utilising Infrastructure as code such as Terraform and Azure ARM Templates
  • \n
\n Tools\n

\n
    \n
  • \n Azure DevOps/GIT for source control, CI/CD and story tracking\n
  • \n
  • DataDog for monitoring and alerting
  • \n
  • Moq and XUnit for testing
  • \n
\n\n
\n \n\n
\n
\n\n \n \n \n
Work Experience
\n
\n \n \n Software Engineer, Sainsbury’s (March 2018- Current)\n \n \n \n Currently working on an IoT-based web application (Connected Buildings) which is rolled out to stores nationwide, controlling store lights and monitoring energy as part of an agile software team. Have worked on every aspect of Software Development Lifecycle since joining. Worked using both Scrum and Kanban. Supported product in and out of hours. Supported other Sainsbury’s apps. This being a full-stack role, have developed backend (C#), database (SQL) and frontend (ReactJs) stories. Carried out and monitored deployments (Azure Pipelines, Kubernetes, DataDog). Use infrastructure as code to create Azure Resources (Terraform, ARM templates). Taking part in refinement sessions, pair programming, knowledge sharing. Also taken part in a number of hackathons.\n \n
\n \n \n \n Junior Developer, OBS Logistics Ltd (July 2016 – September 2017)\n \n \n \n Working on the existing projects such as Calidus TMS (Transport Management System) and Vision (Management software to monitor KPIs) on a day to day basis. Using technologies such as C# .NET, SQL, HTML and JQuery to develop and maintain the software. Working on both front and backend tasks. Duties also included; software testing, fault finding, problem solving and debugging code. \n \n \n \n \n
Education
\n
\n \n \n 2018-2020, BCS Level 4 Software Developer Apprenticeship\n \n \n \n \n This was done during my time at Sainsbury’s alongside my day job. This included:\n
    \n
  • \n KM1 Software Development Methodologies Exam\n
  • \n
  • \n KM2 Microsoft C# Exam 70-483\n
  • \n
  • \n Summative Portfolio\n
  • \n
  • \n Project\n
  • \n
  • \n Endpoint Interview\n
  • \n
\n This allowed me to improve my technical understanding as well as improve my understanding of high level concepts in software development.\n\n
\n
\n
\n \n \n \n 2013-2016, First Class (Hons) B.Eng. Electrical and Electronic Engineering, Coventry University\n \n \n \n This degree included programming modules such as: Introduction to Programming using Python (73%) in the first year, Embedded group project in which we used C (87%) in the second year. MATLAB programming was also used for various modules throughout the degree including Control Systems, Engineering Mathematics and Advanced digital design. \n \n \n
\n\n\n\n
\n\n
\n\n
\n\n )\n}\nexport default Home","import React from \"react\";\nimport Navbar from 'react-bootstrap/Navbar'\nimport Nav from 'react-bootstrap/Nav'\nimport { BrowserRouter as Router, Route, NavLink } from 'react-router-dom';\nimport Projects from \"../Projects\"\nimport Home from \"../Home\"\nconst NavBar = () => {\n return (\n \n
\n \n M. Umar Zahir
\n
\n Software Engineer\n\n
\n \n
\n \n \n
\n
\n\n\n\n )\n}\n\nexport default NavBar;\n","import React from 'react';\nimport NavBar from \"./Components/NavBar\"\n\nfunction App() {\n return (\n
\n \n
\n );\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport * as serviceWorker from './serviceWorker';\n\nReactDOM.render(, document.getElementById('root'));\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}