Hi! I'm Josh.

I'm a software engineer based in the best city in the world. I work at Yext, and recently graduated from Carnegie Mellon University.

Skills

Python
C/C++
Web
SML
Go
SystemVerilog
SQL
MATLAB
Other

Experience with x86-64 and AVR Assembly, Git, SVN, and LaTeX, as well as Adobe Photoshop and InDesign. Built multiple desktop computers. Python experience includes backend development with Flask. Web experience includes HTML, CSS, and JavaScript.

Python
C/C++
Web
SML
Go
SystemVerilog
SQL
MATLAB
Other

Experience with x86-64 and AVR Assembly, Git, SVN, and LaTeX, as well as Adobe Photoshop and InDesign. Built multiple desktop computers. Python experience includes backend development with Flask. Web experience includes HTML, CSS, and JavaScript.

Education

Carnegie Mellon University (Class of 2018)

Major: Electrical and Computer Engineering (Software Track)

Double Major: Computer Science

Final Cumulative GPA: 3.93 (4.0 in Computer Science)

Relevant Coursework
  • Intro to Embedded Real-Time Systems

    This is an embedded systems programming course - it covers the integrated hardware and software aspects of embedded processor architectures, along with advanced topics such as concurrency, real-time principles, and memory management.

  • Formal Languages, Automata, and Computability

    This class is an introduction to the fundamental ideas and models underlying computing. Topics include finite automata, regular sets, pushdown automata, context-free grammars, Turing machines, undecidability, and complexity theory.

  • Formal Lang., Automata, and Comp.

    This class is an introduction to the fundamental ideas and models underlying computing. Topics include finite automata, regular sets, pushdown automata, context-free grammars, Turing machines, undecidability, and complexity theory.

  • Parallel Computer Architecture and Programming

    This course covers the fundamental principles and engineering tradeoffs involved in designing modern parallel computers, as well as the programming techniques to effectively utilize these machines. Topics include naming shared data, synchronizing threads, and the latency and bandwidth associated with communication.

  • Parallel Comp. Arch. and Prog.

    This course covers the fundamental principles and engineering tradeoffs involved in designing modern parallel computers, as well as the programming techniques to effectively utilize these machines. Topics include naming shared data, synchronizing threads, and the latency and bandwidth associated with communication.

  • Algorithm Design and Analysis

    This course is about the design and analysis of algorithms. Specific algorithms for a variety of problems, as well as general design and analysis techniques are studied.

  • Parallel and Sequential Data Structures and Algorithms

    This course is about about how to design, analyze, and program algorithms and data structures. The course emphasizes parallel algorithms and analysis, and how sequential algorithms can be considered a special case.

  • Parallel and Seq. Data Struc. and Alg.

    This course is about about how to design, analyze, and program algorithms and data structures. The course emphasizes parallel algorithms and analysis, and how sequential algorithms can be considered a special case.

  • Structure and Design of Digital Systems

    This course introduces basic issues in design and verification of modern digital systems.

Relevant Coursework
  • Intro to Embedded Real-Time Systems

    This is an embedded systems programming course - it covers the integrated hardware and software aspects of embedded processor architectures, along with advanced topics such as concurrency, real-time principles, and memory management.

  • Formal Lang., Automata, and Comp.

    This class is an introduction to the fundamental ideas and models underlying computing. Topics include finite automata, regular sets, pushdown automata, context-free grammars, Turing machines, undecidability, and complexity theory.

  • Parallel Comp. Arch. and Prog.

    This course covers the fundamental principles and engineering tradeoffs involved in designing modern parallel computers, as well as the programming techniques to effectively utilize these machines. Topics include naming shared data, synchronizing threads, and the latency and bandwidth associated with communication.

  • Algorithm Design and Analysis

    This course is about the design and analysis of algorithms. Specific algorithms for a variety of problems, as well as general design and analysis techniques are studied.

  • Parallel and Seq. Data Struc. and Alg.

    This course is about about how to design, analyze, and program algorithms and data structures. The course emphasizes parallel algorithms and analysis, and how sequential algorithms can be considered a special case.

  • Digital Systems

    This course introduces basic issues in design and verification of modern digital systems.

Experience

Software Engineer at Yext

At Yext, I am a full stack developer working in Go and React. Currently, my team is working on creating interactive tools that allow customers to easily build beautiful, accurate, and scalable websites for locations, events, and more.

Jul 2018

Software Engineer at Yext

