Skip to content

Instantly share code, notes, and snippets.

@DustinWehr
Last active February 10, 2025 21:48
Show Gist options
  • Save DustinWehr/8afbb02a46dd0e000846256cb61618de to your computer and use it in GitHub Desktop.
Save DustinWehr/8afbb02a46dd0e000846256cb61618de to your computer and use it in GitHub Desktop.
{
"basics": {
"name": "Dr. R. Dustin Wehr",
"image": "pro_headshot_cropped_centered.jpg",
"email": "[email protected]",
"phone": "647-238-9539",
"degree": "PhD",
"profiles": [
{
"network": "LinkedIn",
"username": "dustinwehr",
"url": "https://www.linkedin.com/in/dustinwehr/"
},
{
"network": "GitHub",
"username": "DustinWehr",
"url": "https://github.com/DustinWehr"
}
]
},
"work": [
{
"name": "Amazon Web Services (Aurora Serverless team)",
"position": "Software Development Engineer",
"url": "https://aws.amazon.com/rds/aurora/serverless/",
"summary": "Aurora Serverless provides managed replicated MySQL and PostgreSQL services that can vertically autoscale, restart, and patch, all without dropping connections. I worked on the Control Plane team.",
"startDate": "2021-03-22",
"endDate": "2022-05-20",
"highlights": [
"Enhancement, maintenance, and operation of a system managing hundreds of thousands of MySQL and PostgreSQL databases. It is a distributed system with five major service node types, in addition to many AWS services.",
"Contributed to design of the next generation \"heat management\" optimization for Aurora Serverless V2, which is the system that decides where to place Aurora instances on the multi tenant oversubscribed hosts, and what live migrations to do in order to alleviate overloaded hosts. It is a combination of ML for predicting instance resource needs (CPU, memory, network IO) and stochastic/robust mixed integer programming for decisions (with work on a RL agent on the horizon).",
"CI/CD, Unit and integration testing, design docs, code reviews",
"Java for main application. React, Python, shell scripting for dev and ops tools. Ruby for infrastructure-as-code.",
"Regular use of many AWS technologies including Lambda, S3, DynamoDB, CloudWatch/CloudFormation/CodeDeploy, various RDS services, SWF, Step Functions."
]
},
{
"name": "DaGoods Inc.",
"position": "Full stack developer / Co-Founder",
"summary": "Sourcing and selling on online marketplaces (Amazon, Ebay, etc).",
"startDate": "2022-08",
"endDate": "2023-03",
"highlights": [
"Writing custom software, including:<ul><li>A barcode-driven inventory, stocking, and picking app, tailored for the business (stock in many locations, scarce convenient locations, large number of SKUs).<ul><li>Conflict-free, offline-friendly multi-device support, using nothing but an end-user cloud storage provider (Dropbox, Google Drive, etc).</li></ul></li><li>An OCR tool for integrating an integration-unfriendly selling platform into our shipping provider.</li><li>A phone tool that helps with product research specific to business's niche.</li></ul>",
"Product sourcing and selling strategy. More than 200% sales growth during my tenure.",
"Most of the legal and bookkeeping work.",
"Customer service for the Amazon marketplaces (we had 100% positive feedback) and the harder Ebay cases."
]
},
{
"name": "INNOV-8",
"position": "Data Science and AI Engineer",
"disabled_url": "https://stagingcopy.innov-8.ca/",
"summary": "A legal tech startup. There wasn't any AI to do, as my title suggested, but I did fill an assortment of tech needs, getting the company through its first four months. Several e-discovery data collections and basic processing/analyses, including a large one (250TB+) spread over a messy network of a bankrupt company. Helped build the company's knowledge management infrastructure. Helped the team cope with Office 365. Greatly improved the load time of their marketing-team-created website, without breaking the conventions that make it generable from their content management system.",
"startDate": "2020-02-01",
"endDate": "2020-05-01"
},
{
"name": "Legalese",
"position": "Research Engineer and Formal Logic/Languages Specialist",
"url": "https://legalese.com",
"startDate": "2017-08-01",
"endDate": "2019-08-10",
"summary": "R&D lead for the development of open source software and specifications for writing legally binding contracts in formal languages.",
"highlights": [
"Critical role in securing $15 million government/industry/academic collaboration grant for the Centre for Computational Law in Singapore, which opened in mid 2020. Lest there be any uncertainty, by \"critical\" I mean that it would not have happened without me!",
"Designed and implemented the company’s planned-to-be open source DSL for computational legal contracts, with support for testing, model checking, formal verification, scenario exploration, visualization, and some preliminary support for natural language generation and smart contract deployment.",
"Python, Scala, Z3 and other SMTLib2 solvers, Timed Automata solvers, Coq"
]
},
{
"name": "Living Reliability",
"position": "Software Engineering Consultant",
"url": "http://www.livingreliability.com/hven/",
"startDate": "2015-09-01",
"endDate": "2017-09-01",
"summary": "Supervised a modernization of EXAKT, a highly advanced Condition Based Maintenance policy optimizer that was trapped in a legacy Windows C++ codebase. Also worked on integrating it with Living Reliability's Mesh software, a web portal for maintenance operations."
},
{
"name": "First Genesis",
"position": "Software Engineering Consultant",
"url": "http://firstgenesis.com/",
"startDate": "2017-01-01",
"endDate": "2017-01-30",
"summary": "Data processing and analysis for a project at the BP Whiting Refinery. Used my project Structure Together (it made some money!) and Python."
},
{
"name": "Centre for Maintenance Optimization and Reliability Engineering (University of Toronto, MIE Department)",
"position": "Postdoc",
"url": "http://cmore.mie.utoronto.ca/",
"startDate": "2016-09-01",
"endDate": "2016-12-30",
"summary": "Continuation of work on EXAKT (see Optimal Maintenance Decisions job above), but additionally collaborating with the principal statistician and academic engineers responsible for its methods."
},
{
"name": "VSVSVS",
"position": "Software Developer / Machine Learning Consultant",
"url": "https://vsvsvs.org",
"startDate": "2016-07-01",
"endDate": "2016-08-01",
"summary": "LSTM recurrent neural net project for an art exhibit. I generated a fake group chat stream from years of the client art collective's WhatsApp group chat conversations. Used PyTorch."
},
{
"name": "Sortable",
"position": "Software Developer",
"url": "https://www.linkedin.com/company/sortable/",
"startDate": "2013-01-01",
"endDate": "2013-08-30",
"summary": "Built novel TV and movie recommendation sites. Hired with raise after internship, but only for a few months as I had to return to graduate studies.",
"highlights": [
"Data Science, Scala, HTML/Javascript, Python, PostgreSQL",
"https://www.pcworld.com/article/2044340/televisor-is-your-personalized-tv-critic-for-streaming-shows.html"
]
},
{
"name": "University of Toronto",
"position": "Lecturer",
"disabled_url": "http://web.cs.toronto.edu/",
"startDate": "2015-01-01",
"endDate": "2015-04-30",
"summary": "Introduction to the Theory of Computation (CSC236), a second-year proof-based course. Both this course and the previous year's course (below) involved managing teams of teaching assistants, and working closely with other lecturers, both in-person and remote."
},
{
"name": "University of Toronto",
"position": "Lecturer",
"disabled_url": "http://web.cs.toronto.edu/",
"startDate": "2014-01-01",
"endDate": "2014-04-30",
"summary": "Introduction to Computer Science (CSC148). We used Python 3."
},
{
"name": "Self-employed",
"position": "Tutor for various undergraduate CS courses",
"startDate": "2015-03-01",
"endDate": "2017-08-01",
"summary": "Easy money."
},
{
"name": "Nature's For You",
"position": "Web Developer",
"url": "https://naturesforyou.com/",
"startDate": "2015-01-01",
"endDate": "2017-09-01",
"summary": "Fixed various problems / made various improvements on a BigCommerce e-commerce site. This was for a relative of a friend."
},
{
"name": "University of Toronto",
"position": "Some Graduate Studies...",
"endDate": "2015-01-01",
"startDate": "2008-09-01",
"highlights": [
"See elsewhere in this resume for publications",
"Presented my proof of a conjecture made by Anna Gál, Michal Koucký, and Pierre McKenzie in their 2008 journal paper “Incremental Branching Programs” at the BIRS workshop “Computational Complexity”, August 1-6, 2010. Writeup for the proof: https://arxiv.org/abs/1101.2705.",
"Solved an open problem in the summer preceding graduate school that had four brilliant complexity theorists stumped for a while (lower bound for fractional pebbling trees).",
"Did a well-received project for Professor Geoffrey Hinton's Machine Learning graduate course, where my partner and I made some modest, but definite and transferable, improvements on the groundbreaking recommendation system work of Ruslan Salakhutdinov, Andriy Mnih, and Geoffrey Hinton that kicked off the Deep Learning boom. Final writeup for the project: https://www.cs.toronto.edu/~wehr/ restricted_boltzmann_machines_netflix_CSC2515report.pdf",
"Gave a two-hour lecture on Software Transactional Memory for the graduate course Advanced Distributed Computing. I am well informed on the theory up till that date (over five years ago)."
]
},
{
"name": "University of Toronto",
"position": "Teaching Assistant",
"disabled_url": "http://web.cs.toronto.edu/",
"startDate": "2008-09-01",
"endDate": "2015-04-30",
"summary": "Held several teaching assistantships throughout my graduate studies, all of which I was encouraged to repeat.",
"highlights": [
"Computability and Logic, graduate/undergraduate, multiple semesters",
"Computational Complexity and Computability, multiple semesters",
"Introduction to Computational Complexity, graduate",
"Principles of Programming Languages",
"Introduction to Theory of Computing, multiple semesters",
"Help Centre for all CS courses, multiple semesters"
]
},
{
"name": "McGill, Software Evolution and Verification Lab",
"position": "Student Researcher",
"startDate": "2007-05-01",
"endDate": "2007-08-30",
"summary": "Work on a prototype programming language, developed by Professor Brigitte Pientka, for writing provably-correct programs, especially complex syntax-manipulating programs such as compilers. Programming in SML and the logic-programming language Twelf."
},
{
"name": "McGill, CS Department",
"position": "Teaching Assistant",
"startDate": "2006-06-01",
"endDate": "2007-12-30",
"summary": "Held several teaching assistantships throughout my undergraduate studies. This is fairly common since the surge in CS enrollment, but was quite rare back then.",
"highlights": [
"Logic and Computability, multiple semesters",
"Principles of Statistics I"
]
},
{
"name": "McGill, Centre for Intelligent Machines",
"position": "Student Researcher",
"startDate": "2006-05-01",
"endDate": "2006-08-30",
"summary": "Recommendation systems research, supervised by Professor Greg Dudek. Programming mostly in MatLab."
},
{
"name": "U.S. Airforce Research Lab at Wright Patterson Air Force Base",
"position": "Student Research Assistant",
"startDate": "2005-06-01",
"endDate": "2005-08-30",
"summary": "",
"highlights": [
"Worked on techniques for data mining of (primitive, by today’s standards!) social networks that depict e.g. communication relationships between possible terrorists.",
"Software for processing and viewing/analyzing data from experiments that involved groups of military personnel interacting in a virtual space.",
"Python, Java"
]
},
{
"name": "U.S. Airforce Research Lab at Wright Patterson Air Force Base",
"position": "Student Research Assistant",
"startDate": "2004-05-01",
"endDate": "2004-09-05",
"summary": "In the Electrical Technology and Plasma Physics Branch.",
"highlights": [
"Performed experiments related to improving techniques for growing (in a plasma reactor) thin diamond films by boron doping.",
"Wrote some code for Dr. Alan Garscadden for losslessly converting image files created by some old lab equipment to a standard format."
]
}
],
"projects": [
{ "name": "NoLockin (in progress)",
"description": "An ambitious approach to writing certain kinds of extremely portable software components. The most notable feature is that programming languages are abstracted to some extent. Can be thought of as a non-academic approach to model-driven engineering.\nPrototype written in Python."
},
{
"name": "Where's My Stuff? (backburner)",
"description": "An (optionally) voice-controlled, offline-first, web-based collaborative (multi-user) inventory, built at first for my own use for organizing my things and trading/selling/gifting found things. The currently deployed prototype uses the prohibitively-expensive (at scale) Firebase for backend. Will merge this with the DaGoods Inventory app in the future, which uses a free user-friendly self-owned backend. Prototype written in Typescript, HTML.",
"url": "https://wheremystuff.web.app/",
"type": "application",
"older-description": "An (optionally) voice-controlled, offline-first, web-based collaborative inventory, built at first for my own use for organizing my things and trading/selling/gifting found things. Current deployed prototype uses the prohibitively-expensive (at scale) Firebase for backend. Version in-progress has a cute serverless application architecture that I would release separately if I find that it's sufficiently useful. It will use AWS S3, Lambda, and possibly Cognito for *all* server needs (taking advantage of the aforementioned serverless architecture). Prototype written in Javascript, HTML.",
"removed": "Next after that will use P2P (e.g. Secure Shuttlebutt) when possible. (possibly as a NoLockin module; see below)"
},
{
"name": "Structure Together (backburner)",
"description": "Still the most advanced realtime-collaborative Structure Editor, as far as I know. I made it for Logic for Progress, but I have not given it the polishing and publicity that it deserves. This includes my best front-end work, so if that interests you let me know, and I'll put some time into porting it from the discontinued Google Realtime API to Firebase. TypeScript, HTML, React, Google Closure Compiler, Webpack.",
"url": "https://github.com/DustinWehr/StructureTogether",
"type": "application"
},
{
"name": "Mingaling (completed, discontinued)",
"description": "First-of-its kind browser extension for practicing vocabulary of a second language while reading text in one's primary language, by substitution of selected words. There were a few thousand users at some point, despite no attempt made to advertise it. Mozilla appears to have dumped the old use statistics, but I can still see the review distribution (all 5 stars, 19 reviews). Review from a language learning site: MINGALING_REVIEW. A successful current commercial effort: https://chrome.google.com/webstore/detail/toucan-language-learning/lokjgaehpcnlmkebpmjiofccpklbmoci. JavaScript, HTML, AJAX.",
"type": "application",
"unused-summary": "First-of-its kind browser extension for lazy language learners. The basic idea: by interfacing with the Google Translate API (no longer free, which is one of the reasons Mingaling is no longer maintained), the user (say, an English speaker learning Spanish) can select English words/phrases while browsing, which stores them in a personal translation dictionary, and thereafter well-chosen occurrences of those words/phrases get replaced by the Spanish translation in pages the user reads. Each block of Spanish text is highlighted, and a tooltip is attached so that when the user hovers their cursor over the block, the original English text is revealed. This is a good, currently-supported implementation of the same idea, which I am <i>not</i> involved with: https://chrome.google.com/webstore/detail/gloss-learn-languages.",
"unused-technologies": ["Javascript","HTML","AJAX"]
}
],
"volunteer": [
{
"organization": "Charity Intelligence",
"position": "Web Developer",
"url": "https://charityintelligence.ca",
"startDate": "2017-02-01",
"endDate": "2018-03-01",
"summary": "Made various improvements to the Charity Intelligence website, including a major feature to inform donors about higher performing charities that are similar to the one they are reading about."
},
{
"organization": "Logic for Progress",
"position": "CEO/Cofounder",
"url": "http://logicforprogress.com/",
"startDate": "2015-05-01",
"endDate": "2017-08-01",
"summary":"Logic for Progress is a registered non-profit that aims to advance the quality of deliberation on contentious social issues, in part by leveraging the exceptionally high standards of formal deductive logic. The approach helps to \"cut through the noise\" to find the fundamental sources of disagreement, even for some highly contentious issues, while also helping to avoid the pitfalls of reductionist mathematical modeling typical of e.g. economics and game theory, and the manipulability of popular statistical methods. Continuation and implementation of my PhD work.",
"disabled-highlights": [
"Update Dec 2020: Currently in preliminary talks with Innocence Canada, where my cofounder Laura Simon is articling, about applying our work in the context of wrongful conviction, specifically in applications for post-conviction ministerial review.",
""
]
}
],
"awards": [
{"title":"Volunteer of the Year",
"awarder":"Charity Intelligence",
"date": "2017-01-01"
},
{"title":"Postgraduate Scholarship M",
"awarder": "NSERC",
"date": "2008-09-01",
"summary": "Sep 2008 - Sep 2010 (renewed once)"
},
{"title":"Helen Sawyer Hogg Award",
"awarder":"University of Toronto CS Department" ,
"date":"2008-09-01",
"summary": "Graduate entrance scholarship"
},
{"title":"Science Undergraduate Research Award",
"awarder": "McGill Faculty of Science",
"date":"2007-05-01",
"summary":"Summer 2007"
},
{"title":"Undergraduate Student Research Award",
"awarder":"NSERC / McGill",
"summary":"Summer 2006",
"date":"2006-05-01"
},
{"title":"Hugh Brock Scholarship",
"summary":"Undergraduate entrance scholarship, 2004 - 2008",
"awarder": "McGill",
"date":"2004-09-01"
}
],
"education": [
{
"institution": "University of Toronto",
"area": "Computer Science",
"studyType": "PhD/MSc",
"startDate": "2008-09-01",
"endDate": "2015-01-01",
"courses": [
"Advanced Distributed Computing",
"Machine Learning",
"Algorithm Design, Analysis and Theory",
"Theory of Distributed Computing",
"Fundamentals of Cryptography",
"Algorithms for Solving Propositional Theories",
"Complexity Theory",
"Topics in Knowledge Representation and Reasoning"
]
},
{
"institution": "McGill University",
"area": "Computer Science",
"studyType": "BSc",
"startDate": "2004-09-01",
"endDate": "2008-05-01",
"courses": [
"Probabilistic Reasoning and Artificial Intelligence",
"Formal Verification",
"Probabilistic Analysis of Algorithms",
"Automated Reasoning",
"Language-Based Security",
"Algorithm Design Techniques",
"Theoretical Programming Languages"
]
}
],
"publications": [
{ "name": "Packing Two Circles with One Cut by a Chord",
"url": "https://www.researchgate.net/publication/350439911_Packing_Two_Circles_with_One_Cut_by_a_Chord_Wehr's_Fundamental_Theorem_of_Circles",
"summary": "Computer-assisted resolution of a 55-year old open problem in elementary recreational geometry: What is the smallest square that can fit two unit circles, one of which is cut in two by a chord?\nNOTE abstract and introduction are silly, but the proof is legit.",
"releaseDate": "2021-03-28"
},
{ "name": "Errors in Bostrom/Kulczycki Simulation Arguments",
"url": "http://www.cs.toronto.edu/~wehr/rd/simulation_args_crit_extended_with_proofs.pdf",
"summary": "Demonstrated that Bostrom et. al.'s Simulation Arguments, including the \"patched\" ones, have errors that result in inconsistent and greatly misleading glosses (implying, for example, that 1 is \"vastly greater than\" 989,901). Gave corrected, rigorous, necessarily-less-impressive versions of the arguments.",
"releaseDate": "2017-02-12"
},
{ "name": "PhD Thesis: Rigorous Deductive Argumentation for Socially Relevant Issues",
"url": "https://www.cs.toronto.edu/~wehr/thesis/index.html",
"publisher": "University of Toronto Press",
"summary": "Laid out a program for how formal logic can be used, in an interactive environment and in combination with natural language, to improve deliberation and debate on questions that formal logic and mathematics are usually thought unsuitable for: those involving significant vagueness, subjectiveness, and uncertainty.",
"releaseDate": "2015-01-30"
},
{ "name": "Challenges and Examples of Rigorous Deductive Reasoning About Socially-Relevant Issues",
"url": "https://www.cs.toronto.edu/~wehr/resume/TIL.pdf",
"summary":"Roughly a small fraction of PhD Thesis",
"publisher": "Trends in Logic XIV",
"releaseDate": "2014-05-01"
},
{
"name": "Pebbles and Branching Programs for the Tree Evaluation Problem",
"summary" : "Stephen A. Cook, Pierre McKenzie, Dustin Wehr, Mark Braverman, Rahul Santhanam",
"publisher": "ACM Transactions on Computation Theory",
"url": "https://www.cs.toronto.edu/~wehr/resume/TCT.pdf",
"releaseDate": "2010-05-01"
},
{
"name": "Branching Programs for Tree Evaluation",
"summary" : "Mark Braverman, Stephen A. Cook, Pierre McKenzie, Rahul Santhanam, Dustin Wehr",
"publisher": "Mathematical Foundations of Computer Science",
"releaseDate": "2009-01-01",
"url": "https://www.cs.toronto.edu/~wehr/resume/MFCS.pdf"
},
{
"name": "Fractional Pebbling and Thrifty Branching Programs",
"summary" : "Mark Braverman, Stephen A. Cook, Pierre McKenzie, Rahul Santhanam, Dustin Wehr",
"publisher": "IARCS Annual Conference on Foundations of Software Technology and Theoretical Computer Science",
"releaseDate": "2008-12-15",
"url": "https://www.cs.toronto.edu/~wehr/resume/FSTTCS.pdf"
}
],
"skills": [
{
"name": "Highlighted Knowledge",
"keywords": [
"OOP", "AWS", "Distributed Computing", "Linux", "Web Applications", "React", "HTML/CSS", "Automated Theorem Proving", "Formal Specification and Verification", "Algorithms", "Language Design", "Bayesian Statistics", "Neural Networks"
]
},
{
"name": "PLs (fluent)",
"keywords": [
"Java", "Python", "Scala", "TypeScript"
]
},
{
"name": "PLs (familiar or rusty)",
"keywords": [
"C", "Kotlin", "Ruby", "TLA+/PlusCal", "SML", "C++", "Mathematica", "MatLab"
]
},
{
"name": "Advanced Knowledge",
"keywords": [
"AWS", "Algorithms", "Formal Logic", "Language Design", "Automated Theorem Proving", "Formal Specification", "Computational Complexity Theory", "Bayesian Reasoning", "Formal Verification"
]
},
{ "name": "Solid Knowledge",
"keywords":["Linux", "Web Applications", "React", "HTML/CSS", "Neural Networks"]
}
],
"references": [
{
"name": "Meng Wong | Cofounder/Director of Legalese | [email protected] | https://www.linkedin.com/in/mengwong"
},
{
"name": "Kate Bahen | Managing Director of Charity Intelligence | [email protected] | https://www.linkedin.com/in/kate-bahen-28993511"
},
{
"name": "Murray Wiseman | Founder of Optimal Maintenance Decisions (OMDEC) | [email protected] | http://www.livingreliability.com/hven/?p=193"
},
{
"name": "Professor Alasdair Urquhart | PhD advisor | [email protected] | https://en.wikipedia.org/wiki/Alasdair_Urquhart"
},
{
"name": "Professor Steve Cook | PhD advisor | [email protected] | https://amturing.acm.org/award_winners/cook_n991950.cfm"
}
]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment