Introduction
I’ve been writing an annual review for eight consecutive years, so I decided to continue on the path this year. I would love to share my journey in the tech industry as a Senior Software Engineer at Composable and some other projects I’ve been doing this year. Now, let’s get started!
Leaving Datadog
At the beginning of the year, I decided to leave Datadog after working there for more than 4.5 years. Datadog is an excellent software company. It is one of the leaders in providing monitoring solutions in many aspects, including logs, application performance monitoring (APM), infrastructure monitoring, security, alert, incident management, and much more. Before leaving Datadog, I worked in the Event Platform handling automation: infrastructure-as-code, deployment, and other related tasks. Datadog provides competitive compensation and great benefits for me and my family. It also provides an outstanding work-life balance. However, after staying here for more than four years, I am getting bored: bored about the platform’s stability and about the limitation of testing my capacity to build new solutions.
I wanted a change. I wanted a place with more uncertainty, a place where I had more freedom to participate in the platform’s architectural changes, a place where I could make more critical decisions in my day-to-day job, a place where I could better understand the needs of the customers and a place where I could learn how a business works.
Entrepreneurship
I started my entrepreneurial journey by quitting my job and becoming a freelancer. My initial plan was simple: I would create a service for them for the first six months and then find a freelance mission afterward. The idea was to bootstrap an online service and then maintain it over time to improve, capitalize, and continuously provide service for a small group of users. I’m unsure where to start, but that’s what I wanted to experience.
Nothing went as I expected. I lacked an understanding of users’ needs. Freelance missions were hard to find. My identity as a foreigner blocked the administration process of creating a company. I could only work as an employee in France. I thought I wouldn’t need to worry about my income, but I did. The time and project management went pretty wrong. And many more. There were too many things to describe in this blog, but one thing is sure: it’s not enough to start a SaaS business when you are just good at software development. You need much more skills to survive in the game.
In the following sections, I’ll briefly share with you the key results of this short journey of entrepreneurship that I built with my friend CY.
ChatGPT QuickSearch Extension
ChatGPT QuickSearch Extension is a browser extension that allows you to quickly search the conversation history directly in ChatGPT by providing a search bar. You can press cmd / ctrl + K to trigger it. You don’t have to have a paid OpenAI subscription to use our service: our service is compatible with all the default language models (GPT-3.5 Turbo, GPT-4 Turbo, GPT-4o). Once you open the search bar, you can enter the query in the search bar, and the extension will search results as you type. The matched content will be highlighted, regardless of whether it’s the conversation’s title or the underlying messages. You can press the arrow key up ⬆️ and down ⬇️ to navigate the results and press enter to visit the conversation. Our extension handles the logic of data synchronization and data ingestion automatically.
To make this extension, we built a lot of things.
- On the technical part, we built a Chrome Extension, which allowed us to automatically synchronize the conversations between ChatGPT and our backend, powered by Elasticsearch. We built another web application with Vue.js to manage the subscription. We built a small backend service that handled conversations and all kinds of logic related to account management and subscriptions. We also needed to manage infrastructure, such as DNS, networking, containers, CI/CD, configuration, data stores, etc.
- On the product part, we reached out to our friends and conducted user research and surveys. Then, we built our first prototype and iterated our solution with the alpha testers. We also made a website where we published the documentation, release notes, and other information related to the product. We also created a Discord server for customer service.
Blogsearch
Blogsearch is a simple site-search solution for websites built on top of the popular blog engine Jekyll and the Jekyll TeXt Theme. It is currently used by three websites for searching blog posts: https://mincong.io, https://nanosearch.io, and https://jingwen-z.github.io. It is built on Java and Elasticsearch.
Actually, Blogsearch and Chatsearch are very similar. They use the same architecture and are stored inside the same Git repository. The source code is written in Java with Maven.
Teaching
This year, I also became a visiting lecturer at ESIGELEC, an engineering school in Saint-Etienne-du-Rouvray, Normandy, France. It wasn’t part of my plan, but I decided to take this opportunity and try.
The course is called Software Containerization and Orchestration. It’s about containers, CI/CD, and Kubernetes. It lasts 20 hours for 30 students in the third year of the engineering cycle (equivalent to Master 2).
- The first part of the course covers container basics, including containers, container runtime, and Dockerfile. It also teaches students how to write and operate containers. For the assignment, they need to implement a solution based on Java for a given context and publish the results to Docker Hub.
- The second part of the course discusses CI/CD. It explains how to use GitHub Actions as a CI provider and implement automation around the Git flow so that it can test the source code continuously. Then, they learn how to continuously build and publish containers to a container registry and use the published image to deploy to the target environment, such as staging or production. This mechanism applies to Kubernetes or any cloud-native container-based solutions.
- The third part of the course talks about Kubernetes. Students learn the core concepts of Kubernetes: Pod, ReplicaSet, Deployment, ConfigMap, Service, PersistentVolume, PersistentVolumeClaim, StatefulSet, etc. They understand the interest of using a declarative approach to manage resources and leveraging Kubernetes as an orchestration platform to build solutions agnostic to cloud providers. Then, they practice their skills by creating and operating resources like Pod and Deployment.
It’s much more complex than I initially expected because teaching differs greatly from development. Initially, I thought that giving the course is about preparing the slides. It’s about writing slides with notes and diagrams and then going through them with the students. That was too naive. Teaching is not just about slides. Teaching is about giving some knowledge to students with little context in this domain. Therefore, you must find a path to guide them step-by-step in learning those concepts. To design such a path, you need to gradually introduce new concepts, share the motivation, keep their attention, and use multiple ways to explain to enforce the memory (definition, example, visualization, reminder, …). Then, you can design your slides and assignments based on that. There are also time constraints in the course, family constraints for the preparation, etc. There are many more to cover, but it was a fun experience. It’s hard, but I enjoyed it :)
Startup
After working with CY on the entrepreneur project, I quickly realized that starting a small SaaS was much more difficult than I imagined. A small team composed of full-time and part-time engineers cannot do it. So, I quickly seek startup opportunities. That’s why I joined Eric at his startup, Composable (now Vertesia AI). It is an AI platform that helps companies better adopt AI technologies. It provides a framework to interact with different large-language models (LLMs), a workflow engine for customers to describe their business processes, and a content store for storing content (PDF, images, words, …). I worked with Eric and other folks in the startup years ago in Nuxeo, and I believe they are a professional team and accountable. They also secured seed-round funding from several investors and part of the Google AI startup program.
This year, my contribution was mainly related to infrastructure and backend services
- On the infrastructure side, I participated in the CI/CD development to improve the development and delivery process. I added unit tests for all the packages and applications; I added API tests to test existing resources on different environments; I also added support to Kubernetes for the dev environments; participated to changes in the cloud providers (AWS, GCP), dependency management, incident management, reliability improvements, application monitoring, operational documents, and much more.
- On the application side, I have been building a framework with the AI agent so that customers can use their code to deploy to our stack. They will have more flexibility in implementing solutions for their business processes. The solution is based on Temporal Workflow and Typescript.
Conclusion
Thank you for reading this article. In this article, I shared some projects that I did this year as a Software Engineer and my learning experience. Interested in knowing more? You can subscribe to my blog feed and follow me on Twitter or GitHub. I hope you enjoy this article. See you next time!