cooking experience days
Homepage of Richard J. Atkins

Computing Experience


Programming Experience


Industry Experience

  • Software engineer experienced in using a variety of languages to develop Applications, Library components, Embedded Systems and Websites.
  • Commercial experience in Process Control, Medical Equipment, Application, Web Service and Academic environments.
  • Whole lifecycle experience including Feasibility, Specification, Design (Structured and OOD), Coding, Testing and Documentation.
  • Experienced Project Manager using Waterfall and Iterative development models.
  • Documentation, Design and Coding to Medical Equipment and BS 5750/ISO 9001 Quality Standards.
  • Strong Profiling and low-level Debugging skills.
  • Strong Writing, Presentation and Mathematics/Statistics skills.

Employment History

Sep '05 to present   Research Fellow (Statistician).
London School of Hygiene and Tropical Medicine, University of London
Data management; SQL, VBA and SMCL; ASP.NET 2.0, ADO, XML and AJAX.
details...

This was a fixed-term contract to conduct research into renal functioning in the over 75's funded by the National Kidney Research Fund. The data under examination originated in the mid 90's as part of the MRC 'elderly' trial and contained detailed medical information and subsequent history of 54,000 patients. Primary task was to manage existing data and produce two publications in high impact medical journals over the course of the project.

Management tasks included project planning, progress reports, dealing with external contractors for data-collection and transcription, and the recruitment and supervision of casual data-entry staff.

Technical tasks included the management and organisation of over 10 years of data generated from the original project and subsequent activities spread across approximately 100 data files in Access, Stata and Excel; authorship of data extraction queries in SQL and Stata's SMCL language; and developing programs for data cleaning and to perform specific statistical analysis. Some of these programs have been published and are available on the web from the Statistical Software Components (SSC) repository at Boston College, Massachusetts or from my home pages here.

Academic tasks included statistical analysis, production of presentation quality tables and figures, writing research papers for publication, and contributing to the school's post-graduate teaching programs in the areas of computing and statistics.

Outside of work I have taught myself ASP.NET 2.0 and have used ADO, XML and AJAX in the redevelopment of my personal, academic and four other websites. These sites are dynamically generated from underlying content management (XML) and academic reference management (Access via ADO and SQL) databases of my own devising.

Aug '02 to Aug '05 Lecturer (Research Methods / Statistics).
Thames Valley University.
HTML/CSS/JavaScript, Java, VBA
details...

Three years working at Thames Valley University as a Lecturer in Psychology and Research Methods and then as Faculty Research Statistician. During this time (apart from teaching psychology and statistics) I taught SPSS, Powerpoint and Reference Manager to staff and students, developed several Access databases for use in academic research projects, taught myself Java (which I used to develop online demonstration programs), assisted with development of the departmental website and further developed my own academic website.

Sep '00 to Aug '02 Full-Time Student.
Programming in Stata (SMCL), MLwiN and SAS.
details...

During these two years I completed my BSc in Psychology at Thames Valley University and then won a scholarship to do an MSc in Medical Statistics at the London School of Hygiene and Tropical Medicine, University of London. On this course I learnt to program statistical packages such as Stata, MLwiN and SAS.

Sep '99 to Sep '00 Contract Software Engineer.
Freelance.
Embedded C (80166), C++/MFC, Visual Basic, ISAPI, HTML/CSS/JavaScript
details...

I took a year out from study for financial reasons. I contacted a couple of previous clients for references and they both offered me contracts as below.

  • AllenMoore electronics contracted me for four weeks to develop some firmware for a new medical device (C for 80166 microcontroller).
  • Interactive Colour Solutions contracted me in for rest of this year. I joined the small team at this company and worked on various aspects of their photograph-quality graphics rendering engine (C++/MFC); developed the core components of an image editing and 3-dimensional modelling application (C++/MFC and Visual Basic); rebuilt their core engine as an ISAPI component to allow web-delivery of services (demo); and worked alongside their graphic designer as a web developer (HTML/CSS/JavaScript), producing numerous demonstration and live websites.
Sep '97 to Sep '99 Full-time Student + Occasional Freelance Programmer.
Visual Basic, Access/VBA, HTML, JavaScript
details...

During the summer break in my first two years of full-time study, I was contracted in by the psychology department at Thames Valley University where I was studying. The task was the porting of nine programs demonstrating principles of cognitive psychology, from BBC Micros (BBC BASIC) to PCs (Visual Basic). This was surprisingly demanding given the need for precise timing of some screens and user responses.

