Console #79 -- Medusa, Firezone, and Unoriginal Rice Patties
An Interview With Sebastian of Medusa
Fortune 100s and startups alike are elevating company-wide comms with Axios HQ — intuitive software that helps your team think more clearly, communicate more crisply, and send focused, effective updates.
What you can expect: rising transparency, engagement, and trust across the organization.
Easy to start, unlimited seats. Get your teams smarter, faster with Axios HQ.
See how it works. Get a sample newsletter built with Axios HQ.
Welcome to the 59 new Consolites who joined last week! 👋
Not subscribed to Console? Join thousands of other engineers, early-stage CTOs, and VCs in subscribing to a weekly roundup of the latest in open-source software, curated by an Amazon engineer.
Already subscribed? Why not spread the word by forwarding Console to the best engineer you know?
We’ve decided to re-vamp the Console job board to make it more engineer-centric! Where previously the job board was a curation of jobs that I felt the Console readers would be interested in, we’ll now provide a free white glove job finding service to our readers. The benefits of signing up include:
Automatic first-round interviews
One application, many jobs (1:N matching)
A free candidate preparation service
New opportunities updated regularly
Every role, from PM to SWE to BizOps
High potential, venture-backed, and open-source companies
Even if you’re not actively looking, why not let us see what’s out there for you?
Ready to sign up? Click below and sign up for free in less than 5 minutes👇
Medusa is an open-source headless commerce engine that enables developers to create amazing digital commerce experiences.
last commit: November 11, 2021, first commit: January 18, 2020
Firezone is a self-managed WireGuard-based VPN server and Linux firewall designed for simplicity and security.
language: Elixir, stars: 736, watchers: 8, forks: 18, issues: 8
last commit: November 12, 2021, first commit: April 22, 2020
Unoriginal-Rice-Patty is an example replay-based attack on Honda and Acura vehicles.
stars: 222, watchers: 11, forks: 20, issues: 1
last commit: August 04, 2021, first commit: August 03, 2021
Console is powered by donations. We use your donations to grow the newsletter readership via advertisement. If you’d like to see the newsletter reach more people, or would just like to show your appreciation for the projects featured in the newsletter, please consider a donation 😊
Hey Sebastian! Thanks for joining us! Let’s start with your background. Where have you worked in the past and how did you learn how to program?
I have always been very interested in computers and programming, which resulted in me studying computer science; while studying I began working on different projects and eventually focused all my efforts on helping e-commerce businesses. When Oliver and I started working together we had a customer who wanted to migrate away from WooCommerce, we weren't able to find a solution that accommodated their requirements so we ended up building a custom solution, which after many iterations became Medusa.
Who or what are your biggest influences as a developer?
Interestingly my granddad happens to be one of the biggest influences in my path to becoming a developer. That is in spite of him not knowing anything about computers - he still calls me whenever he has to download a new app for his smartphone. The story is that he gave me one of his old work laptops when I was 12. It was my first computer and it didn't have an internet card so I couldn't use it to browse the internet; however, it did have internet explorer installed and together with the computer my grandad gave me HTML for Dummies which I read end to end. From this I learned to create small sites that I could browse for myself - it was really ridiculous the sites I made: things like a personal website with pictures of me and my family and buttons that changed the background color, that sort of stuff.
What is your favorite software tool?
VIM - in the age of VSCode everyone thinks I am a lunatic, but the native feel and portability of vim will keep me locked in forever.
If you could dictate that everyone in the world should read one book, what would it be?
Black Swan by Nassim Taleb has made a pretty big impression on me - am currently rereading for the 3rd time. The book stresses the fact that it is the rare, high impact events that dictate our world, not the steady and predictable. Understanding this fact and really allowing the idea to develop makes it clear that most of what so-called experts are saying on the news is based on wrong presumptions.
Have experienced this first hand while studying economics; while the mechanics of economic models are interesting at a mathematical level they are mostly useless as a foundation for planning the future.
If you had to suggest 1 person developers should follow, who would it be?
Brandur - despite not being the most active on social media he pretty much only posts high quality stuff that is worth the feed real estate.
If you could teach every 12 year old in the world one thing, what would it be and why?
Learn programming fundamentals; surely pursuing a career as a developer is not something that everyone should do, but I think everyone could benefit from just having a little understanding of programming. Why? Primarily efficiency:
Knowing a bit of programming gives you a framework for understanding at an abstract level what is possible with tech.
Most jobs involve repetitive tasks from time to time; being able to write small scripts to automate many of these don't require advanced programming knowledge; so having a bit of fundamental knowledge could really superpower you.
If I gave you $100 million to invest in one thing right now, where would you put it?
At Medusa we are trying to change what is possible for e-commerce - the first step to doing that is to make developers more powerful. We have experienced the joy that comes with good tooling and our goal is to give that joy to the users of Medusa, so that they can do more and be more creative. This is a pretty hard problem to be working on and it requires a lot of resources, so if I was given a large sum of money I'd probably throw a lot of it into Medusa, so we can double down on the product and engineering efforts - maybe keep a small chunk for some crypto :D
Why was Medusa started?
Oliver and I did agency work for a couple of e-commerce businesses and saw a pretty clear issue with too often not being forced to "hack" our way into a solution. We had a customer, Tekla Fabrics, who wanted a good long term solution that could support their growth over many years so we decided to create something that was flexible and extendable enough for us to never be in a situation where we felt that we were doing a "hacky" solution.
Where did the name for Medusa come from?
Our project actually didn't have a name for a long time until we decided to open-source it. When brainstorming names with our customers, Kristoffer from Tekla Fabrics came up with Medusa as she was decapitated, we liked the name and the subtle link so we ended up going with it.
Where does the phrase “headless commerce” come from?
The phrase headless commerce comes from the fact that the data layer and presentation layer are decoupled.
Who, or what was the biggest inspiration for Medusa?
Obviously the fact that we built the solution with Tekla makes them a pretty strong source of inspiration. That being said, I would say that the entire approach that we have taken to the architecture and the design decisions is heavily inspired by Gatsby. Similar to Gatsby, we have a core Medusa API that ships as an NPM package to be installed in a Node project. Plugins and extensions ship as separate packages and can be configured in a medusa-config.js file. We really enjoyed this workflow and felt more powerful due to it so it made a lot of sense to us to draw some inspiration from them.
Are there any overarching goals of Medusa that drive design or implementation?
As mentioned earlier our overarching goal so to speak is to make it possible for developers to be more powerful when developing e-commerce solutions. This means that we listen a lot to what developers have to say and we focus on making our tooling cater to their needs. Of course, we also need to be driven by the needs of e-commerce businesses, but generally that comes naturally through the interactions with developers.
Where are you typically getting feedback from developers?
What is the most challenging problem that’s been solved in Medusa, so far?
A major challenge of headless commerce in general is that a lot of systems have to communicate with each other. This first and foremost requires a good architecture that can easily support integrations to different tools, but it also requires a level of robustness to ensure that data doesn't get lost in between systems. A thing that we have spent quite a bit of effort on is support for idempotent operations in our API - this essentially allows you to retry an API request as many times as you want without triggering side effects more than once; an example of this can be found here: https://github.com/medusajs/medusa/blob/master/packages/medusa/src/api/routes/store/carts/complete-cart.js
Are there any competitors or projects similar to Medusa? If so, what were they lacking that made you consider building something new
The headless commerce space is growing and there are a couple of players who are doing similar things. Most of them focus on enterprise customers, which makes sense due to the fact that headless commerce traditionally is something that requires a lot of resources. Our approach is more focused on making developers capable of doing more with less, we therefore cater to a different set audience with the belief that putting the product in the hands of developers will make e-commerce businesses more capable of doing groundbreaking things.
Is Medusa intended to eventually be monetized if it isn’t monetized already?
Right now we are focusing all efforts on the community and product development and have not begun any monetization path yet. Our thesis is that if we have a strong community with skilled people who are actively sharing ideas and helping each other we will be able to support that community in some way that will add value to them. One thing that we have considered is a hosting platform where developers can bring their own repo and then we will make sure to deploy to optimized servers and automatically upgrade Medusa as new versions are pushed. I think this is something that many developers would love as you get rid of the headaches that come with infrastructure and devops.
What is the best way for a new developer to contribute to Medusa?
We have a good handful of issues that are pretty straight forward for new developers to pick up. We are generally pretty good at using the good-first-issue label so I would suggest filtering the issues based on this label to find something that sparks an interest. There are also a lot of more advanced issues if you already feel comfortable with working with e-commerce.
Where do you see open-source heading next?
I believe that we will see a much bigger part of the software we use on a daily basis turn into open-source software. Historically speaking it is typically the building blocks of a system that are open-source primarily because you need to be able to trust that the libraries and tools you use will not damage the things that you build yourself. Furthermore, you need to be able to control the direction of your own projects and using closed source solutions restrict you in this regard. With this in mind it makes sense that many of the most successful open-source projects are OSes and databases, but as the scope of software expands we will begin looking at systems higher up the stack as fundamentals as well. A clear indication of this direction is the whole trend around Web 3.0, blockchains, open-state, etc.
Do you have any suggestions for someone trying to make their first contribution to an open-source project?
Find a project that is scratching an itch you have for yourself. It is much more fun to be part of solving a problem that you can understand and where you can see the value of the solution.