Every second support email in the early days of https://www.darwinmail.app was from users who were wondering why the website wasn't faster to load and operate.
I knew that this was going to slowly kill the product if I didn't focus on optimising the speed immediately. I also heard somewhere that even a 0.01 increase in load times for Amazon's website would cost them somewhere in the region of 100's of millions.
1. I gathered feedback from all users that said the website was slow (in any way and in any page/component/workflow).
3. Since that week of initial performance enhancement research and groundwork, I have essentially been completing todo's on that Trello card and adding more tasks as time goes on. I think the more speed improvements I make, the more I learn about what other parts of the application can be sped up. It's like economics, the more you learn, the more you realise you have so much more to learn :D
A few years later and I have not received an email suggesting to increase the speed of the app in several months, although I continue to make speed improvements on a regular basis.
Netflix have been my source of inspiration here. They are leagues ahead of every other streaming service and their custom architecture placed at the ISP level is absolutely incredible and paramount to how the deliver content with such amazing speeds.
Hey, you could copy your description from Product Hunt - "Enhance Gmail to get your Google Inbox features back" - and put it on your front page and/or your About page.
You never heard of a profiler? Logging? You're going about this all wrong.
When fixing performance problems you shouldn't guess, just profile it to find the bottlenecks.
I've seen plenty of performance 'fixes' that weren't, pure guesses by developers that did nothing, when a quick profile immediately revealed the culprit.
In your case you also need to figure out if it's happening server-side or client-side. I generally start with the server-side logs, get a few days/weeks worth of data, find average page request times, plus how much deviation on those requests, then go from there. That gets you the server-side. For client-side, unfortunately it's a lot harder. Google analytics page load speed, for example, is a pile of crap. But, again, there's a profiler in dev tools, remember js compile time is a significant thing and can slow load time too so check that out as well as the actual run times (js compile time shows in the page load graph).
Good points about using good tools & analysis techniques - especially to get to latent sources of slowness.
But I'm not sure you can say that he's not profiling - he's using the end users' direct experience as the profiling tool, prioritizing the fixes by greatest annoyance.
Since he let himself get in the mode of being reactive, that's not a bad way out of the hole he dug himself.
Of course the best way is to design your architecture for speed, minimize all code usage & data transfer, use the profiling tools before release candidate status, and prioritizing speed & performance in the QA process.
profiling is not a replacement for user feedback. You could profile some server side functions and see that X is 5 ms and Y is 8 ms. You will think all good, they're pretty fast. But the user might complain about a feature being slow, say deleting a thread, which happens to call the 5 ms function 50 times for some reason. You would then address the reason for so many calls, rather than optimizing the call itself.
Talking to your users is paramount, at the very least they will indicate where you have to add profiling
I also had a quick look at your privacy policy, and agree with what oarsinsync mentioned. If you could skip asking users for their details, but still allow them access to the tool, you would probably have a lot more users sign up. Before they sign up, you could store their bookmarks locally. Then perhaps later on, you could ask them to sign in to save their bookmarks to the server to be accessed on other devices.
However, this all depends on what way you plan to monetise the app/extensions?
Can I also ask what framework are you using for the mobile app? It isn't React Native by any chance is it? I ask because I'd love to know how you got on with building the app for the App store. I hope to publish iOS & Android apps for DarwinMail[1] in the coming weeks.
Also, it would be absolutely amazing if you built the Chrome extension with React Native and had some tips.
PS: The site is down ATM, probably because of the influx in all the lovely visitors from HN :)
Yea, that's a great idea - it'd be really neat if folks could just use it locally without creating an account. Hoping I can get this added in the coming weeks!
In terms of how it's built - it's just vanilla code. The website and browser extensions are both build using plain Javascript + HTML + CSS. The backend server is in Python (uses FastAPI and Postgres for the DB). And the iOS app is in Swift.
I don't have much experience with React (/Native) yet so unfortunately no tips, sorry!
(and yup, sorry about that - buckled a bit under the load earlier, but is back up now - keeping an eye on the server now so hopefully no more issues!)
I wonder though, how do you keep the client minimal, while also maintaining a useful level of functionality?
It's something I've tackled with over the years while developing DarwinMail[1]. I've always tried to keep the UI clean and clutter free, while still providing all the functionality the user would like (that I learn about from feedback and also from other tools research).
I'd love to hear your thoughts on how you decide what features make the cut, and how they are designed?
I'm about 10 years into my software development career. I have felt exactly what you are describing once or twice. From time to time I feel myself become somewhat tired of programming and tend to move onto other avenues of running a SAAS product, for example, marketing and sales.
I found that the core reason I temporarily lost my love for programming (or nearly lost it on multiple occasions) was because I was coding all the time and was burning myself out.
The monotony of working as a software developer during the day and then coming home to work during the night on my side projects[1] had left me feeling down when my tasks in work or my projects at home didn't work out the way I had planned. On the flipside, when I did things which I considered to be an achievement at work or at home - I felt better in both environments. Almost like a surge of energy. Work/life balance is, of course, a two sided coin and they both have implications on the other.
I think one really needs to find other creative pursuits besides those which they are inclined to practice on a daily basis. It's fantastic to hone your skills in a particular field however I have personally felt that switching off from time to time and dabbing in completely unrelated work would allow me to recharge. In fact, it would help me think of new ideas as my mind had time to process my thoughts and the work I had completed.
When I 'burnt out' in the past I needed several weeks to rest, read, explore my city & countryside, cook my favourite foods, watch my favourite shows and just take care of me.
In order to avoid burn out, I decided to pick three hobbies: one to make me money, one to keep me in shape, and one to keep me creative. I'm sure I read that somewhere! Some of us do this by default, and there is a lot more to life than those three hobbies.. all I know is it has helped me to pace myself[2], to enjoy life a lot more and to achieve my goals at the same time :)
I'm a one man[2] team and have been since the beginning. I built it with PHP, LESS, JS, and good old HTML. I love answering all support emails because DM's users are so helpful and often have tremendously kind things to say. I guess it's because I took on the task of replacing Google Inbox.
DarwinMail is not as successful as some other companies run by solo-founders making 10k+ MRR however I feel really happy with what we (the users and I) have accomplished so far.
It's been almost two years since I wrote the first line of code and I very much enjoy working on DarwinMail each and every day of the week (even during dinner sometimes).
This is quite a leap forward in organising emails. I believe emails need to be organised into concise groups in order for you to become your most productive.
One thing I would suggest is to allow the organisation of labels according to when the last email was received. Today, Yesterday, This week, Last week, This month, Last month etc.
I actually run a similar product called DarwinMail [1], which was built shortly after GoogleInbox announced it would shut down in 2018.
We have supported bundles (labels in Fastmail) for about 12 months now. Through consistent iterative updates (thanks to feedback from our users) we have made huge progress.
Apart from the core (built-in) bundles: travel, finance, purchases, forums, promotions, social, updates you can also create a bundle from any label you wish.
DarwinMail aims to help you be your most productive when dealing with emails & todos.
Problem
Inbox by Google was one of the best products they ever made. And then they shut it down.
Solution
Introducing DarwinMail, which aims to replace and become better than Google Inbox ever was.
—
How & Why
- How can DarwinMail become better than Inbox by Google?
- Why would we use you over competitors?
1. We will not sell your data, abuse our power or ignore your requests...
2. Because we respect your privacy.
3. We understand that the product can only become great if each & every suggestion is listened to.
4. We have a public roadmap, public changelog, and open lines of communication.
5. The primary focus of Darwin Mail is to help you be productive. Each and every change is made for that sole reason.
—
Features
- Snoozing
Running late? Or need to forget about an email for now? Snooze your emails and take care of them later.
- Reminders
Clear your mind with our reminders feature. Jot down your reminder so you don't forget about it.
- Dark Mode
A sleek and less distracting option for managing your email & todos while ensuring you're at your most productive.
- Undo Send
Do you ever wish you could take back what you just said in that email?
- Custom Backgrounds
Choose a custom Unsplash HD background to be displayed behind all your emails, ensuring you feel at home in your Inbox.
- Templates
Create multiple email templates (product launch, feedback, promotion, testing, recruiting etc) and use them in your emails to save you loads of time.
- & much more according to your requests!
Just let everyone know exactly what you would like!
—
Darwin Mail will evolve to become great over time, thanks to its users, and thanks to you.
This is incredibly useful for anyone designing a new site from scratch. I think it's quite useful for reimagining the colors of your existing site, too, with one caveat. I'd love to be able to enter some of my own colors - and have your tool suggest a color palette.
Not the easiest feature to add, but would be exceptionally useful. Either way, I love what you do, mackenziechild and have followed your work for years.
You have inspired me over and over to improve DarwinMail [1]. Some of your small design tips have vastly improved the UI of DarwinMail. Thank you so much for all your tutorials, tweets and general design inspiration.
PS: I also love that you were a designer first, and decided to learn how to code too. It's so useful to learn in that order. No wonder your projects are always so brilliant.
The only drawback is that I cannot see the colors on the UI (on a sample website) like I can with Happy Hues. Granted, I can copy them into my website to test out.
It probably _could_ be, but I'd probably have to build (or hire someone to build) some sort of external app / database to manage all that.
A simpler solution I thought about what recreating the layout in Figma or Sketch, then someone could create their own palette simply by tweaking color swatches (and have it auto update on the mockup).
Every second support email in the early days of https://www.darwinmail.app was from users who were wondering why the website wasn't faster to load and operate.
I knew that this was going to slowly kill the product if I didn't focus on optimising the speed immediately. I also heard somewhere that even a 0.01 increase in load times for Amazon's website would cost them somewhere in the region of 100's of millions.
1. I gathered feedback from all users that said the website was slow (in any way and in any page/component/workflow).
2. I created a Trello board https://trello.com/c/PPuhLtW0/95-upgrade-performance for all the feedback.
3. Since that week of initial performance enhancement research and groundwork, I have essentially been completing todo's on that Trello card and adding more tasks as time goes on. I think the more speed improvements I make, the more I learn about what other parts of the application can be sped up. It's like economics, the more you learn, the more you realise you have so much more to learn :D
A few years later and I have not received an email suggesting to increase the speed of the app in several months, although I continue to make speed improvements on a regular basis.
Netflix have been my source of inspiration here. They are leagues ahead of every other streaming service and their custom architecture placed at the ISP level is absolutely incredible and paramount to how the deliver content with such amazing speeds.