Niall Douglas
15 Hammond Place
Dromahane
Mallow
County Cork
+353 (89) 447 5617 Date of Birth:
View Niall Douglas's LinkedIn profileView Niall Douglas's profile on LinkedIn rev. 6.6 (2020-06-18) xmlprofile: 'IT'

I am a year 2000 graduate of Software Engineering at the University of Hull, England, with extensive experience of working prior to and during my degree, and where my final project was an Object Orientated Hardware Abstraction Layer with a port of the uC/OS II real time operating system. I am also a year 2008 Joint Honours Masters graduate in Economics & Management at the University of St. Andrews, Scotland, where my Masters dissertation topic was on Modelling the Costs of Climate Change and its Costs of Mitigation. In 2009 I graduated with a further Masters in Business Information Systems from NUI University College Cork, Ireland, with my team winning the prestigious 2009 Student Enterprise Awards held annually by Enterprise Ireland, the Irish Government organisation for entrepreneurship, for our Web 2.0 FIXatdl Financial Algorithmic Trading Definition Language Editor. In March 2013 I graduated with a PGCert in Educational and Social Research from the University of London, and in June 2013 I obtained a Certificate in Introduction to Complexity with the Santa Fe Institute. I completed in 2017 a Higher Certificate in Pure Mathematics with the Open University, having taken it part-time by distance over a five year period.

1996-06 1997-01 1997-07 1998-01 1998-07 1999-01 1999-07 2000-01 2000-07 2001-01 2001-07 2002-01 2002-07 2003-01 2003-07 2004-01 2004-07 2005-01 2005-07 2006-01 2006-07 2007-01 2007-07 2008-01 2008-07 2009-01 2009-07 2010-01 2010-07 2011-01 2011-07 2012-01 2012-07 2013-01 2013-07 2014-01 2014-07 2015-01 2015-07 2016-01 2016-07 2017-01 2017-07 2018-01 2018-07 2019-01 2019-07 2020-06
HE Cert Pure Maths:
Certificate Introduction to Complexity:
PGCert Educational and Social Research:
MBS Business Information Systems:
MA Joint Honours in Economics & Management:
BSc Software Engineering:
 Capital Markets Platform Consultant:
 Modernisation Contractor:
 A C99 preprocessor written in pure Python:
 Contract Consultant on Audio C++ library:
 Principal Architect Consultant on Boost, C++, thread safety and reliable UDP:
 Primary Boost C++ Libraries Admin for annual Google funding:
 Mentor for Boost.AFIO and Boost.Trie C++ libraries:
 Owner Representative:
 Affiliate Researcher:
 Senior Software Developer, Platform Development:
 Coauthor of Book "Economists and the Powerful — Convenient Theories, Distorted Facts, Ample Rewards":
 Implemented reliable wave buoy data collection solution:
 Appointed to International Standards Committees:
 Appointed to the Conference Committee:
 BEurtle BE distributed issue tracker GUI plugin for the TortoiseXXX family of SCMs:
 Appointed Social Networking Coordinator:
 The Luxubrations Οξυδέρκεα Startup Project:
 Business Lecturer:
 Made presentation and submitted N-notes:
 Wrote academic paper on user mode page allocation:
 Further optimisation of US DoD Planning Project gaining a further 10% performance improvement:
 Contributed EU VAT support to Plone's Easyshop eCommerce Product:
 Debugging and 13% performance improvement of US DoD Planning Project:
 Implemented Radio Over IP via Voice Over IP (Asterisk):
 ned Productions Limited IT Consultancy:
 Tutor in Economics, Business, Stats, Management and Web Programming:
 Economics Lecturer:
 Author of Book "Freeing Growth":
 Substantially improved the Brook GPU stream computing runtime, increasing performance forty-fold:
 The Future Society:
 nedmalloc Thread Caching Memory Allocator:
 Secretary of Senior Residents Committee:
 TnFOX template metaprogrammed C++ portability layer:
 The Tn Revolution Project:
 Chief Software Architect for EuroFighter Fuel & Hydraulic Test Benches:
 nedHAL object-orientated Hardware Abstraction Layer for ARM microprocessors:
 Performance Optimisation of ARM7 GPS firmware for Guidance Systems:
 Wrote i/o driver, EEPROM programmer and refactored DEC's StrongARM uHAL port:
 Year, Student and Science Faculty Student Representative:
 Language Compiler:
 Implemented distributed Post Office Address network query service over TCP/IP:
 Customer Support & Upgrading of PipeDream Office Software for Acorn RISC-OS:
1996-06 1997-01 1997-07 1998-01 1998-07 1999-01 1999-07 2000-01 2000-07 2001-01 2001-07 2002-01 2002-07 2003-01 2003-07 2004-01 2004-07 2005-01 2005-07 2006-01 2006-07 2007-01 2007-07 2008-01 2008-07 2009-01 2009-07 2010-01 2010-07 2011-01 2011-07 2012-01 2012-07 2013-01 2013-07 2014-01 2014-07 2015-01 2015-07 2016-01 2016-07 2017-01 2017-07 2018-01 2018-07 2019-01 2019-07 2020-06

Skills:

Technical

Assemblers ARM [expert] x64 [expert] x86 [expert]
Programming Languages C [expert] C++ [expert] C# [competent] GLSL [competent] HLSL [competent] Javascript [competent] OpenCL [competent] PHP [competent]
Python [expert] SQL [expert] VBA [competent] XSL [proficient]
Programming Libraries Boost [expert] DirectX [competent] jQuery [proficient] .NET [competent] OpenGL [competent] OpenSSL [expert] Qt [competent] X11 [proficient]
Platforms Google Android [competent] Apple Mac OS X [competent] POSIX Unix (Linux, FreeBSD) [expert] Windows [expert]
General embedded systems (kernel and driver development) [expert] multiprocessor & multithreaded systems [expert] object orientation [expert] stream and GPU high performance computing [expert] performance tuning [expert] generic programming [expert] functional programming [proficient] distributed programming [expert]
project management [proficient]

Language

Spanish Passable Conversational Spanish [competent]

Qualifications:

[ISCED level 5 code 4.46 (Mathematics and statistics)]
Higher Certificate (HE Cert) Pure Maths Pass
Open University Cork, IRELAND
[ISCED level 4 code 4.46 (Mathematics and statistics)]
Certificate (Certificate) Introduction to Complexity Pass (95%)
The Santa Fe Institute Waterloo, Ontario, CANADA
[ISCED level 6 code 1.14 (Teacher training and education science)]
Post-graduate Certificate (PGCert) Educational and Social Research Merit
University of London Cork, IRELAND
[ISCED level 6 code 3.34 (Business and administration)]
Master of Business Systems (MBS) Business Information Systems 2H2
National University of Ireland Cork Cork, IRELAND
Dissertation topic was: WebATDL – a Web 2.0 FIXatdl Financial Algorithmic Trading Definition Language Editor
[ISCED level 5 code 3.31 (Social and behavioural science)]
Master of Arts (MA) Joint Honours in Economics & Management 2H1
University of St. Andrews St. Andrews, Fife, UNITED KINGDOM
Dissertation topic was: Modelling the Costs of Climate Change and its Costs of Mitigation – A Scientific Approach
[ISCED level 5 code 4.48 (Computing)]
Bachelor of Science (BSc) Software Engineering
University of Hull Hull, Yorkshire, UNITED KINGDOM
Dissertation topic was: NedHAL – a modular, architecture-independent, multiprocessing-capable Hardware Abstraction Layer
[ISCED level 3 code 0.01 (Basic / broad general programmes)]
Irish Leaving Certificate (Seven Honours) 1 A, 5 B's, 1 C
Presentation Brothers College Cork, IRELAND
[ISCED level 2 code 0.01 (Basic / broad general programmes)]
Irish Junior Certificate (Ten Honours)
Presentation Brothers College Cork, IRELAND

Memberships:

College of Teachers Member no. 008996
World Economics Association (formerly Post-Autistic Economics Network) Member
British Computing Society Ordinary Member
Mensa Ireland Member

Awards and Recognitions:

