🥳 Happy Monday, everyone!

We made it to the third issue! Thank you to everyone who read last week’s issue ❤️

I would first like to thank Malin Sundberg for picking Indie Dev Monday as her “Thing of week” in the Cup of Tech podcast in last week’s episode 🙌 Go give that episode and their other 104 episodes a listen 🙃


📆 Today I’m featuring Xiaogang Zhang and Mustafa Yusuf.

Xiaogang is the creator Woodpecker. Woodpecker is a macOS development tool. After installing the SDK into your app, it allows you to inspect your iOS and macOS apps at runtime. You are able to see things like your sandbox file system, user defaults, network requests, view hierarchy, app bundle, keychain, and so many more 🤯 I regret not finding and using Woodpecker sooner. I know it would have saved me many hours of looking for just my sandbox files alone 😝

Mustafa is the creator of Tasks. Tasks is a beautiful and simple task manager app. Its currently only on iOS but Mac and Watch support will be coming soon 😀 The app is relatively new (as it was launched in June of this year) but its made a big splash! The app already has 30,000 downloads and its easy to see why. Mustafa really has a passion for Tasks and it shows in the product design and user experience 💪

👉 Please make sure to follow them or support them anyway you can! 😇 I’m excited to share their indie dev stories.


Indie Devs

Xiaogang Zhang

Zhengzhou, China

iOS developer currently working at a fitness company.

Mustafa Yusuf

Mumbai, India

Newly independent developer working on Penbook and SignEasy.


Xiaogang Zhang

Q&A

1) Where do you live?

My name is Xiaogang Zhang, live in Zhengzhou, a city in central position of China.

2) Introduce yourself. Education? Background? Main job? Interests outside of tech? Interests inside of tech?

I majored in physics in college, but the physics equation is so hard for me, so I began to learn iOS, and bought my first apple product - iPod touch 4, then I made an app helping borrow books for library. Now I had worked for 7 years as an iOS developer, currently working in a fitness company.

I like sport very much, like basketball, pingpong and skateboard (but not Kung Fu), and play games like league of legends.

I also like hardware dev like Arduino, it’s really fun to create some real things, and now I’m trying to learn some design skills.

3) Have you ever considered yourself an indie developer?

Yes, I’m trying to be an indie developer. After several years of repetitive work at company, I find It’s impossible to maximize my value there, so I started to think maybe I could make some apps, and live on that.

4) What got you started/interested in creating your own applications outside of your “normal” job?

Firstly I’m some tired of the repetitive work in daily job.

Secondly I think coding is a creativity thing just like painting and writing, when we get the basic skill, we could create things, it’s a natural thing. And finally I think the App Store is also very important, it’s such a great platform, and provides so many opportunity for us.

5) How do you balance your time between friends/family, work, hobbies, and indie dev?

I didn’t handle this well actually, besides the full time job, I had spent too much time and minds on my app. I think I need a better schedule :)

6) Woodpecker - Let’s start at the beginning. What was the inspiration for Woodpecker? Was Woodpecker initially developed as a internal tool? Or was the plan always to release it?

During daily iOS coding work, I often need to see sandbox files, check user default items. At first, I thought there will be existing products could help, but after searched a lot, I got nothing. So I wrote an in-app using tool about 5 years ago https://github.com/github-xiaogang/WhatsInApp , with it’s help I could browser files in app. But after a period of time use I found it would be better using it on mac, but that would be a big challenge for me at that time. Then 2 years passed, still no products in the market. So I thought It’s my turn, then about 3 months later, I finished the first beta version.

7) Woodpecker - There are so many amazing features in Woodpecker! Being able to see the sandbox file system, viewing and editing user defaults, inspecting network requests, and and seeing view hierarchy just to name a few. Which features were in the initial release of Woodpecker?

At that time I need sandbox and user defaults most, so they are in the initial release. I still remember how excited I was at first time of seeing sandbox files tree on my mac, I just could’t waiting to tell my friends and to iOS dev community.

8) Woodpecker - I can only imagine how difficult some of these features must have been to implement Which features were the most difficult to add? Are there any fun hacks or work arounds you had to use to make some of these features possible?

I think the most difficult feature will be Network tool. Firstly I need to intercept every http request in app, then send them to mac in real time, in right order, and most importantly, it should never crash the app, fortunately there’re some projects on Github I could refer to. Besides that I think the basic infrastructure is also difficult, to support these features, I had to built a robust communication api between mac and apps at first, it took a lot of time.

9) Woodpecker - I really wish I started using Woodpecker sooner! The Sandbox, User Defaults, and Network features would have saved me so much time. No question here but thank you for saving me time in future projects! You got me as a pro user

I’m so glad it helps.

10) Woodpecker - I think its really cool that you allow for custom plugins! I haven’t had time to create my own plugin yet but do you have any examples of some custom plugins that your users have made? Are all of Woodpecker’s features based off of this plugin API?

Yes, it support custom plugin at the initial release, Woodpecker is for iOS devs, so It will be cool to support plugins, they all have wonderful ideas and different needs.

