Hi, my name is
James Crews
Software Engineer
I am a self-taught software engineer with a focus on front end development. I am passionate about creating exciting and engaging user experiences.
Work Experience
Orum
Software Engineer
React
Node
Typescript
Postgres
Jest
MUI
GCP
Koa
  • Developed a targeted calling feature utilizing React that improved representatives’ preparation by fetching new information about the target prospect from external sources and resulting in a 10% increase in booked meetings.
  • Designed and implemented a robust WebSocket service in Typescript to efficiently deliver 500k+ real-time updates daily, enabling users to track the progression of their dialing sessions.
  • Designed a dynamic subscription implementation in Typescript and Postgres. This system enabled seamless additions/updates of tiers, and allowed more than the original four tiers; all while ensuring backwards compatibility with legacy subscriptions.
  • Revamped the Front End architecture by migrating legacy code to React and executing a complete UI redesign using Material UI. This resulted in a noticeable improvement in performance and user satisfaction evident by a 100% reduction of laggy UIs.
  • Constantly worked in an agile team with other developers, product managers and UI/UX designers.
Schweitzer Engineering Laboratories
Associate Software Engineer
React
Typescript
C#
GraphQL
Selenium
Jest
NUnit
  • Worked with UI/UX designers from design to implementation of 20+ new UIs, improving user’s workflows.
  • Implemented a new edit session feature that persists user’s changes, allowing them to navigate between projects without having to save.
  • Created 10+ API endpoints as well as optimized the speed of existing implementations.
  • Contributed key React components to a shared internal library, streamlining development and making all software feel connected.
  • Each new feature had been tested using NUnit and Jest for unit tests and Selenium for E2E tests.
Process Solutions
Control Systems Engineer
C#
  • Created a project generation tool using C# to generate 80% of PLC logic, resulting in a 20-30 hour reduction in development time.
  • Re-architected all HMI UIs to be templated based, resulting in a significant reduction in development time and reducing errors.
Projects
BG Tracker
Typescript
React
Next
Node
Postgres
tRPC
Vercel
AWS
Developed a website to monitor sales to multiple buying groups and track associated credit card rewards earned.
Chess AI
Typescript
React
Chess AI that uses the Min Max algorithm to decided which move is best. The AI looks at every possible move 3 turns out and assigns each move a score. The score is calculated using the current board position and which pieces remain. The scores are combined to give a total score for that move. Once all scores have been calculated, and placed into a decision tree, the AI chooses the score that increases its score the most during its simulated turn, and chooses the lower score when it is the opposing players turn. This alternation continues until it has reached the head of the decision tree, where then the AI will make its actual move.
Path Finding Visualizer
Typescript
React
Redux
Express
Full stack app that uses React as a front-end and an express server on the backend to animate common path finding algorithms. This apps animations work similar to the sorting visualizer by solving the path and storing the results in an animation queue that is later played back. The operation is slightly different since the animation queue is now being requested from an express server hosted on Heroku. A Redux store is used to handle actions and algorithm selection. Some of the cool features of this app are the ability to create your own custom maze, and also being able to drag the start or end points once the maze has been solved to see an instant update of the calculated path.
Sorting Visualizer
Typescript
React
React app that animates a variety of popular sorting algorithms to give a visual representation of how they work. The animation logic works by tracking of all the index comparisons in order and pushing them into a queue. Once the array is sorted, the queue is then looped through using a timeout to set the styles of the current index being compared.