Dublin C++ Users group Presented Sep 2018
Deterministic Disappointment
Boost C++ Libraries Underwent peer review of proposed Boost.Outcome C++ library (2nd time) Jan 2018
Peer Review Report for proposed Boost.Outcome v2 Jan 19th - 28th
The 2017 Meeting C++ conference Presented Nov 2017
Introduction to proposed std::expected<T, E>
Boost C++ Libraries Underwent peer review of proposed Boost.Outcome C++ library (1st time) May 2017
Peer Review Report for proposed Boost.Outcome v1 May 19th - June 2nd
Google Summer of Code 2017 Mentor for proposed Boost.StaticViews C++ library Jun 2017
https://svn.boost.org/trac10/wiki/SoC2017
The 2017 ACCU conference Presented Apr 2017
Mongrel Monads, Dirty, Dirty, Dirty
Boost C++ Libraries Peer Review managed proposed Boost.Stacktrace C++ library (2nd time) Mar 2017
Peer Review Report for proposed Boost.Stacktrace v2 Mar 17th - 26th
Boost C++ Libraries Peer Review managed proposed Boost.Stacktrace C++ library (1st time) Dec 2016
Peer Review Report for proposed Boost.Stacktrace v1 Dec 14th - 23rd
The 2016 CppCon conference Presented Sep 2016
Better Mutual Exclusion on the filesystem using Boost.AFIO
The 2016 ACCU conference Presented Apr 2016
Distributed Mutual Exclusion using Proposed Boost.AFIO
The 2015 CppCon conference Presented Sep 2015
Racing the File System
The 2015 C++ Now conference Presented May 2015
A review of C++ 11/14 only Boost libraries - Fiber, AFIO, DI and APIBind
The 2014 C++ Now conference Presented May 2014
My Thoughts on Large Code Base Change Ripple Management in C++
Boost C++ Libraries Peer Review managed proposed Boost.TypeIndex C++ library Nov 2013
Peer Review Report for proposed Boost.TypeIndex v2.1 Nov 12th – 21st 2013
Google Summer of Code 2013 Mentor for proposed Boost.AFIO and Boost.Trie C++ libraries Jun 2013
http://www.google-melange.com/gsoc/org/google/gsoc2013/boost
All Ireland Student Enterprise Awards Competition Winner of 'Export Capability' Award Jun 2009
G-One Trading for WebATDL (group project of MBS BIS above): http://www.ucc.ie/en/news/newsarchive/2009pressreleases/fullstory-76744-en.html
Google Summer of Code 2009 Nominated as Mentor for the Boost C++ libraries Jun 2009
Aer Lingus Young Scientist's Competition Came second in group Dec 1994
Motorola Software in Schools Competition Came second Dec 1993
International Logo Programming Competition Came second in Ireland and fourth in the world Jun 1989

Experiences Relevant To IT:

[NACE sector code J62.0.2 (Computer consultancy activities)]
[ISCO code 2132 (Computer programmer)]
Capital Markets Platform Consultant (ref: )
MayStreet Inc. Earnings (excl. stocks): €270000 per annum. Cork, IRELAND

Led out the design and implementation of the custom database part of MayStreet’s replacement for the SEC’s MIDAS platform, which captures all trades in the US including futures and options, and provides live and historical querying of that data to regulatory authorities. This was a challenging project, requiring extreme attention to detail and correctness in order to handle the volumes of data involved, whilst keeping latencies within tens of milliseconds no matter market volatility, and very high uptime and redundancy. Some features:

  • The database server could be unexpectedly halted at any time, including due to OOM, or due to spinning down AWS instances, without losing storage integrity. It could thus be restarted quickly, without losing the many Terabytes of locally cached content.
  • The database server could be replicated across any number of nodes, using an Amazon S3 bucket as the central repository from which missing chunks could be fetched, and cached locally. Each node automatically synchronises its defined subset of the total new data pushed to S3.
  • Arbitrary numbers of open queries could be kept open, each of which would yield new data as and when new data matching the open query ingressed into the database.
  • Each of the APIs capable of going to the network had a non-blocking and a coroutinised edition. This was a hedge against the then-buggy C++ coroutine implementations.
  • This was a VM-heavy implementation which regularly pushed hard against Linux kernel limits (each OPRA session might consume 900Gb per day, and there is forty-three of them, and OPRA was just one source of trade data). Most of the usual VM problems (TLB shootdown storms) were avoided using a custom mapped file implementation, so we had direct control over when to evict data, but also to substantially increase the i/o block size in order to fully leverage the bandwidth of the wide local RAID array of NVMe SSDs.
  • The implementation was written in C++ 17 and 20, exclusively using the reference implementation library for P1031 Low level file i/o configured with Experimental.Outcome as a library-based emulation of P0709 Zero-overhead deterministic exceptions .
  • Typical individual operation latencies (Linux, 100 days in database): add new day: 55 μs; publish day: 71 μs; query available days: 660 μs; get first update in a day: 13.7 μs.


Contracted through ned Productions Ltd.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
Deterministic Disappointment (ref: )
Dublin C++ users group Earnings: Unpaid Dublin, IRELAND

Literature review of the WG21 papers relating to deterministically handling failure, and using libraries such as Outcome to implement the same.

[NACE sector code J62.0.2 (Computer consultancy activities)]
[ISCO code 2132 (Computer programmer)]
Modernisation Contractor (ref: )
Verizon Wireless Earnings: €400 per day. Dublin, IRELAND

Helped the Public Key Infrastructure group modernise their twenty-five year old C++ codebase of approx. two million lines of code. Contributions:

  • Ported 2M lines of 90s and early 2000s C++ code, much of it pre-STL, from Windows x86 to Windows x64. In the process replaced many ancient versions of third party dependencies with much newer editions, refactoring code as necessary.
  • Replaced legacy VC6 inherited build system tied together with complex batch scripting with cmake + ninja + ctest.
  • Ported same 2M lines of code to Visual Studio 2017 running in C++ 17 mode. This was surprisingly tricky given the age of the codebase.
  • Ported code to clang trunk on Linux, in order to make use of the runtime sanitisers which were used to track down and repair a number of instances of memory corruption.


Contracted through ned Productions Ltd.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
My proposed Boost library Outcome peer reviewed by experts (2nd time) (ref: )
Boost C++ Libraries Earnings: Open Source Cork, IRELAND
Submitted a second attempt, incorporating the ample feedback from the first peer review, at a library intended for C++ standardisation which implements fixed latency failure handling as a predictable latency alternative to C++ exception throws. This was accepted into the Boost libraries, and it began almost immediately the process to become standardised into ISO C++.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
Introduction to proposed std::expected<T, E> (ref: )
Meeting C++ conference Earnings: Unpaid Berlin, GERMANY

Literature review of the several WG21 papers relating to std::expected<T, E>

