During the last few weeks, I had a few occasions in which I had to explain what I do at work.
Explaining how lucky I feel like and how rewarding it is to work on interesting problems is easy.
Telling that I spend most of the time at the coffee machine waiting either for recompilations of our codebase or for test results is somehow accurate but a bit too micro. I do also some work on optimizing our compiler results, data-structures, working on the testing infrastructure, or writing documentation.
But what do we do as a company?
There is an overlap between this and a business pitch, clients are always welcome, but the focus is on convincing you that it’s fun and rewarding spending time toying with our technology. And it may be even useful.
Lots of nice buzzwords, but what does that mean / what can I show?
- Cheerp: a compiler from C/C++ codebases to JS and/or Wasm
- our new project, CheerpX 🚀
- few selected articles
- a retro multiplayer shooter game
With some hand waving, it’s generally fine to use our products for private use or for an open-source project. That should cover most non-profit usage of the product. And you can always double-check with us, in the end, you will find how to get in touch.
It’s a command-line tool that works basically as a replacement for clang (it’s even invoked like /path/to/cheerp/directory/bin/clang++), accepting most of the clang options.
Most small examples will compile out of the box, and the magic will work just so. On bigger codebases, it may or may not work with a single line, since the build system will need to be adapted and there are generally more chances of problems arising. Custom warnings and errors are well described and will guide in the right direction to a smooth solution.
Bonus part: memory model
You can now follow the wiki instruction and get started with experimenting, or I can show two demos:
A serverless multiplayer retro game where you can jump and shoot around.
Here it starts with a complex C++ codebase that requires audio, video, communication with other peers, performance tuning and many other problems.
The result is a fun gaming experience, on the browser, no installation required. And you can jump around and shoot at total strangers.
A fast BigInt in an evening
This should show that there is a lot of attention to the performances of the resulting programs, and we aim to be close to native speed.
This article also doubles down as a tutorial of a sort, and substituting BigInt with whatever library you may need should be a fun way to start playing with Cheerp.
There are 3 ways to experiment with it:
An online Java editor, that allows you to compile and run arbitrary Java code directly in your browser.
The site is in need of a redesign (want to help?) but should be intuitive enough. You basically code any Java on the left, click “compile and run” and to the right, you will see the console output + any visual element you may have drawn.
CheerpJ Applet Runner
A Chrome extension to run any Java applet.
This is mainly thought for users of websites where there are legacy java applets, and it’s a safe alternative to messing with the security options of your browser.
You just add the extension and whatever content present on the sites you browse will properly execute.
Here an article on how it solves a problem for a high-school professor: Java Applet archaeology.
To next year, ViewSource!
SpaceX is cool, so why not CheerpX?
It’s unclear whether the name of the technology is temporary or not, but you can read more of what surprises are we working on directly on our CTO Alessandro’s article: