tonyhan

tonyhan

Member Since April 17, 2018
Open to Work

31,188

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
    • Chinese Mandarin

383 Achievements

  • Stateful Components
  • Introducing Props
  • Thinking in Components
  • First Steps in React
  • Searching Names
  • Sorting Algorithms
  • Merge Sort and Linked Lists
  • The Merge Sort Algorithm
  • Building a Linked List
  • Exploring Arrays
  • Dockerize a Web App
  • Managing Images and Containers
  • Building Images Using Dockerfiles
  • Fundamentals of Docker
  • Docker Use Cases
  • S3 Storage Service
  • AWS and "The Cloud"
  • Persuasive Patterns
  • UI Patterns
  • Writing a Classifier
  • Machine Learning Vocabulary
  • Introduction to Machine Learning
  • Recursion and Space Complexity
  • Algorithms in Code
  • Time Complexity
  • Playing a Counting Game
  • Art Direction with the Picture Element
  • Image Delivery with Srcset and Sizes
  • Modular Media Queries
  • Sass Grid System
  • SMACSS and Sass
  • Sass and BEM
  • Getting Modular with Mixins and Functions
  • How to Make Wireframes in Adobe XD
  • How to Make Wireframes in Sketch
  • How to Make Wireframes in Balsamiq
  • How to Make Wireframes on Paper
  • What is Wireframing?
  • Design Foundations Final
  • Becoming a Problem Solver
  • Understanding Aesthetics
  • Introduction to Design
  • Creating a Long Term Business
  • Protecting Yourself With Contracts
  • Establishing a Proper Workflow
  • Pricing and Project Proposals
  • Finding Your First Project
  • Starting a Freelance Career
  • Big Data at Netflix
  • Where and How Big Data Is Used
  • What is Big Data
  • Protecting and Sharing Your Work
  • Licensing
  • Fair Use and Public Domain
  • Getting Started with Copyright
  • Debugging, Best Practices, and Production
  • Refactoring with Sass
  • Installing Sass and Setting up the Project
  • Going Mobile
  • Designing Email with CSS
  • Coding HTML Email
  • HTML Email Basics
  • Adding the Game Logic
  • Making the Game Interactive
  • Rendering the Game
  •  Building Constructor Methods and Generating Objects
  • Introducing 'Four in a Row'
  • Users and Authorization
  • Django Authentication
  • Security and Customization
  • Make the REST Framework Work for You
  • RESTful Django
  • Customizing Class-based Views
  • Classy Views
  • Detail View
  • List View
  • The Django Admin
  • Total Control
  • Basic ORM Usage
  • Same Old ORM
  • Inlines and Media
  • 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
  • Go Concurrency Overview
  • Go Custom Types Overview
  • Go Data Structures Overview
  • Go Flow Control Overview
  • Go Syntax Overview
  • Array Programming
  • Array Organization
  • Meet NumPy
  • Additional Scraping Tasks
  • A World Full of Spiders
  • Introducing Data Scraping
  • Data Eruption
  • Chart Toppers
  • Getting Started with Data Visualization
  • Creating Reports
  • Charts and Tables
  • Exporting
  • Cleaning Data
  • Describing Data
  • Getting Started with Data Science
  • Reformatting User Input
  • Validating a Form with Regular Expressions
  • Regular Expressions
  • GET and POST Requests in a Browser
  • Introduction to HTTP
  • Getting the REST You Need
  • 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
  • Day 3: Getting Creative
  • Day 2: Advanced Selecting
  • Day 1: Joining Tables
  • Orientation: Selecting Data
  • Subqueries
  • Set Operations
  • Joining Table Data with SQL
  • Table Relationships
  • Database Keys
  • Database Normalization
  • Date and Time Functions
  • Aggregate and Numeric Functions
  • Working with Text
  • Ordering, Limiting and Paging Results
  • Getting the REST You Need 2
  • Handling Errors When Manipulating Data
  • Deleting Data from a Database
  • Updating Data in a Database
  • Adding Data to a Database
  • Add Reusable Logic to Your Sass
  • Write Smart and Efficient CSS with Sass
  • Improve Your Workflow with Sass
  • Getting Started with Sass
  • Keyframe and Line Drawing Animations
  • Transitions and Transforms
  • Going Further with Grid Layout
  • Flexible Sized Grids
  • Introducing Grid Layout
  • Adding 3D Effects with CSS
  • Getting Started with CSS Transforms
  • Transition Timing Functions and Delays
  • Getting Started with CSS Transitions
  • Design Patterns
  • Page Layout
  • Final Project: Create a Typographic Site
  • Laying Out Type for the Web
  • Basic Web Typography
  • How to Choose and Use Webfonts
  • Introduction to Typography
  • Exploration
  • Discovery
  • Creating an SVG
  • Introduction to SVG
  • Chrome DevTools Basics
  • Testing for Accessibility
  • Mobile Accessibility
  • Accessible UI Patterns
  • Semantic HTML and WAI-ARIA
  • WCAG 2.0 (and Other Standards)
  • Captioning Video
  • Media Basics
  • Combine and Minify Assets
  • Optimize Assets
  • Measuring Performance
  • Planning for Performance
  • Advanced Selectors
  • Going Further with Attribute Selectors and Pseudo-Classes
  • Selectors - Beyond the Basics
  • Choosing Options
  • Building a Layout with Flexbox
  • Organizing Forms
  • Form Basics
  • Flexbox Properties
  • Fundamental Concepts
  • Designing with the Latest Features
  • Understanding Flexbox
  • Responsive Patterns
  • Media Queries
  • Responsive Theory
  • Basic Layout
  • The Box Model
  • Classes
  • Objects and New Collection Types
  • The Cooler Parts of ES2015
  • Understanding Values and Units
  • Positioning Page Content
  • Going Further with HTML
  • Basic Selectors
  • CSS Layout Project
  • Images, Text and Links
  • Page Layout with the Float Property
  • Structuring Your Content
  • Controlling Layout with CSS Display Modes
  • Structuring Tables
  • Getting Started with CSS
  • Getting Started with CSS Layout
  • Access for Everybody
  • Table Basics
  • Getting Started With HTML
  • Finding the Data You Want
  • Getting Data from a Database
  • Data, Databases and SQL
  • Creating and Modifying Database Tables
  • Designing with Patterns
  • JavaScript Objects and Conditionals
  • JavaScript Arrays and Loops
  • JavaScript Functions
  • Data Types and Variables
  • Building Forms With Bootstrap
  • Using Bootstrap Components
  • Responsive Layouts With the Bootstrap Grid
  • Getting to Know Bootstrap 4
  • Integrating 3rd Party APIs
  • Implementing Redux
  • Implementing React Native
  • Building a Flashcard App
  • Sweeping Vues: Loops, Methods, Directives
  • What a Beautiful Vue!
  • JavaScript Tools and Workflows
  • JavaScript is Everywhere
  • Introducing Vue
  • JavaScript Frameworks, Libraries, and Developer Roles
  • JavaScript Outside of the Browser
  • Build an Application
  • Using Lists
  • Meet Lists
  • All Together Now
  • Functions and Looping
  • Types and Branching
  • Meet Python
  • Why React Native
  • Vulnerabilities: Configuration, Components, and Logging
  • Vulnerabilities: Authentication, Access, and Sensitive Data
  • Vulnerabilities:  Injection, XSS, CSRF
  • The OWASP Top 10 Explained
  • Maintaining Secure Web Apps
  • Protecting Data and Keeping Attackers Out
  • Why Protect Your Web Apps
  • Security: Solutions
  • Security: Concerns
  • Security in Practice
  • Common Attacks and Defenses
  • Hello Internet!
  • Reusable GraphQL
  • Making Changes with Mutations
  • Fetching Data with Queries
  • Getting Started with GraphQL
  • Dungeon Game 2
  • Python Sets
  • Python Tuples
  • Python Dictionaries
  • Adding a New Web Page
  • Python Slices
  • Make It Beautiful with CSS
  • HTML: The Structural Foundation of Web Pages and Applications
  • Python Lists
  • Getting Familiar with HTML and CSS
  • Letter Game App
  • Number Game App
  • Shopping List App
  • Logic in Python
  • Python Data Types
  • Python For Beginners
  • Improving the Application Code
  • Editing and Filtering Names
  • Adding and Removing Names
  • Next Steps
  • Improving Our Tests
  • Behavior Driven Development with Mocha & Chai
  • Introducing Unit Testing
  • Improving your Gulp Workflow
  • Compile Sass with Gulp
  • Gulp your JavaScript workflow!
  • Welcome to Gulp.js
  • 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
  • Getters and Setters
  • Working with Classes in JavaScript
  • Object Basics
  • Introduction to Object-Oriented JavaScript
  • Working with jQuery Collections (2017)
  • Understanding jQuery Events and DOM Traversal (2017)
  • Introducing jQuery (2017)
  • Updating and Uninstalling Packages with npm
  • Installing Packages with npm
  • What is npm?
  • Traversing the DOM
  • Responding to User Interaction
  • Making Changes to the DOM
  • AJAX and APIs
  • jQuery and AJAX
  • Programming AJAX
  • AJAX Concepts
  • Putting it all Together
  • Actions, Dispatch and Reducers. Oh my!
  • Modularizing the React Scoreboard Application
  • Getting Started with Redux
  • Going Further with Routing
  • Navigating, Nesting and Redirecting Routes
  • Getting Started with React Router
  • ES2015 Basics
  • Getting a Handle on the DOM
  • JavaScript Objects
  • The Browser Environment
  • JavaScript Arrays
  • JavaScript Functions
  • JavaScript Conditional Statements
  • JavaScript Loops
  • JavaScript Numbers
  • JavaScript Variables
  • Create Function Using Arrow Syntax
  • Using Template Literals
  • Introducing JavaScript
  • Defining Variables With let and const
  • Finishing the Game
  • Introducing JavaScript
  • Serving Static Files in Express
  • Applying Express Knowledge
  • Middleware
  • Deeper into Routing with Express
  • Using Templates with Express
  • Getting Started with Express
  • 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
  • Sessions and Cookies
  • User Registration and Login
  • What is Authentication?
  • Go Further With Mongo
  • Working With Collections
  • Understanding MongoDB
  • Getting Started with MongoDB
  • Refining the App
  • Building the Application
  • Setting up with Create React App
  • Telling the Story
  • Designing for Your User’s "To-be"
  • Understanding your User’s β€œAs-is” Scenario
  • Becoming Acquainted with Your User
  • Becoming a Design Thinker
  • Component Lifecycle
  • Designing Dataflow
  • Stateful Components
  • Thinking in Components
  • First Steps in React
  • Newbie