[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
My proposed Boost library Outcome peer reviewed by experts (1st time) (ref: )
Boost C++ Libraries Earnings: Open Source Cork, IRELAND
Submitted a first attempt at a library intended for C++ standardisation which implements fixed latency failure handling as a predictable latency alternative to C++ exception throws. As a vocabulary type expected to enter standardisation, this review attracted enormous interest from across the C++ ecosystem. It was rejected, but with plenty of feedback on what to design for v2 Outcome.
[NACE sector code J62.0.2 (Computer consultancy activities)]
[ISCO code 2132 (Computer programmer)]
Contract Consultant on Market Data over TCP scalability (ref: )
Quant House Earnings: €600 per day. Cork, IRELAND

This was a 100% remote working contract with an onsite visit.

Performed one month of feasibility testing on QuantHouse's main ultra low latency market data supply product FeedOS, producing a report on their future options for reducing latency and increasing density of clients served.



Contracted through ned Productions Ltd.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
A C99 preprocessor written in pure Python (ref: )
A pure universal Python C (pre-)preprocessor implementation very useful for pre-preprocessing header only C++ libraries into single file includes and other such build or packaging stage malarky. The implementation can be used as a Python module (see API reference) or as a command line tool pcpp which can stand in for a conventional C preprocessor (i.e. it’ll accept similar arguments).
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
Mongrel Monads, Dirty, Dirty, Dirty - Niall Douglas [ACCU 2017] - YouTube (ref: )
ACCU conference Earnings: Unpaid Bristol, UNITED KINGDOM

Are you using enums to return error states from functions (or even an int or bool!)? Do you find writing exception safe C++ a poor return on coding investment, and end up avoiding using most of the STL entirely because it could throw exceptions in all sorts of unhelpful places? Have you ever wondered what on earth the C++ 11’s system_error header is actually useful for?

One might think that after thirty years C++ would have decided upon a canonical way of handling errors, but it is very clear the jury remains out with heavy fragmentation in the C++ user base as to how best to handle errors. The new systems programming languages Rust and Swift have chosen a canonical error handling system based on immediate stack unwinding returns of integer error codes in a monadic wrapper e.g. Rust’s ResultT and OptionT. Efforts are underway to standardise something similar for C++ with optional T and soon WG21 LEWG’s expected T, E which recently lost its monadic operations as it gets pared ever further down to its essentials for standardisation.

This talk reviews these four standardised error handling techniques in C++, and how well the three major compilers and library implementations implement these techniques into overhead. I will also be introducing for the first time my own solution to this problem called outcomes (implemented by a proposed Boost.Outcome library) which implement a very impure and dirty - but very lightweight on compile and runtime overhead – simple “mongrel monad” outcome T, result T and option T transport factory specifically targeted at extending C++ 11’s std::exception_ptr and std::error_code in a more convenient to use form, thus providing a unified lossless error handling system for C++. I am hoping these will eventually form part of SG14 (games/low latency)’s recommendations for maximum performance C++ as a lighter weight and more convenient to use for error handling alternative to the LEWG expected T, E.

[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
CppCon 2016: Niall Douglas “Better mutual exclusion on the filesystem using Boost.AFIO" (ref: )
CppCon conference Earnings: Unpaid Seattle, UNITED STATES

This is the third and likely final part of a surprisingly popular "from first principles" series of beginner's workshops based on developing the v2 post-peer-review rewrite of proposed Boost.AFIO, a C++ library wrapping the advanced features of the filesystem intended for eventual ISO C++ standardisation. If you're the kind of library developer who likes building unusual low level concurrent algorithms using the very latest C++ 14-17 (proposed) features and testing them for time and space complexities, this is definitely your kind of talk.

At CppCon 2015 we studied the concurrency fundamentals of the filing system, and how it can have the acquire/release semantics of memory atomics but also differs in many ways from memory. At ACCU 2016, using those fundamentals we built from first principles a novel distributed mutual exclusion implementation boost::afio::algorithm::atomic_append which doesn't suffer from the "scalability holes" found in the OS kernel provided facilities boost::afio::algorithm::byte_ranges and boost::afio::algorithm::lock_files. At this third workshop we shall continue the "from first principles" theme by building a fourth and probably last distributed mutual exclusion algorithm for the AFIO algorithms library boost::afio::algorithm, with this one making use of shared memory maps for superior performance when only a single machine is doing the locking.

Is it possible to portably detect the arrival of a networked drive user (SMB, NFS) and safely disable using shared memory maps such that we can automatically race free downgrade our implementation to a networked drive compatible technique?

It turns out that the answer is yes. It has superb performance and scalability, but also comes with many interesting preconditions, tradeoffs and caveats, the most important being that this is an anti-social mutual exclusion algorithm.

[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
'Distributed Mutual Exclusion using Proposed Boost.AFIO' - Niall Douglas [ ACCU 2016 ] (ref: )
ACCU conference Earnings: Unpaid Bristol, UNITED KINGDOM

Developing from the surprisingly popular CppCon 2015 tutorial “Racing the filesystem” (https://www.youtube.com/watch?v=uhRWM...) on the concurrency fundamentals of the file system, this workshop takes the audience from the fundamental first principles of the file system through to a working and high performance distributed mutual exclusion implementation exclusively using atomic file append messaging based on a modified Maekawa-Suzuki-Kasami distributed voting and mutual consensus algorithm.

Along the way the portable asynchronous file system model supplied by proposed Boost.AFIO will be explained and how such a standardised programming model makes implementing write-once run-anywhere file system algorithms much more tractable. Empirical benchmarks will be shown comparing the scalability of our algorithm to other forms of file system based mutual exclusion such as lock files and byte range locking across Microsoft Windows (NTFS and ReFS), Linux (ext4) and FreeBSD (ZFS). One of the major advantages of our algorithm is that it works perfectly over SMB networked file systems, including mixed POSIX and Microsoft Windows endpoints, and it will be explained how this is not always the case with other mutual exclusion techniques.

With a live demonstration of the working algorithm, the likely audience for this workshop would be similar to that for lock free programming using memory atomics, however the file system exposes a much richer suite of fundamental primitive operations – and unexpected surprises!

[NACE sector code J62.0.2 (Computer consultancy activities)]
[ISCO code 2132 (Computer programmer)]
Contract Consultant on Audio C++ library (ref: )
DTS Earnings: €500 per day. Cork, IRELAND

This was a 100% remote working contract with a 100% remote working team each member distributed from the US to Continental Europe.

The team I was contracted to was one of many teams working on DTS's (now Tessera) binaural 3D spatialisation technology which provides superior quality rendering at very low CPU cost on the platforms Windows 7 to 10, XBox One, OS X, Android, Linux, and other platforms. It was optimised for the x86, x64, ARM v7a and AArch64 targets via extensive SIMD and micro cache tuning. During this contract, I helped to very substantially refactor the implementation to bring it from an R&D/experimental quality level into state of the art production quality C++ 14/17 with the very latest in C++ best practice.



Contracted through ned Productions Ltd.
  1. Tooling applied per-commit, nightly and weekly by the Jenkins continuous integration service. Amongst the many tools applied were automatic style enforcement via a mixture of clang-format and python tooling, linting via clang-tidy on both POSIX and Windows, a full sweep of address, memory, thread, undefined behaviour sanitisers, weekly runs of Dr. Memory for symbolic memory debugging, performance regression testing, line and edge unit test coverage monitoring.
  2. I almost entirely rearchitected and reimplemented the build to use state of the art cmake 3 design patterns and single header build enabling a very large reduction in build system maintenance overheads for the team given all the supported platforms. I utilised a "build driver" functional cmake design allowing the team's product to integrate well with multiple externally imposed build systems, thus making all parts build within the wider organisation happy.
  3. I implemented multiple low latency and worst execution time techniques, such as enforcing fast-math, disabling C++ exceptions and resurrecting a performance regression test suite. One particular low latency feature item I designed and wrote was an extremely low latency audio scheduler for Windows 7 which is used by the product's Unreal Engine integration to implement spatialised audio for all UE4 games using the native audio system.
  4. Most of the Android and ARM (32 and 64) port was done by me with almost all the groundwork done for an iOS port. To port the optimised SIMD routines from AVX/SSE2 intrinsics to ARM, I made use of the excellent Intel SPMD compiler based on LLVM to rewrite the SIMD routines into the ISPC language, and had Python use the ISPC compiler to generate optimised SIMD assembler for Intel x86 and x64, and ARM with NEON2. This allowed very easy tuning for very specific hardware targets simply by changing the ISPC compiler's setting.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
CppCon 2015: Niall Douglas “Racing The File System" (ref: )
CppCon conference Earnings: Unpaid Seattle, UNITED STATES

Almost every programmer knows about and fears race conditions on memory where one strand of execution may concurrently update data in use by another strand of execution, leading to an inconsistent and usually dangerous inconsistent read of program state. Almost every programmer therefore is aware of mutexes, memory ordering, semaphores and the other techniques used to serialise access to memory.

Interestingly, most programmers are but vaguely aware of potential race conditions on the filing system, and as a result write code which assumes that the filing system does not suddenly change out from underneath you when you are working on it. This assumption of a static filing system introduces many potential security bugs never mind ways of crashing your program, and of course creating data loss and corruption.

This workshop will cover some of the ways in which filing system races can confound, and what portable idioms and patterns you should employ to prevent misoperation, even across networked Samba shares. Finally, an introduction of the proposed Boost library AFIO will be made which can help application developers writing filing system race free code portably.

[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
My proposed Boost library AFIO peer reviewed by experts
Boost C++ Libraries Earnings: Open Source Cork, IRELAND
After a two and a half year wait, my proposed asynchronous filesystem and file i/o library for C++, Boost.AFIO was reviewed by the Boost community. It received a unanimous but one rejection with very extensive feedback on what needed to be changed. The work on a complete rearchitecture and rewrite based on that feedback began in October 2015, and the first part of that rewrite should become ready for peer review in Q1 2018 as well as being presented by me at the major C++ conferences throughout 2017.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
Presented to peers at conference at C++ Now Conference
C++ Now conference Earnings: Unpaid Aspen, Colorado, UNITED STATES
C++ Now is one of the world's leading C++ conferences where experts present to experts. Presented for 90 minutes on a C preprocessor driven modularisation and dependency injection technique made possible by C++ 11.
[NACE sector code J62.0.2 (Computer consultancy activities)]
[ISCO code 2132 (Computer programmer)]
Principal Architect Consultant on Boost, C++, thread safety and reliable UDP (ref: )
MaidSafe Ltd Earnings: €45 per hour. Cork, IRELAND
Work-from-home off-site contracted (with two extensions) by MaidSafe to help them launch the next generation of decentralised secure internet advising on architecture, Boost, C++ 14, continuous integration, recruitment, economics, management and the other topics in which I have formal academic qualifications.

Contracted through ned Productions Ltd.
Contract specifications (in order):
  1. Improve stability of RUDP and Routing layers, specifically: (a) Systematically investigate the causes of reliability problems in the RUDP and Routing parts of the Maidsafe software platform. (b) Effect changes to the implementation to mitigate such reliability problems. Investigate the problem of UDP packet congestion control, and to substantially improve on the present implementation.
  2. To deliver a replacement RUDP implementation semantically compatible with the existing RUDP implementation, but without most of the power consumption, scalability, thread safety and UDP congestion control issues of the present implementation. (a) The replacement RUDP implementation shall aim to meet the Boost C++ Library admission guidelines described at http://www.boost.org/development/requirements.html, except where the proper practice of C++ 11/14 diverges. (b) The design of the replacement RUDP implementation shall take account of the feedback from the extensive stakeholder survey which was performed at the end of Agreement no 1. Stakeholders surveyed were MaidSafe staff, Boost members currently contracted by MaidSafe, the Boost community and the Boost.ASIO community. Records have been kept of all feedback and shall be reviewed again prior to commencement of the replacement implementation. To advise on the technical capabilities of potential new staff or contractors being interviewed. To advise on matters of Business, Management, Information Systems, Economics and Complexity Science and Education, or in any other expert topics in which ned Productions Limited staff hold formal qualifications, and are therefore in a position to advise from authority.
  3. To consult and assist on a replacement implementation of the MaidSafe platform written in the Rust programming language. To consult and assist on any systems programming matters which may arise during the contract, which may or may not include the interaction between platform dependencies written in other programming languages such as C or C++. To consult and assist with improved unit testing of the software, specifically improved automation of distributed machine unit testing e.g. a single functional test being performed over a dozen machines each of which is networked behind a NAT being controlled by some unit test master controller. To advise on the technical capabilities of potential new staff or contractors being interviewed. To advise on matters of Business, Management, Information Systems, Economics and Complexity Science and Education, or in any other expert topics in which ned Productions Limited staff hold formal qualifications, and are therefore in a position to advise from authority.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
Presented to peers at conference at C++ Now Conference
C++ Now conference Earnings: Unpaid Aspen, Colorado, UNITED STATES
C++ Now is one of the world's leading C++ conferences held annually in May in Aspen, Colorado. Sessions last 90 minutes.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
Primary Boost C++ Libraries Admin for annual Google funding (ref: )
Boost C++ Libraries Earnings: Open Source Cork, IRELAND
Appointed as primary Google Summer of Code admin for the Boost C++ Libraries. Boost petitions Google annually for student-mentor funding worth US$5,000 per student, and is typically awarded between US$40,000 and US$50,000 in grants per year.

One of the largest single chunks of income for many open source projects is the Google Summer of Code program which pays students to work under mentors to achieve a predeclared set of work items during the annual university summer recess. Mentors receive no compensation, and the main responsibilities of this team management position are as follows:

  • To petition and cajole some of the top minds in C++ to mentor a student for three months, as well as to write up descriptions of a set of suitable student work items from which students may pick.
  • To review the technical content of proposed student work items for suitability, particularly to encourage mentors to break up work items into smaller, more tightly defined chunks and to add additional clarifying documentation where necessary.
  • To encourage and remind the Boost community to do peer review on student submissions as part of the candidate ranking process.
  • To lead out matching up potential mentors with potential students where a project proposal lacks a predefined mentor.
  • To assist answering questions about the GSoC process from both students and mentors.
  • To be the primary liaison between Google and the Boost community, including the Boost steering committee, delegating work to others where appropriate.
  • To arbitrate between students and mentors when disagreements occur, and to review student work independently as part of reporting to the Boost steering committee on progress and goals achieved.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
Peer Review Managed Boost.TypeIndex C++ library (ref: )
Boost C++ Libraries Earnings: Open Source Waterloo, Ontario, CANADA
Selected as Peer Review Manager for the community peer review of proposed Boost.TypeIndex in the highly esteemed peer reviewed Boost C++ Libraries. Peer review report can be viewed at Peer Review Report for proposed Boost.TypeIndex v2.1 Nov 12th – 21st 2013.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
Mentor for Boost.AFIO and Boost.Trie C++ libraries (ref: )
Google Summer of Code 2013 Earnings: Open Source Waterloo, Ontario, CANADA
Selected as mentor for two Google Summer of Code 2013 projects in the highly esteemed peer reviewed Boost C++ Libraries, Boost.AFIO and Boost.Trie.

The first project, proposed Boost.AFIO, is a linear scalable, batch, chainable, asynchronous closure execution engine extending Boost.ASIO and Boost.Thread specialised as a portable asynchronous file i/o implementation library with the student, Paul Kirth, porting an existing pure C++ 11 codebase written and designed by me to Boost and the last three generations of the compilers GCC 4.6, 4.7 and 4.8, Microsoft Visual Studio 2010, 2012 and 2013, and clang/LLVM 3.1, 3.2 and 3.3 on the operating systems Linux, FreeBSD 10 and Microsoft Windows. Proposed Boost.AFIO is an alternative solution to Google's WG21 N3731 (Executors and schedulers v2) proposal, or indeed Microsoft's WG21 N3721 (Improvements to std::future<T> and Related APIs), and it is hoped that AFIO will be the pattern chosen instead for ISO standardisation.

Despite being less than 1000 active LOC, the effort involved in readying this library for peer review has been substantial, and included the configuration of our own custom Jenkins CI running a series of snapshotting VMs and a very extensive automated unit and functional test suite, which runs inside my own personal cloud compute mash up platform based on the Proxmox VE virtualisation solution with three nodes in France, Quebec and in my own home. AFIO now exceeds 20,000 lines of text, most of which is extensive testing and documentation. You may find the official Boost documentation on proposed Boost.AFIO of interest.

The second project, Boost.Trie, implements a STL trie (prefix tree) container for C++. I was selected as one of three mentors for this project due to my domain experience with the popular nedtries open source bitwise tries algorithm library.

[NACE sector code K64.9. (Other financial service activities, except insurance and pension funding)]
[ISCO code 2419 (Business professional not elsewhere classified)]
Owner Representative (ref: )
Libro Credit Union Earnings: CDN$1600 per annum. Waterloo, Ontario, CANADA
I serve on the board of owner representatives for the Beechwood branch, Waterloo, Ontario. We disperse around $30k per annum on community youth investment projects.
[NACE sector code M72.2.0 (Research and experimental development on social sciences and humanities)]
[ISCO code 2310 (College, university and higher education teaching professionals)]
Affiliate Researcher (ref: )
Institute for Complexity and Innovation, University of Waterloo Earnings: Unpaid Waterloo, Ontario, CANADA
The Waterloo Institute for Complexity and Innovation (WICI) facilitates transdisciplinary and collaborative research promoting innovation and resilience within - and beneficial transformation of - the complex adaptive systems at the core of human well being in the 21st century.
Under this overarching mission, WICI aims to:
  1. Pursue leading-edge research that significantly advances complexity science and its practical application to humanity’s problems;
  2. Create a vigorous university-wide research community in the field of complexity and innovation studies;
  3. Link this community through research projects and exchange of knowledge with the global complexity-science community; and,
  4. Establish the University of Waterloo as a world leader in efforts to use complex-systems ideas to promote innovation to solve multi-scale, systems-level global problems.
Within the University of Waterloo, WICI acts as a “centre of centres” for research on complex systems. Within southern Ontario, WICI activities bring together scholars, practitioners, and policy makers working on both theoretical and applied complex systems problems. Beyond the immediate geographic scope of Southern Ontario, WICI uses online and interactive technologies to disseminate its findings and to engage vigorously with complexity researchers around the world.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
Senior Software Developer, Platform Development (ref: )
BlackBerry Inc. Earnings: CDN$120735 per annum. Waterloo, Ontario, CANADA
Working in part with Principal BlackBerry Architect Gary Klassen's Performance and Advanced UI Groups, and with VP of Systems Optimisation Sean Simmons, researched and prototyped and wrote internal white papers on solutions to systemic, ecosystemic and performance concerns surrounding the BB10 mobile device platform.
Some of my main projects at BlackBerry involved:
  1. The component objectivisation of the C++ application binary interface using the advanced capabilities of the clang compiler to extend the C++-1y Modules proposal (WG21 N3347) with an additional layer of information abstraction in order to very substantially reduce the coupling between software components, and therefore inhibit constant breakages of source code trunk due to it being a never ending moving target. It is well known that Microsoft's COM, a much simpler implementation though similar in spirit, is regarded by Microsoft as one of their greatest internal productivity enhancement technologies ever developed. This generated a 12,000 line working prototype which I proposed via an internal 10,000 word white paper for ISO C++ standardisation, perhaps initially as part of the Boost C++ libraries.
  2. The employment of the open source memory analysis tool valgrind as part of platform and application performance and hardware prototype simulation, and automated testing and regression. I added a significant improvement to the callgrind tool, adding the ability to estimate CPU time from the call tree using empirical timings which came in within 20% of reality on the Qualcomm Snapdragon S4 Pro CPU (note that this CPU has non-linear execution dynamics) and 10% of reality on Intel x86/x64 CPUs.
  3. The generation, analysis and manipulation of large (hundreds of thousands of vertices) graphs of live semantic information about the hardware and software making up BB10, most specifically the call tree for a Cascades EmailCard process launch output by my improvements to the callgrind tool, and for which I wrote a custom callgrind to time weighted GraphML directed graph format parser using Boost.Spirit. Visualising usefully the incredible complexity of modern C++ call tree graphs was a good workout of my Econometrics training.
  4. I led out, implemented and finished a port of the clang/LLVM compiler stack plus compiler-rt runtime to QNX and BB10. Watching LLVM generated from some of the five million lines of BB10 C++ system libraries I had ported to clang be JITed into ARM on device was quite neat. My need for a clang/LLVM port was an idea for a clang AST based C++ library API review automation tool which would have replaced a majority of the manual human effort expended on internal API review.
  5. I initiated and participated in a series of summer meetings between Gary Klassen and Sean Simmons with the University of Waterloo with a view to creating much closer relations between BlackBerry and their technology startup spin out programme. This was facilitated by me being an Affiliate Researcher with the UW Research Institute for Complexity and Innovation (WICI).
  6. A side project of mine was a regular series of internal white papers using Econometrics to empirically compare BB10 major releases with the competing mobile device platforms Android 4.2 and Microsoft Windows Phone 8, along with desktop operating systems for good measure. Some of the statistical approaches I took were information entropy analysis, Zipf's Law identification of statistical outliers, and Lempel-Ziv-Markov chain analysis of duplicated assets in private memory. Some of the graphs from those papers can partially be seen here.
[NACE sector code R90.0.3 (Artistic creation)]
[ISCO code 2451 (Author, journalist and other writer)]
Coauthor of Book "Economists and the Powerful — Convenient Theories, Distorted Facts, Ample Rewards" (ref: )
Together with Handelsblatt (German equivalent of The Financial Times) Economics correspondent and co-founder of the World Economics Association Dr. Norbert Häring, coauthored a novel 100,000 word account of the inner workings of our capitalist economy, in which competition is imperfect and influence of power is ubiquitous. Unlike the Freeing Growth series of books, this book contained no original economics research and consisted of a critical literature review combined with a fairly robust critique of the Economics profession, particularly how many of its leading figures advocate policies favourable to their research funding interests, often for cash payments, rather than pursuing objectivity or truth. Published across the English speaking world by Anthem Press.
[NACE sector code J62.0.2 (Computer consultancy activities)]
[ISCO code 2132 (Computer programmer)]
Implemented reliable wave buoy data collection solution (ref: )
Irish Hydrodata Earnings: €1500 Cork, IRELAND
Contracted by Irish Hydrodata to implement a software solution which reliably transmitted wave data collected by buoys in the Atlantic Ocean to their head office.
  • Implemented using the GIT source control system to send compressed deltas of changed data over a Virtual Private Network (VPN) via 3G to and from a Linux mini-server. The core program was written in Python using the dulwich python implementation of GIT. A convenience GUI written in C# and .NET 3.5/2.0 operated OpenVPN and the python core program.
[NACE sector code M71.1. (Architectural and engineering activities and related technical consultancy)]
[ISCO code 2139 (Computing professionals not elsewhere classified)]
Appointed to International Standards Committees (ref: )
National Standards Authority of Ireland ISO/IEC mirror committees Earnings: Unpaid
Appointed to the National Standards Authority of Ireland (NSAI) ISO/IEC JTC1/SC22 (Programming languages, their environments and system software interfaces) and JTC1/SC38 (Distributed application platforms and services) mirror committees. Appointed Irish convenor of JTC1/SC22. Joined Austin Common Standards Revision Group responsible for development of POSIX.
[NACE sector code P85.4.2 (Tertiary education)]
[ISCO code 2310 (College, university and higher education teaching professionals)]
Appointed to the Conference Committee (ref: )
World Economics Association Conference Committee Earnings: Unpaid
Appointed to the Conference Committee of the World Economics Association, an international association of pluralist Economists.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
BEurtle BE distributed issue tracker GUI plugin for the TortoiseXXX family of SCMs (ref: )
Implemented a user interface plugin in C# and .NET 3.5/2.0 for the Bugs Everywhere distributed issue tracker for the TortoiseXXX family of source control management user interfaces for Microsoft Windows. This GUI used WiX, the Windows Installer XML abstraction toolkit, to generate a fully compliant Windows Installer package.
[NACE sector code P85.4.2 (Tertiary education)]
[ISCO code 2310 (College, university and higher education teaching professionals)]
Appointed Social Networking Coordinator (ref: )
World Economics Association Earnings: Unpaid
Appointed Social Networking Coordinator of the World Economics Association, an international association of pluralist Economists.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2131 (Computer systems designer and analyst)]
The Luxubrations Οξυδέρκεα Startup Project (ref: )
Luxubrations Οξυδέρκεα (Luxubrations Oxydérkeia) was a startup project aimed at bringing deep, penetrating insight (oxyderkis) to academic studies performed under artificial light (luxubrations). Originally intended as a Master of Research thesis project with the Institute of Education in the University of London, this software performed real-time cloud and client analysis of how students went about writing academic work outputs. Unfortunately due to the loss of access to students with which to test the software, it had to be abandoned after six months of development.
  • The project was aimed especially at the transnational education market due to three particular features:
    1. The generation of a timeline of activities performed by the student when writing the academic work output. Activities recorded included which internet searches were performed, what results were returned, which links were clicked in these results, which parts of each web page or PDF document were viewed and what interactions were made via social networking with other people. This feature is especially useful for proving that plagiarism did not occur, as well as automating the generation of the bibliography of the academic work output, as well as for ethnographic study of how people go about socially constructing any form of text.
    2. Latent Semantic Analysis (LSA) and Latent Dirichlet Allocation (LDA) were employed to analyse the topics which traverse throughout the student's activities and their academic work output. This allowed a viewer e.g. the assessor to generate a "blame" history for any sentence or paragraph in the work output i.e. the tapestry of those parts of all the materials read by the student during the genesis of the academic work output.
    3. All the data and metadata recorded by the software was stored on the cloud (Google Cloud Storage/Amazon S3) where a series of useful operations could be performed upon it such as being able to suggest, in real-time, additional articles for a student to study during the writing of an essay on the basis of what other students studied during the writing of similar essays.
  • Some unusual and interesting technologies were employed during the development of this project. The Microsoft Office plugin was written in C# utilising .NET 3.5/2.0. The web browser extensions (for Internet Explorer, Mozilla Firefox, Opera and Google Chrome) were written in Javascript and jQuery using the Crossrider cross-browser extension framework. Both the web browser extensions and the Microsoft Office plugin used JSON-RPC v2 to communicate with a multithreaded client-local server written in Python which stored all the data as reduced OpenXML or sanitised XHTML in a NoSQL XML database called BaseX. The Latent Semantic Analysis (LSA) and Latent Dirichlet Allocation (LDA) was performed using the Gensim python library. Access to Google Cloud Storage and Amazon S3 was performed using the Boto python library. It was intended to use Google App Engine to perform the cloud execution portion of the project, but unfortunately the project had to be abandoned before implementation of this portion could be begun.
[NACE sector code P85.4.2 (Tertiary education)]
[ISCO code 2310 (College, university and higher education teaching professionals)]
Business Lecturer (ref: )
Cork English College Earnings: €18 per hour. Cork, IRELAND
Gave seventy-five hours of lectures in Business and Management to undergraduate students from l’Ecole Supérieure de Commerce IDRAC Lyon, France as part of their semester abroad studying in a native English speaking country.
[NACE sector code M71.1. (Architectural and engineering activities and related technical consultancy)]
[ISCO code 2139 (Computing professionals not elsewhere classified)]
Made presentation and submitted N-notes (ref: )
International Standards Organisation (ISO) Working Group 14 committee Earnings: Unpaid
Also stemming from the previous works on user mode page allocation, wrote and submitted proposal N1527 to modify the dynamic memory allocation API to improve memory allocation and deallocation latencies of the ISO C programming language standard. Along with N1527, also wrote two library implementations of the N1527 proposal which are available at http://github.com/ned14/C1X_N1527.
  • Started the process by deploying a custom website where people could collaborate on the development of a standard proposal for C1X. This phase ended in October 2010.
  • From this proposal developed the N1527 document along with two C99 implementations which went to the March 2011 London C1X committee meeting.
  • As a result of the deliberations of this meeting, substantial changes are currently being made and a new change document being written.
[NACE sector code M72.1. (Research and experimental development on natural sciences and engineering)]
[ISCO code 2451 (Author, journalist and other writer)]
Wrote academic paper on user mode page allocation (ref: )
Wrote an academic treatise on the topic of user mode page allocation which stemmed from the work performed in the previous two experiences. This paper presents a large number of empirical test results comparing kernel page allocator performance on Microsoft Windows and Linux with the user mode page allocator as implemented below in a wide variety of synthetic and real world scenarios using the binary patching process injection feature of nedmalloc. The paper has been submitted for presentation to the 2011 Federated Computing Research Conference to be held in San Jose, U.S.A.
  • Especially given that I had no prior academic experience in this field, nor even much outside the social sciences, the paper could not have possibly been written without the most helpful advice, detailed comments and patience from Doug Lea of the State University of New York at Oswego, USA; David Dice from Oracle Inc. of California, USA; and Peter Buhr of the University of Waterloo, Canada.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
nedtries Portable Bitwise Fredkin Trie Library (ref: )
Repackaged work done as part of implementing the user mode page allocator for nedmalloc (see last experience) into a standalone C and C++ architecture independent library called nedtries. This library implements an in-place bitwise Fredkin trie algorithm which allows for near constant time insertions, deletions, finds, closest fit finds and iteration as well as being of equal speed in each of these operations (a very unusual characteristic in search algorithms). Benchmarking shows it to be approximately 50-100% faster than red-black trees and up to 20% faster than O(1) hash tables. Also added a C++ STL std::map<> and std::unordered_map<> compatible container called nedtries::trie_map<> which allows very easy usage from C++. Full API and source documentation is provided as a Microsoft Compiled Help format file.
[NACE sector code J62.0.2 (Computer consultancy activities)]
[ISCO code 2132 (Computer programmer)]
Further optimisation of US DoD Planning Project gaining a further 10% performance improvement (ref: )
Applied Research Associates Earnings: €550 per day. Cork, IRELAND
Further contracted by ARA to help them significantly improve the performance of one of their major projects for the US Department of Defence, a planning solver application which constructs large trees of interrelated objects occupying multiple gigabytes of RAM. Through the benchmarking and analysis performed during the previous contract with ARA, we realised that there ought to be a > 10% performance improvement realisable through implementing a user mode memory page allocator.

Provided through ned Productions Ltd.
  • As part of the contract tendering process, a quick technology demonstration was written to determine the potential performance improvements. It was discovered that remapping memory pages via the manipulation of the processor's memory management unit is around twenty times faster than copying 4Kb of memory (on Intel Core 2) and around sixty five times faster than copying 16Kb of memory. This meant that large arrays of items could be extended several orders of magnitude faster than is traditionally the case. These results were sufficient to convince the customer to initiate the contract.
  • After implementation we found a further inadvertent cause of even higher performance gains: the avoidance of having to clear newly allocated memory. This allowed nedmalloc to run 20-25x faster when manipulating allocations averaging 1Mb with exponentially larger gains for larger allocations.
  • We later discovered an academic paper partially proposing a similar idea entitled EVector: An efficient vector implementation - Using virtual memory for improving memory by Kimpe, Vandewalle & Poedts (2006). Our implementation is very different to theirs however, and so superior are the performance benefits that an academic paper detailing the new approach is in the process of becoming published.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
Contributed EU VAT support to Plone's Easyshop eCommerce Product (ref: )
When searching for an e-Commerce solution for the ned Productions Ltd. website capable of handling intra-EU B2B and B2C VAT, it was realised that very few open source e-Commerce solutions are capable of this without purchasing additional components (and usually at a high monthly cost). As the company's primary web application platform is Plone, a complete configurable intra-EU VAT solution was developed and contributed to Easyshop.
[NACE sector code J62.0.2 (Computer consultancy activities)]
[ISCO code 2132 (Computer programmer)]
Debugging and 13% performance improvement of US DoD Planning Project (ref: )
Applied Research Associates Earnings: €75 per hour. Cork, IRELAND
Contracted by ARA to help them solve performance problems being experienced by one of their major projects for the US Department of Defence, a planning solver application which constructs large trees of interrelated objects occupying multiple gigabytes of RAM. Work focused around the incorporation of my memory allocator, nedmalloc, into their project.

Provided through ned Productions Ltd.
  • Determined that the source of their problems was that nedmalloc was not being reliably called by their Qt-based application (a violation of the ODR) which was causing segmentation faults. Many solutions were analysed, and eventually a brute force approach of adding a binary patcher was adopted which had the major long term cost advantage of not requiring a custom build of Qt. This binary patcher replaced all usage of the system allocator with usage of nedmalloc by rewriting the appropriate parts of the PE format binaries on Windows.
  • One particular problem was handling system allocated blocks efficiently as the logic for checking for such blocks is highly branch predictor unfriendly. An initial 13% loss in performance on x86 was reduced to nil through considerable hand tuning and analysis of assembler.
  • Even with the slight performance loss on x64, nedmalloc still remains the fastest free portable memory allocator in the world, a title it has held since 2006. It is now however much more flexible and useful than before especially with respect to debugging facilities.
[NACE sector code J62.0.2 (Computer consultancy activities)]
[ISCO code 2132 (Computer programmer)]
Implemented Radio Over IP via Voice Over IP (Asterisk) (ref: )
Kestrel Communications Earnings: €50 per hour. Cork, IRELAND
Developed a low cost software based application to link disparate radio installation sites via VoIP transmitted over the internet. This project is intended to be initially deployed at Blackpool Shopping Centre where it will allow a person located anywhere in the world to log into the Centre's internal radio system and participate in its dialogue.

Provided through ned Productions Ltd.
  • The RoIP server was a custom Linux installation running the Asterisk VoIP server software. The radio interface app_rpt was used to communicate with the radio via a USB FOB (basically a USB connected sound card).
  • Remote PCs then used the IAXRPT Windows client to perform an IAX protocol connection with the RoIP server. To the end user, after connection one hears the radio chatter and presses the left Ctrl button to press PTT and transmit.
[NACE sector code J62.0.2 (Computer consultancy activities)]
[ISCO code 2132 (Computer programmer)]
ned Productions Limited IT Consultancy (ref: )
Set up a limited company to provide consultancy services in the field of computer information technology to fee-paying clients.
[NACE sector code P85.4.2 (Tertiary education)]
[ISCO code 2310 (College, university and higher education teaching professionals)]
Tutor in Economics, Business, Stats, Management and Web Programming (ref: )
National University of Ireland Cork Earnings: €18 per hour. Cork, IRELAND
Tutored the “Masters in E-Business” class of 2009 in XHTML, Javascript and PHP web services programming. Also tutored students suffering from disabilities in Economics, Business Studies, Statistics, IT and Management.
[NACE sector code P85.4.2 (Tertiary education)]
[ISCO code 2310 (College, university and higher education teaching professionals)]
Economics Lecturer (ref: )
National University of Ireland Cork Earnings: €65 per hour. Cork, IRELAND
Gave twenty-one hours of Economics lectures for the Adult Education Department in their interdisciplinary Social Studies degree programme, during which I achieved an excellent 87.2% class attendance, an 82.8% Interestingness and an 81.2% Clearness rating in the weekly feedback form evaluations.
  • Designed the syllabus of the course to dovetail in with the other modules taught in the Degree. Coursework consisted of five readings from five topical books with a series of questions which were marked each week.
  • Topics covered include non-linear chaotic dynamic systems, information asymmetries, energy return on investment (EROI), volatility and periodicity in economic growth, the disequilibrium structures within demand and supply, the sources of the Celtic Tiger, the Gaussian distribution and the central limit theorem, correlation and convertibility of energy, food and water.
[NACE sector code R90.0.3 (Artistic creation)]
[ISCO code 2451 (Author, journalist and other writer)]
Author of Book "Freeing Growth" (ref: )
Wrote a two hundred thousand word, five hundred page book consisting of my thoughts on a range of topics including Accounting, Agricultural, Corporate, Educational, Financial, Health, Legal, Moral, Political, Spiritual & Religious matters with a strong grounding in mathematical logic, based on an application of the principles of the Tn project (below) to wider society. After receiving feedback from others, I intend to expand this book into a series of many books from 2009 onwards.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2131 (Computer systems designer and analyst)]
Substantially improved the Brook GPU stream computing runtime, increasing performance forty-fold (ref: )
Significantly upgraded the open source software Brook GPU which is a streaming computation language for graphics processors. A 2007 era GPU can achieve 250 GFLOPs with good data partitioning, and performance roughly doubles annually.
  • Upgraded the OpenGL runtime to use FBOs instead of PBuffers and updated the texture transfer to use PBO-based asynchronous DMA transfers, thus significantly increasing speed and adding full compatibility with Linux and Mac OS X.
  • Added a GLSL output runtime target, thus matching the OpenGL capabilities with the DirectX runtime.
  • Added per-thread operation to all runtimes, thus allowing multiple GPU’s to be operated in parallel simultaneously.
  • Upgraded the CPU debug runtime to use SSE intrinsics on x86 and x64 processors and OpenMP to use multiple processors. Performance was increased some forty times.
[NACE sector code P85.4.2 (Tertiary education)]
[ISCO code 2310 (College, university and higher education teaching professionals)]
The Future Society (ref: )
University of St. Andrews Student Societies Earnings: Unpaid
Formed a student society called “The Future Society” which held a lecture series called “Creating The Future” given by invited guest lecturers speaking upon the future.
These lectures were given by world leaders in their fields such as:
  • The heterodox Economist Paul Ormerod (author of Butterfly Economics).
  • Founder of the Schumacher College and Editor of Resurgence Magazine Satish Kumar.
  • The world’s leading authority on Accounting theory Professor Rob Gray.
  • One of the world’s most famous Historiographers Professor Michael Bentley.
  • One of the world’s leading environmentalists, Sir Crispin Tickell GCMG KCVO. This event was chaired by the then St. Andrews Rector, Mr. Simon Pepper OBE (of the World Wildlife Fund).
The Future Society Executive Committee hosted an after-lecture dinner with each of the guest lecturers which has proved invaluable for networking and contacts.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
nedmalloc Thread Caching Memory Allocator (ref: )
Finding that ptmalloc2 did not scale as well with extra processor cores as it could, reimplemented ptmalloc2 by basing a new allocator, nedmalloc, on dlmalloc but with an added thread cache for smaller allocations. Still remains to this day the fastest fully-portable memory allocator in the world, including commercial offerings and is in use by root DNS servers and some of the world’s largest corporations such as the Royal Bank of Scotland, SAP AG, Applied Research Associates Inc. and CSC.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
Added void * support to the C++ Boost.Python library (ref: )
Due to further requirements of the TnFOX Python bindings, as Boost.Python did not previously support void *, most C & C++ code had to resort to some nasty hacks to work around it. As of v1.33.1 this is no longer necessary.
[NACE sector code P85.4.2 (Tertiary education)]
[ISCO code 2310 (College, university and higher education teaching professionals)]
Secretary of Senior Residents Committee
University of St. Andrews Student Committees Earnings: Unpaid
Was elected as Secretary of the Senior Residents Committee. Minuted meetings, helped organise resident events, liaised between wardenial staff and residents, modernised the Committee’s Constitution, helped bring in direct subscriptions collection scheme, helped organise annual resident’s ball.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
Added symbol visibility support to the GNU Compiler Collection (ref: )
Patched in the GCC 4.0 feature to set per-symbol ELF visibility (using __attribute__ and –fvisibility) in a MSVC compatible syntax. This was required by the TnFOX Python bindings exceeding exported symbol limits and a need to contain the number to only those necessary. This patch proved to be one of the most popular new features in GCC 4.x and use of it has been widely adopted by many projects including OpenOffice, KDE, Boost and Qt.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2131 (Computer systems designer and analyst)]
TnFOX template metaprogrammed C++ portability layer (ref: )
Forked the LGPL C++ GUI toolkit FOX for building a portable library providing the necessary core functionality for Tn which is a commercial implementation of my previous research. It continues to grow in popularity and features, recently exceeding 40,000 lines of code.
It provides:
  • Identical functionality on Microsoft Windows, Unix & Apple MacOS X.
  • An extremely flexible thread-safe & exception-safe 64 bit addressing i/o structure.
    • Classes which provide file i/o, named pipe i/o, socket i/o (IPv4 & IPv6), inter-thread i/o, shared memory & memory mapped file i/o, strong file encryption and SSL/TLS secure connectivity via the OpenSSL library.
  • Superior generic and robustness compile-time programming tools e.g. typelists, traits, policies, rollbacks etc.
  • A full set of multithreading primitives, some written in x86 assembler for speed plus dynamic thread pools.
  • Automatic human-language translation and locale specialisation facilities via Google Translate.
  • A full set of bindings for python using the Boost.Python library.
  • Automatic munging in by a python script of extra run-time support code providing nested C++ exceptions plus automatic extraction of error codes and user-visible text for translation.
  • Full integration with host OS security facilities, including Win32 ACL based security and POSIX user & group ID.
  • Arbitrary freestores based on nedmalloc (previously ptmalloc2) giving >6000% speed improvement in dynamic memory allocation over Win32.
  • Easily extensible & extremely efficient generic Inter Process Communication framework with asynchronous i/o and optional zlib compression. Can transport arbitrary C++ objects across any i/o device listed above.
  • Full SQL database support with native SQLite3 and via-IPC drivers.
  • Substantial OpenGL-based 3D and 2D graphing facilities.
  • Patched and reworked FOX to provide per-thread event loops allowing multiple window trees to be run concurrently.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2131 (Computer systems designer and analyst)]
The Tn Revolution Project (ref: )
My third and fourth attempts at reimplementing computer software structure from the ground-up, with the primary goal of creating a 10x or greater productivity improvement for skilled workers (Brookes’ Silver Bullet). Implemented in C++ & Python using TnFOX (previously Qt) and multithreading throughout, it is designed for 64 bit NUMA architectures and can run on Win32/64, POSIX Unix (e.g. Linux, FreeBSD) and Mac OS X but with low resource requirements for eventual transition to mobile phones.
The major sub-goals of this project include:
  • To make software self-organising and self-optimising based upon system (ecosystem) and complexity theory (c.f. Bateson, Heisenburg, Prigogine) whereby tools magnify the effectiveness of effort.
  • To conceptualise all programming and user operation in simple cognitive elements, thus greatly improving intuitiveness of operation and much increased productivity.
  • To integrate all software components across multiple systems such that they appear and act as one.
  • To be fully secure at all levels whilst remaining compatible with the host OS – this is a full capability based system.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2131 (Computer systems designer and analyst)]
