{"version":3,"sources":["components/Navbar.js","Home/Home.js","About/About.js","components/GithubCard.js","Projects/Projects.js","Research/Research.js","App.js","serviceWorker.js","index.js"],"names":["Navbar","props","id","className","to","alt","src","style","color","href","target","type","rel","data-target","Home","About","GithubCard","image","title","content","githubLink","appLink","appLinkButton","Projects","Research","class","ScrollToTop","pathname","useLocation","useEffect","window","scrollTo","App","elems","document","querySelectorAll","M","Sidenav","init","exact","path","component","Component","Boolean","location","hostname","match","ReactDOM","render","StrictMode","getElementById","navigator","serviceWorker","ready","then","registration","unregister","catch","error","console","message"],"mappings":"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","file":"static/js/main.7a8fde2c.chunk.js","sourcesContent":["import React from 'react';\r\nimport { NavLink } from 'react-router-dom';\r\n\r\nconst Navbar = (props) => {\r\n return(\r\n
\r\n Data engineer and back‑end web developer with professional experience that includes building data processing pipelines for NASA missions and\r\n leading the development of scientific software products from idea to market. I enjoy writing self‑explanatory code to achieve meaningful technical\r\n goals that improve the bottom line. I offer freelance coding services in my spare time under the Colorado‑registered Castle Scientific LLC.\r\n
\r\n\r\n I graduated from the University of Colorado in 2016, where I completed both my B.A. and M.S. in Physics. My research concentration in graduate school was in experimental ultrafast optics, which deals with optical pulses which are extremely temporally short (shorter than 10-12 seconds).\r\n
\r\n\r\n After completing my studies at the University of Colorado, I worked in the optics industry as the Head of Product Development at Crunch Technologies in Boulder, Colorado. designing and building software for use by both optics production facilities and research institutions. Since deciding to focus on software, I have been able to leverage my graduate studies experiences as an optical hardware developer and researcher to design and develop user-friendly tools utilized by research institutions across the globe. \r\n
\r\n\r\n I am currently helping to build and maintain data processing pipelines for NASA missions at the Laboratory for Atmospheric and Space Physics (LASP). The primary mission that I work on is known as the Total and spectral Solar Irradiance Sensor (TSIS-1), which consists a pair of instruments mounted on the International Space Station that perform daily measurements of the Sun's activity. These measurements are then processed and corrected by engineers at LASP (including myself) into scientific data products that provide climate researchers with critical insights into the Sun's influence on Earth's various systems. Additionally, I offer freelance coding services in my spare time under the Colorado-registered Castle Scientific LLC. \r\n
\r\n\r\n My hobbies outside of coding include hiking, skiing, backpacking, playing piano and reading about history - in particular, my favorite topics right now are the late Roman Republic and the Cold War.\r\n
\r\n{content}
\r\n\r\n In graduate school, I performed research in experimental ultrafast optics, which essentially deals with optical pulses which are extremely temporally short, i.e. ultrashort pulses (less than 10-12 seconds). I conducted my research at the University of Colorado under the direction of Prof. Thomas Schibli.\r\n
\r\n\r\n Note: I have included sections from my master's thesis - available for download at the bottom of this page - that pertain to these concepts in parentheses, in case you would like more details about a particular topic.\r\n
\r\n\r\n Ultrashort pulses are often generated by lasers thorugh a process known as \"mode locking\" (2.2.1). Ultrashort pulses are the shortest man-made events ever created, therefore, they are useful for a wide range of applications which include frequency metrology, specturally-pure microwave generation and spectroscopy (1.1). This is because, in order to make a time-measurement of an event, you need a \"clock\" which has a precision shorter than the event to be measured. Here's a hypothetical scenario to explain this concept: imagine taking a roadtrip from Denver, CO to Vancouver, BC. According to Google Maps, this trip takes 21 hours and 57 minutues (assuming the Canadian border guards know you're an important scientist, in which case they, of course, just wave you through the border checkpoint in no-time). A typical car's digital clock has one minute of percision, so when you time the trip with your car's clock, you should obtain a time measurement of the trip that is close to 21 hours and 57 minutes. Great! Our hypothetical car's clock is plenty percise enough to accurately measure the length of this drive.\r\n
\r\n\r\n However, now imagine that you are bored on this trip while driving across Southern Idaho and decide to use the car's clock to measure the time to travel between the white dashed lines in the center of the highway. You are traveling at Southern Idaho driving speed (~70 mph, depending on your tolerence for speeding tickets) and the lines are ~30 feet apart, so the time it takes to get from one line to the next is: 30 ft ⁄ 70 mph = ~.29 seconds. This is far, far less than the one minute percision of your car's clock, so the measurement you get is either 0 minutes or 1 minute (if the minute happens to tick within that .29 seconds). Obviously, both of these answers are very wrong, which demostrates that in order to accurately measure this event, we would need a timing device with a much greater percision than one minute (like maybe an atomic clock). This concept is the crux of why ultrashort pulses are so useful for measurements of events which occur on very short time scales, such as atomic transitions (1.1.3).\r\n
\r\n\r\n Another implementation of ultrashort pulses which is useful for a wide-range of applications is the generation of \"frequency combs\". Frequency combs get their name from the fact that they look like a hair comb in the frequency domain, where each tooth of the comb represents a different frequency (represented by different colors in the figure below). If the frequency comb is properly stabilized, the comb can be used to measure arbitrary frequencies of light (1.1).\r\n
\r\nA frequency comb is essentially the frequency-domain picture of an ultrashort pulse. FT stands for \"Fourier Transform\", which is the mathematical operation which takes the description of the pulse from the time domain (left) to the frequency domain (right).\"
\r\nFrequency combs can also be used to improve the precision of metrologic and spectroscopic instruments. For example, frequency combs can be used to stabilize astronomical spectrometers - potentially allowing astronomers in the near future to precisely determine the red shift of far-away celestial objects. These measurements would allow scientists to either vindicate or repudiate the Theory of Dark Energy. An example of such a setup is shown below.
\r\nAstronomical spectrometer calibration setup. From the Nature Photonics article \"Combs for Dark Energy\" by T.R. Schibli.
\r\nMy thesis work revolved around creating a method to stabilize the repetition rate of these light pulses, fr, which is the inverse of the period between the emitted pulses. There are several methods (3.1.3) which existed prior to this, but in my method (3.2), I sought to reduce the complexity of these established techniques. The method presented in my thesis was ultimately successful in reducing the timing jitter (which quantifies the degree of fluctuation, or noise, in the repetition rate) by at least four-fold from 100 Hz to 10 MHz.
\r\n \r\n