Eastshore Design Group, Inc.

Home

Eastshore Design Group, Inc. is a small, top-notch contract software developer and technology integrator that specializes in complex applications on embedded and server platforms.

Established in 1984 as Design & Delivery, and incorporated under our present name in 1995, Eastshore has a long history of providing innovative, reliable, and maintainable solutions to difficult problems. Our clients include product-based companies, systems integrators, government agencies, and research institutions.

Our team approach to projects and ongoing partnerships with other organizations provide the staffing flexibility and improved coverage of large consulting operations, while maintaining the low overhead and cost effectiveness of working with individual developers. Our broad platform experience helps us find the solutions from across the industry which best fit our clients' needs. Our communications and management skills assure that our efforts remain in alignment with project schedules and requirements.

We focus on quick, cost-effective delivery of results, with minimal demands on our clients' infrastructure.

Scenarios

Rather than specializing in a single technology or set of tools, we've focused our attention on effectively addressing these particular business situations:

Prototyping

One of the biggest challenges of prototypes and proof-of-concept designs is finding personnel familiar with all the technologies involved, and putting together a platform without a model to follow.

Eastshore has a long history of success in these challenging environments. We're quick to come up to speed on new platforms and technologies. Our broad experience provides a basis for novel, effective solutions. We're experts at migrating prototypes into reliable, maintainable production systems. And we communicate results well.

Startup Support

Much of our work revolves around helping technically sophisticated companies bring new products into existence.

A successful computer-based product brings together many components, and often some of these are outside the core expertise and focus of the company developing the product. We have a long history of successfully filling those gaps, and moving complex ideas from the laboratory into practical products.

Troubleshooting

Many of the same skills that make us effective at prototyping also allow us to contribute to unsticking stalled projects.

We can quickly survey the situation, identify critical blockages, and leverage our expertise to resolve them in a cost-effective, timely manner, with a minimal disruption to existing schedules and processes.

Hardware Integration

We've worked hand-in-hand with hardware engineers on the design, verification, and integration of boards, FPGAs, and ASICs. We've integrated hardware components into both new and existing products, developing drivers and communications protocols as necessary. We've developed firmware for many different processors and environments.

Expertise

Requirements

Our projects seldom begin with detailed, immutable requirements. We're experienced at working with our clients and their users to determine initial project direction, and to evolve those specifications as user needs become more elaborated.

We develop use cases/stories from user interviews and process observation. We're good at capturing subtle detail from users at all levels of sophistication. We use iterative implementation cycles to elicit timely user feedback. During this phase, we apply our deep appreciation for the complexities of human perception to evolve interfaces that 'feel' right.

We're skilled at integrating these 'soft' requirements with formal requirements for interfacing, scalability, and performance.

Architecture

Our experience spans many years, many platforms, and many problem domains, giving us a broad range of architectural ideas to draw on. We're skilled at applying object oriented design principles to craft interfaces that optimize modularity and flexibility.

We have a strong feel for the differential strengths and weaknesses of humans, software and hardware. This informs where we locate different system functions.

We pay rigorous attention to how system components interact: processing and channel capacities, load dynamics, and scalability and reliability issues.

All of this allows us to craft system architectures that match technological capabilities with real world needs.

Technologies

Much of our work involves mastering and integrating new technologies. We're practiced at quickly identifying critical concepts, and leveraging all available resources to flatten the learning curve.

Past examples include a large number of communications protocols (802.16, 802.14, Zigbee, GPRS, I2C, RS-232, RS-422, RS-485, many protocols in the TCP/IP suite), low-level bus interfaces (VME, SCSI), microcontrollers, DSPs, and other specialized processors (PIC, Rabbit, TMS320, XMOS) and low-level devices (sensors, iButton, infrared communications, A/D converters, LCD controllers).

Implementation

We're experts at C/C++ coding on both server and embedded platforms.

We've done assembler level coding and debug on most popular processors (x86, ARM, Freescale, PIC, Rabbbit, TI). We do scripting in perl, shell, javascript, and php. We have years of experience with the gnu toolchain, makefiles, version control, STL, and integrating open source libraries.

We have specialized knowledge in networking and protocol design, threaded and event-driven architectures, Linux/Unix, RTOS, drivers, DSP and complex data analysis, SQL/database, and multi-tier systems.

Project Management

Internally, we use Agile techniques which focus on producing a functioning system early in the project schedule, and iteratively extending the feature set. We sequence feature implementation to minimize schedule risks.