Chief Software Architect for EuroFighter Fuel & Hydraulic Test Benches
Setroson S.A. Earnings: €50000 per annum. Madrid, SPAIN
Designed a multithreaded distributed application for Windows 2000 using the Microsoft technologies Visual C++, VisualBasic, VBA, MFC and C#; MySQL & ODBC for the database and the National Instruments’ technologies PXI, LabWindows/CVI, TestStand and LabView. Also designed and implemented a system restore CD-ROM which was a bootable version of Linux with custom-written software.
  • The project’s goal was to be a bench-portable test bench control and component management software plus bench-customisations for the (i) M-3011 Hydraulic Test Bench Bench (contracted by EADS Deutschland) and (ii) B-1057 Fuel Component Test Bench (contracted by British Aerospace Systems) for the EuroFighter project.
  • Innovative features included:
    • A self-adapting help system which taught the user as they used the bench. This was written in HTML with custom embedded ActiveX controls (MS HTMLHelp).
    • A graphical virtual instrument showing fuel flows, valve positions etc. which were manipulable using the mouse. This was implemented using a custom designed scripting language to specify possible fuel flows and possible valve states.
    • A searchable library of all engineering specifications in multiple formats including SGML, PDF and MS Word.
    • A completely customisable UUT test report generator (using Crystal Reports) which each air force could tailor individually.
    • The application could run on two computers connected by TCP/IP at the same time controlling the same bench.
  • Due to the high performance & safety requirements of testing EuroFighter aircraft components, the code was written from the ground-up to be efficient and with my own design of structured exception handling. The Continuous Built-In Test (CBIT) was so accurate it detected hardware problems no human could and required specialised equipment to solve.
  • Performance analysis at the end of project using tools designed by myself showed 5000 i/o's per second sustained (well above specification).
  • The core was written in ANSI C but had ActiveX extensions support e.g. a stopwatch & timer (VisualBasic), report generator (Crystal Reports, MFC & Visual C++) and a voltmeter (LabView).
  • The database for the component (UUT) management was based in MySQL manually linked against a disc based store of i/o transcripts and test reports. Specialised support was present to suspend MySQL & compress its data store into a single file which then was burned regularly to a backup CD.
  • Other responsibilities I assumed there included liasing extensively with EADS, BAE and directly with the militaries of the four EuroFighter participating nations.
  • While I implemented much of the core code myself (there was only myself for the first six months), I also mentored & led two other programmers during my time there.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
