Not all software is created equal
Prototyping software often only runs for several weeks, perhaps several months, almost never more than 2-6 months. This does not mean that it can be “quick and dirty” code – but it certainly does not require the same approach as full production code.
Testing software can fail – but must always fail safely. A full test rig can for example involve large actuators, minimal guarding, and personnel in close proximity – the dream (or nightmare) of any H&S inspector. Testing software must take this into consideration and put the safety of personnel (and equipment) as the highest priority.
We are highly experienced in creating efficient software without compromising on safety. We love experimenting with different software solutions to ensure that your testing is streamlined, effective and reliable, yielding the quality data you are ultimately after. See some of our example platforms below, and just give us a call if you have any questions. Also check out some of our blogs.
Writing custom sensor interfaces (RS232, RS485, USB …) is often best achieved in C/C++. We have been programming in C/C++ for over 20 years, including applications ranging from generating massive water waves in the laboratory to battery storage simulation & control. Other C/C++ applications include LabVIEW .so file development (shared C/C++ library on a Linux real time target) or Micro-controller coding.
Go has become our latest favorite language. Many of our cloud applications are written in Go and benefit of its concurrency and performance. Recently we have applied Go for hardware control and embedded systems prototyping, where it has delivered great results due to its cross-compilation, simplicity and the reliability that comes with strongly typed languages.
Matlab & Python
We have been using MATLAB and Python for almost two decades. MATLAB applications range from numerical modeling to hardware-in-the-loop (custom embedded or via Simulink coder). Python is our language of choice for data analytics. We love its simplicity for data wrangling, great visualization capabilities and powerful machine learning libraries.
TensorFlow is our library of choice for deep neural networks. We have developed convolutional neural networks for image recognition and recurrent neural networks for time series predictions. There is more to machine learning than just deep neural networks, and we have the expertise to find the solution that is most suited to your application.
We are ready to solve your data challenges. Massive volumes of unstructured data, no problem, we have seen it before and solved it through cloud-based Cassandra clusters. We have optimized SQL databases for multi-threading applications in AWS. SQLite has been a versatile solution for prototyping and embedded systems.
WEB & Cloud
We have supported and guided our clients in their transition to the cloud and have experience with the main cloud providers. Docker has become our good friend to make cloud deployment tidy. We have worked with Docker Swarm and other orchestration tools to provide the flexibility, scalability and resilience that our clients seek.
There is a myriad of communication protocols out there. Examples of protocols we have worked with in previous projects include RS232, RS485, EtherCAT, EPICS, UDP/TCP, USB, I2C, EtherNet/IP and Modbus TCP. We love making electronics talk, and have become expert debuggers when communication breaks down – if only that was always as easy as in electronics.
OS & Targets
When some of us started out programming, we tweaked DOS just to get enough memory to play Monkey Island. Today, we are equally comfortable in Xcode on MacOS, Visual Studio on Windows, or GNU on Linux. We have worked with GPU/FPGA hardware targets, embedded targets, specialist computing clusters and massively parallel problems (such as solving fluid flow equations).
Labview & Co
LabVIEW is one of our most common prototype platforms. In combination with a NI cRIO platform, this enables rapid prototyping of sensing and control applications. We often develop custom C/C++ shared libraries to work alongside LabVIEW, for example where data transfer protocols (e.g. via TCP/UDP) and data packaging are required.
Start to Finish
Prototyping is what we are good at – from start to finish. We design, build and test. We get enormous satisfaction when (not if!) we get things working.