Because not only CPU cycles count, but also developers’ time
There are approximately 4 million C and C++ programmers in the world, probably the largest community, with about 20% of the market, which is comparable or even larger than Java (both C and C++ together). They are also by far the oldest languages of the current mainstream ones, used in key industries and even increasingly due to synergies with other fields as the IoT/embedded systems or robotics, in which these languages are important.
C++ is a great language, and it is improving faster than ever with the recent 11 and 14 standards, and 17 is very promising too. It is amazing how the syntax is becoming closer and closer to other more “modern” languages as python. And C is the solid foundation of most current IT technology. State of the art compilers, optimizers, debuggers and IDEs for C and C++ are excellent.
C and C++ make up to 20% of the world code
Developing and testing C and C++ applications for the Raspberry can be inconvenient because of slow builds, so it is usually far more interesting to be able to develop in your own box, then just do the final checks in the target platform, in this case the Raspberry PI.
This article shows how to develop an OpenGL based application (using the GLFW library), that will be first built and run in the desktop, then cross-built to the RaspberryPI, using biicode hooks and toolchains features to easily automate the process.
Or why there is no SerialPort in C++
Developing code in C++ for robotics, I often faced the problem of communicating via serial port with a robot, a sensor or any other device. C and C++ are languages supposedly very close to hardware. Furthermore, they are the most common and oldest mainstream programming languages out there. So communicating over a serial port in a portable way should be straightforward.
We have a big problem. We have miserably failed to explain the core value proposition of biicode: a file-based dependency manager. We have tried to communicate it in the homepage, in features landing pages, videos, etc. While we certainly are growing, it is also true that not as fast as we would like.
There are many reasons that explain this: People understand that we are a dependency manager for C/C++, but also realize that we still don’t have premium accounts (for private code), in-house deployment or that we’re not open-source. This is all true, we are working in all these features, including going open-source regarding which we will soon announce something relevant. But we think these are not reasons (stoppers) enough to not engage with the platform now, try it, check how it works, give feedback to help define the tool to your needs.
We believe that the main problem is that we didn’t explain properly what makes biicode so special, and we failed because we have used the wrong channels. Here, I will explain it with the language we, developers, all love: source code.
ZMQ or ZeroMQ is one of the coolest open source libraries out there. It fills a real necessity in a new, brilliant way. It is very active, has bindings to many languages… that’s why it is so popular.
I was a professor in university, teaching C/C++, software engineering, distributed systems (plain old sockets, SOAP, web…), and I really enjoyed keeping my classes up to date and teaching last trends and technologies. If I was still a teacher, I would definitely teach some sessions using ZeroMQ.
In my last post I stated that I am not afraid of technical challenges, but that I had made a mistake about the community challenge involved in launching a tool as biicode. I’ve been a C and C++ developer for years, I have released some projects as open source, collaborated in industrial projects and met many other developers, I’ve taught those languages thousands of hours and organized many activities as robotic contests programmed in such languages. So I thought that belonging to that community implied fully understanding such community. It was a big mistake.
This is the first chapter of our story, a story in which we embarked on a journey to create biicode. We hope this gives you a hint of the pains and gains of creating a start-up from scratch. This is our story.
Why I quit a tenure track position as professor
I’m Diego Rodriguez-Losada, the first promoter of biicode and one of its founders. Right before embracing this adventure, I had a comfortable position as a professor in Universidad Politecnica de Madrid.
In this post we will show how it is possible to send email from Arduino!
We registered at the great temboo service which offers connection >100 services (gmail, twiter, github, and many more) and a library for Arduino. But the provided temboo library expects a reference to something implementing the Arduino SDK Client “interface”. In the setup we’re using an Arduino Mega2560 with the Adafruit CC3000 WiFi module.
If you ever need to connect the CC3000 module with another service, you can do it using this Ardunet block with network utilities for Arduino. Unluckily, the Adafruit CC3000 library does not conform with this interface, so I had to roll my own one.
Biicode was invited by Professor Jose Daniel Garcia to participate in “using std::cpp“, a national workshop on the C++ language and standard, on late November 2013, at Carlos III University.
It was a success, a lot of attendees, very interesting talks and discussions. Congratulations to the organizers and speakers! It was a pleasure to be there.
Credit: Carlos III University