Work Experience
Founding Engineer
– Present
Some of the bigger things I've worked on:
- Took our background actions project from 50 to 100%, with a focus on correctness (introducing idempotency into our retryable bits) and infrastructure (booting up a new temporal cluster).
- Created an automated, zero-downtime migration for moving customers between database storage strategies.
- Migrated our monorepo from yarn to pnpm.
- Swapped out Monaco for CodeMirror, along with creating our own language server and LSP client to provide autocompletion, diagnostics, and all the things you'd expect out of an advanced editor.
- Load testing scenarios using Grafana's k6
- Added a scheduling trigger for Gadget actions (basically, cron jobs).
- Added real-time streaming to our log viewer.
- Migrated us from one database provider to another with no data loss and within our 30 minute maintenance window.
- A steward of the platform and codebase. That meant ensuring the platform was kept up and running, and that the codebase was kept up to date and organized according to our principles.
- User-defined HTTP routes for Gadget apps (comparable to AWS Lambda).
- Created a library providing typesafe React bindings for Gadget (lots of advanced TypeScript).
- Initial implementation of @gadgetinc/mobx-quick-tree (reduced node event loop blocks).
- V1 of our Shopify connection (managed syncing, webhooks, and oauth for Shopify apps).
- Designed and implemented a planner (topographical sort) for Gadget's nested actions.
Less technical things I'm involved with:
- Sharing my knowledge and context of the system to help accelerate all members of our team.
- Lots of informal mentoring via pairing, code review, and internal conversations.
- Interviewing candidates to assess technical skill (and a small amount of sourcing).
Staff Production Engineer
–
- Helped build and influence the design of packwerk , an open-source tool for enforcing boundaries in Ruby/Rails codebases.
- Building tools, patterns, and educational materials to enforce software architectural boundaries on Ruby/Rails projects.
- Designed and built an intra- and inter-cluster eBPF-based ping mesh for network observability in our Kubernetes platform. Required digging into the TCP stack implementation of linux (bootlin helped a lot for easy source code navigation)
- Built a data pipeline to isolate performance regressions in the Shopify platform.
- Continued to help build our organization with regular interviews (~1 per week).
Senior Software Engineer
–
- Designed and helped develop Fraud Protect for Shopify Payments (a warranty system for protecting Shopify merchants against fraudulent chargebacks).
- Designed and helped implement a new model for expressing order risk (known as "risk assessments").
- Started interviewing on a regular basis for the R&D organization, primarily pair programming.
Software Engineer
–
- Designed an approach for asynchronous label purchasing.
- Created a regional failover setup for our shipping service (using AWS Route 53).
- Automated our shipping service's infrastructure with Terraform.
- Moved our shipping service from classic EC2 to VPC EC2 with zero downtime.
- Improved performance of our shipping rates/label service through profiling.
Software Engineer In Test
–
- Created new and expanded existing test infrastructure (e.g, static analysis, automated HTML validation, creating and validating test seams for functions with complex responses).
- Move the local development environments to the cloud, with a service that had pre-warmed environments and leasing capabilities.
- Improved the stack by dependency refactoring, reducing build times, build size, and resource consumption.
- Expanded YouTube's primary local development environment with new functionality, also building out new service fakes to improve boot time.
Education
M.Sc., Computing Science
–
- Focus on computer vision
- Graduated with a 3.8 GPA.
- Awarded an NSERC Graduate Scholarships
- Thesis: Underwater Stereo Matching and its Calibration
B.Sc. (Honours), Pure Mathematics and Computer Science
–
- Graduated with a 4.0 GPA and first-class honours.
- Dean's list recipient all years.
- Awarded the "University Medal for Academic Excellence" in both Mathematics and Computer Science.
- Led my ICPC programming competition team to the northeast North American regional twice.
- Thesis: Automatic Panorama Construction: An In-Depth Look into Image Stitching
Publications
Theses
- Gedge, J. (2011) Underwater Stereo Matching and its Calibration. Department of Computing Science, University of Alberta. Master of Science. University of Alberta archive
- Gedge, J. (2008) Automatic Panorama Construction: An In-Depth Look Into Image Stitching. Department of Computer Science, Memorial University of Newfoundland. Bachelor of Science (Honours).
Refereed Conference Publications
- Gedge, J., Gong, M., and Yang, Y-H. (2011) Refractive Epipolar Geometry For Underwater Stereo Matching. Proceedings of the Eighth Canadian Conference on Computer and Robot Vision. IEEE Xplore
- van Rooij, I., Evans, P., Muller, M., Gedge, J., and Wareham, T. (2008) Identifying Sources of Intractability in Cognitive Models: An Illustration using Analogical Structure Mapping. In B.C. Love, K. McRae, and V.M. Sloutsky (eds.) Proceedings of the 30th Annual Meeting of the Cognitive Science Society. Cognitive Science Society; Austin, TX. 915—920. PDF
- Gedge, J., Hedlund, G., Rose, Y., and Wareham, T. (2007) Natural Language Process Detection: From Conception to Implementation. Newfoundland Electrical and Computer Engineering Conference. ResearchGate
Technical Reports
- Evans, P., Gedge, J., Muller, M., van Rooij, I., and Wareham, T. (2008) On the Computational Complexity of Analogy Derivation in the Structure-Mapping Framework. Technical Report 2008-03, Department of Computer Science, Memorial University of Newfoundland. PDF
Skills
The bars measure how confident I feel in various skills and technologies. A low rating is due to not using the skill recently, but I'm a quick learner!