nedHAL object-orientated Hardware Abstraction Layer for ARM microprocessors (ref: )
Designed and implemented a technically superior Hardware Abstraction Layer (HAL) called NedHAL for generic ARM architectures in ARM assembler and ANSI C. It was an object orientated modular framework with multiprocessor capability. Also ported the uC/OS II RTOS onto my project (now freeware). Some of this code has been since incorporated into the primary car operating system firmware Micrium which is used by many major car manufacturers.
[NACE sector code J62.0.2 (Computer consultancy activities)]
[ISCO code 2132 (Computer programmer)]
Performance Optimisation of ARM7 GPS firmware for Guidance Systems
Intelligent Systems Design (ISD) Earnings: US$150000 per annum. London, Ontario, CANADA
This three month contract was to implement a specified list of items, most important of which was to improve performance. This was especially successful with a threefold performance increase and a six figure cost saving thanks to not having to prematurely upgrade hardware.
  • Replaced the real-time operating system (RTOS) in their GPS (Global Positioning System) library for their embedded ARM device with a licensed third-party RTOS called SuperTask! (made by US Software).
  • Implemented and integrated many new features including Flash ROM reprogramming, serial port driver, LCD panel display driver, power saving and Infra-Red communications.
  • Merged ARM's Demon debugger into the new operating system, allowing debugging without a JTAG and ICE (In-Circuit Emulator) based debugger.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
