Hayes Technologies - Software Speed Optimization

Software Speed Optimization · Performance Optimization · High Performance Computing · Number Crunching · C/C++ · Assembly/Assembler · SIMD · MMX · SSE · SSE2 · SSE3 · 3DNow!

About Hayes Technologies

Hayes Technologies was founded in 2001 by Bryan Hayes to offer services for Software Speed Optimization.

Please select from the topics of this page:

 

Partial Curriculum Vitae of Bryan Hayes

Bryan Hayes

Bryan Hayes

 

The following table gives an overview of the relevant parts of the curriculum vitae; projects are listed below.

1967 Born in Frankfurt am Main, Germany
1983 Bought first computer, a Sharp MZ-731, started programming in BASIC, quickly moved on to Assembly and Pascal (also extended the BASIC interpreter). Especially fascinated by Assembly and by achieving the maximally possible speed.
1985-88 Development and selling of an Assembly Development Environment and later of an Extended BASIC Development Environment
1987 Ended high school
1997 Began study of economics at the Hochschule St. Gallen (today: University of St. Gallen), Switzerland
1989 Began freelance work mainly for Basler & Berendsen GmbH1 (today: Basler AG), a company focusing on industrial machine vision (developing, manufacturing and selling systems mainly for automated visual quality inspection)
1991-94 Continued study of economics in Hamburg, Germany
1991-92 Manager Software Development of Basler & Berendsen GmbH
1993-95 Manager Development of Basler GmbH (previously Basler & Berendsen GmbH)
1995-97 Manager New Business Development of Basler GmbH

Founding of a new Business Unit "Machine Vision Components" (development, manufacturing and selling of components for machine vision systems) and managing this Business Unit

1998-99 Member of the Board of Managing Directors of Basler GmbH (Geschäftsführer)

Especially involved in managing the new Business Unit "Machine Vision Components" and New Business Development

1998-2001 Member of the Board of Management of Basler AG (previously Basler GmbH) (Vorstand)

Especially involved with Development, New Business Development, Corporate Development incl. M&A, Research & Technology

2001 Founded Hayes Technologies

1 The company consisted of 2 persons in 1989; in 2001 it had expanded to almost 300 employees, 3 subsidiaries (USA, Taiwan, Singapore) and an international sales and service network; IPO March 23, 1999

Jump to top of page

 

Projects

The following table gives an overview of the most relevant projects; minor projects etc. (such as Mandelbrot set graphics programs) are not listed. A number of these projects saw the development of successor releases which have not been listed.

1984-85 Development of an assembly language development environment with editor, assembler, re-assembler, debugging facilities (12000 lines assembly code; incl. all hardware drivers  (video, cassette, keyboard, FD); fastest assembler on the market: 2000 lines/s on a 3.5 MHz Z80 processor)

Sharp MZ-7x1 (3.5 MHz Z80); Sharp BASIC / BIOS; Z80 Assembly

1984-85 Development of a graphics library used to extend the BASIC interpreter

Sharp MZ-7x1; Sharp BASIC / BIOS; Z80 Assembly

1984-85 Development of a ticket management system for an airline office

PC (8086); MS-DOS; C

1985-86 Development of an extended BASIC language development environment with editor, compiler (17000 lines assembly code; incl. all hardware drivers (video, cassette, keyboard, FD); fastest math routines on the market, 5000 FP additions/s, 2200 FP multiplications/s on a 3.5 MHz Z80)

Sharp MZ-7x1 (3.5 MHz Z80); Sharp BIOS; Z80 Assembly

1986 Port of the Assembly and Extended BASIC compiler development tools to Schneider CPC computers

Schneider CPC (4 MHz Z80); Schneider BIOS / No OS; Z80 Assembly

1987-1988 Development of a 3D vector graphics game

Atari ST + Commodore Amiga (8 MHz 68000 CPU); Atari + Amiga OS; C + Assembly

