Ordered list of blogs will go here with a widget
To provide some context, I have always had a focus on what was originally considered back-end development, or now "systems" development. This started with working on TCP servers that interacted with each other over their own custom protocol before HTTP became the de-facto standard for communication. As a result, the chosen language for the day was C/C++ with the occasional web based applications being called through Apache's CGI interface. This even extended through to my forays in Perl, PHP, and Ruby.
However, it was the early days of Ruby that included it's own webserver as a part of the core library to uncovered the potential for me. Granted the only other language to offer up a webserver on its own was Java by way of the servlet ecosystem. Fast-forward a bit towards the current serverless ecosystem, and what languages do you find that are supported? For AWS: Java, Go, PowerShell, Node.js, C#, Python, and Ruby. How many of them have their own webservers that can be easily embedded? In case you are wondering, the answer is all of them.
Even when it comes to the last few programming interviews I've done, while any language could be used, how many have asked for you to develop a web service that would require some kind of http server running to perform a function? For someone who cut their teeth with C, the one thing that has been missing is a slightly easier way to bring up a web service without implementing one's own HTTP server. In addition, I wanted to provide a runtime environment so that it too can be a top tier player in the microservice/serverless world. Lastly, looking at what Knative considers a serverless service ultimately is webserver running on port 8080 listening to /. Most of the server infrastructure code is written and loaded as a part of the Openfaas Runtime. The developer defines the source file, and the runtime handler will spin up a docker image with the language runtime, and enough glue code to setup the webserver to call your "function".
So guess what I did over the Christmas/New Year's week? I present to you the Knative C Runtime which provides all of the glue code required to load up a C based function and execute it within Knative. The initial release provides the framework for how to use it with Knative utilizing some of the tooling from Triggermesh whom is an active client. The goal of this project is to allow one of my favorite languages to continue to play a role in the new world, play around in the Serverless space, and give back to the community.
Do check it out and let me know what you think.