Implemented a Preemptive Multitasker for Acorn RISC-OS (ref: )
Wrote a fully featured preemptive multitasker called Wimp2 for the Acorn RISC-OS operating system in fully hand-coded ARM assembler.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
Wrote i/o driver, EEPROM programmer and refactored DEC's StrongARM uHAL port (ref: )
Advanced RISC Machines (ARM) Earnings: £14000 per annum. Cambridge, UNITED KINGDOM
Performed a number of "odd jobs" involving the writing of several small computer programs in C and ARM Assembler.
  • Wrote a driver for ARM’s Angel debugger to drive a tertiary serial port on the Cirrus Logic CLPS-7111 board. Due to hardware difficulties, successfully used a logic analyser to implement the code.
  • Wrote a modular EEPROM programmer in C++ for Win32 allowing test ROM images to be easily flashed into test boards.
  • Overhauled and redesigned DEC's StrongARM uHAL for generic Arm's and ported the new uHAL to the Arm test motherboard, the PID7T. Also ported the redesigned uHAL to the Cirrus Logic CL-7111 board.
[NACE sector code P85.4.2 (Tertiary education)]
[ISCO code 2310 (College, university and higher education teaching professionals)]
Year, Student and Science Faculty Student Representative
University of Hull Student Committees Earnings: Unpaid
Whilst at Hull University, elected as member of the last Lawns Residents Association – our main function was to wind up the LRA successfully. Elected as Staff/Student Representative for the Computer Science Department – liaised between staff and students informally and via formal committee. Also elected to Student’s Union Parliament as Ordinary Representative where many matters were debated of both large import and small. Also elected as the Undergraduate Science Faculty Representative on University Senate where I was one of four voting members representing the entire Student Body.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
Language Compiler
Wrote a portable BBC Basic to ANSI C compiler (Acorn RISC-OS, Unix, Win32 & MacOS) in C. This near-completed yearlong project was abandoned after the Acorn group was liquidated.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
Implemented distributed Post Office Address network query service over TCP/IP
Protechnic Computers Earnings: £12000 per annum. Cambridge, UNITED KINGDOM
Designed and wrote a multithreaded distributable application for Windows NT 4.0 using the Microsoft technologies Visual C++ and a custom library for Unix applications.
  • The project’s goal was to permit Unix applications to query Windows-only databases on one or more Windows machines over a TCP/IP based network.
  • Implemented a number of engines for this system using third party search engines (native to Windows) such as the Royal Mail PAF (Post office Address File) engine and a Read code v3 (used in the English National Health Service) engine.
