benormal homepage GitHub BrainDeadAir on Twitter

I write educational material aimed at helping people to learn technology skills. I specialise in Web and software development topics, producing programming tutorials, API and help documentation.

previewTech writer on Mozilla's Open Badges project from early 2014 - see my GitHub profile for an overview.

I've written API and help documentation, tutorials, drafted standards specifications and user interface copy - see these projects for more: I've also made a few MDN contributions on a voluntary basis.
previewI've worked for Mobiletuts+ as an author and assistant editor/ technical reviewer since 2011. Here are some of my articles on Android and Java development:
Mobiletuts+ Tutorials +
Android SDK - Implement a Share Intent
Android SDK - Using the Text to Speech Engine
Data Management Options for Android Applications
Android SDK: Context Menus
Android SDK: Implement an Options Menu
Creating a Twitter Client for Android [Series]
Code Workshop: Java Strings
Mobiletuts+ Quiz: Java Fundamentals
Mobiletuts+ Quiz: Android User Interface Essentials
Android SDK: Displaying Images with an Enhanced Gallery
Android SDK: Build a Speak and Repeat App
Image Display and Interaction with Android WebViews
Capture and Crop an Image with the Device Camera
Mobiletuts+ Quiz: Android Application Fundamentals
Building a Customizable Android Analog Clock Widget [Series]
Building Apps with Environment Sensors [Series]
Build an ASCII Art Editor [Series]
Build a Twitter Search App [Series]
Implementing Drag-and-Drop Functionality
Creating Custom Views
Receiving Data from the Send Intent
Creating a Simple Tween Animation
Creating Frame Animations
Creating a Simple Property Animation
Working with Google Maps - Application Setup [Series]
Create a Barcode Reader
What's Happening in Android: Google I/O and the Developer Console
Create an Interactive Screen Saver with Daydream
Create a Book Scanning App [Series]
Create an Arithmetic Game [Series]
Create a Drawing App [Series]
Drawing with Pattern Fills
Drawing with Opacity
Supporting Alternative Input Devices
Android from Scratch - Android SDK Requirements
Android from Scratch - Working with Eclipse
Android SDK: Working with Android Studio
Android SDK: App Structure
Android SDK: User Interface Design
Android SDK: User Interaction
Java Application Programming
Android SDK: App Resources
Android SDK: Project Manifest
Android SDK: App Data
Android SDK: Virtual & Physical Devices
Android SDK: Running & Debugging
Android SDK: Activities & Lifecycle
Android SDK: Common Android Components
Android SDK: Samples
Android SDK: Publishing and Releasing
Android SDK: Next Steps
Android SDK: Detecting Gestures
Android SDK: Create a Hangman Game
Create a Music Player on Android [Series]
Integrating Google Play Services on Android
Streaming Video in Android Apps
Google Play Game Services: Achievements
Google Play Game Services: Leaderboards
An Introduction to Android Transitions
previewArticles for Smashing Magazine including: - also featured in the eBook Designing for Android.
previewI worked with Liquid Technologies regularly between 2012 and 2014, providing articles, tutorials, videos and help documentation for Liquid XML Studio, an XML development software product. See the following pages:
previewAn HTML5 Web development tutorial for Nettuts+ covering interactive animated SVGs:
previewWeb development articles for Web Designer Depot on HTML5 topics:
previewTech articles for Techopedia IT professionals' dictionary site:
previewWeb development tutorials for Developer Drive, a Web development blog covering emerging technologies, particularly focusing on HTML5 and CSS3:
Developer Drive Tutorials +
previewA series of Web development/ design tutorials for DWUser Education Center:
previewWeb design and development tutorials for Web Design Library:
previewUpdating, rewriting and creating new material for Blueberry Consultants, see these pages:
previewWeb development tutorials for Syntaxxx, a Web design/ development tutorial and tips site:
Syntaxxx Tutorials +

previewAn extensive series of instructional tutorials on technical subjects such as Flash and Java development for Apex Computer Training Software, see these examples:
Java Tutorials + Flash Tutorials +

When I started as a tech writer I wrote hundreds of articles for Demand Studios - here are some of them:

