Craig Heslop

Craig Heslop

Member Since May 25, 2015

22,474

Total Points

Points are earned whenever you take an important action on Treehouse.
Learn more about when and how points are earned.

296 Achievements

  • Introduction to Node.js
  • Asynchronous JavaScript with Callbacks
  • What is Asynchronous Programming?
  • Getting Started with TypeScript
  • Going Further with Routing
  • Testing for Accessibility
  • Mobile Accessibility
  • Accessible UI Patterns
  • Semantic HTML and WAI-ARIA
  • WCAG 2.0 (and Other Standards)
  • Access for Everybody
  • Navigating, Nesting and Redirecting Routes
  • Getting Started with React Router
  • React Component Patterns
  • Stateful Components and the Effect Hook
  • Managing State
  • Data Flow
  • Build Modular Interfaces with Components
  • Generics in Java
  • Java Inheritance
  • Using Java's Built-In Annotations
  • Java Maps
  • Interfaces in Java
  • Java Lists
  • Security: Solutions
  • Ruby Syntax
  • Security: Concerns
  • Gotchas and Wins
  • Iteration
  • Creation
  • Security in Practice
  • Common Attacks and Defenses
  • Hello Internet!
  • Dockerize a Web App
  • Managing Images and Containers
  • Building Images Using Dockerfiles
  • Fundamentals of Docker
  • Docker Use Cases
  • Delivering the MVP
  • Creating the MVP
  • Harnessing the Power of Objects
  • Meet Objects
  • Perfecting the Prototype
  • Using your New Tools
  • Getting Started with Java
  • Unit Converter
  • Getting to Know PHP
  • Reusable GraphQL
  • Making Changes with Mutations
  • Fetching Data with Queries
  • Getting Started with GraphQL
  • Managing State and Data Flow
  • Build Modular Interfaces with Components
  • Introducing Vue
  • Stateful Components
  • Introducing Props
  • Thinking in Components
  • First Steps in React
  • Callbacks and the DOM
  • Callbacks with Timers
  • Introduction to Callback Functions
  • Next Steps
  • Improving Our Tests
  • Behavior Driven Development with Mocha & Chai
  • Introducing Unit Testing
  • Angular Form Validation
  • Angular Basic Forms
  • Services in Angular
  • Angular Components
  • S3 Storage Service
  • AWS and "The Cloud"
  • Setting Up an Angular Application
  • Classes
  • Objects and New Collection Types
  • The Cooler Parts of ES2015
  • ES2015 Basics
  • Test Doubles
  • Acceptance Tests
  • Organizing your Tests
  • Installing Programs
  • Environment and Redirection
  • Console Processes
  • Console Users and Permission
  • Creating Your Tests
  • Tools for Testers
  • How To Test Our Code
  • Securing and Maintaining a MySQL Database
  • Website Basics
  • SQL Calculating, Aggregating and Other Functions
  • Joining Relational Data Between Tables in SQL
  • Getting the REST You Need
  • Manipulating Schema with SQL
  • Creating Tables and Manipulating Data with SQL
  • Error Handling
  • Creating Distributable OOP Packages
  • Autoloading and Composer
  • Databases and International Concerns
  • Reading Data from Databases with SQL
  • Installing MySQL Server and MySQL Workbench
  • Introduction to Data, Databases and SQL
  • Date and Time Functions
  • Aggregate and Numeric Functions
  • Working with Text
  • Ordering, Limiting and Paging Results
  • Moving Forward with UX
  • Scrum Artifacts
  • Improving Usability
  • Mobile Usability
  • More TODO with the MEAN Stack
  • Creating and Editing Data in a MEAN App
  • Setting Up MongoDB
  • Going MEAN with Angular
  • Going MEAN with Express
  • Introduction to MEAN
  • Exploring Ember
  • Ember Data
  • Models
  • Controllers
  • Routes and Templates
  • Using a jQuery Carousel
  • Add a Sticky Navigation Bar
  • Introducing jQuery Plugins
  • Handling Errors When Manipulating Data
  • Deleting Data from a Database
  • Updating Data in a Database
  • Adding Data to a Database
  • Creating a Simple Drawing Application
  • Creating a Password Confirmation Form
  • Creating a Mobile Drop Down Menu
  • Creating a Simple Lightbox
  • JavaScript Functions
  • JavaScript Conditional Statements
  • JavaScript Numbers
  • Customizing Drupal
  • Doing More with Express
  • Serving Static Files in Express
  • Using Templates with Express
  • The Request and Response Objects in Express
  • Developing Express Apps Like a Boss
  • Getting Started with Express
  • Web Apps
  • Websites
  • Modules and Themes
  • Site Building with the Drupal Interface
  • Learn About Drupal
  • PHP Email Form Errors
  • PHP Email Forms
  • PHP Inventory
  • PHP Includes
  • Limiting Results in Queries
  • Using Relationship Tables
  • Filtering Input for Queries
  • Querying the Database
  • Connecting to MySQL
  • Art Direction with the Picture Element
  • Image Delivery with Srcset and Sizes
  • Database Security
  • Queries & Results
  • Getting Started with PDO
  • Keyframe and Line Drawing Animations
  • Transitions and Transforms
  • Contact Forms & Mailers
  • Slim and Templates
  • Dependency Management
  • Finding the Data You Want
  • Getting Data from a Database
  • Data, Databases and SQL
  • Interactive Visualizations
  • Improving your Gulp Workflow
  • Styling and Scaling Data
  • Workflows
  • Working With Remote Repositories
  • Data Binding with D3
  • Selections with D3
  • Creating an SVG
  • Introduction to SVG
  • Prototyping With Bootstrap
  • Go Further With Mongo
  • Working With Collections
  • Understanding MongoDB
  • Getting Started with MongoDB
  • Updating and Uninstalling Packages with npm
  • Installing Packages with npm
  • What is npm?
  • HTTP Methods and Headers
  • Creating a Basic Template Engine in Node.js
  • Handling Routes in Node.js
  • Creating a Simple Server in Node.js
  • Building a Command Line Application
  • Introduction to Node.js
  • Improving Our Todo App
  • Services in Angular
  • The Internet
  • Using Angular's Built-in Directives
  • Controllers and Scope
  • Starting Right with PHP Best Practices
  • PHP Inheritance & Interfaces
  • PHP Properties & Methods
  • PHP Objects and Classes
  • Advanced Selectors
  • Going Further with Attribute Selectors and Pseudo-Classes
  • PHP Internal Functions
  • PHP Returns & Closures
  • PHP Functions Basics
  • Selectors - Beyond the Basics
  • PHP Loops
  • PHP Conditionals
  • PHP Datatypes
  • PHP Data & Structure
  • PHP Getting Started
  • Quiz Practice Project
  • Prototypal Inheritance
  • AJAX and APIs
  • jQuery and AJAX
  • Programming AJAX
  • AJAX Concepts
  • JavaScript Objects
  • JavaScript Arrays
  • JavaScript Loops
  • Traversing and Manipulating the DOM with JavaScript
  • Selecting Elements and Adding Events with JavaScript
  • JavaScript and the DOM
  • Grid Layout
  • Flexbox Layout
  • Positioning Schemes
  • Float Layout
  • Choosing Options
  • Organizing Forms
  • Form Basics
  • Structuring Tables
  • Table Basics
  • Beginning HTML and CSS
  • Getting Started with Angular
  • Getting Started with CSS
  • How to Choose and Use Webfonts
  • Layer Basics
  • Introduction to Illustrator
  • Tools UXers Use
  • Finalizing the Project
  • How UXers Think
  • Introduction to UI Design
  • Case Studies and Examples
  • Introduction to Typography
  • Workspace Basics
  • Website Usability
  • The Brand Identity Design Process
  • Introducing Sketch
  • What Do User Experience Designers Do?
  • Graphic Basics
  • Introduction to Brand Identity
  • Merging
  • Branches
  • Understanding Flexbox and Multi-Column Layout
  • Getting Modular with Mixins and Functions
  • Constructor Functions & Prototypes
  • Introduction to Methods
  • Display Modes
  • The Logo Sprint
  • Logo Design 101
  • Fundamental Concepts
  • Compile Sass with Gulp
  • Gulp your JavaScript workflow!
  • Scrum Events
  • Introducing Scrum
  • What is Agile?
  • Introduction
  • Getting Started With Git
  • Welcome to Gulp.js
  • Introduction to Design
  • Moving Around in the Console
  • Optimize Assets
  • Measuring Performance
  • What is User Experience (UX)?
  • Why Version Control Matters
  • What is Usability?
  • Planning for Performance
  • Getting Started with WordPress
  • AngularJS Directives
  • JavaScript Variables
  • Services and Dependencies
  • Creating a Spoiler Revealer
  • Installing Sass and Setting up the Project
  • Introduction to jQuery
  • Advanced Sass Concepts
  • Introducing JavaScript
  • Speeding up Workflow With Sass
  • Variables, Mixins, and Extending Selectors
  • Introduction to Front-End Frameworks
  • Getting Started with Sass
  • Responsive Patterns
  • Media Queries
  • Getting Started with Ember.js
  • Responsive Theory
  • Two-way Data Binding
  • AngularJS MVC Frameworks
  • Newbie