Jacob McLemore

Email: jmclemo6@vols.utk.edu
Phone: (423) 836-4379
Github: @jmclemo6
Preferred Pronouns: He/His/Him

I'm a former software engineer and undergraduate student of the University of Tennesee who is fluent in C, C++, and JavaScript. In my time programming, I've worked on projects ranging from an operating system kernel to large web applications. I have a passion for teaching others about programming and am currently seeking opportunities to do so at local meetups. Outside of programming, I am also a fan of video game speedrunning, drawing, and like playing Pokémon competitively.

I'm currently a PhD student under the supervision of Dr. Alex Williams at The University of Tennessee Knoxville's People, Agents, InteRactions, and Systems (PAIRS) research group. Please read on about my experiences and projects that I've contributed to. If I sound like someone you'd like to work with after that, contact me using the contact information above. I would love to hear from you.

I'm currently a PhD student under the supervision of Dr. Alex Williams at the University of Tennessee where my research focuses on the intersection of human-computer interaction, artificial intelligence, and crowdwork.

I was a first-generation college student at the University of Tennesee, Knoxville. I'll always appreciate my professors and classmates at UTK for how much they taught me and helped me grow as a person from the first time I stepped foot onto campus.

In my time at Armored Things, I helped create and maintain back-end crowd-intelligence software in both Scala and Python. This included integrations with customers' already existing data sources (i.e. event scheduling software) and development of new services. Armored Things was my first professional experience as a software engineer and getting to work with and learn from the team I was a part of was amazing.

SmartRIA was my first internship where I helped maintain a large piece of software that I wasn't familiar with in a language that I wasn't familiar with. I picked up enough Ruby and the Ruby on Rails framework in my first few weeks to be able to do my work of maintaining SmartRIA's server and client-side code effectively. SmartRIA was also the first place where I was exposed to an agile workflow in practice. I got the chance to participate in stand-ups with both the business and development teams to find development priorities for the week, learned how to rank and prioritize work, and how to communicate during an agile workflow.

Being a TA has been my most rewarding job so far. Getting the chance to work with students directly during their time in a class helped me learn a lot of things with the most important being how to coach someone to approach and solve a problem. As a TA, I couldn't just give the answers away and instead had to guide students to them. I did this by delivering short-form lectures, conducting live programming excercises, researching and using small-group discussion tactics, and giving students detailed feedback on their graded assignments.

As mentioned above, I really enjoy video game speedrunning. In January of 2019, I got the chance to use that enjoyment for a good cause by volunteering at Games Done Quick which is a biannual video game speedrunning charity marathon. I got to assist in raising money for the Prevent Cancer Foundation by working with a team of stage techs, producers, and audio engineers to keep the event's live stream running smoothly. I'm hoping to be able to volunteer at another Games Done Quick event in the future due to the great fun that I had and the great cause that I got to support.

While in college, I took up freelance web development both as a way to make money and to practice the skills that I was learning in college. My time working with a small business known as Dyslexia Tech on a progressive web app that allowed students with Dyslexia to take tests audibly was my absolute favorite project I got to work on during this time due to both the lead role I took on it and the cause that it served. I took a key role in technical planning, actual hands-on development, and project management for myself and 2 other developers that I worked with on the project. When it came time for me to hand over the project to another developer, I made sure that there was sufficient documentation in the project to assist its future developers in working with it.

Tutoring was my first job in college and the first that led me to a true love of learning and teaching others. With some hard work (and a little luck), I applied for and was selected to be a tutor during the 2nd semester of my freshmen year at the University of Tennessee. I had the opportunity to recieve training in 1-on-1 teaching techniques and got to apply that training by tutoring students in numerous computer science courses at UTK. I helped students learn best practices for C and C++ development through both code-review style feedback of their own code and by showing them example code and problems of my own creation. In addition, I helped students streamline their development workflows by both suggesting and demonstrating tools that are essential to being a successful programmer (i.e. debuggers and profilers).

My experience in the Virtual Enterprises International (VEI) program earns a spot on this site due to it being the starting point for my love of computer programming. As part of the VEI program, fellow students and I got the chance to run a virtual startup from the ground-up while still in high school. I had the opportunity to learn real leadership skills by leading a small team (5) of designers and other employees that helped design and implement the "company’s" technical projects. This included an e-commerce website and a native mobile app for Android smart phones.

Below are projects that I've contributed to as part of either my open source or school work. If you have any questions about any of the open source projects below or are interested in working on them yourself, please contact me and I am willing to help you get setup to do so.

I am a credited developer on Pokemon Showdown. A web-based battling simulator for the main series Pokemon games with over 2000 stars on GitHub and an average of 15-20,000 users on the site at any given time with peaks of around 50,000 users. I’ve contributed multiple features and mechanics related bug-fixes with the simulator itself. I also regularly take part in discussions with other developers of the project to decide the best way to fix bugs or add new features. Check out my work on both Pokemon Showdown's server and its client.

An operating system written in Rust and RISC-V Assembly as part of my Advanced Operating Systems Implementation and Design graduate course (taken during my undergraduate degree) at The University of Tennessee. It included console functionality over UART, a memory allocator, process support, and a read-only filesystem. QEMU was used for testing both full features and any data structures that had to be implemented during development.

A simulator for CubeSat systems that I contributed to as part of my Senior Design course at The University of Tennessee. It was written primarily in C and made to run on a Raspberry PI. It used the I2 C protocol to read from multiple sensors on the board and also transmitted collected data over a preset radio frequency. This project also used a DTMF touch-tone receiver which received tones that indicated that a certain action should be performed by the simulator. To make this possible, I wrote a Python script that would read the received tones from standard input, process them, and then perform the requested action if the tones were all received correctly.