At Yext, I am a full stack developer working in Go and React. Currently, my team is working on creating interactive tools that allow customers to easily build beautiful, accurate, and scalable websites for locations, events, and more.

Jul 2018

Teaching Assistant, Algorithm Design and Analysis

This is a senior and grad level algorithms course covering topics such as hashing, network flows, linear programming, and computational geometry. I held solo recitations, office hours, and managed Autolab for automatically grading submissions to programming assignments.

May 2018

Jan 2018

Teaching Assistant, Algorithm Design and Analysis

This is a senior and grad level algorithms course covering topics such as hashing, network flows, linear programming, and computational geometry. I held solo recitations, office hours, and managed Autolab for automatically grading submissions to programming assignments.

May 2018

Jan 2018

Teaching Assistant, Great Theoretical Ideas in Computer Science

This is a theoretical computer science course, that integrates mathematical material with computer science applications. Topics include complexity theory, graph theory, automata theory, and cryptography.

Dec 2017

Aug 2016

Teaching Assistant, Great Theoretical Ideas in Computer Science

This is a theoretical computer science course, that integrates mathematical material with computer science applications. Topics include complexity theory, graph theory, automata theory, and cryptography.

Dec 2017

Aug 2016

Forward Deployed Software Engineer Intern at Palantir

I worked on an algorithm for an interactive application used to optimize advertisement packages for television. As a forward deployed engineer, I also interacted with users in order to develop requested features, receive feedback, and provide support.

Aug 2017

May 2017

Forward Deployed Software Engineer Intern at Palantir

I worked on an algorithm for an interactive application used to optimize advertisement packages for television. As a forward deployed engineer, I also interacted with users in order to develop requested features, receive feedback, and provide support.

Aug 2017

May 2017

Software Engineer Intern, Compute Infrastructure at Salesforce

I worked on a service, written in Go, that automates the process of triaging and remediating device and host failures. I also added functionality to an existing library to allow for host OS imaging and firmware upgrades. Being my first experience in industry, I also learned good coding practices, including proper code documentation and code reviews.

Aug 2016

May 2016

Software Engineer Intern, Compute Infrastructure at Salesforce

I worked on a service, written in Go, that automates the process of triaging and remediating device and host failures. I also added functionality to an existing library to allow for host OS imaging and firmware upgrades. Being my first experience in industry, I also learned good coding practices, including proper code documentation and code reviews.

Aug 2016

May 2016

Teaching Assistant, Fundamentals of Programming and Computer Science

15-112 teaches introductory programming in Python, covering a wide range of material, from efficiency analysis to object-oriented programming to recursion. I did everything from leading recitations and review sessions, to holding office hours, to grading homeworks and exams. The experience I've gained through this position, and the interactions I've had with students, other TAs, and professors alike, have been invaluable.

May 2016

Jan 2015

Teaching Assistant, Fundamentals of Programming and Computer Science

15-112 teaches introductory programming in Python, covering a wide range of material, from efficiency analysis to object-oriented programming to recursion. I did everything from leading recitations and review sessions, to holding office hours, to grading homeworks and exams. The experience I've gained through this position, and the interactions I've had with students, other TAs, and professors alike, have been invaluable.

May 2016

Jan 2015

Research Assistant, Human-Computer Interaction Institute, Social Computing Lab

Last summer, as part of the Social Cybersecurity project, I created an online quiz, which you can find out more about below. Being my first major web (and research) project, I gained a lot of web development and research experience.

Aug 2015

May 2015

Research Assistant, Human-Computer Interaction Institute, Social Computing Lab

Last summer, as part of the Social Cybersecurity project, I created an online quiz, which you can find out more about below. Being my first major web (and research) project, I gained a lot of web development and research experience.

Aug 2015

May 2015

Teaching Assistant, Principles of Imperative Computation

15-122 teaches imperative programming in C, covering topics from proving function correctness to basic algorithms and data structures. Just like with 112, I did everything from leading labs and recitations to grading. I also got the opportunity to manage the entire course on Autolab, and created exam questions in LaTeX.

Aug 2015

May 2015

Teaching Assistant, Principles of Imperative Computation

15-122 teaches imperative programming in C, covering topics from proving function correctness to basic algorithms and data structures. Just like with 112, I did everything from leading labs and recitations to grading. I also got the opportunity to manage the entire course on Autolab, and created exam questions in LaTeX.

Aug 2015

May 2015

Microsoft Consultant at Best Buy

