Black Sheep Software
Software Consulting by Tony Barton since 1985

Specializing in providing services to organizations which have a short-term or part-time need for help outside their own area of expertise. My exposure to a wide variety of projects and my ability to understand new technologies quickly make me particularly valuable for projects requiring multiple skills.

Services offered:

Recent projects include:

Recent clients include:

Preferred Languages and Systems:

Extensive industry experience:

Strong academic roots:

Software Credits:

Contact information:

Send email for more information, including references, availability and rates, or call (310)457-1595, or write to:
Black Sheep Software, P.O. Box 655, Malibu CA 90265-0655.

Citizenship: US.

This page is www.BlackSheepSoftware.com/index.html. It was last modified on November 11, 2010.


Project for Alphaspace Research Corporation

Alphaspace created a data exploration engine named InSight and was developing an improved version. See this story in the Los Angeles Times for more information.

The original version of the technology in InSight was reportedly used in various government departments including groups responsible for terrorist tracking. The updated version would have offered improved data handling and visualization tools. My initial role was to improve the portability and stability of the code.

This project was never completed due to the untimely death of Victor Anselmo, the founder of Alphaspace.


Project for Heartbeat of America

Programs and scripts to generate sales leads from trade show data.

Languages and standards involved: C, Perl.


Projects for TimeLogic Corporation

Rewriting DeCypher Command Line Interface Client Code for Consistency

TimeLogic's original DeCypher CLI client was created piecemeal in response to user requests instead of being designed as a coherent interface. This project created an updated version with consistent arguments and terminology.

Languages and standards involved: C, C++.

Multithreading of DeCypher Hardware Provisioning Loop

TimeLogic's DeCypher program was originally written to process multiple DeCypher boards in a single thread. This project involved restructuring the code and the data structures to permit the use of a separate thread for each hardware board for improved performance.

Languages and standards involved: C++, pthreads.

Native Port of DeCypher BioInformatics System to Solaris

TimeLogic's DeCypher system was originally written for NT using the Win32 and MFC APIs, then more recently ported to Solaris using the Bristol Wind/U cross-development environment. This project replaced the use of the Wind/U environment by native Solaris calls to improve efficiency and reliability.

Languages and standards involved: C++, C, Win32 API.

Solaris DeCypher Stabilization

The initial Solaris port of DeCypher was unreliable, partly due to implementation problems - including the use of Wind/U - and partly due to project management issues. This project included improved release procedures, more extensive automated testing, and working closely with customers to solve their most urgent problems.

Languages and standards involved: C++, C, Win32 API.


Projects for Sun Microsystems

Test suite study

Examined the feasibility of extending the Sun VTS test suite to replace other test suites used for Solaris x86 hardware compatibility testing and device driver verification. The project included writing a prototype Java GUI to work with the SunVTS kernel.

Languages and standards involved: C, C++, Java.

Challenges: understanding the detailed low-level capabilities of the SunVTS test suite by reading high-level documentation, running experiments and reading code; repeating the same process for the other test suites; mapping the desired behavior onto the available capabilities.

Solaris x86 direct network boot

Designed and implemented the ability to boot Solaris x86 directly from a network with no boot media. The project added support for network adapters complying with the Intel Preboot eXecution Environment (PXE) specification. Changes included modifications to existing boot components and the development of a first stage network bootstrap that uses DHCP and TFTP to locate and download a second stage bootstrap.

Languages and standards involved: C, assembler, PXE, DHCP.

Challenges: developing a prototype while using preliminary and error-prone PXE firmware and documentation; avoiding use of anything other than the most basic PXE features to reduce the risk of problems with new firmware and/or network adapters.

Solaris x86 boot memory redesign

Investigated causes of memory allocation failures during Solaris x86 boot. Designed new strategies for memory use to reduce total memory requirements and prevent fragmentation. Implemented new design.

Languages and standards involved: C, assembler.

Challenges: understanding all uses of allocated real mode memory during boot; making full use of the x86 architecture to maximize available real mode memory.

Solaris x86 direct CD-ROM boot

Designed and implemented the ability to boot Solaris x86 directly from a CD-ROM with no boot diskette. Before this project it was necessary to use a boot diskette to load special drivers to read the CD-ROM. The project added support for CD-ROM boot for devices complying with the Phoenix/IBM "El Torito" specification.

Languages and standards involved: C, assembler.

Challenges: understanding different interpretations of the El Torito spec; implementing a design that would work with as many different El Torito BIOS implementations as possible; debugging subtle BIOS bugs.

Solaris x86 realmode driver development support package

Designed, implemented and documented a suite of tools to run and test Solaris x86 realmode boot drivers under MS-DOS. The suite enables developers to use standard debugging environments, such as Microsoft CodeView, while developing drivers.

Languages and standards involved: C, assembler.


Project for MatchCraft

Servlet performance troubleshooting

Investigated, isolated and solved performance problems with Linux servlets on MatchCraft web site. Developed tools for performance monitoring.

Languages and standards involved: C++, Java, HTML, IP.


Projects for PulsePoint Communications

FAX-LIC crash debugging

Identified the cause of an infrequent but persistent system crash on VoiceServer line interface cards for FAX communication. Other people had studied the problem for over a year with no success.

Languages and standards involved: C, assembler, x86 architecture.

Challenges: only available evidence was core dumps; crash could not be reproduced on demand.

Fast file system checking

Designed and implemented enhancements to Unix-based voice messaging filesystem to reduce return-to-service time after a system failure. Replaced an older algorithm that required a full check of the entire disk before service could resume, by an algorithm that permitted most of the checking function to proceed in parallel with normal operation.

Languages and standards involved: C.

Challenges: identifying free space as quickly as possible on restart; ensuring that the algorithm was crash-proof.

VoiceServer firmware enhancements

Designed and implemented several enhancements to VoiceServer boot firmware, including new device support and memory-test acceleration.

Languages and standards involved: C, assembler, SCSI.

Challenges: debugging with minimal tools.

Multithreading enhancements

Co-designer and primary implementer of multithreading enhancements to Unix kernel and libraries. These enhancements allowed telephony applications for voice and fax messaging to run control threads for multiple telephone ports in a single application process.

Languages and standards involved: C, assembler.

Challenges: debugging thread switch problems.