Sites including eHow and Chron +
-   What are the differences between a circular queue and a linear queue?
-   What are the functions of a smartphone?
-   How to create an Android app in Eclipse
-   How to send an SMS on the Android API
-   The Difference Between Dynamic & Static Web Pages
-   How to Implement Templates in Android
-   Do Android Apps Continuously Use Data?
-   Android Accessibility Features
-   Android MapView vs. MapActivity
-   Apple Marketplace vs. Android Marketplace
-   What Is Keystroke Encryption?
-   iPad App Vs. Web App
-   Similarities Between Facebook & Google
-   How Do Companies Use Web Analytics?
-   Android: What is a Sticky Broadcast?
-   How to Get a Query String From a URL
-   Hidden HTML Buttons
-   Components of Ajax
-   How to Build Android Layouts Graphically
-   Google Android Programming Tutorial
-   How to Create Multiple Activities on the Android
-   Tutorial for SQLite on an Android
-   What Is Abstract Path Name in Java?
-   How to Use Empty and Non-Empty in PHP
-   How to Learn a Basis for Ajax
-   Number of Occurrences in SQL
-   Different Web-Based Protocols
-   The Importance of Title Tags
-   How to Use the Post Method in AJAX
-   How Mask Effects Work in Flash
-   What Is a Flash Decompiler?
-   How to Convert a Date to Hexadecimal
-   What Is Ajax Programming?
-   Project Topics in Web Development
-   Difference Between a Block & an Inline Element
-   Google Android for Computers
-   Why Use a Low Level Programming Language Like Assembly?
-   The Role and Function of Metadata
-   What Is a Constructor in PHP?
-   Types of Exceptions in Java
-   Android App Development Tutorial
-   How to Remove All CSS Styles for a Single DIV
-   How to Program Apps for the Android
-   PHP Syntax Error: Unexpected T String
-   AJAX Syntax Errors
-   What Does "Array Dimension Missing" Mean in Java Programming?
-   JavaScript Syntax Error
-   Bounce Rate Vs. Exit Rate in Google Analytics
-   XML Parsing Failed
-   Difference Between Java Mutable and Immutable
-   Java Cannot Make a Static Reference to a Non-Static Method
-   Heap Vs. Stack in Java
-   Definition of a Data Structure & Algorithms
-   PHP Array Sort Function
-   What Is a Data Attribute?
-   PHP String Types
-   About Java Character Functions
-   Client-Server Relationships
-   What Is SRC Attribute in HTML?
-   What Is an Event Source in Java?
-   How to Tokenize Input Files in Java
-   How to Take Input in Java Using a Scanner
-   The Advantages of Knowing Many Programming Languages
-   Problems With Well-Formed XML Documents
-   What Is a CDATA Section in XML?
-   XSL Attribute Error with XML
-   JavaScript Output Manipulation
-   Syntax for Looping Functions
-   5 Components of Multimedia
-   What Is an Unresponsive Script?
-   What Is an Element Tag?
-   The Scanner Input Function in Java
-   Why Does an Infinite Loop Occur?
-   What Are the Benefits of Conditional Statements?
-   The Functions of a DBMS
-   How to Create an XML Document & Root Element as a String in PHP
-   What Does Invalid Syntax Mean?
-   Difference Between a Syntax Error and a Semantic Error
-   ADT Abstract Data Types
-   Syntax of SQL Calculations
-   What Are the Differences Between Syntax and Semantic Errors in Java?
-   How to Generate Random Numbers Without Repetition in Java
-   Android Developer Basics
-   Android Styles
-   How to Create a Menu Step-by-Step for the Android
-   Android Development Intro
-   Recursion Problems in Java
-   Java Naming Restrictions
-   How to Find the Duplicated Number in an Array in Java
-   Can I Delete JS Files?
-   Callback Functions in JavaScript
-   Definition of a Callback Function
-   How to Loop Through Select Options
-   Difference Between Front End and Back End
-   What Is the Purpose of a Boolean Operator?
-   Uses for a Recursive Function
-   PHP Static Functions
-   JQuery Callback Function
-   What Are Tag Attributes?
-   The Structure of Title Tags
-   JavaScript Runtime: Height of Div
-   Loop Functions in Flash AS3
-   Android GUI Programming
-   How to Start New Activity With Parameters on an Android
-   Function of a Validator
-   JavaScript Advantages of Using Algorithms
-   MySQL Integer: Signed Vs. Unsigned
-   What Are the Benefits of XML Metadata & Schemas?
-   MySQL Vs. Text
-   Syntax vs. Semantic Error
-   Fractional Part of a Float in Java
-   What Is Color Constant in Java?
-   What Is Syntax Highlighting?
-   Metadata Description
-   The Benefits of Using jQuery
-   Boolean Logic Allows You to What?
-   Coding in Java
-   What Is Type Casting in Java?
-   What Is an Event in Java?
-   The Importance of Basic Structure in HTML
-   What Are Instance Variables in Java?
-   PHP Helper Functions
-   PHP Syntax Errors
-   XML Syntax Rules
-   Android Terminology
-   What Does Return False Mean in Javascript?
-   What Is an Assignment Statement in Java?
-   What Is a GUI Application?
-   Google Android App Development
-   Android GUI Development
-   HTML Help Validator
-   Set Vs. List in Java
-   Java and Random Functions
-   Website Building Techniques
-   Java Coding Language
-   Java Code for Absolute Beginners
-   HTML Coding
-   Range Query In MySQL
-   Difference Between Checked and Unchecked Exceptions in Java
-   Definition of Server-Side Development
-   Beginning Android Developments
-   What Is a Smartphone App?
-   What Is an Internet Spider?
-   What Is Organic Web Traffic?
-   Java Input Exceptions
-   Why Does Java Use Braces on Conditional Statements?
-   The Java Method to Split Lines
-   Array Index Out of Bounds Exception in Java
-   The Round Method in Java
-   Web Hosting Security Issues
-   Wireless Tethering
-   What Is the String Class in Java?
-   The Function of toString in Java
-   Basic Computer Principles
-   What Are the Functions of Computer Input Devices?
-   How to Get the Most Out of an Android Phone
-   The RFID Technology System
-   About Linux Operating Systems
-   How to Transfer From a PC to an Android
-   How to Write an Abstract Class in Java
-   How to Create an Android Barcode for a Website
-   How to Run the Android Emulator on Your PC
-   What Are Smartphones?
-   Guide to Web Site Traffic
-   Client Server Concepts
-   The Basic Functions of an Operating System
-   Project Plan for Software Development
-   A Usability Testing Checklist for Web Pages
-   String Functions in Oracle SQL
-   Web Usability Guidelines
-   Features of Web Content Management
-   Web Development Tools
-   Tools Used in Software Development
-   Android Performance Tips
-   What Is XML Encoding?
-   How XML Works
-   HTML Rendering Problems
-   Android Software
-   Android UI Development
-   Android Phone App Development
-   Android Hints & Tips
-   Website Design Guidelines
-   Java Coding Standards
-   Must Have Web Development Tools
-   What Can You Do on Twitter?
-   Differences Between Static & Dynamic Webpages
-   What Is a Bug in a Computer?
-   Security Threats for Database Backed Web Applications
-   Oracle Database Characteristics
-   Dynamic Host Protocols
-   RTSP Protocols
-   ISO Protocols
-   Pitfalls in Relational Database Design
-   Developing for Mobile Phones
-   How to Use Survey Tools in Creative Ways
-   How to Understand XSD
-   How to Create Web 2.0 Effects
-   How to Debug a Syntax Error
-   How to Learn Joomla Web Design
-   How to Develop a Client Server Application
-   How to Design a Database Application
-   Mobile Web Development Tutorial
-   Programming Code Help
-   How to Build a Web 2.0 Site
-   How to Troubleshoot Web Pages
-   How to Build a Complex Website
-   Components of a Client Server Application
-   How to Use an Infinite Loop
-   How to Design Websites for Teens
-   About Client Server Technology

My own stuff:

previewAndroid Things
Blog about Android developer tutorials, tips, resources and thoughts.

previewBest Tech Tutorials
Blog listing the best tech tutorials on development and computing topics.

previewThe Tech Interpreter
Tutorial blog covering a range of development/ computing activities.

A few Huliq Articles:
-   Wolfram Alpha
-   Real Housewives
-   Alan Turing
-   Damien Hirst
-   Double Slash

I've written a few other non-tech things over the years: OTHER.

I've worked as a freelance Web/ software developer and technical writer since completing my Masters in 2007 (MSc/ PgDip IT with Distinction, Glasgow University). My undergraduate degree was in English Language & Literature (Glasgow 1999) and I had a load of different jobs before I worked in tech.

I'm particularly interested in exploring how people learn technology and how they learn through technology.

Contact me at

benormal homepage GitHub BrainDeadAir on Twitter Valid XHTML 1.0 Transitional