David Lin

David Lin

Member Since September 8, 2016

35,861

Total Points

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

Skills & Experience

  • Company

    BMW

  • Job Title

    Software Engineer

  • Spoken Languages

    • English
    • Mandarin Chinese

434 Achievements

  • What is Asynchronous Programming?
  • Docker Use Cases
  • Sorting Algorithms
  • 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
  • Getting the REST You Need 2
  • Go Further With Mongo
  • Working With Collections
  • Writing a Classifier
  • Machine Learning Vocabulary
  • Introduction to Machine Learning
  • JavaScript Frameworks, Libraries, and Developer Roles
  • JavaScript Outside of the Browser
  • JavaScript Tools and Workflows
  • JavaScript is Everywhere
  • JavaScript Objects and Conditionals
  • JavaScript Arrays and Loops
  • JavaScript Functions
  • Data Types and Variables
  • Callbacks and the DOM
  • Callbacks with Timers
  • Introduction to Callback Functions
  • Exterminator
  • Creating a Command Line Weather Application
  • Handling Errors in Node
  • Getting Data From an API With Node
  • Introduction to Node.js
  • Actions and Animations
  • Game Loop and Texture Atlas
  • Intro to Sprite Kit
  • Day 3: Getting Creative
  • Day 2: Advanced Selecting
  • Day 1: Joining Tables
  • Orientation: Selecting Data
  • Displaying Additional Views
  • Using the Vending Machine
  • Loading Data From a Resource
  • Modeling an Interface
  • Adding Sound Effects
  • Personalizing The Story
  • Refactoring Our Code
  • Creating the User Interface Programmatically
  • Creating a Story
  • Navigating Through An Adventure
  • Requesting Real Data
  • Enhancing the iTunes Endpoint
  • Next Steps
  • Financing Our Company
  • Selling Your Product
  • Marketing Your Product
  • Product Market Fit
  • Discovery
  • Writing Great Swift
  • Delivering the MVP
  • Creating the MVP
  • Harnessing the Power of Objects
  • Meet Objects
  • Iteration
  • Gotchas and Wins
  • Creation
  • Downloading Album Artwork
  • URLs and Parameter Encoding
  • Building the User Interface
  • Modeling iTunes Search Results
  • Big Data at Netflix
  • Where and How Big Data Is Used
  • What is Big Data
  • Project Setup
  • Entity Framework and Databases
  • Introducing Entity Framework
  • Functional!
  • Unit Testing
  • Now You're Querying!
  • Sets and Dictionaries
  • Lists
  • Arrays
  • Reformatting User Input
  • Validating a Form with Regular Expressions
  • Regular Expressions
  • Events
  • Hello, jQuery!
  • Inserting and Saving Data Using a Context
  • Understanding the Core Data Stack
  • Finishing the Game
  • Introducing JavaScript
  • Decoupling the Data Source
  • Sorting Contacts Into Sections
  • Static Table Views for Detail Interfaces
  • Displaying Contact Data
  • A High Level Overview
  • Dark Sky API Client
  • Downloading JSON Data Asynchronously
  • Fetching Data From the Web
  • Modeling Forecast Data
  • Access Control
  • Memory Management in Swift
  • Extensions and Protocols
  • Value Semantics, Type Methods and Inheritance
  • Object Initialization
  • Textures in the Standard Shader
  • Properties
  • Adding Reviews and a Map
  • Understanding Materials
  • Retrieving Restaurant Details Using Operations
  • Exporting Models Into Unity
  • Scene File Organization and Clean-up
  • Simplifying Networking Code
  • Obtaining a Location Fix
  • Using the Delegate Pattern in iOS
  • The Delegate Pattern
  • Authorization with Third Party Libraries
  • Go Concurrency Overview
  • Go Custom Types Overview
  • Go Data Structures Overview
  • Go Flow Control Overview
  • Go Syntax Overview
  • Abstraction
  • System.Object
  • Polymorphism
  • Data Retreiver
  • Serialized!
  • Data Parser
  • Data Reader
  • Loops and Final Touches
  • Encapsulation with Properties
  • Encapsulation and Arrays
  • Dice Roller
  • Inheritance
  • Python: Advanced Objects
  • Python: Inheritance
  • Python: Instant Objects
  • Methods
  • Object-Oriented Programming
  • Perfect
  • Perform
  • Adding Surface Detail to a Model
  • Console I/O
  • Prepare and Plan
  • Optimizing the Model
  • Box Modeling Techniques
  • Generics and Protocols
  • Generic Types
  • Working with Primitives
  • Getting Started in Maya LT
  • Higher Order Functions
  • Key Concepts in Unity
  • Generic Functions, Parameters and Constraints
  • Debugging Games
  • Error Handling and Memory Management
  • Building Standard Library Functions
  • Closure Expressions
  • First Class Functions
  • Lights, Audio, and Animation
  • Scala Collections
  • Assets and Game Objects
  • Functional Programming with Scala
  • Review Functional Programming Fundamentals
  • Reduction and Aggregation
  • Meet Streams
  • Java's Functional Toolset
  • The 3D Views
  • 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
  • Pickups
  • Player Input and Cameras
  • The Unity Editor and Scene Setup
  • Introduction to Video Games
  • 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
  • Dungeon Game 2
  • Python Sets
  • Python Tuples
  • Python Dictionaries
  • Python Slices
  • Python Lists
  • 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
  • API Protection
  • Resourceful Blueprints
  • Tacocat Challenge
  • How to Win Friends
  • Decoupling the Data
  • Broadcasting
  • Saving Data with CloudKit
  • Recording a Voice Memo
  • Takin' Names
  • Improving Our User Interface
  • View Controllers and Views
  • Getting Started with iOS Development
  • Making Strong Users
  • Creating Flexible Objects Using Protocols
  • Character Builder
  • Writing Your Own Java Annotation
  • Protocol Basics
  • Error Handling
  • Using Java's Built-In Annotations
  • Objects and Optionals
  • Structs As Data Models
  • Running Apps on a Device
  • Introduction to Optionals
  • Introduction to Enumerations
  • Perfecting the Prototype
  • Using your New Tools
  • Differentiating Between Objects
  • Class Inheritance
  • Classes in Swift
  • Complex Data Structures
  • Getting Started with Java
  • Control Flow With Conditional Statements
  • Control Flow With Loops
  • Dictionaries in Swift
  • Introduction to Collections
  • Adding Power to Functions
  • Functions in Swift
  • Swift Operators
  • Swift Types
  • An Introduction to Swift Programming
  • Flask Templates
  • Welcome to Flask
  • 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
  • The Lambda Lambada
  • Functional Workhorses
  • Functional Rules
  • Hack-n-Slash
  • Python Inheritance
  • Python Objects
  • Dungeon Game
  • Filtering the Data
  • Tuples
  • Saving and Displaying Selfies
  • Adding Metadata to Photos
  • Adding Image Filters
  • Dictionaries
  • Slices
  • Lists Redux
  • Taking a Selfie
  • Paged Scrolling
  • Understanding Scroll Views
  • Transitions, Gestures and More
  • Show Me the Data
  • Introduction to CollectionViews
  • Letter Game App
  • Number Game App
  • Shopping List App
  • Logic in Python
  • Python Data Types
  • Python For Beginners
  • MVC
  • Notifications
  • KVC and KVO
  • Singletons
  • Two-stage Object Creation
  • What Are Design Patterns?
  • Tying It All together
  • Diving Deeper
  • Memory, Arrays and Loops, Oh My!
  • Getting Oriented - Object-Oriented, That Is
  • Immersive Examples
  • Scope and Loops
  • More Operators
  • Operators and Conditionals
  • Data Types and Variables
  • Intro to Objective-C
  • Deleting and Updating Data
  • Understanding MongoDB
  • Fetching Data Using Fetch Requests
  • Inserting and Saving Data Using a Context
  • Quiz Practice Project
  • Handling Errors When Manipulating Data
  • Deleting Data from a Database
  • Updating Data in a Database
  • Adding Data to a Database
  • Prototypal Inheritance
  • Constructor Functions & Prototypes
  • Introduction to Methods
  • JavaScript Objects
  • Date and Time Functions
  • Aggregate and Numeric Functions
  • JavaScript Arrays
  • Understanding the Core Data Stack
  • JavaScript Loops
  • JavaScript Functions
  • JavaScript Conditional Statements
  • Objective-C in Action
  • Intermediate Topics in Objective-C
  • The Objective-C Mindset
  • Working with Text
  • Ordering, Limiting and Paging Results
  • Subqueries
  • Basic Types, Structures and Syntax
  • Moving from Swift to Objective-C
  • Implementing Maps and Search
  • Set Operations
  • Joining Table Data with SQL
  • JavaScript Numbers
  • Table Relationships
  • Database Keys
  • Getting Started with MongoDB
  • Obtaining a Location Fix
  • JavaScript Variables
  • Introducing JavaScript
  • Displaying Data in Table Views
  • Enhancing the Networking Stack
  • URLs and Parameter Encoding
  • Introduction to UITableView
  • Implementing a Forecast Client
  • Protocol Oriented Networking
  • Fetching Data From the Web
  • Modeling Forecast Data
  • Visual Format Language
  • Auto Layout in Code
  • Trait Collections
  • Inequalities, Content and Priorities
  • The Constraint Equation
  • A History Lesson
  • Asynchronous Error Handling
  • Closures in Cocoa Touch
  • Building Standard Library Functions
  • Closure Expressions
  • First Class Functions
  • Generics with Swift 2 - Beyond Basics
  • Generics with Swift 2
  • Reading Data from Databases with SQL
  • Adding Sound Effects
  • Refactoring the Model
  • DNS Basics
  • Graphic Basics
  • Finding the Data You Want
  • Creating the User Interface Programmatically
  • Why Version Control Matters
  • Installing MySQL Server and MySQL Workbench
  • Introduction to Data, Databases and SQL
  • Get Involved in Open Source
  •  Create a Web Presence on GitHub
  • Creating a Story
  •  Working on a Team
  • Getting Data from a Database
  • Data, Databases and SQL
  • Database Normalization
  • Navigating Through an Adventure
  • Working By Yourself
  • Hello, GitHub!
  • GET and POST Requests in a Browser
  • Introduction to HTTP
  • What is the MailChimp API
  • Getting the REST You Need
  • Delegation in iOS
  • Introduction to Delegates
  • Memory Management in Swift 2
  • Extensions and Protocols
  • Value Semantics, Type Methods and Inheritance
  • Object Initialization in Swift 2
  • Properties in Swift 2
  • Displaying Additional Views
  • Using the Vending Machine
  • Loading Data From a Resource
  • Modeling An Interface
  • Error Handling in Swift 2.0
  • Creating Flexible Objects Using Protocols
  • Swift 2.0 Protocols
  • Objects and Optionals
  • Introduction to Optionals
  • 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
  • Complex Data Structures
  • Function Parameters
  • Functions in Swift 2.0
  • Control Flow with Conditional Statements
  • Control Flow With Loops
  • WWW
  • The Internet
  • Computer Languages
  • Computer Basics
  • Swift Dictionaries
  • Introduction to Collections
  • Swift Operators
  • Swift Types
  • An Introduction to Swift Programming
  • Newbie