1989-90 Development of system software for a Z180 based single board computer
1989-90 Development of a barcode and OCR reader system for difficult industrial contexts (low contrast, curved surfaces etc.)

Industrial PC with 80286+80287 (10 MHz); MS-DOS; C + x86-Assembly

1989-94 Development of an I/O library incl. a window system

PC; MS-DOS + own 32 bit extension; C + x86-Assembly (16 and 32 bit)

1990 Development of a device driver for a frame grabber with integrated processing

Industrial PC with 80286; MS-DOS; C + x86 Assembly

1990 Development of a WYSIWYG editor module with own virtual memory management incl. swapping to HD

PC; OS-independent code; C (16 bit)

1990-91 Development of a color CD label inspection system (checking if the print on a CD is OK)

Industrial VME PC with pipeline processing image processing board with integrated 68000 main processor; MS-DOS; C and 68000 Assembly and x86-Assembly

1990-91 Development of the software for a ball bearing ball sorting machine

Industrial PC with 80286; MS-DOS; C

1991-92 Development of special high-speed on-the-fly code reading systems for PET bottles

PC with 80286 + frame grabber with TI TMS34010 CPU; MS-DOS; C + TMS34010 Assembly

1992 Development of systems for reading barcodes and text (OCR) on CDs

PC with 80286; MS-DOS; C + x86-Assembly

1993 Development of device drivers for a frame grabber board and a digital I/O board

PC with Pentium; MS-DOS; C and x86-Assembly

1993 Development of a multithreaded multi-camera version of the CD label inspection system (see above)

Industrial PC with i486 CPU; MS-DOS + RTKernel real-time kernel + own 32 bit extensions; C + x86 Assembly (16 and 32 bit)

1993 Development of a multithreaded version of the CD code readers (see above) for use with CAN based terminals

Industrial PC with i486 CPU; MS-DOS + RTKernel real-time kernel + own 32 bit extensions; C + x86 Assembly (16 and 32 bit)

1995 Development of boot code loader for a frame grabber with on-board Pentium CPU

Embedded Pentium; No OS; C + x86 Assembly

1995 Development of a 32 bit deadline (vs. priority) based real-time kernel for x86 PCs

80386+ PCs; BIOS; 32 bit C++ and x86-Assembly

1996 Development of Microsoft Windows 95 device drivers (VxD) for a frame grabber board and a digital I/O board

PC with Pentium; MS Windows 95; C++ and x86-Assembly

1997 Designed and set up the web site for Basler GmbH (today Basler AG)
2000-01 Feasibility study concerning extreme high-speed decompression

PC with Pentium III; Windows NT 4.0; Pentium III Assembly

2001-02 White Paper for Intel®: "Optimizing for the Pentium® 4 vs. for the Pentium® III"

PC with Pentium III and PC with Pentium 4; Windows XP; Pentium III + 4 Assembly

2004 Further development of image processing software

PC with Pentium III; Windows NT 4.0; C++ and Pentium III Assembly

2005-06 Adaption of the BIOS to the board configuration, removal of various BIOS programming errors (BIOS-development, BIOS engineering)

Compact-PCI Board with Pentium M; Phoenix BIOS; Pentium M Assembly

2007-08 Development of the software (system software and algorithm software) of a new sensor system

TI DSP TMS320F2812, TMS320F28335; No OS; C++ + Assembly

Jump to top of page

 

Experience

The following table gives an overview of the most relevant experience / knowledge.

Topic Since Level of Experience
High Level Programming Languages

BASIC

1983 Very extensive experience and deep knowledge

Pascal

1984 Extensive experience and knowledge

C

1985 Very extensive experience and deep knowledge

Fortran

1986 Good experience

C++

1988 Very extensive experience and deep knowledge

HTML/CSS

1997 Significant experience

JavaScript

1997 Good experience
 