We leverage this approach to provide clear, timely, and accurate status reports to our clients. We're skilled at integrating this reporting into our client's project management process.

Life Cycle

We've provided services at all phases of the software life cycle.

In addition to design and initial development, we work closely with our clients to assist in integration, QA, deployment, and maintenance. For some clients, this includes delivering on-site support to their customers.

We've also taken on maintenance and enhancement tasks for legacy systems.

We maintain clean, informative inline documentation, and can assist our clients with formal design documents, user and internals documentation, and release notes.

Approach

Communication

We feel communication is central to planning and executing a project effectively, and to helping people extract the maximum value from what's been produced. We also feel that there are two important sets of communication skills: sharing our knowledge effectively with others, and learning efficiently what others have to share with us.

We apply these skills during all phases of a project.

During research and design phases, we work hard to understand and appreciate inputs from a variety of channels and stakeholders. We can synthesize and prioritize this research into RFP responses and design presentations. We can resolve issues effectively through text, voice, or face-to-face interactions.

During implementation and deployment, we carefully communicate progress and address late-stage concerns. We believe clarity and accessibility are the best way to exhibit our commitment to quality collaborative relationships.

Visibility

We use rapid prototyping to provide highly visible and timely feedback on our understanding and our progress. We prioritize deliveries to tackle controversial issues early, exposing any unforseen problems in adequate time for their resolution.

We're very experienced at smoothly migrating prototypes into production quality code, allowing the benefits of an iterative process with little or no additional overhead.

Reliability

On a typical project, half of the code or more may be involved with error handling. This code takes time to write, and often isn't well tested.

We take a more reliable (and less expensive) approach, developing a small number of well-tested 'failsafe' recovery points in the code, and handle errors in a generic way by restarting from one of those points.

Architecting reliability into the system in this way makes it less vulnerable to coding mistakes and more robust against unexpected conditions. Building the error handling architecture up front, when combined with iterative development, means the error recovery mechanism is well tested by product release.

Performance

Our work on constrained platforms gives us a strong appreciation of performance issues. But we also know that most time spent on optimization is wasted.

Our approach is to identify key areas for potential performance or scalability problems up front, and encapsulate those areas to facilitate future tuning. Then, we provide the simplest solution possible in each area.

After prototype iterations have solidified requirements in performance-critical areas, we measure actual system behavior to identify and remove bottlenecks. In most cases, the initial solution is adequate, resulting in a simpler design, and schedule and cost savings. Optimization effort is more focused and productive.

Tools

We're strong believers in maximizing productivity by using the best tools.

Although we work across a large number of platforms and applications areas, we reuse and build on a comprehensive toolkit consisting of open source toolchains, libraries, version control, and documentation tools. We've evolved simple, clean coding standards and project tree layouts. We use scripting and other scaffolding to eliminate repetitive, error-prone development processes.

Testing

As much as possible, we adhere to test-driven development.

We produce tests before writing the code itself. This cross-checks that the specification is complete and well understood. It also helps us design testable, easy-to-use internal APIs.

During initial development, we debug both the code and the test in parallel.

Once this process is complete, the test guards against introducing mistakes during further development, refactoring, or tuning.

Clients

Here are some examples of our past projects:

SETI

The SETI Institute searches for evidence of extraterrestrial civilizations using radio telescopes and advanced signal processing equipment. Unlike most other SETI projects, they focus on analyzing data in real time, so that any unusual signals can be followed up on quickly.

Eastshore has played a significant role in developing 3 generations of signal detection systems over 15 years, taking advantage of shifts in processor and data transfer technologies. We worked with scientists and mathematicians to understand their mathematical models and envision highly efficient implementations. We helped architect a combination of general purpose processors, off-the-shelf DSP boards, and custom hardware to deliver the needed processing capacity in a cost-effective way. For the custom hardware, we developed drivers and provided debugging and integration assistance. Finally, we implemented many of the key algorithms, and tuned overall performance.

Development included work in C, C++, and assembler on Intel, Motorola, and TI processors, across several operating systems. We worked very closely with hardware designers on FPGA and board designs, and memory and communications architectures. The final system processes a 100 MHz input sample stream to monitor 40 million frequency channels, integrating along 1000 drift rates per channel.

PINC

