John Luscombe

Hi, I'm John

Software Developer

at RADIANT SOLUTIONS

Scroll to learn more

About Me

John Luscombe

Hello!

My name is John Luscombe, and I am a software developer at Radiant Solutions. I am most experienced with web development, but I am eager to apply my development skills in other ways. I pride myself in my ability to deliver quality applications and tools, as my process of triple-checking for bugs and deficiencies ensures that my work meets the requirements. Want to know more? Keep scrolling, or feel free to contact me!

Programming Philosophy


Projects

Aires

Giftlet

Battling it out, AI style

Aires is an game contest server that allows AIs to battle each other in a variety of games (such as Battleship and Checkers) to determine the champion. What's great about Aires is that these contests are not constrained to a predetermined subset of games - it allows professors to write custom referees, so Aires can support any type of game imaginable. While the foundations of this application were already set, there were a number of show-stopping bugs that needed to be addressed, as well as a lack of visualizations for users to understand what was going on. So, for several months, I worked to iron out these bugs and add these visualizations, so professors could begin using it at the end of the Spring term.

View Source Code

Automated Grader for Intro Computer Science Course

Automated Grader

Revolutionizing the grading and learning process

As teachers and TA's know, there are many problems to manual grading, especially in a Computer Science course. It's slow, tedious, and error-prone. If there's more than one person grading assignments, there can be horrendous inconsistencies. Students who have never programmed before often don't know to look for certain conditions or edge-cases, leading to disappointment and frustration. To address these concerns, I developed an automated grader for my school's introductory Computer Science course. Results were outstanding - TA's were able to grade in a fraction of the time, grades were much more consistent, and students knew right away if they solved the problem completely. This tool revolutionized the grading process, and students learned to become better programmers.

Luscombe & Associates Invoice Website

Invoice Website

Making invoice management a breeze

For a business whose employees only include the family, keeping the invoice on an Excel spreadsheet is okay, but not ideal. Formatting and formulas are difficult to set up properly, and they are very easily messed up. So, I created a web application for our family to store and process these invoices. Employees can add and submit invoices, managers can override pay information and mark invoices as paid, and administrators can edit any of the data. This web application has been used for many months now, and it has revolutionized the way the business handles invoices.

Work History

Smarter HQ

DevOps Intern

Carmel, IN

June 2016 - August 2016, May 2017 - August 2017

Throughout both summers, I developed a wide range of tools to help SmarterHQ manage their DevOps processes more effectively and efficiently. During this time, I learned a lot about Amazon Web Services (AWS), along with several other technologies.

Top Achievements at SmarterHQ

Mongo Backup Script
Creates backups per cluster, not per server, eliminating redundancy and unneeded expenses
Finds secondary servers within each cluster, and locks them before performing the backup, ensuring reliability
Several different options available, so backups are performed exactly how the user wants them
Internal Status Site
Added Slack integration for status reporting
Added LDAP integration so users can have consistent login credentials
Added the ability to have sub-services within services
Added the ability to have recurring maintenance sessions
Porting to AWS Lambda
Allows scripts to be serverless
Makes scripts easy to set up and maintain
Significantly cuts costs, since servers are no longer required
Makes scripts easy to use, as you can invoke them using the Lambda API
Taylor University

Head Teacher's Assistant (TA)

Upland, IN

February 2015 - May 2017

For two years, I led a team of a dozen Teacher's Assistants (TAs) for an introductory Computer Science course, vastly increasing my leadership and communication skills.

Top Achievements as Head TA

Leadership Role
Managed weekly lab periods
Gave instructions to the TAs during weekly meetings
Ensured students received the help they needed
Unit Tests for Labs
Automates the lab grading process
Eliminates hours of tedious grading work
Provides immediate feedback for students
Checks for edge-cases TAs often miss
GradeTracker Module
Makes managing grades and showing reports easy and consistent
Integrates with lab unit tests to provide simple but useful grade-tracking methods
Provides students consistent and user-friendly grade reports
Optionally provides students hints for difficult problems, and an inspirational quote upon completion of the lab

Education

Taylor Trojans

Taylor University

Upland, IN
Computer Science/Systems, B.S. (2014-2018)
Grade Point Average (GPA): 3.95
Award
Summa cum laude
Award
Outstanding Computer Science
& Engineering Service

Coursework