[NACE sector code J62.0.1 (Computer programming activities)]
[ISCO code 2132 (Computer programmer)]
Customer Support & Upgrading of PipeDream Office Software for Acorn RISC-OS
Colton Software Earnings: £10000 per annum. Cambridge, UNITED KINGDOM
Performed a number of "odd jobs" involving provision of customer support, code writing for a product upgrade and the design of an advertisement.
  • Helped upgrade the integrated package PipeDream from v4.13 to v4.5 which incorporated StrongARM compatibility and a number of enhancements.
  • Manned the technical support desk dealing with both telephone and written queries.
  • Designed an advertisement for publication in Acorn User.

Publications:

Douglas N.E., (2020-Jan), 'P2069: Stackable, thread local, signal guards', ISO JTC1/SC22/WG21 C++ programming language standards committee, openstd.org. URL: .
Douglas N.E., (2020-Jan), 'P2052: Making modern C++ i/o a consistent API experience from bottom to top', ISO JTC1/SC22/WG21 C++ programming language standards committee, openstd.org. URL: .
Douglas N.E., (2019-Oct), 'P1883: file_handle and mapped_file_handle', ISO JTC1/SC22/WG21 C++ programming language standards committee, openstd.org. URL: .
Douglas N.E., Gustedt J., (2019-Sep), 'N2429: Function failure annotation', ISO JTC1/SC22/WG14 C programming language standards committee, openstd.org. URL: .
Douglas N.E., Steagall B., (2019-Jul), 'P1631: Object attachment and detachment', ISO JTC1/SC22/WG21 C++ programming language standards committee, openstd.org. URL: .
Douglas N.E., (2018-Aug), 'P1095/N2290: Zero overhead deterministic failure - A unified mechanism for C and C++', ISO JTC1/SC22/WG14 C programming language standards committee and ISO JTC1/SC22/WG21 C++ programming language standards committee, openstd.org. URL: .
Douglas N.E., (2018-May), 'P1031: Low level file i/o library', ISO JTC1/SC22/WG21 C++ programming language standards committee, openstd.org. URL: .
Douglas N.E., (2018-May), 'P1030: std::filesystem::path_view', ISO JTC1/SC22/WG21 C++ programming language standards committee, openstd.org. URL: .
Douglas N.E., (2018-May), 'P1029: SG14 [[move_relocates]]', ISO JTC1/SC22/WG21 C++ programming language standards committee, openstd.org. URL: .
Douglas N.E., (2018-May), 'P1028: SG14 status_code and standard error object for P0709 Zero-overhead deterministic exceptions', ISO JTC1/SC22/WG21 C++ programming language standards committee, openstd.org. URL: .
Douglas N.E., (2018-May), 'P1026: A call for an 'Elsewhere Memory' study group', ISO JTC1/SC22/WG21 C++ programming language standards committee, openstd.org. URL: .
Douglas N.E., (2018-Feb), 'P0824: Summary of SG14 discussion on <system_error>', ISO JTC1/SC22/WG21 C++ programming language standards committee, openstd.org. URL: .
Douglas N.E., (2017-Oct), 'P0762: Concerns about expected<T, E> from the Boost.Outcome peer review', ISO JTC1/SC22/WG21 C++ programming language standards committee, openstd.org. URL: .
Douglas N.E., (2015-May), 'Handbook of Best Practices in C++ 11/14 libraries', Wiki, The Boost C++ Libraries. URL: .
Douglas N.E., (2014-May), 'Large Code Base Change Ripple Management in C++: My thoughts on how a new Boost C++ Library could help', ArXiv e-prints no. 1405.3323, ArXiv e-prints. Citation key: arXiv:1405.3323. URL: .
Douglas N.E., (2013-May), 'BB10.0-BB10.1 Memory Footprint Analysis: How do we compare?', Internal white paper, BlackBerry.
Douglas N.E., (2013-Mar), 'Object Components Revisited: Helping to solve the BB10 complexity & scalability problem', Internal white paper, BlackBerry.
Douglas N.E., (2013-Jan), 'BB10.0 Memory Footprint Analysis: How do we compare?', Internal white paper, BlackBerry.
Häring N., Douglas N.E., (2012-Sept), Economists and the Powerful: Convenient Theories, Distorted Facts, Ample Rewards, Anthem Press. ISBN: 978-0-8572-8459-4.
Douglas N.E., (2011-Sept), Freeing Growth: A Neo-Capitalist Manifesto, ned Productions. ISBN: 978-1-4478-7962-6.
Douglas N.E., (2011-June), 'Combining reliability and validity in assessment: Can auditing create the Golden Goose in assessment quality?', Proceedings of the Doctoral School Summer Conference 2011, Institute of Education, University of London. URL: .
Douglas N.E., (2011-May), 'User Mode Memory Page Management: An old idea applied anew to the memory wall problem', ArXiv e-prints no. 1105.1815, ArXiv e-prints. Citation key: ArXiv:2011arXiv1105.1815D. URL: .
Douglas N.E., (2011-May), 'User Mode Memory Page Allocation: A Silver Bullet For Memory Allocation?', ArXiv e-prints no. 1105.1811, ArXiv e-prints. Citation key: ArXiv:2011arXiv1105.1811D. URL: .
Douglas N.E., (2010-Nov), 'Choosing a distance TESOL/TEFL: A Personal Report', Submitted to Education Today (rejected as unsuitable material), College of Teachers. URL: .
Douglas N.E., (2010-Oct), 'ISO JTC1/SC22/WG14 (The C programming language) - N1527: Latency Reducing Memory Allocation', open-std.org no. N1527, International Standards Organisation. Citation key: ISO/IEC JTC1/SC22/WG14/N1527. URL: .
Douglas N.E., (2009-Feb), Freeing Growth: A Neo-Capitalist Manifesto, Google Books. URL: .
Douglas N.E., (2008-Dec), Freeing Growth: How The World Can Grow Four Times Faster Sustained, Working Manuscript.
Douglas N.E., (2008-May), 'Modelling the Costs of Climate Change and its Costs of Mitigation: A Scientific Approach', MPRA Working Papers no. 13650, University Library of Munich, Germany. Citation key: RePEc:pra:mprapa:13650. URL: .
Douglas N.E., (2006-Dec), 'Explain "conjectural variation" in Cournot duopoly, evaluate its impacts and discuss the policy implication', MPRA Working Papers no. 13652, University Library of Munich, Germany. Citation key: RePEc:pra:mprapa:13652. URL: .
Douglas N.E., (2006-Apr), 'What is the evidence on the role of foreign direct investment in economics growth, and on the determinants of foreign direct investment flows?', MPRA Working Papers no. 13651, University Library of Munich, Germany. Citation key: RePEc:pra:mprapa:13651. URL: .

Academic references available from various on request

Work references available from various on request