About me
Currently, I am a Ph.D. candidate at the University of Arizona in the Applied Math Graduate Interdisciplinary Program (GIDP). I received a master’s degree in math from Brigham Young University (BYU) in 2016. I have a wife and three children.
Research
Broadly I am interested in stochastic modeling. Currently I am studying data-driven models and model reduction. For my master’s thesis. I studied the steady state configuration of a small group of cells connected by cadherin sites.
Current Research Project
From power grids to epidemics, scientists and engineers use mathematical models to simulate, predict, and control complex systems. Traditionally, such models are often derived from first principles. For example, to model the weather, one might start with the relevant physical laws and derive a mathematical model (in the form of large systems of differential equations). Such models are built on clear conceptual foundations and can achieve great accuracy when all the relevant physical principles are known. But they often require resolving small-scale details in order to make accurate predictions. Again using weather as an example, for regional weather forecasting, it may be necessary to resolve variations in temperature, pressure, etc., down to a scale of kilometers, even when the modeler is only interested in large-scale weather patterns. This makes first-principles models sometimes very expensive to use. Moreover, they may require variables that are hard to measure, and very often not all relevant physics are completely understood. As a complementary approach, many modelers have turned to machine learning (ML), which uses general mathematical models with many tunable parameters, which are adjusted to optimally fit available data. The fitting, or training, of the model can be computationally expensive, but need only be done once; the resulting, more efficient model can be used repeatedly. However, machine-learned models can be opaque and hard to interpret.
To retain the interpretability of first-principles models and the efficiency of ML, there is currently much effort in the computational science and engineering community in a combined approach: start with a “rough” first-principles model of only the features of interest, then leverage the power of ML to incorporate the dynamical effects of fine-scale features. Such a combined approach has been shown to be effective in a variety of test problems. However, to make these methods practical, there are numerous challenges to overcome. One is that these ML-assisted models may not be robust or stable: they can give unrealistic outputs when inputs are only varied slightly. Another issue is that the training process may be computationally costly.
I am using a novel combination of ideas from signal processing, modern numerical linear algebra, and statistical mechanics to address these challenges. Specifically, I am designing methods to pre-process data so as to accelerate model training. Since this issue arises in many applications of ML to so-called time series data, this work can be expected to impact many applications. Robustness and stability, too, are general issues for many ML problems, and I expect my work to improve the practical utility of these methods and, at the same time, lead to a deeper mathematical understanding of these issues.
About this website
This is the front page of a website that is powered by the academicpages template and hosted on GitHub pages. GitHub pages is a free service in which websites are built and hosted from code and data stored in a GitHub repository, automatically updating when a new commit is made to the respository. This template was forked from the Minimal Mistakes Jekyll Theme created by Michael Rose, and then extended to support the kinds of content that academics have: publications, talks, teaching, a portfolio, blog posts, and a dynamically-generated CV. You can fork this repository right now, modify the configuration and markdown files, add your own PDFs and other content, and have your own site for free, with no ads! An older version of this template powers my own personal website at stuartgeiger.com, which uses this Github repository.
A data-driven personal website
Like many other Jekyll-based GitHub Pages templates, academicpages makes you separate the website’s content from its form. The content & metadata of your website are in structured markdown files, while various other files constitute the theme, specifying how to transform that content & metadata into HTML pages. You keep these various markdown (.md), YAML (.yml), HTML, and CSS files in a public GitHub repository. Each time you commit and push an update to the repository, the GitHub pages service creates static HTML pages based on these files, which are hosted on GitHub’s servers free of charge.
Many of the features of dynamic content management systems (like Wordpress) can be achieved in this fashion, using a fraction of the computational resources and with far less vulnerability to hacking and DDoSing. You can also modify the theme to your heart’s content without touching the content of your site. If you get to a point where you’ve broken something in Jekyll/HTML/CSS beyond repair, your markdown files describing your talks, publications, etc. are safe. You can rollback the changes or even delete the repository and start over – just be sure to save the markdown files! Finally, you can also write scripts that process the structured data on the site, such as this one that analyzes metadata in pages about talks to display a map of every location you’ve given a talk.
Getting started
- Register a GitHub account if you don’t have one and confirm your e-mail (required!)
- Fork this repository by clicking the “fork” button in the top right.
- Go to the repository’s settings (rightmost item in the tabs that start with “Code”, should be below “Unwatch”). Rename the repository “[your GitHub username].github.io”, which will also be your website’s URL.
- Set site-wide configuration and create content & metadata (see below – also see this set of diffs showing what files were changed to set up an example site for a user with the username “getorg-testacct”)
- Upload any files (like PDFs, .zip files, etc.) to the files/ directory. They will appear at https://[your GitHub username].github.io/files/example.pdf.
- Check status by going to the repository settings, in the “GitHub pages” section
Site-wide configuration
The main configuration file for the site is in the base directory in _config.yml, which defines the content in the sidebars and other site-wide features. You will need to replace the default variables with ones about yourself and your site’s github repository. The configuration file for the top menu is in _data/navigation.yml. For example, if you don’t have a portfolio or blog posts, you can remove those items from that navigation.yml file to remove them from the header.
Create content & metadata
For site content, there is one markdown file for each type of content, which are stored in directories like _publications, _talks, _posts, _teaching, or _pages. For example, each talk is a markdown file in the _talks directory. At the top of each markdown file is structured data in YAML about the talk, which the theme will parse to do lots of cool stuff. The same structured data about a talk is used to generate the list of talks on the Talks page, each individual page for specific talks, the talks section for the CV page, and the map of places you’ve given a talk (if you run this python file or Jupyter notebook, which creates the HTML for the map based on the contents of the _talks directory).
Markdown generator
I have also created a set of Jupyter notebooks that converts a CSV containing structured data about talks or presentations into individual markdown files that will be properly formatted for the academicpages template. The sample CSVs in that directory are the ones I used to create my own personal website at stuartgeiger.com. My usual workflow is that I keep a spreadsheet of my publications and talks, then run the code in these notebooks to generate the markdown files, then commit and push them to the GitHub repository.
How to edit your site’s GitHub repository
Many people use a git client to create files on their local computer and then push them to GitHub’s servers. If you are not familiar with git, you can directly edit these configuration and markdown files directly in the github.com interface. Navigate to a file (like this one and click the pencil icon in the top right of the content preview (to the right of the “Raw | Blame | History” buttons). You can delete a file by clicking the trashcan icon to the right of the pencil icon. You can also create new files or upload files by navigating to a directory and clicking the “Create new file” or “Upload files” buttons.
Example: editing a markdown file for a talk
For more info
More info about configuring academicpages can be found in the guide. The guides for the Minimal Mistakes theme (which this theme was forked from) might also be helpful.