Currently the controller tool is web plugin based on plugin API, it will be a good start example, and all other tools are native. (actually there are no user made plugins currently, maybe I provide too much tools, haha..)

11) Woodpecker - Woodpecker also has a Mac SDK. Do you use Woodpecker to debug and inspect Woodpecker?

Wait a moment, my brain had a deadlock (that’ll be fun, I’ll try later.)

12) Woodpecker - What do you have planned for Woodpecker’s future? Any new features or support for new platforms that you can share?

Woodpecker is for iOS devs, so it’s for myself, I’ll continue to update it as long as I worked as iOS dev, or maybe Xcode will provides these tools someday!

On the next release, It will provides a new tool to browser Firebase remote config items. I had always want to support for Android, but I found the Android Studio provides so many useful tools already, So I’m still waiting for user feedback.

13) What’s been the hardest part of being an indie dev? What the most fun part of being an indie dev?

I think the the hardest part will be selling, we might have built amazing apps, but if people don’t buy them, the products won’t live longer.

Indie dev often don’t have much money to advertise their apps, so we need to build better product, and at the same time spend more time on selling.

But as an indie dev, we could build apps on our own mind, create things that never exists or provide a better solution, that feels good. Besides that, we will get lots of things that couldn’t get from daily job, it’s not only the skills, but also the way you think.

14) Is there anything else you’d like to tell the indie dev community about you?

China has a large app market, if you need some information, just tweet me!

Thanks again!

Mustafa Yusuf

Q&A

1) Where do you live?

I am Mustafa Yusuf. I hail from Mumbai in India.

2) Introduce yourself. Education? Background? Main job? Interests outside of tech? Interests inside of tech?

I started to love coding the day my teacher in 9th grade taught me how to print patterns using Java in BlueJ which was the choice of IDE at my school. From printing asterisk pyramids to popping confetti on the IAP success, somewhere I grew up.

To pursue my passion for coding, I went to university and got a Bachelor’s degree in Computer Science Engineering in 2018, but it wasn’t useful but I made good friends there. I wish it taught me real world coding, but that was a dorm room activity. I skipped classes in my second year to learn Swift which was new. I was fascinated about the iPhone and loved the apps on it and wanted to have an app of mine on the App Store.

Had you asked me last week, I would have had a main job, but now I am an independent developer. I currently work with the amazing team at User Camp on their product Penbook and contracting with my previous full-time company SignEasy.

I love playing soccer and I game online too, mainly DOTA and FIFA. Snooker is a sport I learnt while I injured myself playing soccer!

3) Have you ever considered yourself an indie developer?

I always knew I wanted to build an app, release it and grow it. I think I can confidently say that Tasks might help me achieve success as an indie developer. I think it was Shihab who mentioned it on Twitter stating that an indie project is nothing short of a micro bootstrapped startup which is certainly something I agree with with!

To answer the question, I finally do consider myself as an indie developer!

4) What got you started/interested in creating your own applications outside of your “normal” job?

In college, a group of five friends got together and we built out an app for the students in our college which had a backend to scrape data from the college’s student login page and displayed it natively on the mobile apps. It was a passion project and I was responsible to design and develop the entire iOS app. The app received over 5000 downloads and got ranked in the App Store education category and the students loved it. It made building a product look easy and it all happened within a month. That is when I realised making beautifully designed products is something I’d like to do.

Image of VITacademics

This is the app I had released in 2016 on the App Store for my college students, it had a dark mode toggle before it was cool :P

5) How do you balance your time between friends/family, work, hobbies, and indie dev?

Balancing all these components was extremely hard before the transition to working from home. Prior to the pandemic, I used to work long nights and sleep lesser hours (typically 4 to 5 hours) to make releases, but since the transition, it has become easier to spend time with family, manage work with a high efficiently due to the lack of commuting to and from work. I did not balance those things out well during the early days of building the product, but once the it was released, I make sure I restore the balance. My wife is extremely understanding and while I do my work she finds something to keep herself occupied. My friends stay very close by so meeting them for a quick dinner or some FIFA matches is something I’d always make time for.

I believe that every market has a product that the users like or even love, but there are always missing components to those products. Ask yourself this, what would you like your current favorite product which you actively use to incorporate and you will have suggestions. Now imagine that a new product comes out which does what your existing product does but has some of the extra features you required, would you switch to it?

I like to think Tasks is the task manager which some of the features which users really required, for example better tagging and having multiple task statuses. Every time any one asked for a suggestion for a task manager, it becomes a debate with people saying, “I like this app a lot, but it lacks this feature”. Turns out that feature is important to a wide range of users and might be the unique selling point for your app. So for tasks I asked a bunch of users what they love, dislike and want to see in their current task manager. I then gathered that input and the output was Tasks!

Tasks was an attempt to make task management a personalised experience. I disliked the task managers because none of my tasks were just todo and done, there were various tasks which had intermediate steps before they are completed. I never liked the existing kanban boards apps. They felt very company workflow oriented and not easy to use or personalise.