During my second year of study I worked for a day a week as a project worker for MIND in Ealing. While there I networked up the charity office and develop a bespoke client information database (Access/VBA).

In my spare time I taught myself web scripting (HTML and JavaScript) and set up a website on attachment psychology (now here).

Aug '93 to Aug '97 Contract Software Engineer.
Freelance - Work for various clients as below.
C/SDK and C++/MFC; embedded C; Visual Basic; object oriented design and programming.
details...

I relocated back to England from Ireland with a contract from my previous employer for a minimum of six months of unspecified development/support work that would be required over the next year. Over the next four years I operated on a freelance basis trading as 'MediSoft' for direct, self-employed contracting and 'Life Is Not Ltd.' for agency work. I completed a variety of contracts as detailed below.

  • Six months initial contract for Vitalograph to continue the development of the Spirotrac III spirometer (Windows C/SDK). This was followed by further contracts representing 18 months work during which I redesigned the Spirotrac software as an object oriented system and ported it from C/SDK to C++/MFC; coded up functional enhancements to the existing Compact II and Alpha spirometer firmwares (PL/M); and provided a detailed design for the firmware in their new hand-held spirometer, for their newly employed junior programmers to work to and learn from. Unfortunately the resulting firmware overran the available memory so I was contracted in again to sort this out. I examined and rewrote several sections of the code, documenting this in detail as a teaching exercise in efficient programming in C. The code and data memory requirements of this firmware were more than halved during this process and ended up an easy fit within the originally specified capacities.
  • Three months work for Interactive Colour Solutions in Wokingham to develop a software packaging and deployment system to facilitate remote installation and updating of a product hosted on store-based PCs throughout the country (Windows C++/MFC).
  • Three months work for AllenMoore Electronics doing the firmware for a product they were developing for Vitalograph (embedded C for an 8051).
  • Six weeks contract work for Simtek F1 Racing developing firmware for an automated gearbox controller (embedded C for an 80552). This was a particularly interesting project as it was known the device would be subject to high levels of radio frequency interference. This was dealt with by a combination of careful modularisation of the control process into discrete, fail-safe steps and tracking of progress through these steps using the only reliable non-volatile memory available: the small subset of processor registers that maintained state through resets.
  • Twelve months (four repeated contracts) for Sony BPE in Basingstoke, where I developed a WIDI (Windows 95) device driver for a new magneto-optical disk drive, and then joined a team as 'kernel' developer for a laptop-based video editing station, the DNE- 50 (both in C++/MFC). While at Sony I introduced the team to the useful idea of developing add-on programs that 'hook' a windows application and provide debugging support. Two such programs I developed (both in Visual Basic) were a disk-sector editor for the magneto-optical device (to facilitate testing of the driver) and a communications port 'snooper' to monitor serial traffic between the editor and a slave device (e.g. a DNW-50 hybrid recorder). This work included 3 weeks in Japan acting as technical liaison to the Japanese DNW-50 project team.

During this time I attended the Microsoft 'DevCast' series of training days and, as part of a contract, was provided with a weeks training in Object Oriented Software Design Techniques at University College Cork. In my last year of freelancing I took an evening course in counselling skills. Changes in my personal circumstances necessitated changes in my employment status so I decided to follow my growing interest in psychology and enrolled full-time for an undergraduate degree programme.

Sep '90 to Aug '93 Senior Software Engineer and Project Manager.
Vitalograph (IRL), Ennis, Co. Clare, Eire.
Windows C/SDK, project management, product specification.
details...

I relocated to Eire with this company (see below) as what turned out to be the only one of five staff who accepted this offer. For the first six months I was acting R&D manager with responsibility for recruiting staff and getting the new department up and running, while simultaneously programming and project managing the development of version II of the Compact spirometer. This project relied heavily on the skills and goodwill of three of my erstwhile colleagues who, following redundancy, had set up their own mechanical and electronics engineering companies and were willing to work on a contract basis. I was invited to apply for the role of department manager but did not, at this time, want to move away from being 'hands-on' as a software engineer. Once a manager had been recruited, I was able to fall back into the complementary role of senior engineer and concentrated on training new staff, completing the Compact II project, and providing functional enhancements to existing products.

