At bmc::labs, we work on both sides of the intersection between electronics and software. We research and develop. We tailor solutions to needs, we manage, consult and support. We review, report and educate. This article provides more detailed insight into what that means, specifically, to help you decide if there is something we can do for you.
Electronics are ubiquitous nowadays. We have devices with embedded systems in our kitchens, bathrooms, bedrooms, obviously in our offices, and more often than not almost permanently in our hands, pockets and on our wrists. I won’t start with cars - they have a plethora of embedded electronics managing everything from the engine to the traffic information system. Thus, if you are developing a new product, or you are reinventing an old one - chances are you’ll need that electronic component to be designed. You’ll need that embedded system to do its job, now and until the customer wants your next thing™.
what we can do
We can help you analyse what kind of embedded system you need.
Is it going to be a bespoke bare metal system, designed around the best microcontroller for your project? We’ll find the right one, match the components you need to it, design the printed circuit board and set up the development environment. All with cost and time to market in mind.
Is it going to be an embedded Linux system? An all-in-one system like the Raspberry Pi, or a domain specific system on chip? A graphics oriented processing device such as the NVIDIA Jetson? We’ll help you find the right one for your application and we’ll get you off the ground in your development.
We can help you bring your product to market. With our partners, we have the know-how to prepare embedded systems for series production. We’ll evaluate the options with you to find the right solution for you.
You need peripheral components, such as sensors? Or cabling? A housing? We have partners for all of that, too, and in-house know-how for wiring, loom design and housing design.
- we’ll help you specify your requirements,
- … find the solution that is right for you,
- … design and prototype PCB for you, if necessary,
- … or find the right off-the-shelf component for your application.
- we’ll help you define the peripherals and ancillary components,
- … design and prototype looms and housings where necessary,
- … and guide you through integration and on to production.
Of course, you are not required to hire us for full project support. We are happy to assist you to realize your project in the way that is best for you.
data crunching software
Electronics are ubiquitous and so is the software that runs on them. Software controls all the electronic devices we use and increasingly connects them to the internet. This opens up many possibilities to provide services and improve quality, and while it also carries risk, it has changed how we interact and how we see the world deeply. The data which is constantly gathered and exchanged is what let’s us order food, learn languages and run businesses. And of course you’ll want the software component of your product to meet the standards your customers are used to.
what we can do
While we provide all-round software engineering, our focus is on data crunching and visualization. Specifically, we have experience in distributed data acquisition and streaming solutions involving small devices as well as data oriented user interfaces.
You need data processed at the edge, directly on your device? Give us a call. Time series data and processing it is where we come from. We still routinely work with data coming from race cars and develop monitoring methods to find irregularities.
You have a logger or some sort of IoT device and you want it connected to your backend solution? That’s our business. From the bare metal where the data is created across networks, wired or wireless, to servers where data is stored, processed and presented.
- we’ll help you define the strategy for your data processing needs,
- … and work out the requirements and architecture with you.
- we’ll implement whatever data processing you need, where ever you need it,
- … and we’ll make sure it fits your use case.
- we’ll guide you through designing efficient data visualisations,
- … and we’ll make sure it’s efficient and uses the right tool for the job.
We’ll also consult for you on difficult projects if we are not the designer or implementer of the system in question. Get in touch, we’ll help you figure it out. Fair and square.
code review & training
Programming languages and codebases have one thing in common: they evolve, and they tend to grow over time. This is not a problem per se, but it certainly can be a challenge, especially with both security and performance considerations climbing to the top of the priority list as attack surfaces are increasingly exploited and processors stagnate in terms of their computational throughput: languages adapt, but codebases don’t necessarily and programmers don’t necessarily either.
what we can do
We love code, and we love keeping up to date with what’s going on in C++ and Rust. We know about best practices and coding standards, we know about current trends, and we like our codebases up to speed. And we believe in the power of reviews, internal or external.
Now of course, you have a team of great software engineers who are like us. No question, you probably do - we are by no means unique, just a bunch of guys who are passionate about what we do, and proud to be doing it. But perhaps you’d like a second opinion on your codebase, or perhaps you feel like your guys could use an extra hand in doing a full scale review. Perhaps you don’t want to hire a dedicated reviewing team, but every year for a couple of weeks you’d still like to have one.
Call us. We are looking forward to meeting your team, and to helping them improve their work while - we are sure - learning a lot from them in process. We won’t be coming there looking to take apart your engineering decisions or your architecture, or to riff on your code quality. We’ll be coming in to support you and your software engineering team to the best of our ability.
Then, if you want to get your team up to speed on recent additions to C++ or Rust, or to explain a particularly hairy feature and how to make use of it, we can help with that too. You have a project you want to do using new features or a whole new language, but only part of your team is already familiar with it? We’ll work with them to put together a strategy getting everybody else up to speed. We love teaching and exploring language features and concepts with your team until it all seems natural.
In short: We are on a mission to help you avoid and reduce technical debt. We’ll do that by:
- … reviewing your codebase, which includes
- architecture analysis and evolution recommendations
- reporting best practice violations and coding standard conformance issues
- test suite analysis and completion, or from-scratch creation
- refactoring recommendations or full-on execution per your specifications
- codebase analysis for conformance with given coding standards
- … helping your team establish internal code review practices
- … helping your team get up to speed
Our languages of choice are C++ and Rust, Python 3 and Matlab. Although we work also in other languages, these are the languages we have experience in.
The first step is to contact us. As we offer fairly extensive services, we will be asking you to provide detailed information on your use case or service requirement. Please consider that we are likely not available the next day as we are usually engaged in projects and need to schedule and will need time to prepare for your assignment. Every project is different and we want to provide the best service that we can, and both information and preparation are essential to be able to do that.
We are always open and looking for interesting projects to engage in. If you have one of those, get in touch!