Computer Window
Multi-Tier Web Application Development
As the focus of programming switches from the traditional desktop to web-based applications, learning how to develop for the web is getting increasingly critical. This essential course taught me exactly that. Throughout the semester, I was taught the skills necessary to develop a full-stack web application. Using Ruby on Rails as a framework, I learned the ins-and-outs of the MVC architecture to separate implementation concerns, as well as how to apply it to create useful, dynamic web applications.
Database Systems
Databases are the backbone to the data that is becoming increasingly valuable in our hyperconnected world. There are many types of databases available, so it is very useful to know which type best serves a particular business problem. This class taught me the pros and cons of each type of database, as well as the details of how they work. That way, I can look at a business problem or a set of data, and effectively determine which database would provide the most benefits.
Database
Security
Senior Project
For my senior project, I led a team of five developers (including myself) on a project called Aires. As I mentioned in the "Projects" section of this page, Aires is an game contest server that allows AIs to battle each other in a variety of games (such as Battleship and Checkers) to determine the champion. Throughout a January term, our team spent over 150 hours improving the existing codebase, and reporting daily to the professor. This gave me a great sense of what leading a team of developers would be like in a work environment. After the Senior Project class in January, I continued the project myself throughout the following Spring term. To see the source code of the Aires project, click the link below.
Computer and Network Security
Implementing advanced security precautions into applications is no longer optional. With sophisticated attacks such as WannaCry and Petya becoming increasingly common, it is essential for developers to know defensive programming techniques. Throughout this course, I completed several projects that taught me the inner workings of common attacks, such as Cross-Site Request Forgery (CSRF), Cross-Site Scripting (XSS), and SQL Injection, as well as how to discover and patch vulnerabilities. Knowing the details of how these attacks work has equipped me to write software that defends against such attacks. Click the link below to see the projects I completed in this course.
Security
Code
Software Engineering
As developers are aware, actual coding is not the only piece to software development, not by a long shot. Taylor's Software Engineering course gave me exposure to the other pieces to the software development lifecycle, such as requirements-gathering, designing, and testing. Not only that, it also helped me understand the vast benefits of agile development through a semester-long group project. I was selected as a leader of the team, so I was also able to improve my leadership through project management.
Software Studio
Like Software Engineering, Software Studio helped me gain real-world expertise in software development. However, unlike Software Engineering, this course was much more focused on the actual coding and less on the other parts of software development. Throughout the entire semester, I spent 12 hours a week helping to develop a Django web application for Tiny Hands, a Christian non-profit organization. This course really helped me further my understanding of what software development was like outside of an academic setting.
software
Information Systems Analysis
Information Systems Analysis
When starting a project as a software developer, it is easy to fall into the trap of jumping straight into the programming phase of the project. As a result, not enough thought, if any, is given to the analysis phase. Unfortunately, this almost always ends up in an inferior product and an unhappy customer. This course has taught me the ins and outs of gathering requirements, various types of modeling, business process reengineering, and other important parts to the analysis of an information system. Most importantly, as the final project for the class, I helped develop a business proposal (BP), systems requirements specification (SRS) document, and professional presentation for a real-world project with a team of five people.
Mobile Application Development
In a world that is getting increasingly mobile, knowing how to create applications for smartphones is a highly valued skill. However, simply getting an application working doesn't cut it in our highly competitive society. Throughout this course, I learned how to use Android Studio to create rich, powerful applications that effectively utilize smartphone features, without unnecessarily compromising performance and power efficiency.
iPhone
Network Cables
Data Communications
As more and more applications become available to consumers, developers are growing increasingly dependent on the internet. Unfortunately, far too few developers actually know the details of how the internet works, and how data gets from point A to point B. This course has taught me these essential details, from the concepts of data transmission to communication protocols, and has better equipped me to develop and debug internet applications. Click the link below to see the projects I completed in this course.
Language Structures
If a hammer is the only tool that a craftsman knows how to use, he will not be effective at his job. Similarly, if a programmer only knows one language paradigm, he will not know how to solve certain problems efficiently. In addition to teaching me how different programming languages are structured, this course also taught me some of the different language paradigms, and how to determine which one best solves a particular problem. For the final project, me and two other teammates created a domain-specific language that makes it easy to generate HTML quizzes. You can see the source code by clicking the link below.
Structure
Fractal
Data Structures and Algorithms
As time goes on, consumers are getting increasingly impatient with devices and applications with poor performance. What's worse, far too many programmers are entirely focused with getting their content published, without giving a second thought to the efficiency of their programs. Not only did this class introduce me to several of the data structures and algorithms that give these applications an edge in performance, it also taught me how to use discern which ones to use in order to maximize efficiency and minimize computational complexity.
Operations Research
The key to being an excellent leader in the workforce is having a strong ability to make informed decisions. This course taught me how to use linear programming to make these decisions, given a set of variables, constraints, and an objective (such as maximizing profit or minimizing cost). Learning this skill has given me the toolset needed to make intelligent decisions, and in turn become a much more effective leader in the workplace.
Operations Research
Principles of Human Computer Interaction
Principles of Human Computer Interaction
As our society becomes increasingly digital, people are interacting with computers more and more, in one form or another. So, it is crucial for software developers to know how to build user interfaces and experiences that facilitate this interaction. This class not only helped me develop this valuable skill, it also taught me how to apply the idea of people-centered design to my work in software development.

Technical Skills

Languages


Python
Expert
Ruby
Expert
HTML/CSS
Expert
C#
Advanced
Java
Advanced
JavaScript
Intermediate
PHP
Intermediate
SQL
Intermediate

Technologies


JetBrains Suite
Expert
PostgreSQL
Advanced
MySQL
Intermediate
Microsoft Visual Studio
Intermediate
Amazon Web Services
Intermediate
Heroku
Intermediate

Operating Systems


OS X
Expert
Windows
Expert
Linux
Intermediate