At the end of my first year here, management were keen to make more use of my knowledge of spirometry so a post was created that allowed me to combine hands-on engineering with project management while giving the marketing department access to my expertise. Effectively I now had three distinct roles:

  • Software engineering was nominally to occupy 40% of my time. Over the next two years I attended a course at Galway University on programming in C, and we flew in a Microsoft Engineer to spend two weeks teaching us the Windows 3.1 SDK. I acted as mentor for junior software engineering staff, provided advice to staff who were maintaining existing products and embarked on the development of a PC based spirometry system written in C/SDK. I also designed and programmed occasional bespoke projects for clients including a customised version of our PC based spirometry software for use in a clinical trial, which earned me a publication credit.
  • To facilitate my expanding role in project management the company sent me on a general project management training course and then arranged training in software project management through the business enterprise development group at the University of Limerick. During this time I oversaw all software development activities within the department either acting as project manager or delegating project management to junior staff according to their experience and capabilities. When the company implemented a quality standard framework I specified the BS 5750/ISO 9001 quality procedures for our software development process.
  • I also spent occasional weeks in the UK, USA or Europe visiting opinion leaders in spirometry or working with the marketing department on forward planning and feasibility. During this time I outlined and provided functional specifications for a series of interconnecting units that formed the next generation of spirometry products that the company would offer. Using the latest in technology such as miniaturised pressure transducers and microcontrollers, four separate desktop spirometers would be replaced with a single hand-held spirometer that could be sold stand-alone or with one of a modular range of 'base stations' that allowed it to be configured to suit the needs of each of our main target markets. This rationalisation also meant we would have only two core firmwares to develop and maintain (the spirometer and a generic base station firmware), and future improvements in spirometry technology could be rolled out to all our markets with only one new or upgraded product release. This plan was adopted by the company and versions of these products are still available as the Vitalograph 2120, 2120+base station and 2120+Spirotrac software.

I had a great time working for Vitalograph and really enjoyed my expanding knowledge, developing career and the responsibilities that came with being the most senior engineer in the department. I made many friends and enjoyed the opportunities the West Coast offered in terms of countryside, fishing, traditional music and the crack. Sadly my wife at that time did not enjoy our new life. We had relocated on the understanding that if she didn't settle we would not remain there so we returned to the UK where I continued working for Vitalograph on a freelance basis.

Sep '87 to Sep '90 Software Engineer.
Vitalograph UK Ltd., Buckingham.
8085 and 8085 and 80188 assembly language, PL/M, Microsoft QuickBASIC, embedded systems engineering.
details...

Vitalograph are a family-managed company that manufacture medical equipment, mainly devices to facilitate resuscitation and lung function measurement (spirometry). I joined this small development team as it's first engineer who had a software rather than an electronics background. Working with four mechanical and five electronics engineers/programmers, I quickly became the in-house expert on software design and efficient coding.

During my first three years here I was involved in several projects including the maintenance and development of early versions of their Compact and Alpha desktop spirometers, respectively driven by 8085 and 80188 processors with software written in PL/M written on IBM PC-XT's and an Intel 'blue box'. Part of this work included a dramatic reorganisation of the firmware on both devices to speed execution, reduce EPROM memory requirements (freeing up space for additional functions), and to facilitate localisation using conditional linking to swappable language modules. My services were also used to develop bespoke software for existing clients such as a patient administration/spirometry test tracking system for English China Clay's Occupational Health Department, written in compiled QuickBASIC. I gained experience at this company of statistical testing methodologies, the importance of software profiling, and generally of developing products within the stringent quality standards required for medical equipment.

In 1990, the company decided to relocate all research and development activities to the Republic of Ireland. I was one of five key staff offered promotion and relocation, which I took.

Dec '85 to Aug '87 Software Engineer.
Data and Control Equipment, Aylesbury.
6809 and Z80 assembly language; modem, fax and telex communications; RS-232 networking.
details...

This company specialised in fax, telex and modem communications products and prior to its liquidation in 2002 was chiefly known for its 'Telexbox' product. My initial role was to take over the development of a Z-80 based 2400 baud standalone modem inherited from 'Intelek' communications, a company DCE had just acquired and was asset stripping. This involved going on site at Intelek and obtaining as much information as possible from a team of engineers who were working out their redundancy notice. In fact, this product was close to complete so my main involvement was documenting the existing software and maintaining the product through minor changes over the next year.

My second project was as lead engineer on the 'Telexbox Concentrator', a multiple RS- 232 device that provided limited networking and device sharing capabilities to up to six PCs. This was developed in 6809 assembly language on a PDP-11/73 minicomputer, and provided me with further opportunity to implement an interrupt-driven preemptive multitasking system as well as defining protocols for packet-based file transfer.

