William Birdsall

William Birdsall

Earth
Open to Work

Curious explorer of bits and bytes.

28,322

Total Points

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

Skills & Experience

  • Spoken Languages

    • English

338 Achievements

  • Going Further with Routing
  • Navigating, Nesting and Redirecting Routes
  • Getting Started with React Router
  • React Component Patterns
  • Stateful Components and Lifecycle Methods
  • Managing State and Data Flow
  • Build Modular Interfaces with Components
  • Stateful Components
  • Introducing Props
  • Thinking in Components
  • First Steps in React
  • Exploring Async/Await
  • Understanding Promises
  • Asynchronous JavaScript with Callbacks
  • What is Asynchronous Programming?
  • Java's Functional Toolset
  • IDE Exploration
  • Regular Expressions
  • How it Works
  • Efficiency!
  • Exploring the Java Collections Framework
  • Organizing Data
  • Sorting Algorithms
  • Introduction to Enumerations
  • Running Apps on a Device
  • Improving Our User Interface
  • Structs As Data Models
  • View Controllers and Views
  • Getting Started with iOS Development
  • 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
  • Getting There
  • Merge Sort and Linked Lists
  • The Merge Sort Algorithm
  • Building a Linked List
  • Exploring Arrays
  • Recursion and Space Complexity
  • Algorithms in Code
  • Time Complexity
  • Playing a Counting Game
  • Gotchas and Wins
  • Iteration
  • Creation
  • Delivering the MVP
  • Creating the MVP
  • Harnessing the Power of Objects
  • Component Lifecycle
  • Designing Dataflow
  • Stateful Components
  • Thinking in Components
  • First Steps in React
  • Meet Objects
  • Perfecting the Prototype
  • Using your New Tools
  • Getting Started with Java
  • Python File Systems Manipulation
  • Python File Systems Navigation
  • Introducing Unit Testing
  • The Lambda Lambada
  • Functional Workhorses
  • Functional Rules
  • Completing and Testing the API
  • Communicating with Mongo Through Mongoose
  • Modeling Data for the API
  • Building API Routes in Express
  • Building a REST Service
  • Express Middleware
  • Practice forEach
  • Sessions and Cookies
  • Getters and Setters
  • Working with Classes in JavaScript
  • Object Basics
  • Introduction to Object-Oriented JavaScript
  • Create Function Using Arrow Syntax
  • Using Template Literals
  • Defining Variables With let and const
  • User Registration and Login
  • What is Authentication?
  • Discovery
  • Optimization Best Practices
  • Asset Optimization
  • Why Web Performance Matters
  • Serving Static Files in Express
  • Applying Express Knowledge
  • Vulnerabilities: Configuration, Components, and Logging
  • Vulnerabilities: Authentication, Access, and Sensitive Data
  • Vulnerabilities:  Injection, XSS, CSRF
  • Writing a Classifier
  • Machine Learning Vocabulary
  • Introduction to Machine Learning
  • Middleware
  • Deeper into Routing with Express
  • Using Templates with Express
  • Getting Started with Express
  • Improving your Gulp Workflow
  • Compile Sass with Gulp
  • Gulp your JavaScript workflow!
  • Welcome to Gulp.js
  • Working with jQuery Collections (2017)
  • Understanding jQuery Events and DOM Traversal (2017)
  • Introducing jQuery (2017)
  • The OWASP Top 10 Explained
  • 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
  • Creating a Command Line Weather Application
  • Handling Errors in Node
  • Getting Data From an API With Node
  • Introduction to Node.js
  • Classes
  • Finishing the Game
  • Introducing JavaScript
  • Users and Authorization
  • Django Authentication
  • Security and Customization
  • Make the REST Framework Work for You
  • RESTful Django
  • Getting the REST You Need
  • Customizing Class-based Views
  • Classy Views
  • Maintaining Secure Web Apps
  • Protecting Data and Keeping Attackers Out
  • Why Protect Your Web Apps
  • Detail View
  • List View
  • The Django Admin
  • Total Control
  • Basic ORM Usage
  • Same Old ORM
  • Inlines and Media
  • Security: Solutions
  • Security: Concerns
  • Security in Practice
  • Common Attacks and Defenses
  • Hello Internet!
  • Django Model Forms
  • Django Models
  • Django Forms
  • Building Custom Filters
  • Building Custom Tags
  • Template Tags and Filters
  • Test Time!
  • Final Details
  • Django Templates
  • Model Administration
  • What a View
  • Say Hello to Django
  • Adding a New Web Page
  • Make It Beautiful with CSS
  • HTML: The Structural Foundation of Web Pages and Applications
  • Getting Familiar with HTML and CSS
  • GET and POST Requests in a Browser
  • Introduction to HTTP
  • 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
  • Dungeon Game 2
  • Python Sets
  • Python Tuples
  • Python Dictionaries
  • Python Slices
  • Python Lists
  • Letter Game App
  • Number Game App
  • Shopping List App
  • Logic in Python
  • Python Data Types
  • Python For Beginners
  • Objects and New Collection Types
  • The Cooler Parts of ES2015
  • ES2015 Basics
  • DOM Traversal
  • DOM Manipulation
  • Events
  • Hello, jQuery!
  • Traversing the DOM
  • Responding to User Interaction
  • Making Changes to the DOM
  • Getting a Handle on the DOM
  • The Browser Environment
  • Workflows
  • Working With Remote Repositories
  • Merging
  • Branches
  • Laying Out Type for the Web
  • Getting to Know PHP
  • Combine and Minify Assets
  • Optimize Assets
  • Measuring Performance
  • Planning for Performance
  • Speeding up Workflow With Sass
  • Sales and Pitching
  • Variables, Mixins, and Extending Selectors
  • Getting Started with Sass
  • Getting Started With Git
  • Introduction to Node.js
  • Why Version Control Matters
  • Installing Programs
  • Environment and Redirection
  • Console Processes
  • Console Users and Permission
  • Moving Around in the Console
  • Chrome DevTools Basics
  • Web Apps
  • Websites
  • Introduction
  • Quiz Practice Project
  • Prototypal Inheritance
  • Constructor Functions & Prototypes
  • Introduction to Methods
  • AJAX and APIs
  • jQuery and AJAX
  • Better SEO Through Content
  • Programming AJAX
  • AJAX Concepts
  • Traversing and Manipulating the DOM with JavaScript
  • Selecting Elements and Adding Events with JavaScript
  • Building Forms with Bootstrap
  • Using Bootstrap Components
  • Creating a Simple Drawing Application
  • Marketing and Promotion
  • Advanced Selectors
  • Going Further with Attribute Selectors and Pseudo-Classes
  • Introduction to SEO
  • Selectors - Beyond the Basics
  • Positioning Page Content
  • CSS Layout Project
  • Page Layout with the Float Property
  • Controlling Layout with CSS Display Modes
  • Getting Started with CSS Layout
  • Designing with the Latest Features
  • Responsive Layouts with the Bootstrap Grid
  • Getting to Know Bootstrap 4
  • Understanding Values and Units
  • Color Theory
  • PHP Getting Started
  • Finalizing the Project
  • Case Studies and Examples
  • Introducing Adobe Illustrator
  • Design Foundations Final
  • Becoming a Problem Solver
  • Understanding Aesthetics
  • Introduction to Design
  • Creating an SVG
  • Introduction to SVG
  • Structuring Tables
  • Table Basics
  • JavaScript and the DOM
  • Creating a Password Confirmation Form
  • Creating a Mobile Drop Down Menu
  • Creating a Simple Lightbox
  • Custom Media Players
  • Captioning Video
  • Media Basics
  • Responsive Patterns
  • Media Queries
  • Building a Layout with Flexbox
  • Flexbox Properties
  • Understanding Flexbox
  • Creating a Spoiler Revealer
  • Introduction to jQuery
  • JavaScript Objects
  • Getting Started with PHP
  • Getting Started With Rails
  • JavaScript Arrays
  • JavaScript Loops
  • Choosing Options
  • Organizing Forms
  • Form Basics
  • Fundamental Concepts
  • Basic Layout
  • The Box Model
  • Basic Selectors
  • Getting Started with CSS
  • 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
  • Responsive Theory
  • Basic Web Typography
  • How to Choose and Use Webfonts
  • Introduction to Typography
  • Creating Home Page Assets
  • Applying Effects
  • How to Draw in Illustrator
  •  Adding Color and Type
  • Creating an Icon
  • Introduction to Illustrator
  • The Brand Identity Design Process
  • Introduction to Brand Identity
  • The Logo Sprint
  • Logo Design 101
  • JavaScript Functions
  • JavaScript Conditional Statements
  • Principles
  • Elements
  • JavaScript Numbers
  • JavaScript Variables
  • Introducing JavaScript
  • Newbie