A few months after starting my job at Best Buy, I was asked to represent Microsoft as a Microsoft Consultant in the new mini-store. I received special training in Microsoft products, and provided customers with Windows- and Microsoft-specific advice and information. I sold primarily Windows-based computers and tablets (yay Surface!). As a team with the two other Microsoft Consultants in my store, we ranked among the top 20 in the entire company (with over 600 stores that had MS mini-stores) based on sales performance.

Aug 2014

Aug 2013

Microsoft Consultant at Best Buy

A few months after starting my job at Best Buy, I was asked to represent Microsoft as a Microsoft Consultant in the new mini-store. I received special training in Microsoft products, and provided customers with Windows- and Microsoft-specific advice and information. I sold primarily Windows-based computers and tablets (yay Surface!). As a team with the two other Microsoft Consultants in my store, we ranked among the top 20 in the entire company (with over 600 stores that had MS mini-stores) based on sales performance.

Aug 2014

Aug 2013

Computers and Tablets Sales Associate at Best Buy

In this position, I advised on and sold all types of tablets, desktops, and laptops, as well as accessories and networking products, to hundreds of customers. Being my first retail job, I got to learn how things work "behind the scenes". I also gained a lot of experience in customer interaction, and ended up meeting a lot of really awesome people!

Aug 2013

Jun 2013

Computers and Tablets Sales Associate at Best Buy

In this position, I advised on and sold all types of tablets, desktops, and laptops, as well as accessories and networking products, to hundreds of customers. Being my first retail job, I got to learn how things work "behind the scenes". I also gained a lot of experience in customer interaction, and ended up meeting a lot of really awesome people!

Aug 2013

Jun 2013

Projects

Wireless DJ Gloves

Jan 2018 - May 2018

This was my Electrical and Computer Engineering senior capstone project. We designed a pair of wireless, lightweight gloves that act as a DJ controller by recognizing user gestures and translating them to specific functions. I was primarily responsible for the hardware - designing the custom PCB used to interface with analog sensors, setting up the Raspberry Pi’s with all necessary modules, writing code for the Bluetooth client on the Pi, and handling software components used to poll the hardware devices via SPI.

Wireless DJ Gloves

Jan 2018 - May 2018

This was my Electrical and Computer Engineering senior capstone project. We designed a pair of wireless, lightweight gloves that act as a DJ controller by recognizing user gestures and translating them to specific functions. I was primarily responsible for the hardware - designing the custom PCB used to interface with analog sensors, setting up the Raspberry Pi’s with all necessary modules, writing code for the Bluetooth client on the Pi, and handling software components used to poll the hardware devices via SPI.

Flo

May 2017

This was my final project for 15-418, Parallel Computer Architecture and Programming, Spring 2017. It's a small library for easily creating network flow graphs, and performing parallel max-flow computations on multi-core CPUs and NVIDIA GPUs, written in C++ using OpenMP and CUDA. You can find more information about it here.

TLDRit!

February 2016

This was a hackathon project I made with a few friends! It's a webapp that uses a second-order Markov chain to randomly generate a one sentence summary of restaurants, books, and CMU courses, based on reviews and descriptions! Since the text is randomly generated, it can be pretty nonsensical and hilarious sometimes! Some technologies used include Flask and the Google Maps API. Check out the project at TLDRit.xyz!

CyberQuiz

Summer 2015

This is the website that I made for my research at CMU's Human-Computer Interaction Institute. It's an online quiz that tests your cybersecurity knowledge, and provides interactive material and feedback along the way. To make this, I used Flask, MySQL, the Materialize CSS framework, and jQuery.

CyberQuiz

Summer 2015

This is the website that I made for my research at CMU's Human-Computer Interaction Institute. It's an online quiz that tests your cybersecurity knowledge, and provides interactive material and feedback along the way. To make this, I used Flask, MySQL, the Materialize CSS framework, and jQuery.

Perfect Produce Picker

December 2014

This was my term project for 15-112 when I took it in Fall 2014. It is a simple database, made in Python, that is controlled through hand gestures and camera input. It uses Tesseract OCR, the Leap Motion, and OpenCV.

Perfect Produce Picker

December 2014

This was my term project for 15-112 when I took it in Fall 2014. It is a simple database, made in Python, that is controlled through hand gestures and camera input. It uses Tesseract OCR, the Leap Motion, and OpenCV.

Resume

Click me!

Thanks for looking through my website - feel free to reach out to me!

Thanks for looking through my website - feel free to reach out to me!