Iain Diamond

Iain Diamond

Dundee, Scotland

I am an aging hippy. I worked as a software engineer for many many moons in the mobile telecommunications field, predominantly using C/C++.

29,379

Total Points

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

359 Achievements

  • Services and Dependencies
  • Sending Messages
  • Two-way Data Binding
  • AngularJS MVC Frameworks
  • Introduction to Objective-C
  • Pointers and Memory
  • Functional Programming in C
  • Fundamentals of C
  • Pricing and Project Proposals
  • Capturing Photos and Videos
  • Getting Started with CSS
  • Blogging with WordPress Overview
  • PHP Basics for WordPress
  • Introduction to PHP for WordPress
  • Relating Users in Parse.com
  • Finding Your First Project
  • Starting a Freelance Career
  • Using Fragments for Tabs
  • Broadcasting
  • Welcome to the Treehouse Club
  • WWW
  • Store Inventory Using Modules
  • Include and Extend
  • Takin' Names
  • Making Strong Users
  • Ruby Core Modules
  • Ruby Module Basics
  • Limiting Results in Queries
  • Using Relationship Tables
  • Filtering Input for Queries
  • Querying the Database
  • Connecting to MySQL
  • Relating Models
  • Laravel CRUD
  • Validation & Flash Messages
  • Laravel Forms
  • Laravel & Databases
  • Laravel Controllers
  • Laravel Project Setup
  • Laravel Getting Started
  • Organizing your Tests
  • Adding Users Using Parse.com
  • Starting the App
  • Quiz Practice Project
  • Prototypal Inheritance
  • Constructor Functions & Prototypes
  • Introduction to Methods
  • Improving Our User Interface
  • Using a Data Model
  • Ruby on Rails Authentication
  • Creating Your Tests
  • Tools for Testers
  • How To Test Our Code
  • Paginating a List: Model and View
  • Protecting and Sharing Your Work
  • Licensing
  • Paginating a List: Controller
  • Fair Use and Public Domain
  • Getting Started with Copyright
  • Adding Search: Model
  • Views and View Controllers
  • Getting Started with Xcode
  • Closures in iOS
  • Closures and Closure Expressions
  • Functions as First Class Citizens
  • Swift Value vs Reference Types
  • Swift Properties
  • Swift Inheritance
  • Swift Classes and Objects
  • Adding Search: Controller & View
  • Swift Structs and their Methods
  • Swift Structs
  • Swift Enums and their Methods
  • Refactoring the Codebase
  • Scrum Artifacts
  • Swift Enums
  • Swift Optionals
  • Scrum Events
  • Swift Parameters and Tuples
  • Swift Functions
  • Control Flow
  • Introducing Scrum
  • What is Agile?
  • Cleaning URLs with Rewrite Rules
  • Cleaning URLs with Subfolders
  • Integrating Validation Errors
  • Getting Started with WordPress
  • Exploring Ember
  • Ember Data
  • Collections
  • Operators
  • Types
  • Models
  • Controllers
  • Routes and Templates
  • Getting Started with Ember.js
  • Forms
  • Tables
  • Objects
  • Links
  • Lists
  • Text
  • Introduction
  • MASH JavaScript
  • Rails Frontend Development
  • Getting Started With Rails
  • MASH CSS
  • Advanced Selectors
  • Going Further with Attribute Selectors and Pseudo-Classes
  • Selectors - Beyond the Basics
  • What Do User Experience Designers Do?
  • What is User Experience (UX)?
  • MASH HTML
  • Creating Distributable OOP Packages
  • Error Handling
  • Autoloading and Composer
  • Variables and Constants
  • Databases and International Concerns
  • Starting Right with PHP Best Practices
  • Database Security
  • Queries & Results
  • Getting Started with PDO
  • Simple PHP Application: Wrapping Up The Project
  • Working with PHP Functions
  • Integrating With Paypal
  • Ruby Testing
  • Listing Inventory Items
  • Securing and Maintaining a MySQL Database
  • 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
  • Introduction to Data, Databases and SQL
  • Adding a Contact Form
  • Creating the Menu and Footer
  • Getting Started with PHP
  • Standard Library
  • Cleaning Data
  • Describing Data
  • Getting Started with Data Science
  • Character Builder
  • Ruby Core
  • Ruby Modules
  • Acting on List Item Taps
  • Lists with RecyclerViews
  • Using Parcelable Data
  • Custom ListViews
  • Standard ListViews
  • Updating the Data Model
  • Ruby Procs & Lambdas
  • Ruby Blocks
  • Ruby Loops
  • Ruby Methods
  • Ruby Hashes
  • Hooking up the Model to the View
  • Building the Weather UI
  • Working with JSON
  • Concurrency and Error Handling
  • Networking
  • Exploring an API
  • Using Git for Android
  • Getting Started with Genymotion
  • Getting Started with Android Studio
  • Finishing the User Interface
  • The Model-View-Controller Pattern
  • Soft Skills - Psychology
  • Writing Online
  • Productivity
  • Intents and Multiple Activities
  • User Input
  • Presentation Skills
  • Important Skills For Professional Success
  • Testing and Debugging
  • Improving Our Code
  • Coding the Fun Facts
  • Basic Android Programming
  • Creating the Initial Screen Layout
  • Improving your Gulp Workflow
  • Compile Sass with Gulp
  • Gulp your JavaScript workflow!
  • Welcome to Gulp.js
  • Getting Started with Android
  • Efficiency!
  • Exploring the Java Collections Framework
  • Contact Forms & Mailers
  • Slim and Templates
  • Dependency Management
  • Computer Languages
  • Computer Basics
  • Organizing Data
  • Getting There
  • Advanced Tooling
  • IDE Exploration
  • How it Works
  • Delivering the MVP
  • Creating the MVP
  • Using a jQuery Carousel
  • Add a Sticky Navigation Bar
  • Introducing jQuery Plugins
  • PHP Inheritance & Interfaces
  • PHP Properties & Methods
  • PHP Objects and Classes
  • PHP Internal Functions
  • PHP Returns & Closures
  • PHP Functions Basics
  • PHP Loops
  • PHP Conditionals
  • PHP Datatypes
  • PHP Data & Structure
  • PHP Getting Started
  • Ruby Arrays
  • Ruby Numbers
  • Ruby Strings
  • Objects, Classes, and Variables
  • Ruby Basics
  • Flask Templates
  • Welcome to Flask
  • Harnessing the Power of Objects
  • Meet Objects
  • Perfecting the Prototype
  • Using your New Tools
  • Getting Started with Java
  • 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
  • Hack-n-Slash
  • Python Inheritance
  • Python Objects
  • Dungeon Game
  • Tuples
  • Dictionaries
  • Slices
  • Lists Redux
  • Local Python
  • Pick a Number! Any Number!
  • Putting the "Fun" Back in "Functions"
  • Shopping List
  • Things That Count
  • Ins & Outs
  • Say Hello to Python
  • Installing a Ruby Development Environment
  • 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
  • Input and Output
  • Search
  • Ruby Class Design
  • Blocks Practice
  • Working With Blocks
  • Ruby Blocks
  • Build a Simple Todo List Program
  • Ruby Booleans
  • Build a Bank Account Class
  • Ruby Variables and Methods
  • Ruby Objects and Classes
  • Build a Simple Contact List
  • Ruby Iteration
  • Ruby Loops
  • Build a Grocery List Program
  • Ruby Hashes
  • Ruby Arrays
  • Ruby Logical Operators
  • Ruby Control Structures
  • Ruby Operators
  • Ruby Methods
  • Ruby Numbers (Ruby Basics)
  • Ruby Strings (Ruby Basics)
  • How Ruby Works
  • Web Apps
  • Websites
  • Introduction
  • Chrome DevTools Basics
  • Combine and Minify Assets
  • Optimize Assets
  • Measuring Performance
  • Planning for Performance
  • AJAX and APIs
  • jQuery and AJAX
  • Programming AJAX
  • AJAX Concepts
  • Responsive Patterns
  • Media Queries
  • Responsive Theory
  • Custom Media Players
  • Captioning Video
  • Traversing and Manipulating the DOM with JavaScript
  • Selecting Elements and Adding Events with JavaScript
  • JavaScript and the DOM
  • WordPress Plugin Best Practices
  • Widgets and Custom Menus
  • Custom Post Types and Fields
  • Customizing WordPress Themes
  • WordPress Themes
  • Installing Wordpress
  • Media Basics
  • Structuring Tables
  • Table Basics
  • Creating a Simple Drawing Application
  • Workflows
  • Working With Remote Repositories
  • Merging
  • Branches
  • Getting Started With Git
  • Why Version Control Matters
  • Creating an Icon
  • Introduction to Illustrator
  • Installing Programs
  • Environment and Redirection
  • Console Processes
  • Creating a Password Confirmation Form
  • Console Users and Permission
  • Moving Around in the Console
  • Creating a Mobile Drop Down Menu
  • Creating a Simple Lightbox
  • Creating a Spoiler Revealer
  • Introduction to jQuery
  • JavaScript Objects
  • JavaScript Arrays
  • JavaScript Loops
  • Choosing Options
  • Organizing Forms
  • Form Basics
  • JavaScript Functions
  • JavaScript Conditional Statements
  • JavaScript Numbers
  • JavaScript Variables
  • Introducing JavaScript
  • Fundamental Concepts
  • Designing with the Latest Features
  • Basic Layout
  • The Box Model
  • Understanding Values and Units
  • 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
  • Newbie