While DCE was a reasonably interesting place to work, I was not as happy there as I had been in previous posts so after a year I began to gently look for other opportunities, resulting in me leaving six months later.

Aug '84 to Dec '85 Junior Software Engineer.
SattControl UK Ltd., Aldershot.
6809 assembly language, process control, software specification and design.
details...

I was employed at this UK subsidiary of a Swedish company specialising in bespoke automated materials handling systems, as junior to an experienced 6809 assembly language programmer brought over from the parent company in Sweden. In this post I obtained commercial experience of assembly language programming, control systems, time-slicing executive development and software system design and documentation. I also learnt to read assembly language commented in Swedish! I completed two main projects for this company, both in assembly language developed on PDP-11/44 minicomputers and compiled for use on the company's proprietary 6809 based controller boards.

The first project, developed to a supplied design specification, was firmware for a semi-automated stock control station, part of an automated parts store for Leyland Trucks. This job involved a lot of work at client sites where the final debugging and commissioning took place. This was often problematic due to lack of access to development tools so in parallel with project work I developed a compact (<2K) 6809 disassembler that was later incorporated into the company's standard firmware package for its controllers.

The second project was the development of an automated warehouse control system for TI GlowWorm. For this project I acted as technical lead and designed the company's first warehouse control system that was entirely deployed using controller units. This was achieved by networking the controllers together and writing a time-slicing executive to allow preemptive multitasking. This meant we could eliminate the PDP-11/44 used in previous installations as we no longer required a central executive to coordinate jobs as they flowed around the system.

This particular post involved out-of-hours call-outs, extended periods of time on-site and an expectation of very long hours as standard, for which the company provided good wages and a generous expenses package. I very much enjoyed my time at this firm and learnt a great deal but the very small assembly language programming team precluded any opportunity for further advancement so I left after 16 months for a more senior role as above.

Jul '83 to Jul '84 Trainee Software Engineer.
British Gas Corporation, Watson House, Fulham.
BBC BASIC, 6502 assembly language, structured programming
details...

This was a fixed-term 'apprenticeship' post in the Microelectronics Research Laboratory at the Corporation's 'Watson House' Research Station. My main project was to learn about modem communications and develop a front-end program for use in trials of the experimental 'Mainsborne' remote meter reading system. My program allowed accounting and customer service personnel to retrieve service and billing information for specific addresses from a database held on a remote mainframe via a 300 baud acoustic coupler (later replaced with a 1200/75 baud modem). This was developed in BBC BASIC with some 6502 assembly language extensions on an Acorn BBC Microcomputer.

Apart from developing and maintaining the above program through several versions, while in post I received training in structured programming, serial and modem communications, was exposed to assembly language programming for process control on a Hewlett-Packard bit-slicing computer, wrote user documentation for my own and other programs, and had a fair bit of practice wielding a soldering iron when required.

This post was a fixed-term six month contract as part of the British Gas Industrial Apprenticeship Scheme. This was extended for a further six months so I could see the project through to completion. My manager expressed an interest in taking me on full-time and I would have happily continued there. Unfortunately this was blocked by the human resources department as I did not have the degree that turned out to be an insurmountable prerequisite for employment in a technical role.

1980 to 1983 Hobbyist.
BASIC, Z80 Machine Code
details...

My first exposure to computing came via my school's lunch-time Computer Club, through which I had access to the school's first computer, a RML-380Z running 'BigB' BASIC. At age 15 I wrote the first simulation program on this computer, a non-graphical 'lunar landing game' which I was then required to do a presentation on to the rest of the club.

A year later, in response to my excellent 'O' level results and growing interest in computers, my parents bought me a Tandy TRS-80. This prompted me to take a Saturday job at the local Tandy store so I could use wages and the staff discount to buy add-ons. The store manager took advantage of my knowledge of their product (and probably my age and enthusiasm) to convince prospective customers of the educational value of owning a Tandy TRS- 80, and I was the first Saturday boy in a UK Tandy store credited with selling a computer.

With unlimited access to a computer I spent the next two years largely ignoring my 'A' level studies and teaching myself Tandy Level II BASIC and then Z80 machine code, eventually producing my own versions of arcade games like Space Invaders. These were written either in BASIC or in Z80 Machine Code that was encoded as a basic program that 'poked' the required bytes into allocated memory and then executed them. Notable among these was my version of Scramble that, to achieve the required horizontal scrolling speed, required that the monitor be placed on it's side.


Printed from Richard J. Atkins' Website (http://www.richardatkins.co.uk) on 10/03/2010 13:13:51