This post originally appeared under the title “The Next Generation of Cloud Computing: Our Investment in Wasmer” on January, 6th 2021 at speedinvest.com with contributions from Namratha Kothapalli.
Similar to how Node.js allowed Javascript to run outside of the browser, Wasmer enables server-side execution of WebAssembly code, fulfilling Java’s 1990s “Write once, run anywhere” — at near-native performance and requiring a lot less disk space, unlike traditional containers.
Let’s journey back in time when the concept of containers first emerged.
1st generation: Computing has come a long way since the early days of single-purpose applications on dedicated hardware. The emergence of general-purpose computers was quickly followed by the ability to isolate processes from each other, allowing many users to run multiple applications on the same hardware simultaneously.
2nd generation: Virtual machines (VMs) supported not just multiple applications, but multiple operating systems on the same hardware. This advance made it easier to migrate guest operating systems from one host hardware to another.
3rd generation: Containers (i.e. Docker) and container-orchestration (i.e. Kubernetes) took this even further. Unlike VMs, containers only package applications, their dependencies, and a small part of the operating system. Applications in containers not only require less disk space but also work anywhere the container runtime is available.
Despite advancements in container technologies, even tiny microservices with few dependencies incur an overhead of several hundred megabytes of disk space. It may not sound like much but, on top of the disk space overhead, starting a container may take several hundred milliseconds — an order of magnitude slower than launching the same application natively. On top of that, building and orchestrating container infrastructure can be challenging for most organizations.
This is where WebAssembly (or Wasm for short) comes into play.
What is WebAssembly?
WebAssembly is a new type of code that can be run in modern web browsers — it is a low-level assembly-like language with a compact binary format that runs with near-native performance and provides programming languages with a compilation target so that they can run on the web. It is also designed to run alongside JavaScript, allowing both to work together. It’s an open standard that was first announced in 2015 and is now supported in all major browsers on desktop and mobile.
What does WebAssembly have to do with microservices?
WebAssembly was originally developed for client-side applications, but it is also perfectly suited to run server-side code. Similar to containers, applications can be packaged into WebAssembly files and are sandboxed. Unlike containers, however, WebAssembly files are binaries and contain just the applications and their dependencies.
WebAssembly binaries are portable like containers, much smaller because they contain the application and its dependencies, without the overhead of an operating system, and can run code at near-native speed. On top of that, starting WebAssembly applications is instantaneous, which comes in handy for all sorts of PaaS, FaaS, and serverless use-cases. Last but not least, since WebAssembly is portable, it enables completely new types of distributed applications.
“WebAssembly will be a key piece for the future of software execution and containerization — not only inside the browser but also outside.” — Syrus Akbary, Founder & CEO, Wasmer
Solomon Hykes (Co-Founder & former CTO, Docker), who is also an investor in Wasmer, believes that WebAssembly is a faster and more secure alternative to containers.
“If Wasm […] existed in 2008, we wouldn’t have needed to create Docker. That’s how important it is. WebAssembly on the server is the future of computing.” — Solomon Hykes, Co-Founder & former CTO, Docker
WebAssembly is still in its infancy, but there is lots of activity and enthusiasm among developers. Just like containers changed how software is built and deployed, WebAssembly has the potential to start a similar tectonic shift.
Wasmer is at the forefront of WebAssembly
Wasmer makes WebAssembly accessible to developers and enterprises. The open-source WebAssembly tool and server-side runtime make it possible to package applications written in other programming languages (including C/C++, C#, Go, Java, PHP, Ruby, Rust, and many others) into WebAssembly applications and enables execution at near-native speed anywhere: from Desktop to the Cloud and IoT devices.
With Wasmer, enterprises can run ultra-lightweight containerized software with blazing-fast startup times (~20ns), almost no overhead (near-native speed) anywhere — be it on servers, edge, and IoT devices or in serverless environments.
After humble beginnings and two years of hard work, Wasmer just released version 1.0 of their software. It brings a vastly improved and simpler to use API, massive performance improvements -despite already being blazing fast before-, support for Apple Silicon, a pluggable infrastructure for easy customization, support for “Headless Wasmer” a new ultra-lightweight runtime, ideal for IoT, and many additional features and improvements.
Wasmer has quickly established itself as a leader in the WebAssembly space. Founder and CEO Syrus Akbary has built a team of world-class engineers and WebAssembly experts.
Apple macOS 11.0 ships with both a relatively recent version of Apache (2.4.x), as well as PHP (7.3.x), so you’ll just have to install MySQL and go through a few steps to get everything up and running.
Big Sur will likely be the last version of macOS that ships with PHP. Apple added the following deprecation warning: PHP is included in macOS for compatibility with legacy software. Future versions of macOS will not include PHP.
Apache
First, you have to create a web root in your user account:
Then add a configuration for your user:
Now we have to make sure that our user config above actually gets loaded:
If you want to use vhosts, you’ll also have to make sure that the vhosts config gets loaded:
After that, configure vhosts as necessary in /etc/apache2/extra/httpd-vhosts.conf (don’t forget to remove the examples in there).
It seems that mod_rewrite no longer gets loaded by default, so we’ll also add that to our config:
PHP
PHP doesn’t get loaded by default. So we’ll also add it to our config:
You should also configure a few settings in /etc/php.ini:
To activate these settings you have to restart Apache:
MySQL is not shipped with macOS, so we’ll have to install that manually. Instead of going for an installer package, we’ll use Homebrew. Once Homebrew is installed, installing MySQL is as simple as:
If you want to start MySQL automatically, run:
Any comments? Ping me on Twitter. 👉🏻 Get my newsletter for occasional updates. ✌🏻
macOS no longer ships with PEAR, but installing it is quite easy. Once that’s done PEAR and PECL work as expected (if you also want to set up and install Apache, PHP and MySQL, check this post).
Installing PEAR
If that fails
autoconf may be missing. To install it just use Homebrew. Once Homebrew is installed, installing autoconf is as simple as:
After autoconf is installed, try running the pear installer above again.
Upgrade PEAR
Xcode Command Line Developer Tools
You will run into problems installing pecl extensions, if you don’t have the Xcode Command Line Extensions installed, so we’ll also install them.
Configuring PHP
Open /etc/php.ini and add .:/usr/local/lib/php/pear to include_path (if /etc/php.ini does not exist, create it with the following content).
Any comments? Ping me on Twitter. 👉🏻 Get my newsletter for occasional updates. ✌🏻
This post originally appeared under the title “Ready-to-Code: Our Investment in Gitpod” on October, 8th 2020 at speedinvest.com with contributions from Namratha Kothapalli.
Developers can iterate much faster today than ever before, largely because continuous integration and continuous delivery lowered the bar to ship new code significantly while not compromising on quality. But despite the innovation along the fabled DevOps pipeline, the one key component where developers spend most of their time hasn’t seen a ton of innovation: The development environment, where the actual code is written and locally tested before it’s committed into the pipeline.
Despite distributed development teams quickly growing in popularity, developers are still managing development environments on their local machines. They are largely keeping track of local build tools and settings manually and often spend their days waiting for tests or builds to complete instead of coding.
It’s about time one of the most efficiency-oriented workflows in the software development life cycle moves to the cloud. Bringing in massive benefits to individual developers and teams in productivity enhancement, additional security, ability to review code together, collaborative programming, and so on. The push towards remote work and ‘letting employees work from anywhere in the world’ is accelerating the move of source code away from individual machines towards cloud-native automated ready-to-code dev environments.
Gitpod to the rescue
Gitpod makes the tedious and time-consuming task of setting up and managing complex development environments go away. Gitpod delivers on the promise of development environments as code and offers a fully prebuilt, secure environment so individual developers and teams can be productive right away.
“Gitpod’s first-mover advantage and vibrant open-source community enables developers today to treat development environments as automated (yet customizable) resources they can spin up whenever they need them and close down and forget about when they are done with their task.” — Sven Efftinge, Co-Founder & CEO, Gitpod
Gitpod also just announced a partnership and native integration with GitLab, the open-source GitOps solution that leverages the version control system as the canonical source of truth to automate everything a developer needs to start coding.
“GitLab is excited to build a partnership with Gitpod,” said Brandon Jung, Vice President of Alliances at GitLab. “Gitpod’s expertise in automating cloud-based dev environments on GitLab combined with their focus on cloud-native development workflows makes them a great fit for our customers helping enable them on their digital transformations.”
Gitpod is a true open-source and community-powered solution. It spins up magically fast, can be self-hosted, and is the only vendor-independent solution that works with almost any cloud provider and code-hosting platform including GitLab, GitHub, and Bitbucket.
It’s All About the Team
Sven, Moritz, and Jan have been working together for more than ten years, before starting Gitpod. They are experts in developer tools, having created many popular open-source projects like Xtext, Theia, and Open-VSX alongside strong bottom-up communities. Gitpod just complemented their core team with Johannes who recently joined as Chief Commercial Officer (Hello again, Johannes! 👋🏻) and of course, they are hard at work adding more talent.
“This is an exciting time in Gitpod’s history teaming up with experienced investors in the world of developer tools and open-source software as well as working together with GitLab to provide developers with critical cloud-based dev environment automation.” — Sven Efftinge, Co-Founder & CEO, Gitpod
We are thrilled at Speedinvest to back the Gitpod team, along with an incredible group of investors, Sandeep Bhadra at Vertex Ventures US, Krishna Visvanathan at Crane Venture Partners, who have deep expertise in developer tools and open-source. We look forward to the journey ahead to empower dev teams with automated ready-to-code dev environments so they can start working, collaborating on any project, any repo, any branch, any device, at any time, from anywhere!
This post originally appeared under the title “Inside Speedinvest: Why I Joined the Deep Tech Team” on February, 23rd 2020 at speedinvest.com.
I am stoked to report that I have joined the SpeedinvestDeep Tech team as a principal to cover Germany.
Since Speedinvest is highly distributed with teams in Vienna, Munich, Berlin, London and San Francisco, and I will be remote for the most part, it seems only fitting to introduce myself via the blog — so here it goes:
I started programming as a kid and pretty much stayed in tech ever since. Even though I’d always introduce myself as a software developer, on paper I am a lawyer, but I’ll spare you the details on this little detour. During my law studies, it pulled me back into software development and I co-founded fruux, a German software company behind the sabre/dav open source technology, powering sync functionality in products, such as atmail, Box, Nextcloud, Posteo, ownCloud and many others.
After running a SaaS company for many years, I’ve spent time working on digital projects and taking care of technology investments & acquisitions with a member of the executive board at C.H.BECK, one of the major legal publishers in the DACH region. Before joining Speedinvest, I was also a member of the investment team at Target Partners, a leading early-stage tech VC.
Why Speedinvest?
The diverse and highly distributed team at Speedinvest allows me to stay on course with my thematic interests, and ‘go even earlier’ as investor. Not to mention, as a founder and software developer, the Speedinvest Deep Tech team is the perfect platform to find and support Europe’s most exciting tech companies. It’s a win-win!
Tech I like?
I am interested in everything from enterprise software, tools that help developers & ‘NoCoders’ build, test, deploy, secure and monitor software, all the way down to (mostly software-defined) infrastructure, as well as everything related to distributed & remote work.
Let’s connect!
To all the founders out there: If you are working on exciting tech, I’d love to talk.
Any comments? Ping me on Twitter. 👉🏻 Get my newsletter for occasional updates. ✌🏻