Geoffrey Neal

Geoffrey Neal

London, United Kingdom

I started learning for a bit of fun, and it's turned into something of an obsession. I'm self-taught (but still learning) and particularly enjoying JavaScript, I work as a front-end developer.

30,298

Total Points

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

Skills & Experience

  • Job Title

    Web Developer

  • Spoken Languages

    • English

395 Achievements

  • Recursion and Space Complexity
  • Time Complexity
  • Playing a Counting Game
  • Making Strong Users
  • Character Builder
  • Flask Templates
  • Welcome to Flask
  • The Lambda Lambada
  • Functional Workhorses
  • Functional Rules
  • Covering Your Bases
  • Be Assertive!
  • What Is Testing?
  • Gettin' CRUD-y With It
  • Our Diary App
  • Meet Peewee
  • Python Regular Expressions
  • Timezones
  • Math Quiz App
  • Dates and Times
  • Buggy Logs
  • Cleaner Code
  • Dice Roller
  • Python: Advanced Objects
  • Python: Inheritance
  • Python: Instant Objects
  • Iterating and Packing with Dictionaries
  • Introducing Dictionaries
  • Sequence Operations
  • Sequence Iterations
  • Packing and Unpacking
  • Getting Info In and Out of Functions
  • Introduction to Functions
  • Getting to Know Tuples
  • Getting Started with Express
  • Using Templates with Express
  • Deeper into Routing with Express
  • Middleware
  • Applying Express Knowledge
  • Serving Static Files in Express
  • AJAX Concepts
  • Programming AJAX
  • Introducing jQuery (2017)
  • Understanding jQuery Events and DOM Traversal (2017)
  • Working with jQuery Collections (2017)
  • The Browser Environment
  • Getting a Handle on the DOM
  • Making Changes to the DOM
  • Responding to User Interaction
  • Traversing the DOM
  • Defining Variables With let and const
  • Using Template Literals
  • Create Function Using Arrow Syntax
  • JavaScript is Everywhere
  • JavaScript Tools and Workflows
  • Introducing JavaScript
  • Finishing the Game
  • Improving Quality Assurance Practices
  • Bug Reporting
  • Executing Tests
  • Writing Manual Test Cases
  • Why We Test
  • Going Further with Routing
  • Navigating, Nesting and Redirecting Routes
  • Getting Started with React Router
  • Python Lists
  • Build an Application
  • Using Lists
  • Meet Lists
  • All Together Now
  • Functions and Looping
  • Types and Branching
  • SMACSS and Sass
  • Meet Python
  • Sass and BEM
  • Getting Modular with Mixins and Functions
  • Add Reusable Logic to Your Sass
  • Write Smart and Efficient CSS with Sass
  • Improve Your Workflow with Sass
  • Getting Started with Sass
  • S3 Storage Service
  • AWS and "The Cloud"
  • Dockerize a Web App
  • Managing Images and Containers
  • Building Images Using Dockerfiles
  • Fundamentals of Docker
  • Docker Use Cases
  • Test Drive
  • Meet Selenium
  • Introduction to Node.js
  • GET and POST Requests in a Browser
  • Introduction to HTTP
  • Scrum Events
  • Introducing Scrum
  • What is Agile?
  • Creating a Story
  • Navigating Through An Adventure
  • Displaying Additional Views
  • Using the Vending Machine
  • Loading Data From a Resource
  • Modeling an Interface
  • Running Apps on a Device
  • Improving Our User Interface
  • Using the Delegate Pattern in iOS
  • The Delegate Pattern
  • Writing Great Swift
  • Access Control
  • Memory Management in Swift
  • Extensions and Protocols
  • Discovery
  • Aggregate and Numeric Functions
  • Working with Text
  • Ordering, Limiting and Paging Results
  • Handling Errors When Manipulating Data
  • Deleting Data from a Database
  • Updating Data in a Database
  • Adding Data to a Database
  • Finding the Data You Want
  • Getting Data from a Database
  • Data, Databases and SQL
  • Value Semantics, Type Methods and Inheritance
  • Object Initialization
  • Properties
  • Error Handling
  • Creating Flexible Objects Using Protocols
  • Structs As Data Models
  • View Controllers and Views
  • Getting Started with iOS Development
  • Protocol Basics
  • Objects and Optionals
  • Introduction to Optionals
  • Introduction to Enumerations
  • Differentiating Between Objects
  • Class Inheritance
  • Classes in Swift
  • Complex Data Structures
  • Adding Power to Functions
  • Functions in Swift
  • Control Flow With Conditional Statements
  • Control Flow With Loops
  • Dictionaries in Swift
  • Introduction to Collections
  • Swift Operators
  • Swift Types
  • An Introduction to Swift Programming
  • Modularizing the React Scoreboard Application
  • What is Authentication
  • Getting Started with Redux
  • Going Further with Routes
  • Navigating and Nesting Routes
  • Getting Started with React Router
  • Component Lifecycle
  • Designing Dataflow
  • Stateful Components
  • Next Steps
  • Improving Our Tests
  • Behavior Driven Development with Mocha & Chai
  • Introduction
  • Unit Converter
  • Getting to Know PHP
  • Data Reader
  • Abstraction
  • System.Object
  • Polymorphism
  • Loops and Final Touches
  • Encapsulation with Properties
  • Thinking in Components
  • Classes
  • Objects and New Collection Types
  • The Cooler Parts of ES2015
  • ES2015 Basics
  • Delivering the MVP
  • Creating the MVP
  • Harnessing the Power of Objects
  • Meet Objects
  • Perfecting the Prototype
  • First Steps in React
  • Encapsulation and Arrays
  • Inheritance
  • Methods
  • Object-Oriented Programming
  • Perfect
  • Express Middleware
  • Sessions and Cookies
  • User Registration and Login
  • What is Authentication?
  • Using your New Tools
  • Improving your Gulp Workflow
  • Getting Started with Java
  • Compile Sass with Gulp
  • Getting Started with Sass
  • Gulp your JavaScript workflow!
  • Add a Sticky Navigation Bar
  • Introducing jQuery Plugins
  • Getting Started with CSS Transitions
  • Prototyping With Bootstrap
  • Workflows
  • Working With Remote Repositories
  • Introducing Unit Testing
  • How Ruby Works
  • Welcome to Gulp.js
  • Introduction to Front-End Frameworks
  • Laying Out Type for the Web
  • Basic Web Typography
  • How to Choose and Use Webfonts
  • Introduction to Typography
  • Getting Started with CSS Layout
  • 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
  • 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
  • Updating and Uninstalling Packages with npm
  • Go Further With Mongo
  • Working With Collections
  • Understanding MongoDB
  • Getting Started with MongoDB
  • Improving Our Todo App
  • Services in Angular
  • Merging
  • Branches
  • Getting Started With Git
  • Using Angular's Built-in Directives
  • Controllers and Scope
  • Getting Started with Angular
  • Querying the Database
  • Database Security
  • Queries & Results
  • Getting Started with PDO
  • PHP Includes
  • 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
  • Quiz Practice Project
  • Prototypal Inheritance
  • Traversing and Manipulating the DOM with JavaScript
  • Perform
  • Console I/O
  • Prepare and Plan
  • Constructor Functions & Prototypes
  • Introduction to Methods
  • Interactive Visualizations
  • Styling and Scaling Data
  • Getting Started in Maya LT
  • Creating an SVG
  • Introduction to Illustrator
  • Build and Share a Unity Game
  • Game Audio
  • Score, Enemies, and Game State
  • Pickups
  • Player Input and Cameras
  • The Unity Editor and Scene Setup
  • Introduction to Video Games
  • Why Version Control Matters
  • Functional Programming in C
  • The Internet
  • Computer Languages
  • Computer Basics
  • Installing Programs
  • Environment and Redirection
  • Dependency Management
  • PHP Inheritance & Interfaces
  • PHP Properties & Methods
  • PHP Objects and Classes
  • Securing and Maintaining a MySQL Database
  • Data Binding with D3
  • Selections with D3
  • SQL Calculating, Aggregating and Other Functions
  • Joining Relational Data Between Tables in SQL
  • Manipulating Schema with SQL
  • Creating Tables and Manipulating Data with SQL
  • Reading Data from Databases with SQL
  • Installing MySQL Server and MySQL Workbench
  • WWW
  • Console Processes
  • Console Users and Permission
  • Moving Around in the Console
  • Chrome DevTools Basics
  • AJAX and APIs
  • Introduction to Data, Databases and SQL
  • jQuery and AJAX
  • Programming AJAX
  • AJAX Concepts
  • Responsive Patterns
  • Media Queries
  • Introduction to SVG
  • Responsive Theory
  • Custom Media Players
  • Captioning Video
  • Media Basics
  • Blogging with WordPress Overview
  • Owning a WordPress Site Long Term
  • WordPress Community Management
  • Working with Media in WordPress
  • Adding and Editing Content
  • Selecting Elements and Adding Events with JavaScript
  • JavaScript and the DOM
  • Getting a WordPress Site
  • Getting Started with WordPress
  • Better SEO Through Code
  • Better SEO Through Content
  • Introduction to SEO
  • Workflow Basics
  • Slices & Save for Web
  • Vector Shapes
  • Type Tools
  • Masks Basics
  • Layer Basics
  • Workspace Basics
  • Creating a Simple Drawing Application
  • Creating a Password Confirmation Form
  • Creating a Mobile Drop Down Menu
  • Creating a Simple Lightbox
  • Creating a Spoiler Revealer
  • Introduction to jQuery
  • JavaScript Objects
  • JavaScript Arrays
  • JavaScript Loops
  • JavaScript Functions
  • JavaScript Conditional Statements
  • JavaScript Numbers
  • JavaScript Variables
  • Introducing JavaScript
  • Design Foundations Final
  • Becoming a Problem Solver
  • Understanding Aesthetics
  • Introduction to Design
  • Grid Layout
  • Fundamentals of C
  • Flexbox Layout
  • Positioning Schemes
  • Float Layout
  • Display Modes
  • Structuring Tables
  • Table Basics
  • Choosing Options
  • Organizing Forms
  • Form Basics
  • Advanced Selectors
  • Going Further with Attribute Selectors and Pseudo-Classes
  • Selectors - Beyond the Basics
  • Fundamental Concepts
  • Designing with the Latest Features
  • Basic Layout
  • The Box Model
  • Understanding Values and Units
  • Basic Selectors
  • Listing Inventory Items
  • Adding a Contact Form
  • Logo Design 101
  • Creating the Menu and Footer
  • PHP Internal Functions
  • PHP Returns & Closures
  • PHP Functions Basics
  • PHP Loops
  • PHP Conditionals
  • PHP Datatypes
  • PHP Data & Structure
  • PHP Getting Started
  • Getting Started with PHP
  • Forms
  • Tables
  • Objects
  • Links
  • Lists
  • Text
  • Introduction
  • Getting Started with CSS
  • Functions
  • Objects and Arrays
  • Control Structures
  • Basics
  • Debugging HTML and CSS Problems
  • Sharing a Website
  • Responsive Web Design and Testing
  • Adding Pages to a Website
  • Styling Web Pages and Navigation
  • Customizing Colors and Fonts
  • CSS: Cascading Style Sheets
  • Creating HTML Content
  • HTML First
  • Beginning HTML and CSS
  • Newbie