CPUs / Corresponding Assembly Languages
Z80/Z180 1984 Very extensive experience
8086 / 80286/80287 / 80386 / i486 / Pentium / Pentium MMX / Pentium II / Pentium III / Pentium 4 / Pentium M / Core 2 1984 Very extensive experience; incl. MMX, SSE, SSE2, SSE3
6502 1985 Significant experience
68000 1990 Extensive experience
TI TMS34010 1992 Extensive experience
Texas Instruments (TI) TMS320F2812, TMS320F28835 2007 Extensive experience
Various DSPs / CPUs 1982 Significant theoretical knowledge; very good overview of many architectures and specific products (i.e. Alpha, ARM, PowerPC, MIPS, TI DSPs, various Microcontrollers)
 
Operating Systems and Real-Time Kernels
CP/M 1984 Extensive experience and knowledge
MS-DOS 1984 Extensive experience and knowledge
Apple II 1985 Extensive experience
Macintosh 1988 Good experience
MS Windows 3.1 / 9x / NT / 2000 1990 Extensive experience; for Windows 95/98 device driver (VxD) experience
RTKernel Real-Time Kernel 1992 Extensive experience and knowledge
Own Real-Time Kernel 1994 Very extensive experience and very deep knowledge
QNX (Unix-oriented real-time OS) 1996 Some experience
QNX Neutrino (Unix-oriented real-time OS) 1996 Good experience; device driver programming experience
Linux 2001 Some experience
 
BIOS
Phoenix BIOS 2005 Medium experience and knowledge: Adaption of a BIOS to a specific board
 
Software Tools (older Tools (i.e. Borland C/C++) not listed)
MS C/C++ Compilers / Visual Studio / C/C++ 1984 Very extensive experience
MS Assembler 1984 Very extensive experience
Intel C/C++ Compiler 1999 Significant experience
Intel VTune Analyzer 1999 Significant experience
GCC etc. (GNU C/C++ Compiler) 2001 Some experience
Texas Instrument (TI) Code Composer Studio 2007 Extensive experience
 
Standard Software (older Software (i.e. WordStar) not listed)
MS Office 1990 Extensive experience
MS FrontPage 1997 Significant experience
SAP R/3 2000 Good experience
 

Hardware

Z80 based Computers 1983 Sharp + Schneider; very extensive experience; extensive device driver development experience
PCs 1984 Various; desktop + industrial; very extensive experience
Apple II 1985 Significant experience
Apple Macintosh 1988 Little experience
Z180 based Single Board Computers 1989 Extensive experience; participation in product specification; extensive device driver development experience
RS232 1989 Extensive experience; extensive device driver development experience
Frame Grabber Boards 1989 Various boards; participation in specification; extensive low-level programming / device driver development experience
Digital I/O Boards (Industrial) 1989 Various boards; participation in product specification; extensive low-level programming / device driver development experience
PLCs 1989 Connected vision systems to various PLCs (digital or RS232)
Cameras 1989 Very extensive experience with industrial CCD cameras (b/w and color, analog and digital)
CAN Bus Boards 1992 Extensive experience; participation in product specification; extensive device driver development experience
Fire wire / IEEE 1394 1994 Good experience; participation in product specification
Various HW 1983 Plotters, dot-matrix/inkjet/laser printers, HDDs, FDDs, monitors, LCD displays, Ethernet boards / networks, USB, parallel I/O etc.

Jump to top of page

Platforms: x86 · Pentium · Pentium MMX · Pentium II · Pentium III · Pentium 4 · Core · Core 2 · Xeon · Itanium · Athlon · DSPs · Embedded CPUs · Windows · Linux · RTOSs

Especially Benefiting Application Areas: Image Processing · Signal processing · High Performance Computing / Number Crunching · Simulations · Compression · Games · 3D Software · Device Drivers · Multi-processor Systems · Multi-Computer Systems / Clusters · Embedded Devices · Real-time Systems · Interactive Systems · And many more...