Console #122 - Interview with Liyas of Hoppscotch - an API development ecosystem
Featuring Tipi, ContainerSSH, and Hoppscotch
🤝 Sponsor - Deepnote
Answering hard analytics problems is a team effort. It often requires connecting multiple data sources, collaborative coding in Python & SQL, sharing context through data visualizations and text. Deepnote lets you do all of that and more from the comfort of a browser. Run your first notebook in minutes!
🏗️ Projects
Tipi
Tipi is a personal home server orchestrator. It helps you install your favorite self-hosted apps in a single click.
language: Typescript, stars: 2052, issues: 18, last commit: September 11, 2022
repo: github.com/meienberger/runtipi
demo: demo.runtipi.com (user@runtipi.com, pw: runtipi)
ContainerSSH
ContainerSSH launches a new container for each SSH connection in Kubernetes, Podman or Docker. The user is transparently dropped in the container and the container is removed when the user disconnects. Authentication and container configuration are dynamic using webhooks, no system users required.
language: Go, stars: 1046, issues: 34, last commit: July 16, 2022
repo: github.com/ContainerSSH/ContainerSSH
site: containerssh.io
Hoppscotch
Hoppscotch is a free, fast and beautiful API request builder. It helps you create requests faster, saving precious time on development.
language: Vue, stars: 46,272, issues: 92, last commit: September 06, 2022
repo: github.com/hoppscotch/hoppscotch
site: hoppscotch.io
Join thousands of other open-source enthusiasts and developers in the Open Source Hub Discord server to continue the discussion on the projects in this week's email!
🎤 Interview With Liyas Thomas of Hoppscotch
Hey Liyas! Thanks for joining us! Let us start with your background. Where are you from, where have you worked in the past, how did you learn to program, and what languages or frameworks do you like?
I’m a self-learned web developer. For the past 5+ years I’ve been into programming and web development. I started with the C, C++, Java, HTML, CSS, JavaScript languages, and now handle most of the web technologies, including frameworks like Angular, React, Vue, Nuxt etc. I also graduated computer science engineering in 2019.
After graduation I joined a very small start-up called “Zartek Technologies” in my locality. At Zartek, I mainly dealt with frameworks like Angular, Bootstrap, jQuery and languages like HTML, CSS, Javascript etc. After 6 months at Zartek, I started working on the Hoppscotch project and joined “Buy me a coffee” from where I learned Vue / Nuxt and php.
Apart from my job, I contribute to a lot of open source and side projects.
What else do you contribute to?
Mostly my side projects like marcdown, colorbook, books app etc.
What's an opinion you have that most people don't agree with?
Well, most people don't agree when I say that “you don't need to be a master of all trades to create and build apps / projects”. I was a front-end engineer but during the development of my side projects, I learned that it’s better to start first and then improve as we move forward. If you wait till you acquire all the skills, well, that time is just a waste. Start somewhere and learn to improve during the journey.
What’s your most controversial programming opinion?
I’m not a big fan of all the popular tech stacks. I believe that what goes under the hood doesn't matter as long as it gets the things done. You can choose any stack you want. It doesn't have to be the best stack for the job. Get things done as fast as you can.
What is one app on your phone that you can’t live without that you think others should know about?
Clock & alarm app (I could list at least a dozen of other apps but that won't be my honest answer. I can't live without looking at a time app).
If you could dictate that everyone in the world should read one book, what would it be?
If I gave you $10 million to invest in one thing right now, where would you put it?
Home education - simple, effective and practical home education solutions.
What are you currently learning?
Psychology and finance.
Where are you going to learn this?
I mainly read about psychology and finance from books / twitter recommendations etc. Also, medium.com is an awesome resource to learn new things.
What resources do you use to stay up to date on software engineering?
Developer communities like Dev.to, Hashnode etc. Blogging platforms like Medium. Open forums like Reddit, StackOverflow etc.
Why was Hoppscotch started?
My 10-year old PC couldn't afford to run another Electron based API testing tool like Postman. I did a background check on API testing tools, there were a lot of them. But none of them seemed simple, minimal, and efficient.
I wanted to make an API testing platform which is: Open sourced, runs online, has multi-platform / multi-device support, accessible from anywhere etc.
That’s how Hoppscotch was born.
What overarching goals of Hoppscotch drive design or implementation, and what trade-offs have been made in Hoppscotch as a consequence of these goals?
Being a PWA - Hoppscotch doesn't consume a client’s resources such as CPU and RAM. You can make requests right from your browser window itself and have offline support. We strive to keep efficiency by applying minimalistic UI design and avoiding bloated features.
But being a web app, there comes a lot of limitations in terms of making cross-origin API requests. We solved this by introducing a browser extension which acts as a middleware between Hoppscotch and cross-origin domains.
What is the most challenging problem that’s been solved in Hoppscotch, so far?
Accessing the APIs served in localhost was the most challenging issue in Hoppscotch. We fixed it by introducing a browser extension which acts as a middleware between localhost and the web app.
What is your typical approach to debugging issues filed in the Hoppscotch repo?
Reproduce issue -> Verify bug -> Find cause -> Discuss solution -> Implement solution -> Deploy fix preview -> Verify fix -> Discuss improvements -> Patch -> Deploy production
When an issue is reported we start by trying to reproduce the issue at our end. We might switch our environments back and forth to reproduce the user’s scenario. Once it is reproducible, we’ll tag the issue with the “bug” tag. And start discussion on a solution by stating the root cause. Community members join our issue ticket discussions to suggest possible fixes for the cause. Once a fix is felt optimal - we proceed to implement it in a patch branch of the production clone. Once implementation is completed, we run basic tests, and deploy a preview. We verify the issue is fixed in the deploy preview and continue to make a PR to the main branch. If tests are required we add them at this stage. Once any collaborator reviews and accepts the PR, it is merged to main and the fix will be live, this closes the issue ticket.
What is the release process like for Hoppscotch?
The Release process is quite a complex process in the case of Hoppscotch. Since there are multiple (10-15) commits, bug fixes and improvements are deployed everyday - releasing every patch is overhead for users and developers. So, we keep a progressive release system in which a production build is updated multiple times a day and still comes under a particular version number. Once or twice in a relevant span of period or in cases of core changes, we bump the version number.
What about the release process for the browser extension?
The browser extension only does a couple of tasks, such as being the middleware between the web app and localhost, allowing proxy mode etc. So, as of now, it's in a saturated state. But, we used to rollout a patch / bug fix once or twice a month whenever there's an issue ticket. Apart from bug fixes, no more features are being added to the extension. We're hoping to add couple of features down the line but not sure when it'll be.
How do you balance your work on open-source with your day job and other responsibilities?
Hoppscotch has contributors from almost every time zone. So, keeping up with real-time collaboration is quite a difficult task. But, most of us spend around 2-4 hours a day maintaining the project. This is mostly done at night after work hours.
What is the best way for a new developer to contribute to Hoppscotch?
Start reading our friendly “code of conduct” and “contributing guidelines” given in the project repository root directory. Everyone is open to start a discussion regarding a feature / bug fix / patch or improvement. Other community members mentor those who are in need. Start with an opened issue ticket or feature request. And we’ll help you to implement it.
If you plan to continue developing Hoppscotch, where do you see the project heading next?
Becoming an all-in-one API development ecosystem. We’re very happy with the growth of Hoppscotch over the past one year since its initial commit. So, that’s why we have very ambitious plans ahead of us.
Where do you see software development in-general heading next?
Software is eating the world. In every sector, every industry, and in every stage of human life. Software has already become one of the essential parts of the modern lifestyle of human beings. So, I’m really rooting for these innovative changes happening with software, whether it is AI, AR / VR, ML etc.
Where do you see open-source heading next?
As software eats the world - open source will eat the software. We’re witnessing this surge of open-source alternatives to almost every software, no matter whether it's a small scale application or an enterprise-level application. It’s just a matter of time until all SaaS and enterprise software are written in open-source. The future of the software industry is bright in the hands of open-source.
Do you have any suggestions for someone trying to make their first contribution to an open-source project?
Open source projects or side projects in-general take a time span to reach its maturity. This may be a couple of days, weeks, months, or even years. But, don't quit on an idea that you believe will workout. Be consistent and learn to improve on the journey. Don't wait till you learn all the stuff to build the thing. Start now and improve later. Progress takes time.
Want to join the conversation about one of the projects featured this week? Drop a comment, or see what others are saying!
Interested in sponsoring the newsletter or know of any cool projects or interesting developers you want us to interview? Reach out at osh@codesee.io or mention us @ConsoleWeekly!