Home > Authors

David Chisnall

David Chisnall arrived at the Swansea University in 2000, looked at the sun and sea, and decided to stay there. Three years and one degree later, he was no longer under the illusion that the sun was a regular feature, but was persuaded to remain for another degree by the promise of a desk with a view of the sea. During his time as a PhD student, he worked hard at the best known of postgraduate activities: procrastination. This involved writing portions of A Practical Guide to RedHat Linux, Second Edition and regular articles for InformIT and a local tech news startup (which, as these are prone to do, has since gone bust).

David is an active member of the open source community. He is a founding member and core developer of the Étoilé project, which aims to build an open source user environment based for desktop and mobile computing systems on top of GNUstep. He also contributes to GNUstep and is the author of the GNUstep Objective-C runtime and maintains Objective-C support for open source operating systems in LLVM/Clang. In 2012 he was elected to the FreeBSD Core Team. His contributions to FreeBSD include improvements to locale support in libc, the port of libc++, and a replacement C++ runtime library: libcxxrt.

In 2007, David's first book, The Definitive Guide to the Xen Hypervisor, was published. This was begun as a procrastination activity, to distract himself from his looming PhD thesis deadline, and was successful: the book and the thesis were both completed within a fortnight of each other. He spent the next few years working freelance and writing three more books, two about Objective-C and one about Go, before returning to academia. He is now part of the Security Group at the University of Cambridge Computer Laboratory where he works on language and hardware co-design and continues to consult on compiler and language-related topics.

1.
Advice for New Programmers: Choose Your First Language Wisely
Dec 10, 2013
2.
Understanding Hardware Transactional Memory in Intel's Haswell Architecture
Nov 5, 2013
3.
Scheduling Challenges with ARM's big.LITTLE Architecture
Oct 28, 2013
4.
The Dark Silicon Problem and What it Means for CPU Designers
Oct 22, 2013
5.
What Language I Use for… Creating Reusable Libraries: Objective-C
Oct 11, 2013
6.
What Language I Use for… Building Scalable Servers: Erlang
Oct 10, 2013
7.
What Language I Use for... Hardware Design: BlueSpec
Oct 8, 2013
8.
The Benefits of Learning Multiple Programming Languages
Oct 7, 2013
9.
How to Contribute to Open Source Projects
Dec 11, 2012
10.
seL4: A Security-Focused Microkernel
Dec 3, 2012
11.
The BBC Micro: Why It Mattered
Nov 22, 2012
12.
XHTML 2 vs. HTML5: A Tale of Two World Wide Webs
Nov 20, 2012
13.
"The Best Programming Advice I Ever Got" with David Chisnall
Oct 10, 2012
14.
An Overview of CoffeeScript
Aug 14, 2012
15.
An Overview of Dart, Part 2
Aug 6, 2012
16.
An Overview of Dart, Part 1
Jul 30, 2012
17.
Capsicum: Lightweight Isolation for FreeBSD Processes
Jul 9, 2012
18.
New Objective-C Features in LLVM 3.1
Jun 4, 2012
19.
A Go Primer
May 31, 2012
20.
A Whirlwind Tour of Haskell
May 22, 2012
21.
JavaScript: The Web Assembly Language?
Apr 16, 2012
22.
Functional Programming: Why Should You Care?
Mar 27, 2012
23.
A Light Introduction to ARM Assembly
Mar 20, 2012
24.
The New Features of C11
Mar 13, 2012
25.
New Objective-C Runtime Features in OS X 10.7 and iOS 5
Mar 6, 2012
26.
A Look at the 64-Bit ARMv8 Architecture
Feb 28, 2012
27.
Understanding C11 and C++11 Atomics
Feb 2, 2012
28.
Objective-C Memory Management
Jan 19, 2012
29.
David Chisnall Presents a Developer's Reading List
Jan 4, 2012
30.
Common Go Patterns
Dec 26, 2011
31.
Go for Objective-C Programmers, Part 3
Dec 20, 2011
32.
Go for Objective-C Programmers, Part 2
Dec 13, 2011
33.
Go for Objective-C Programmers, Part 1
Dec 8, 2011
34.
PKI: Broken, But Fixable
Nov 30, 2011
35.
NSOperation: Simple, Parallel, Cocoa
Nov 22, 2011
36.
A Tale of Two Concurrency Models: Comparing the Go and Erlang Programming Languages
Nov 14, 2011
37.
The Vision of Steve Jobs
Oct 25, 2011
38.
Open Standards for Social Networks
Oct 18, 2011
39.
Supporting Solid State Disks
Oct 10, 2011
40.
Solid State Disks: Now and In the Future
Oct 5, 2011
41.
Garbage Collection: Why, When, and How?
Sep 6, 2011
42.
Prototypes and Object Orientation
Aug 27, 2011
43.
Prototypes in JavaScript
Aug 22, 2011
44.
Automatic Reference Counting in Objective-C, Part 2: The Details
Aug 17, 2011
45.
Automatic Reference Counting in Objective-C, Part 1
Aug 15, 2011
46.
Implementing Feature X in C++, Part 2
Aug 8, 2011
47.
Implementing Feature X in C++, Part 1
Aug 1, 2011
48.
IPv6: What's the Problem?
Apr 27, 2011
49.
IPv6: Are We Nearly There Yet?
Apr 22, 2011
50.
Windows on ARM: The Challenges
Mar 30, 2011
51.
Cargo Cult Programming
Mar 24, 2011
52.
Text Processing with Objective-C, Part 2
Mar 8, 2011
53.
Text Processing with Objective-C, Part 1
Mar 1, 2011
54.
Objective-C Phrasebook: Numbers
Feb 25, 2011
55.
Optimizing Objective-C
Feb 7, 2011
56.
The Bright Parts of x86
Jan 31, 2011
57.
Giving Closure to C
Jan 24, 2011
58.
Fun with Attributed Strings
Jan 17, 2011
59.
Influential Programming Languages, Part 4: Lisp
Jan 12, 2011
60.
Influential Programming Languages, Part 3: Smalltalk
Jan 5, 2011
61.
Influential Programming Languages, Part 2: Simula
Dec 29, 2010
62.
Influential Programming Languages, Part 1: ALGOL
Dec 23, 2010
63.
Optimizing Code for Power Consumption
Nov 18, 2010
64.
Designing Mobile Interfaces
Nov 10, 2010
65.
How Hardware Will Shape Languages
Oct 13, 2010
66.
Writing Concurrent Systems, Part 3: Specialized Systems
Sep 27, 2010
67.
Writing Concurrent Systems, Part 2: Lockless Data Structures
Sep 20, 2010
68.
Writing Concurrent Systems, Part 1: Locking
Sep 13, 2010
69.
Understanding ARM Architectures
Aug 23, 2010
70.
Writing Portable C
Aug 17, 2010
71.
Engaging Open Source Communities
Aug 9, 2010
72.
Designing Abstractions
Aug 2, 2010
73.
Web Graphics, Part 3: WebGL
Jul 26, 2010
74.
Web Graphics, Part 2: Scalable Vector Graphics
Jul 19, 2010
75.
Web Graphics, Part 1: The Canvas
Jul 12, 2010
76.
Introducing OpenCL
Jul 6, 2010
77.
Understanding the Cocoa Text System
Jun 28, 2010
78.
Replacing Flash with Cocoa
Jun 23, 2010
79.
Cocoa Programming Fundamentals: UNIX Tools in Cocoa
May 27, 2010
80.
Inside the Symbian Kernel
Apr 26, 2010
81.
IPv6: Why Bother?
Apr 16, 2010
82.
Writing a Good Set of Coding Conventions
Apr 12, 2010
83.
SCTP: Reinventing Internet Communication
Apr 5, 2010
84.
Objective-C for Java Programmers, Part 2
Mar 29, 2010
85.
Objective-C for Java Programmers, Part 1
Mar 12, 2010
86.
Exploring HTML 5
Mar 8, 2010
87.
How to Make Money with Free Software
Mar 8, 2010
88.
Objective-C Design Patterns
Mar 5, 2010
89.
Grand Central Dispatch: Exciting or Overhyped?
Mar 2, 2010
90.
Introducing HTML 5
Feb 15, 2010
91.
The State of Open Source 3D
Feb 9, 2010
92.
What Is Mac OS X?
Feb 5, 2010
93.
Snow Leopard: The Underhyped APIs
Jan 29, 2010
94.
Foundation: The Objective-C Standard Library
Jan 26, 2010
95.
Cocoa Tips: Exposing System Services
Jan 22, 2010
96.
Cocoa Tips: Don't Reimplement Standard Functionality
Jan 15, 2010
97.
Localizing Cocoa
Jan 8, 2010
98.
How Core Animation Changed Cocoa Drawing
Jan 4, 2010
99.
Using Distributed Objects in Cocoa
Jan 1, 2010
100.
Inside Modern X11 Programming
Sep 18, 2009
101.
Making JavaScript Fast, Part 2
Sep 15, 2009
102.
Security in Your Pocket: OpenBSD on ARM
Sep 11, 2009
103.
Making JavaScript Fast, Part 1
Sep 8, 2009
104.
The Failure of the GPL
Aug 31, 2009
105.
How Not To Optimize
Aug 21, 2009
106.
A Half-Way Step to Apple’s Source Code: An Interview with David Chisnall
Jun 5, 2009
107.
Advanced Flow Control for Objective-C
Jun 5, 2009
108.
Erica Sadun on the iPhone SDK, OS X, and the Computing Landscape
Jun 5, 2009
109.
From NeXTSTEP to Cocoa: Erik Buck on the Development of Cocoa and Objective-C
Jun 5, 2009
110.
Fun with the Objective-C Runtime
Jun 5, 2009
111.
Marcus Zarra and Matt Long on Core Animation
Jun 5, 2009
112.
Steve Kochan on the Evolution of Objective-C
Jun 5, 2009
113.
The Technology NeXT Gave the World
Jun 5, 2009
114.
Where the Web and the Desktop Meet: An Interview with Lee Barney
Jun 5, 2009
115.
Pandora: An Open Console
Jun 2, 2009
116.
The Future of Wireless Networking
May 15, 2009
117.
GNU or Linux?
May 11, 2009
118.
Debugging C-Family Languages
Mar 27, 2009
119.
How Small Is Your PC? The Rise of Netbooks and Other Small Form-Factor PCs
Mar 23, 2009
120.
David Chisnall's CPU Feature Wishlist
Mar 13, 2009
121.
The Dynamic Languages Renaissance
Jan 30, 2009
122.
Robert Seacord on the CERT C Secure Coding Standard
Dec 15, 2008
123.
Objective-C for C++ Programmers, Part 3
Nov 21, 2008
124.
Objective-C for C++ Programmers, Part 2
Nov 14, 2008
125.
Objective-C for C++ Programmers, Part 1
Nov 7, 2008
126.
Writing Insecure C, Part 3
Oct 24, 2008
127.
Writing Insecure C, Part 2
Oct 17, 2008
128.
Writing Insecure C, Part 1
Oct 10, 2008
129.
iRex iLiad e-Reader: Linux's Answer to the Kindle?
Aug 29, 2008
130.
How It Works: Filesystems
Jun 13, 2008
131.
How the LLVM Compiler Infrastructure Works
May 23, 2008
132.
How It Works: Virtual Memory
May 21, 2008
133.
What Is C For?
May 16, 2008
134.
The Future of eBooks
Apr 25, 2008
135.
Imagining an Open Network
Apr 18, 2008
136.
Understanding How Xen Approaches Device Drivers
Mar 21, 2008
137.
Examining the Legendary HURD Kernel
Mar 14, 2008
138.
Competition Among Open Source Compilers
Feb 1, 2008
139.
Inside Your OS: What is a Process Scheduler, and How Does it Work?
Jan 25, 2008
140.
Bad UI of the Week: Read This (OK/Cancel)
Jan 18, 2008
141.
The End of the Desktop Era
Jan 11, 2008
142.
The What and Why of Open IM
Dec 28, 2007
143.
A Look at the Modern X Server
Dec 21, 2007
144.
The Future of Digital Media
Dec 14, 2007
145.
The Future of Identity
Dec 7, 2007
146.
Bad UI of the Week: Ask Forgiveness, Not Permission
Nov 21, 2007
147.
Copyright Versus Free Software
Nov 16, 2007
148.
Is Computer Science Dying?
Nov 9, 2007
149.
A Brief History of Programming, Part 2
Nov 2, 2007
150.
A Brief History of Programming, Part 1
Oct 26, 2007

RSS Feed Subscribe  RSS details

Cocoa Tip of the Day, 1/29/10
January 29, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server
Cocoa Tip of the Day, 1/28/10
January 28, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server
Cocoa Tip of the Day, 1/27/10
January 27, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server
Cocoa Tip of the Day, 1/26/10
January 26, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server
Cocoa Tip of the Day, 1/25/10
January 25, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server
Cocoa Tip of the Day, 1/22/10
January 22, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server
Cocoa Tip of the Day, 1/21/10
January 21, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server
Cocoa Tip of the Day, 1/20/10
January 20, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server
Cocoa Tip of the Day, 1/19/10
January 19, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server
Cocoa Tip of the Day, 1/18/10
January 18, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server
Cocoa Tip of the Day, 1/15/10
January 15, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server
Cocoa Tip of the Day, 1/14/10
January 14, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server
Cocoa Tip of the Day, 1/13/10
January 13, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server
Cocoa Tip of the Day, 1/12/10
January 12, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server
Cocoa Tip of the Day, 1/11/10
January 11, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server
Cocoa Tip of the Day, 1/8/10
January 8, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server
Cocoa Tip of the Day, 1/7/10
January 7, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server
Cocoa Tip of the Day, 1/6/10
January 6, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server
Cocoa Tip of the Day, 1/5/10
January 5, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server
Cocoa Tip of the Day, 1/4/10
January 4, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server
Cocoa Tip of the Day, 1/1/10
January 1, 2010   Comments
Topics: Programming, MAC OS X/Other, Operating Systems, Server

David Chisnall