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","var camel2hyphen = function (str) {\n return str\n .replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n })\n .toLowerCase();\n};\n\nmodule.exports = camel2hyphen;","// 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 + \".\" + \"1d602832\" + \".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__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","var inProgress = {};\nvar dataWebpackPrefix = \"personalsite:\";\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[\"webpackChunkpersonalsite\"] = self[\"webpackChunkpersonalsite\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import './styles/Typewriter.css';\r\n\r\n\r\nfunction Typewriter() {\r\n\r\n return (\r\n From the dark skies of Oslo to the tech dreams of Seattle, I've sought out new challenges.\r\n Each country I've called home represents a distinct chapter of my life, with unique experiences, projects and learnings to look back on.\r\n You can view each of these chapters below.\r\n 1996 to 2017 2017 to 2021 2021 to 2025 May 2024 - Current As co-founder and acting CTO of Atrieon at PSL, I've pioneered a revolutionary agentic orchestration platform that transforms how organizations manage complex projects, workflows and teams of AI Agents. Built to manage Agents from the ground up, Atrieon leverages cutting-edge AI to autonomously coordinate tasks, resources, and teams with unprecedented efficiency. May 2020 - May 2024 My work on the PROSE team represents the culimation of my dream to advance the state of the art \r\n in artificial intelligence. Throughout the years I have been exposed to the intricacies of the research methodology\r\n alongside cutting edge artificial intelligence techniques, and have worked alongside some of the best researchers in the world.\r\n The COVIDWA.com project began 7 days after I'd moved to the United States to help people find appointments for COVID-19 vaccines. The senior citizens of Washington had been thrown into a free-for-all, \r\n expected to search thousands of websites individually for rapidly-closing appointments. We automated this process helping over 1,000,000 people directly and an additional 2,500,000 through our API.\r\n A few learnings from this project are called out below:\r\n May 2024 - Onwards Leveraging my extensive startup experience, I'm driving innovation within Microsoft's Azure Synapse team, focusing on enterprise-scale machine learning solutions that mirror the agility and performance demands of high-growth startups. The AI-Tutor project combined the power of modern Large-Language Models and Program Synthesis technology with verification via assignment unit-tests. \r\n Using a combination of code repair providers, the project repairs the student's code, finds an explaination for the repair, and then turns that explaination\r\n into a \"hint\" rather than a direct guideline in line with supporting pedagogy. \r\n In an effort to reduce the load that emails put on a C-Suite employee, the email assistant reads and creates draft replies for all incoming emails for a GMail account. \r\n The user can then accept, edit, or decline to reply with any of the drafts. The user can also add configuration parameters such as \"I'm very busy today\" which will modify\r\n the draft emails accordingly.\r\n Multi-modal program synthesis refers to the task of synthesizing programs (code) from their specification given in different forms,\r\n such as a combination of natural language and examples.\r\n Examples provide a precise but incomplete specification, and natural language provides an ambiguous but more \"complete\" task description.\r\n September 2019 - May 2020 Formed on account of winning Microsoft's Annual Hackathon. The People Intelligence team was my first foray into creating an entirely new production grade product with a greenfield team.\n Above all, this team taught me the prime importance of who you work with, rather than what it is you work on. Together, my small team and I \n prototyped several AI experiences embedded within Microsoft's \"Office\" ecosystem. \n In collaboration with Norwegian Red Cross, this project aimed to reduce the manual labour and delay time involved in \n collating, predicting, and responding to outbreaks of infectious diseases in third world countries.\n To promote more effective remote work, this project developed an auto-detection for people’s most active working time \n segment utilising telemetry from several Microsoft products. This project was funded by senior leadership and I became a founding member\n of a new feature team.\n September 2017 - August 2019 My first role at Microsoft involved building and maintaining a highly performant and highly available REST API to serving Profile and Image data,\n supporting the vast majority of Microsoft internal products. Here I focused on \n September 2014 - September 2017 \n Where it all began. My final year thesis focused on the intersection of Neural and Bayesian networks applied to the domain of Road Safety.\n Combining these models into a production application, I built the infrastructure to plot the safest routes between destinations.\n Generates a “shuffle” of songs based on the current context of songs the user is listening to and utilises decision trees\n to queue similar songs in the playlist to reduce the variation between tracks, e.g. hiphop would not follow classical.\n Proposed a new Bayesian-neural network hybrid machine learning technique which combines the transparency and ease of \n computation of Bayesian networks with the advanced learning methodologies of neural networks. This hybrid model can predict \n road accidents with 85% accuracy.\n Hey, I'm Dan
\r\n Welcome to my portfolio
\r\n My Journey
\r\n \r\n \r\n Swipe to scroll\r\n
\r\n ) : (\r\n \r\n Change flag to scroll\r\n
\r\n )}\r\n\r\n
animateCarouselImages(0)}alt=\"Snow\"/>\r\n
animateCarouselImages(1)} alt=\"Forest\"/>\r\n
animateCarouselImages(2)} alt=\"Mountains\"/>\r\n
\r\n
Atrieon.AI
\r\n
Co-Founder & Acting CTO
Pioneer Square LabsAtrieon.ai | Co-Founder & Acting CTO | Pioneer Square Labs
\r\n \r\n
\r\n \r\n
Program Synthesis
\r\n
Research & Engineering
Software Engineer IISoftware Engineer & Tech Lead | Program Synthesis Research & Engineering
\r\n \r\n
\r\n \r\n
CovidWA.com
\r\n
Co-FounderCo-Founder | Scraper Tech | Covidwa.com News & Testimonials
\r\n \r\n
\r\n \r\n
Azure Synapse
\r\n
Engineer
Microsoft Engineer | Azure Synapse | Microsoft
\r\n \r\n
\r\n \r\n
AITutor
\r\n
Tech Lead
Microsoft ResearchAITutor | Tech Lead | Microsoft Research
\r\n \r\n
\r\n \r\n
Email Assistant | Team Lead | Fixie Hackathon
\r\n Email Assistant | Team Lead | Fixie Hackathon
\r\n \r\n
Multi-modal program inference: a marriage of pre-trained language models and component-based synthesis
\r\n Multi-modal program inference: a marriage of pre-trained language models and component-based synthesis
\r\n \n
People Intelligence
\n
Software Engineer IISoftware Engineer II | People Intelligence
\n \n
\n \n
Community-Based Surveillance
\n
Data ProcessingCommunity-Based Surveillance | Data Processing | Red Cross Project
\n \n
\n \n
Remote Collaboration
\n
Active-Working HoursRemote Collaboration: Active-Working Hours
\n \n
People Infrastructure
\n
Software EngineerSoftware Engineer | People Infrastructure
\n
\n Over 1,000,000,000 Users Served!\n \n
\n \n
BSc Computer Science
\n
Valedictorian, Class of 2017BSc Computer Science | Valedictorian, Class of 2017
\n \n
\n \n
ContextualShuffle
\n
Tech Lead ContextualShuffle | Tech Lead | Devpost
\n \n
On Making Sense of Neural Networks in Road Analysis
\n On Making Sense of Neural Networks in Road Analysis
\n My Profiles
\r\n \r\n Download Resume\r\n \r\n