PINC Solutions develops and hosts services for tracking and managing trailers in distribution yards. A key part of their approach is to install inexpensive passive RFID tags on trailers, and use mobile RFID readers and GPS devices on yard shuttle trucks to build up a complete picture of the state of a yard.

Eastshore developed the server that collects, analyzes, and aggregates sensor data to create a detailed activity history of each trailer and shuttle truck. We publish that history to an SQL database, which PINC developers then use to present a web-based tool for managing yards in real time, and a variety of reports providing insight into process efficiencies and bottlenecks.

Our server consists of 70,000 lines of C++ running on Linux. It implements objects for real-time data collection, SQL database interfacing, data filtering, geometric and vector calculations, and making complex semantic inferences about truck motion and activity. We developed all of the underlying algorithms incrementally, based on increasingly sophisticated customer requirements.

Vicor

Vicor, Inc. (now a division of FIS ) develops systems used by major commercial banks to offer receivables processing services to their business customers. Unlike “retail” receivables, where standard payment coupons allow straightforward automation, “wholesale” receivables transactions involve huge variations in document layout, fonts, size, and color.

Eastshore has worked with Vicor from the beginning, designing and evolving the workstations used to capture payment information from these documents. A carefully engineered combination of high-quality color document images, interactive ICR, learned remitter history, standard and custom validation and workflow rules, and various flavors of assisted manual keying, allow operators to process these documents quickly and accurately.

This multi-threaded X application consists of almost 200,000 lines of C++, running on Linux or FreeBSD. Highlights include pipelined JPEG decompression, adaptive learning of document characteristics, smooth integration of manual and automated text capture, and mixed onshore/ offshore workflow.

eLock

eLock Technologies develops small vehicle sharing and storage technologies.

Eastshore developed the prototype firmware for their on-demand bicycle locks, and a prototype gateway board allowing monitoring and control of a network of lockers from the internet.

The locker prototype was written in C on a PIC, interfacing to an iButton reader, Palm Pilot (as management device), and lock control hardware. The gateway was written in C on a Rabbit microcontroller interfacing a GPRS modem to a cluster of lockers via a Zigbee network.

Dual

Karstadt AG, a major German department store, contracted with frog design to develop a unique line of stereo components under the Dual brand name. The controls for this system were built into a detachable front panel which functioned as a remote, and featured a full LCD display, including simulated VU meters.

Eastshore developed the firmware and communications architecture for this control unit. Our key accomplishments were providing a dynamic, responsive look and feel over a low-bandwith IR link, and developing a scripting system that supported rapid updating of the UI storyboard.

The firmware was written in C on an embedded 68000. We also developed C simulations of a custom ASIC, and assisted in verification of the ASIC design.

Wideband

Wideband Semiconductor designs ASIC digital signal processing products with a focus on wireless communications.

Eastshore was involved in modeling and analysis for a SOC design implementing portions of the 802.16 Wireless Metropolitan Area Network standard.

Our work included writing C++ simulations of various hardware and software components of the system, driver performance analysis, and throughput estimates for a cellular backhaul application.

RGB

RGB Spectrum is a leading manufacturer of video processing boxes.

Faced with a shortage of in-house development resources, they approached Eastshore about tracking down and fixing a number of problems in a recently-released product.

We were productive within days, working with a control system consisting of 50,000+ lines of C, split between a Freescale DSP and a Renesas/Hitachi SH4 running Linux. We successfully resolved their outstanding problems, and implemented additional features which opened a new market for their product.

Desana

Desana Systems was a dot.com hardware development startup, implementing one of the first high-bandwidth, deep packet inspection routers.

Eastshore was involved from the inception. We helped reverse engineer proprietary network protocols to identify key packet classification features, and designed and implemented a rule-based software classification engine that processed packets at near memory bandwidth.

We also identified the need for a development environment that closely mimicked the structure and configurability of final hardware platform, to allow smooth migration of system software. The environment we created was eventually adopted by all of Desana's in-house developers, and became a key element in meeting agressive schedules.

Andros

Andros was a major manufacturer of medical and industrial gas analyzers.

Eastshore developed the firmware for the Andros 5400 Leak Detection System, which combines multiple zone gas sampling and analysis with front panel and serial interfaces, data logging, and direct relay control of external devices. The firmware detected gas concentrations by analyzing infrared absorption, and supported a calibration interface and multiple gas types.

The Andros firmware was written in C, and the code and documentation conformed to an ISO-9000 certified process.

Contact