1
0 Comments

After 1 year of development, we are finally ready to launch Pendable

It's been a year since I and my co-founder Chris decided to embark on the journey of building our own software company. What followed was a year-long slow grind to get everything in order, from the architecture to the software choices to the actual code and finally picking up a name and forming a company - and everything in between.

In this post, I will try to highlight some of the decisions and struggles that went into setting up our business and the joys that came along with them. Hopefully, this will help you with some motivation to see the light at the end of the tunnel, or it might help you take that first step. In case something I say does not sound right, please feel free to comment and I will be happy to clarify.

A little background about me

I have been working on web-based technologies for the past 15 years and have been following founders here on Indiehackers for the past 6 odd years (before it got acquired by Stripe :)). I finally feel ready from a personal and professional standpoint and feel it is time to lay the foundation of my own company.

A little background on our company

Pendable is an email platform we built on top of SES. I have used SES for more than a decade and find it one of the most cost-effective and robust pieces of tech out there. It does all the hard work of sending your emails efficiently but lacks a lot of features that you need for a production-grade setup. Some of the core features we built are Dynamic email priority, Scheduled future delivery, Bounce and complaint rate monitoring, Searchable email logs, Email event tracking, and Spam domain filtering. We plan on expanding our offerings to include more last-mile solutions for the cloud.

Learning new things

Working on a side project needs your love, attention, and time. It is like a hobby that you cultivate and over time that hobby ends up enriching your life. The time you spend on your side project helps you grow personally and professionally - you learn time management and get to experiment with all the tools you wanted to explore. You then have to spend your brain cycles exploring what problem can you best solve for your end customer. You want to make something exciting that makes your end-users exclaim "Wow!". This involves some thinking. So that's what we did - we spent a lot of time exploring architectural design choices and fine-tuning our core offerings. While building Pendable, we spent a lot of time learning and growing our skills in Python, PHP, Redis, Docker, AWS, CI/CD pipelines. We also spent a lot of time learning and building dynamic distributed priority queues.

Platform Design Choices

As I was saying earlier, we spent a lot of time iterating our platform design choices. Creating a dynamic priority queue for all your scheduled and in-flight emails was a challenging task. We also wanted to keep each client's email queue separate from other clients. So we spent a good few months experimenting with the technologies available and finally built our hybrid solution on top of open-source tools and libraries (maybe we will have another post sometime in the future going into further detail).

We also wanted to build our API on top of the OpenAPI 3.0 spec to make it easy for developers to understand and consume our API. We decided to use FastAPI for serving our API as it has out-of-the-box support for OpenAPI spec. It is also powered by Python and is performant. We spent a good deal of time familiarizing ourselves with Python as our core experience is in PHP. It was important for us to incorporate Python into our design choice as we plan on adding machine-learning capabilities in the future. Learning basic concepts in Python is fairly straightforward but getting comfortable in it does take some time. The more you delve deeper into it, the more you appreciate the simplicity and elegance of Python. You wonder how it's able to do so much in such few lines.

Another design choice we made was sticking to our strengths in PHP and using Laravel + Livewire + Octane for our main web platform. We love and enjoy working in Laravel and feel a sense of calm around it. I have worked on Cakephp, Codeigniter, and Laravel through out my career and feel happy seeing the current state of PHP frameworks and loving how mature they have gotten. Octane (powered by Roadrunner) is a great way to make your PHP application blazing fast and highly performant. It essentially pre-compiles PHP and uses it to serve all requests. Simple PHP compiles and processes each server request. From Roadrunner's website: It utilizes goroutines and the multi-threading capabilities of Golang to bring maximum performance to PHP applications. We also use Redis extensively to power a lot of our features. I consider Redis one of the finest pieces of technology out there in the market.

For our Blog, we decided to use Hugo - a simple static site generator. It is a great piece of technology to make your static sites more performant and streamline workflow. You can write your blog articles in markdown format and it handles everything else. It also has a good collection of free themes that you can customize.

A lot of magic happens in our DevOps architecture. My co-founder spent a lot of time learning about docker and setting up our build pipeline. We currently have a multi-cloud setup with all the needed bells and whistles (we will have another future post detailing our multi-cloud build setup).

Personal Choices

When we started building Pendable, my son was one-and-a-half years old. As you can guess, he is now a year older and demands equally more attention. The toughest part for me was to time-box my coding and work. Sometimes I felt I had to pull myself away from the screen right when my creative juices were starting to flow. But I value the time I spend with him and know those memories will keep me happy well into my gray years - so even that is a valuable investment :)

It all adds up

It is tough managing a full-time job, a growing toddler, and working on your side project in your spare time. But the most important thing to keep in mind is that you need to take out just a small portion of your time each day - and it all adds up in the end. It might take you a few months or a few years but you will get there and you will be happy you did it at your speed. Your family will also be happy to have you around more during those moments. Remember, you are in total control of your project and your time. The day you don't feel like opening your screen after a day's hard work - you have every right to not open it. But the day you do feel like opening it, make the most of it. Those are the days that count. Over many months, you will gain momentum, your idea will start taking shape and you will be drawn more into it. Eventually, it will consume you - in a good way :).

I feel like there is a certain threshold point, once you are past that point, your idea becomes real. Before it, it's just a thought in your mind and a few sketches on the drawing board. You need to convince yourself each day that this is not a pipe dream. I can make this a reality if I work on it. And once you cross that threshold, you no longer need to convince yourself. Your idea is very much real and it calls you to complete it, it calls you to iron out all its defects, it calls you to make it perfect.

I hope you enjoyed reading our story. We would love to share more in future posts.
Look forward to seeing you on Pendable and wish you all the best in building your dream projects!

on September 8, 2023