I’ll give you an example of how I like to use Tasks. Say I have a bunch of tasks for my personal project, they are labelled as bugs, features or improvements. They have tags such as a 1.1.5 denoting the app version they’d go out with. Now when I move these tasks from Pending to Taking up to Completed to Tested to Released. This helps me get a better handle on my projects. This process is completely customisable to be what the users require to execute their projects efficiently. The app has a long way to go and one day it just could be the perfect and simplest task manager which feels so intuitive and familiar.

7) Tasks - I love the “Secure your project with Face ID” feature. I didn’t know I wanted this but now I need it. I’ll be using this for gift lists (birthday, Christmas, etc). How did you get the inspiration this feature? Did you know you were going to add this feature when you started?

This was added as the app was being developed. I had a list of all the system APIs which are good to have and maybe help with getting a feature jotted down on the side. When the application for one of them comes handy, I try my best to incorporate it but ensuring it is not an overkill.

8) Tasks - It looks like you have a Mac version launching soon (which I’m really excited about). How was it adapting the app across iPhone, iPad, and now soon to be Mac? Did the way you designed the user experience or developed the app make it easier or harder? Are there any big behavior changes that you have to make?

I am very excited and nervous about the Mac launch too. It’s definitely my first Mac app ever and it is honestly been easy to port it to the Mac. Yes, there are some parts which are painful to work with but far less painful than building it from scratch with AppKit. Luckily Tasks is a native app which incorporates as much as system UI as possible, that makes it easier for me to port it to Mac as it does not require me to rebuild screens for the Mac. So far I have re-used 100% of the code.

9) Tasks - I’ve mainly used Tasks on my iPad (with a keyboard and trackpad) and the experience is 😍 The cursor color hover animation over tags is my absolute favorite. Not much of a question but thank you for that fun little cursor hover animation!

A new thing comes out and us as indies are just all over it since we build out of passion! I remember the amount of tweets I saw around on Twitter with all developers playing around with cursor support!

10) Tasks - User support is very hard! I don’t know if I’ve seen a lot of Telegram support options but I see Tasks has it. How is Telegram support compared to email? Is there anything we can do as users to make your job of supporting any easier? 😀

Support tickets can come in from anywhere and everywhere, some users reach out via App Store reviews, some by email, Telegram and Twitter. I just ensure I aggregate these into my own project within Tasks and attribute it mentioning where it came from and from who so I can reach out to them once I take up their feature request or bug fix with a note thanking them for helping me by reporting/suggesting it. I believe we should keep it easy for the users and handle the minor complexity by ourselves.

Telegram was a choice which worked out well because of the ease of onboarding while keeping users from sharing any personal details. The users I have on the Telegram group are so helpful with testing out releases and feature suggestion. They are a part of my indie journey and extremely supportive. I tend to respond really quick on Telegram and if I am unavailable some of the users answer the questions on my behalf if they can! I find that pretty cool :D

11) Tasks - What has been your favorite part of Tasks to work on? Creating initial functionality? Design? User experience? Marketing?

This is extremely easy for my to answer. The favorite part was seeing the design come together. The initial version of the app had just default cells and once they were populated with actual data and a better designed custom layout, it just looks so clean and gave a burst of motivation that sped up every other part. I made each screen completely usable before moving to the next screen so I was able to start using the app very early to actually use it to build the app. Every time I required a feature, I just built it immediately.

12) Tasks - What do you have planned for Tasks future? Any plans for a widget or adding support for some Shortcuts? 🙃

Once the Mac app is out, Tasks is going to be all about integrating with your device and the OS. Widgets, Watch app, rich notifications, Siri support, action extensions, spotlight search and a lot more. I want users to feel their task manager is there for them wherever and whenever they need them.

13) What’s been the hardest part of being an indie dev? What the most fun part of being an indie dev?

The hardest part of an indie dev and I believe a lot of others will agree is when to stop and release! We keep adding feature after feature adopting the latest APIs and just feel it’s never enough. To draw a line and release I believe is the hardest thing to do. Making the App Store screenshots and other marketing collateral is tough and time consuming too! The fun part, is definitely the reviews, the comments, the rating and the download count and revenue. The most important being the reviews and emails from users letting me know how much they love the app, nothing could be more rewarding than that!

14) Is there anything else you’d like to tell the indie dev community about you?

I would want to share is find your product market fit and talk to your non-biased users early on, collect their feedback and keep the needs of the user first. It will really help your product and help you succeed as an indie dev.

Being indie doesn’t mean you quit your job and just build out your product. Use a job to help you bootstrap your product if you need to. Do it out of passion and always listen to your users even over your personal bias at times.

Thank you for having me Josh.


Thank you to everybody who made it to this footer! You either spent the time to read or took the effort to scroll 😊

Make sure to visit https://indiedevmonday.com/subscribe to get an email of future issues!

And go to Twitter and give @IndieDevMonday a follow… or multiple follows if you manage more than one Twitter account 😜