2

Building a cross-platform developer tool as single dev

 2 years ago
source link: https://marcell.me/posts/building-a-developer-tool-solo-dev
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Building a cross-platform developer tool as single dev

In 2019, Almost 3 years ago from date, I quit my cushy job to go off into the unknown to write software I enjoyed working on. As the company was moving more towards react/react native and far away from objective-c for their mobile application, I was unsure how to proceed with a career doing native iOS development. One of my goals since college was to land a role in C/C++ and typically stay in such positions until retirement. Unfortunately, I was unable to land interviews. The best way to do so was to quit my current role and consult. This would allow me to work on projects that are strictly native mobile and desktop applications.

After much thought and consideration, I put in my two-week notice. I was very nervous as I knew that if I failed at consulting there was no backup plan, no year's worth of savings, and not to mention my wife had just given birth to our second child. The thought of leaving my role while having a growing family was very tough, but, hey, I wanted to write native applications and get the whole experience of doing so.

First Native Desktop Application

I was a big fan of the Smalltalk programming language and thus loved Objective-c but was not familiar with the language. So I decided to write a small application to help me focus on the task at hand. So I wrote a small utility application called Focus Window, which did just that. It allowed me to focus on a single window at a time and thus improved my productivity. This was my first application released to the app store and added gasoline to my spark for cocoa development.

First iOS mobile app

After releasing Focus Window in 2019, I was hooked. I wanted to release a mobile application that I could claim as my own. Being an avid skateboarder, I decided to build a video camera app that mimics the infamous VX1000 video camera.

This was the camera all kids dreamed of owning, and luckily a camera my friends and I used to film us doing tricks when we were younger. For this application, I decided to write it in objective-c. I wanted to have the ability to control the camera, and at this time, I was not much of a fan of swift though it was a much more pleasant language at the time. I quickly brush up on working with bitmap images, video shaders, and threading. I was familiar with the concepts and theory behind shaders, bitmaps images, and threading but, never wrote code that implemented the concepts.

I released VXCam to the skateboard community and a couple of more iOS applications shortly after. The feeling of releasing tools to the community was incredible but, I still had an itch to scratch and wanted to build more desktop tools.

Increasing Producity

In late 2019 I was working on many projects and was building small developer utilities to help me deal with everyday tasks. The first tool I made was a small Diff Checker tool. At the time, I debated purchasing a license to kaleidoscope but did not as I wanted to "build it myself."

Shortly after building a simple diff checking tool, I decided it would be best to make a JSON viewer tool. This tool would take JSON text and allow you to format and view it in a readable manner. As I built small tool after small tools to accomplish my goal, I quickly had over 10+ desktop apps, all doing a simple task. This was not sustainable!

Cross Platform Developer Tool

It's the summer of 2020, and I had just finished up a 5-month contracting gig and wanted to focus on writing software in c/c++. Remember, this was always my dream, to write in this language. I figured, hey if all fails, I could use this as an opportunity to use on my resume.

Before writing a single line of code, I had to figure out what GUI toolkit to use for my C++ application. As I read through hacker news and many online blogs, the clear choice of the developers was to use QT, but, I was not too fond of the development environment. Since I was a huge Linux fan and often used Linux before I could afford a MacBook, I opted for using the GIMP ToolKit (GTK). It was written in C/C++, was open-sourced, and could contribute to libraries if I found issues while developing.

In November of 2020, I had a basic implementation of Polypad working. At this point, the application is "cross-platform," meaning it works on Linux and macOS but does not work on Windows.

I was very excited, it felt like the first time programming this feeling of having some idea in your head and wahla it is on the screen, not to mention it was written in c/c++. I quickly shared the demo with the world and friends and stated the application would be out before the end of 2020. Boy, was I wrong?

I faced endless bugs and decisions as a single developer while building this application which delayed the project. No project manager to plan features, no teammates to help pick up the slack, and not to mention no days off while building this developer tool. I was the sole developer in charge of the design, development, code reviews, library choices, website, hosting, and testing.

Facing burnout

In November of 2020, I was burning out as a solo developer and continued to miss my promised deadline for Polypad. My third child was born, and I spent long nights coding until 3 am. I continue to code late nights and eat takeout to save time—no gym, very little time spent with family, as I was determined to finish this application. Night after night, day after day, week after week, I was coding my life away. In December of 2020, I felt sick and found myself in the ER. I spent the next couple of weeks going to the doctor to understand what was wrong. I could not eat and had horrible stomach pains. After tests, my doctor informed me that I had H. pylori, a stomach infection bug. I had lost around 15 pounds. During this time, nothing mattered more than getting healthy and spending time with my family.

As 2021 kicked in, I had a new outlook on how I viewed life and programming. I made a deal with myself that I would no longer stay up late-nights programming and would take time out of the day to exercise, and take the kids to the park. As the end of February, I began to feel much better and continued to work on Polypad.

In late August of 2021, Polypad 1.0.0 was released for macOS and Windows, about 8 months after my initial deadline. I was happy with the release and was excited to share my developer tool with the world. I wanted to create a tool that I could use to save time without writing various desktop applications to accomplish a task. While building Polypad, I was the primary user of the application along with a few friends.

Conclusion

It's often celebrated to quit your job and go off on your own to build a startup or tool. If you are thinking about doing so, have a plan and plan accordingly. Writing software for use by others is hard, and building desktop applications is challenging. Software has become very complex, and while there exists the 10x developer, I now believe having others who complement your skillset and can work with you is more significant than trying to do it all yourself.

I hope this post gives you an insight into the ups and downs as a solo developer building mobile and desktop tools. I did leave out some events but wanted to provide an overview of my journey.

To all my fellow software engineers, stay healthy and remember to take breaks when needed!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK