Jacob Pledger
Summary
I am a skilled Python developer with a proven background in developing and maintaining critical backend systems. I am experienced at working with distributed systems and public cloud technologies, and I continue to be very interested in system architecture, scalability, fault-tolerance and observability.
I have been a Software Developer at Farmers Edge for 5 years. For most of it I was part of the Cloud team, building and managing our data ingestion and warehousing systems. Since then I have moved onto the Geospatial team, leveraging my experience with cloud technologies for our mapping systems.
Experience
-
- Develop and test code using Docker.
- Write unit tests and perform manual integration testing.
- Troubleshoot, diagnose, and fix encountered problems.
- Perform code reviews and collaborate with my team to find the best possible solutions.
- Work with other teams to plan and prioritize new features, as well as deal with bugs, incidents and other problems.
- Participate in daily scrums.
- Use Jira to write and manage tickets, and organize sprint planning.
- Identify new tasks and create tickets in Jira.
- Write helpful documentation for all projects.
- Research and evaluate new tools for possible viability within our systems.
Job Description
My former manager had moved onto the Geospatial team, and around my 5-year anniversary at the company he asked if I would be interested in joining his team.
-
- Created and maintained backend for ingestion and management of streaming CanPlug data
- Created and maintain backend for ingestion and management of weather data from various providers
- Wrote and maintain Alerts system backend (rule engine)
- Worked on initial version of Fertilizer recommendation engine
- Helped design, build, and continue to maintain the backends for ingestion and management of streamed spatio-temporal data from CanPlugs and weather stations
- Created and continue to maintain alerts system backend, which analyzes streamed data for user-defined conditions and notifies when those conditions are met
- Designed and built service to generate CanPlug and weather data for use in FarmCommand sales demonstrations
- Manage large data stores in Elasticsearch and their flows through RabbitMQ and Azure
- Develop and test code using Docker
- Write unit tests and perform manual integration testing
- Cut release code branches and draft up releases, write changelogs explaining updates
- Troubleshoot, diagnose, and fix encountered problems
- Adapt and migrate various system components into Azure
- Perform code reviews and collaborate with my team to find the best possible solutions
- Work closely with DevOps to manage deployments and troubleshoot issues
- Work with other teams to plan and prioritize new features, as well as deal with bugs, incidents and other problems
- Upgraded from Python 2 to Python 3
- Team operated for a year without a manager, able to independently coordinate to keep things running
- Participate in daily scrums
- Use Jira to write and manage tickets, and organize sprint planning
- Identify new tasks and create tickets in Jira
- Write helpful documentation for all projects
- Research and evaluate new tools for possible viability within our systems
Job Description
My first professional job out of university, I started at Granduke Geomatics in Lethbridge as it was being acquired by Farmers Edge.
On the Cloud team, we were responsible for constructing several backend services, the most prominent of which was our data ingestion service.
It was a Django REST API that received binary telemetry data from farm vehicle equipment. The data would be POSTed to our API, stored in Postgres and cloud storage, and then Celery workers - using RabbitMQ as their message broker - would parse the binary data into JSON and insert it into Elasticsearch.
During my time on the team, I was also the primary developer of an Alerts system backend. We used the tools we already knew (Django REST, Celery, RabbitMQ) to create a system which drank from the firehose of our parsed data and evaluated it against user-provided rules that would generate alerts when matched. The Rules were sort of a cross between email rules and iOS Reminders. Rules could match on any combination of geofence boundaries, date/time, device, or any attribute value being parsed out of the raw data. Matches would generate an Alert which was then pushed to the user. The system also had a configurable way to map input and output streams, to make integrations easy.
Another smaller, brief project we did in a similar vein was to have a service that replayed the data of desired devices in a loop for demonstration and testing purposes. For a long time we reused the same technologies, but this was eventually migrated into a cloud function.
-
Co-op Work Experience IV, Top Secret Security Clearance
- Rewrote improved disk sanitization program in shell and TCL
- Tested wifi adapters for best use with Kismet and Wireshark
- Installed and configured CentOS on laptops
- Helped clear out old equipment, sort it, and palletize it in preparation for a move to a new building
This was my fourth co-op work term through the University of Lethbridge co-operative education program.
-
Co-op Work Experience III, Top Secret Security Clearance
- Converted large script for LDAP to Active Directory synchronization from shell into Perl
- Completed service requests to update LDAP and Active Directory information, groups, and permissions
- Merged, activated, and deactivated Exchange mailboxes
This was my third co-op work term through the University of Lethbridge co-operative education program.
-
- Sold phones and plans from various carriers
- Facilitated contracts between clients and carriers
- Kept inventory of phones
- Kept work area and display phones clean
- Covered Electronics Department sales when necessary
-
Co-op Work Experience II
- Diagnosed and fixed various computer and printer issues
- Prepared and set up new computers for staff
- Removed and replaced old computers
- Took inventory of computers, printers and scientific equipment
- Refurbished old computers to be given to “Computers for Schools” program
- Tested scientific software for Windows 7 rollout
This was my second co-op through the University of Lethbridge's co-operative education program.
The "Computers For Schools" program was a highlight.
There were a bunch of old computers and other equipment taking up space in the basement lockup, and we needed to do something with them.
I discovered the "Computers for Schools" program, and suggested that we donate them.
So the other co-op and I set up several of the machines in our office running DBAN to wipe the hard drives.
The wiped hard drives were shredded, but we palletized the computers they came out of and delivered them all to the University of Lethbridge near the end of the summer.
-
Co-op Work Experience I
- Upgraded workstations from Windows 2000 to Windows Vista
- Coordinated with users to ensure minimal disruption
- Solved and reported hardware and software issues that prevented users from upgrading
- Assisted users with setting up and acclimatizing after the upgrade
This was my first co-op through the University of Lethbridge's co-operative education program.
-
- Prepared food for customers
- Cleaned preparation area and equipment
- Restocked shelves
I worked here in between semesters at University.
-
- Prepared food for customers
- Cleaned and maintained preparation area, cooking equipment and store
- Restocked shelves
- Was a supervisor for 2007-2008
- Managed other staff to maintain speed and quality of food delivery and cleanliness of store
Job Description
I started here as my first job on June 6, 2006.
Education
-
University of Lethbridge
Co-operative Education Designation
Courses
- CPSC 1620
- Fundamentals of Programming I
- CPSC 1820
- Discrete Structures
- CPSC 2610
- Introduction to Digital Systems
- CPSC 2620
- Fundamentals of Programming II
- CPSC 2720
- Practical Software Development
- CPSC 3615
- Computer Architecture
- CPSC 3620
- Data Structures and Algorithms
- CPSC 3630
- Theoretical Foundations of Computing
- CPSC 3655
- Operating Systems
- CPSC 3660
- Introduction to Database Systems
- CPSC 3710
- Computer Graphics
- CPSC 3720
- Introduction to Software Engineering
- CPSC 3730
- Cryptography
- CPSC 3740
- Programming Languages
- CPSC 3780
- Data Communications and Networking
- CPSC 3850
- VLSI Digital Design and Synthesis
- CPSC 4210
- Introduction to Reversible Logic
- CPSC 4780
- Distributed Systems
- MGT 3821
- Visual Programming Applications
- MATH 1410
- Elementary Linear Algebra
- MATH 1560
- Calculus I
- MATH 2000
- Mathematical Concepts
- STAT 1770
- Introduction to Probability and Statistics
- JPNS 1000
- Beginners' Japanese I
- JPNS 1100
- Beginners' Japanese II
- JPNS 1500
- Intermediate Language I
- JPNS 2000
- Intermediate Language II
- JPNS 3001
- Advanced Language
- numberST 2008
- Japanese Culture
- MODL 2850
- Japanese Society and Culture
- LING 2300
- Introduction to Linguistics I: Phonetics and Phonology
- LING 2600
- Introduction to Linguistics II: Morphology, Syntax and Semantics
- ECON 1012
- Introduction to Macroeconomics
- ECON 1010
- Introduction to Microeconomics
- ECON 2850
- Economics of Recreation and Tourism
- PHIL 1000
- Introduction to Philosophy
- NEUR 2600
- Brain and Behaviour
- ASTR 2020
- Modern Astronomy
- ANTH 2320
- Ancient Societies
- ARKY 1000
- Introduction to Archaeology
Scholarships & Awards
-
Bow Valley High School
Scholarships & Awards
-
Other