diff --git a/build/asset-manifest.json b/build/asset-manifest.json new file mode 100644 index 0000000..0c9015c --- /dev/null +++ b/build/asset-manifest.json @@ -0,0 +1,20 @@ +{ + "files": { + "main.css": "/static/css/main.8ab33218.css", + "main.js": "/static/js/main.27a31b77.js", + "static/js/978.8c03aed1.chunk.js": "/static/js/978.8c03aed1.chunk.js", + "static/media/StuartResume.pdf": "/static/media/StuartResume.bf2da9e55be92e053e4b.pdf", + "static/media/about.jpg": "/static/media/about.6b571ee24d0e50868507.jpg", + "static/media/profile.jpg": "/static/media/profile.f721b730216d04842f1e.jpg", + "static/media/testimonial1.png": "/static/media/testimonial1.ea818235bc6499368f4d.png", + "static/media/testimonial2.png": "/static/media/testimonial2.b3a14336f2ff4d007aa2.png", + "index.html": "/index.html", + "main.8ab33218.css.map": "/static/css/main.8ab33218.css.map", + "main.27a31b77.js.map": "/static/js/main.27a31b77.js.map", + "978.8c03aed1.chunk.js.map": "/static/js/978.8c03aed1.chunk.js.map" + }, + "entrypoints": [ + "static/css/main.8ab33218.css", + "static/js/main.27a31b77.js" + ] +} \ No newline at end of file diff --git a/build/favicon.ico b/build/favicon.ico new file mode 100644 index 0000000..a11777c Binary files /dev/null and b/build/favicon.ico differ diff --git a/build/index.html b/build/index.html new file mode 100644 index 0000000..31c70c8 --- /dev/null +++ b/build/index.html @@ -0,0 +1 @@ +
0&&void 0!==arguments[0]?arguments[0]:0,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:this.params.speed,n=!(arguments.length>2&&void 0!==arguments[2])||arguments[2],r=arguments.length>3?arguments[3]:void 0;if("string"===typeof e){var a=parseInt(e,10),i=isFinite(a);if(!i)throw new Error("The passed-in 'index' (string) couldn't be converted to 'number'. [".concat(e,"] given."));e=a}var l=this,s=e;return l.params.loop&&(s+=l.loopedSlides),l.slideTo(s,t,n,r)},slideNext:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:this.params.speed,t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=arguments.length>2?arguments[2]:void 0,r=this,a=r.animating,i=r.enabled,l=r.params;if(!i)return r;var s=l.slidesPerGroup;"auto"===l.slidesPerView&&1===l.slidesPerGroup&&l.slidesPerGroupAuto&&(s=Math.max(r.slidesPerViewDynamic("current",!0),1));var o=r.activeIndex a||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = function(chunkId) {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce(function(promises, key) {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = function(chunkId) {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"8c03aed1\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = function(chunkId) {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"portfolio_web:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = function(url, done, key, chunkId) {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = function(prev, event) {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach(function(fn) { return fn(event); });\n\t\tif(prev) return prev(event);\n\t};\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t179: 0\n};\n\n__webpack_require__.f.j = function(chunkId, promises) {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise(function(resolve, reject) { installedChunkData = installedChunks[chunkId] = [resolve, reject]; });\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = function(event) {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t} else installedChunks[chunkId] = 0;\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = function(parentChunkLoadingFunction, data) {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some(function(id) { return installedChunks[id] !== 0; })) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkportfolio_web\"] = self[\"webpackChunkportfolio_web\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) {\n ;\n }\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","export default function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}","import React, { useState } from \"react\";\nimport \"./header.css\";\n\nconst Header = () => {\n /*=============== Change background Header ===============*/\n window.addEventListener(\"scroll\", function(){\n const header = document.querySelector(\".header\");\n\n // when the scroll is higher than 200 viewport height, add the \"scroll-header\" class to a tag with the \"header\" tag\n if(this.scrollY >= 80) header.classList.add(\"scroll-header\");\n else header.classList.remove(\"scroll-header\");\n });\n\n\n /*=============== Toggle Menu ===============*/\n const [Toggle, showMenu] = useState(false);\n const [activeNav, setActiveNav] = useState(\"#home\");\n\n return (\n Software Dev (Python) | Data Engineer| Data Scientist | Full Stack Dev (MERN). Automates & enhanced company processes through effective ETL & Software Dev. techniques | Full-time at AlumaPower Corp. | Canada Work Permit Holder\n \n • A zestful pragmatic techno-geek with a forever learning mentality. \n More projects with a detailed write up can be found in my resume.\n \n Automated the testing teams workflows from 45 minutes down to 10 seconds.\n \n Created algorithms that predicted performance degradations over time and made alterations.\n \n Functionality that auto-updated and backed-up the MongoDB database, real-time, based on user\n interactions for each experiment run.\n \n Programmed automation backup scripts to query the databases and take regular daily backup to server as restore points.\n \n Demonstrated to the company over various sprints, the effective usage of the applications.\n \n More projects with a detailed write up can be found in my resume as well as GitHub portfolio - \n \n \n \n \n \n Face recognition Web App & API. Smart Mirror - Voice Automated - Integrated with open sourced Alexa. \n Incorporated the latest web tech. tools to build a 2 tier Web app\n \n - Robo People \n \n \n Detailed weather app GUI with Python libraries\n \n - Weather App GUI\n \n \n Something fun to get familiar with CSS\n \n - Dancing Robot \n \n \n More projects with a detailed write up can be found in my resume as well as GitHub portfolio - \n \n \n \n \n \n Professional company product website with presentation\n \n - YouTube Presentation \n \n \n Project Management courses curriculum website\n \n - Website\n \n \n Smart Mirror - Voice Automated - Integrated with open sourced Alexa.\n \n Built a fullfledged 3-tier Web Application incorporating technologies like:\n AWS EC2 instance, MongoDB, React, SateManagement, Routing, Node.js & Express.js, Ajax, Linux, etc. Quantum levitation using a superconductor - YBCO {description} {location} \n// Edit 1)&&e.isEnd&&!e.params.centeredSlides?e.slideTo(e.slides.length-1,0,!1,!0):e.slideTo(e.activeIndex,0,!1,!0))||r(),n.watchOverflow&&t!==e.snapGrid&&e.checkOverflow(),e.emit("update")}function r(){var t=e.rtlTranslate?-1*e.translate:e.translate,n=Math.min(Math.max(t,e.maxTranslate()),e.minTranslate());e.setTranslate(n),e.updateActiveIndex(),e.updateSlidesClasses()}}},{key:"changeDirection",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this,r=n.params.direction;return e||(e="horizontal"===r?"vertical":"horizontal"),e===r||"horizontal"!==e&&"vertical"!==e||(n.$el.removeClass("".concat(n.params.containerModifierClass).concat(r)).addClass("".concat(n.params.containerModifierClass).concat(e)),n.emitContainerClasses(),n.params.direction=e,n.slides.each((function(t){"vertical"===e?t.style.width="":t.style.height=""})),n.emit("changeDirection"),t&&n.update()),n}},{key:"changeLanguageDirection",value:function(e){var t=this;t.rtl&&"rtl"===e||!t.rtl&&"ltr"===e||(t.rtl="rtl"===e,t.rtlTranslate="horizontal"===t.params.direction&&t.rtl,t.rtl?(t.$el.addClass("".concat(t.params.containerModifierClass,"rtl")),t.el.dir="rtl"):(t.$el.removeClass("".concat(t.params.containerModifierClass,"rtl")),t.el.dir="ltr"),t.update())}},{key:"mount",value:function(e){var t=this;if(t.mounted)return!0;var n=Z(e||t.params.el);if(!(e=n[0]))return!1;e.swiper=t;var r=function(){return".".concat((t.params.wrapperClass||"").trim().split(" ").join("."))},a=function(){if(e&&e.shadowRoot&&e.shadowRoot.querySelector){var t=Z(e.shadowRoot.querySelector(r()));return t.children=function(e){return n.children(e)},t}return n.children?n.children(r()):Z(n).children(r())}();if(0===a.length&&t.params.createElements){var i=L().createElement("div");a=Z(i),i.className=t.params.wrapperClass,n.append(i),n.children(".".concat(t.params.slideClass)).each((function(e){a.append(e)}))}return Object.assign(t,{$el:n,el:e,$wrapperEl:a,wrapperEl:a[0],mounted:!0,rtl:"rtl"===e.dir.toLowerCase()||"rtl"===n.css("direction"),rtlTranslate:"horizontal"===t.params.direction&&("rtl"===e.dir.toLowerCase()||"rtl"===n.css("direction")),wrongRTL:"-webkit-box"===a.css("display")}),!0}},{key:"init",value:function(e){var t=this;return t.initialized||!1===t.mount(e)||(t.emit("beforeInit"),t.params.breakpoints&&t.setBreakpoint(),t.addClasses(),t.params.loop&&t.loopCreate(),t.updateSize(),t.updateSlides(),t.params.watchOverflow&&t.checkOverflow(),t.params.grabCursor&&t.enabled&&t.setGrabCursor(),t.params.preloadImages&&t.preloadImages(),t.params.loop?t.slideTo(t.params.initialSlide+t.loopedSlides,0,t.params.runCallbacksOnInit,!1,!0):t.slideTo(t.params.initialSlide,0,t.params.runCallbacksOnInit,!1,!0),t.attachEvents(),t.initialized=!0,t.emit("init"),t.emit("afterInit")),t}},{key:"destroy",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],n=this,r=n.params,a=n.$el,i=n.$wrapperEl,l=n.slides;return"undefined"===typeof n.params||n.destroyed||(n.emit("beforeDestroy"),n.initialized=!1,n.detachEvents(),r.loop&&n.loopDestroy(),t&&(n.removeClasses(),a.removeAttr("style"),i.removeAttr("style"),l&&l.length&&l.removeClass([r.slideVisibleClass,r.slideActiveClass,r.slideNextClass,r.slidePrevClass].join(" ")).removeAttr("style").removeAttr("data-swiper-slide-index")),n.emit("destroy"),Object.keys(n.eventsListeners).forEach((function(e){n.off(e)})),!1!==e&&(n.$el[0].swiper=null,ee(n)),n.destroyed=!0),null}}],[{key:"extendDefaults",value:function(e){se(Re,e)}},{key:"extendedDefaults",get:function(){return Re}},{key:"defaults",get:function(){return De}},{key:"installModule",value:function(t){e.prototype.__modules__||(e.prototype.__modules__=[]);var n=e.prototype.__modules__;"function"===typeof t&&n.indexOf(t)<0&&n.push(t)}},{key:"use",value:function(t){return Array.isArray(t)?(t.forEach((function(t){return e.installModule(t)})),e):(e.installModule(t),e)}}]),e}();Object.keys(Ae).forEach((function(e){Object.keys(Ae[e]).forEach((function(t){Fe.prototype[t]=Ae[e][t]}))})),Fe.use([function(e){var t=e.swiper,n=e.on,r=e.emit,a=z(),i=null,l=null,s=function(){t&&!t.destroyed&&t.initialized&&(r("beforeResize"),r("resize"))},o=function(){t&&!t.destroyed&&t.initialized&&r("orientationchange")};n("init",(function(){t.params.resizeObserver&&"undefined"!==typeof a.ResizeObserver?t&&!t.destroyed&&t.initialized&&(i=new ResizeObserver((function(e){l=a.requestAnimationFrame((function(){var n=t.width,r=t.height,a=n,i=r;e.forEach((function(e){var n=e.contentBoxSize,r=e.contentRect,l=e.target;l&&l!==t.el||(a=r?r.width:(n[0]||n).inlineSize,i=r?r.height:(n[0]||n).blockSize)})),a===n&&i===r||s()}))})),i.observe(t.el)):(a.addEventListener("resize",s),a.addEventListener("orientationchange",o))})),n("destroy",(function(){l&&a.cancelAnimationFrame(l),i&&i.unobserve&&t.el&&(i.unobserve(t.el),i=null),a.removeEventListener("resize",s),a.removeEventListener("orientationchange",o)}))},function(e){var t=e.swiper,n=e.extendParams,r=e.on,a=e.emit,i=[],l=z(),s=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=l.MutationObserver||l.WebkitMutationObserver,r=new n((function(e){if(1!==e.length){var t=function(){a("observerUpdate",e[0])};l.requestAnimationFrame?l.requestAnimationFrame(t):l.setTimeout(t,0)}else a("observerUpdate",e[0])}));r.observe(e,{attributes:"undefined"===typeof t.attributes||t.attributes,childList:"undefined"===typeof t.childList||t.childList,characterData:"undefined"===typeof t.characterData||t.characterData}),i.push(r)};n({observer:!1,observeParents:!1,observeSlideChildren:!1}),r("init",(function(){if(t.params.observer){if(t.params.observeParents)for(var e=t.$el.parents(),n=0;nStuart Daniells\n \n
\n Software Developer
\n Experience
\n 5 Years Working\n Completed
\n 53+ Projects\n Skill-Sets
\n 30+ Hard & vital Soft skills.\n About Me
\n My Introduction\n\n \n\n
\n • Developed algorithms with low time as well as space complexities.
\n • Enforced failsafe countermeasures for data losses and corruption over various databases.
\n • Automated & enhanced company processes by effective software development techniques.
\n • Predicted behavioral performances of data provided for various experiments running.
\n • Synthesizing relevant computed information onto a GUI.
\n • Drove user interactions and conversions to over 10 times its initial launch.
\n • An accomplished JavaScript (MERN stack) as well as Python developer (including all its data analysis libraries).
\n Frontend Developer
\n\n JavaScript
\n Advanced\n React
\n Intermediate\n Java: Spring, Thymeleaf
\n Basic\n BootStrap
\n Basic\n Java Fx
\n Basic\n jQuery
\n Intermediate\n Python GUIs
\n Advanced\n Git & GitHub
\n Advanced\n .NET Windows Forms
\n Basic\n HTML, CSS
\n Intermediate\n Power Apps
\n Intermediate\n Backend Developer
\n\n Python
\n Advanced\n Node.js
\n Intermediate\n MongoDB
\n Intermediate\n PL/SQL
\n Intermediate\n GitHub Actions
\n Basic\n Express.js
\n Intermediate\n MySQL
\n Intermediate\n AWS: EC2, RDS
\n Basic\n YAML
\n Basic\n Java: JDBC
\n Basic\n SQLite
\n Intermediate\n Power Automate
\n Intermediate\n Skills
\n My technical level\n\n Projects
\n What I've built\n\n \n Company
\n
Projects\n \n Experiment Analysis App\n
\n \n
\n \n Personal
\n
Projects\n Personal Projects
\n \n
\n \n College/University
\n
Projects\n College/University Projects
\n \n
\n Portfolio
\n My Personal Journey\n\n Post-Graduation Degree
\n \n
\n Computer Software & Database Development
\n Ontario - Canada\n \n Other qualifications
\n \n India - University\n \n Other education
\n \n Country - University\n \n Bachelor of Engineering
\n \n {/*
*/}\n {/* Electronics & Communication
*/}\n Bengaluru - India\n \n Data Scientist
\n (Permanent Full time)
\n \n {/*
*/}\n AlumaPower Corp.
\n Ontario - Canada\n \n Research Software Developer & Data Engineer
\n (Contract Full time)
\n \n {/*
*/}\n AlumaPower Corp.
\n Ontario - Canada\n \n Research Software Developer & Data Engineer
\n (COOP)
\n \n {/*
*/}\n AlumaPower Corp.
\n Ontario - Canada\n \n Research Software Developer & Data Engineer
\n (PartTime)
\n \n {/*
*/}\n AlumaPower Corp.
\n Ontario - Canada\n \n Research Software Developer & Data Engineer
\n (Internship)
\n \n {/*
*/}\n AlumaPower Corp.
\n Ontario - Canada\n \n Web Master & Data Analysis
\n \n {/*
*/}\n Genne DMCC
\n Bengaluru - India\n \n Solutions Representative Engineer
\n \n {/*
*/}\n Hewlett-Packard Inc.
\n Bengaluru - India\n \n Data Researcher & Analysis
\n \n {/*
*/}\n Team Lead (Intern)
\n Bengaluru - India\n \n My client says
\n Testimonial\n {/*Swiper JS - slider library*/}\n \n \n\n
{title}
\n {relationship}
\n
\n Get in touch
\n Contact Me\n\n Talk to me
\n\n LinkedIn
{/*whats app api*/}\n www.linkedin.com/in/stuart-daniells/\n\n Write Me {/*whats app api*/}\n \n \n Write to me
\n\n {/* ------------------------------ Form section ------------------------------ */}\n \n \n//
src/App.js
and save to reload.\n//