One Planet Later At Hashnode
Table of contents
- What does the title even mean?
- Twitter Connect
- Migrating our markdown editor from the old codebase to the new one
- Improving blog search on Hashnode and personal blogs
- Adding the capability to import dev.to posts as drafts
- Migrating Draft Preview to Blogs
- Worked on something that we couldn't ship to users
- The new WYSIWYG Editor Experience
- Hashnode Retreat
- Few Bundled Things...
- Personal Commitments
- Wrapping Up
What does the title even mean?
It took me some time to come up with this title.
If the above doesn't make sense, then we recently launched our new editor experience which we like to call Neptune. More about it below:-
And this is my first article using that editor (Not first technically since I am sure I have written a bunch of drafts and articles while testing it). But yes, first public article for the readers 🎉 of my blog.
But what is this article about?
Well, I completed one year at Hashnode a month ago and this article is all about reflecting on that experience. I already shared my experience in another article I wrote when I completed 6 months at Hashnode. So, to catch up, kindly read the below:-
Now let's see what else was on my plate over the last 6 months:-
Did you know that you can connect with your Twitter tribe on Hashnode as well? We make it easy for you to find those folks and follow them instantaneously.
This was fun to build. I got to touch both the front and backend layers to build this. We started with one design but then shifted to a much more UX-friendly one and worked on how the user recommendations should turn up. It was fun to collaborate with Megha Pathak , Girish Patil and Sandro Volpicella on this.
You can read more about it below:-
Migrating our markdown editor from the old codebase to the new one
I think this is the first time I got to lay my hands on the markdown editor. This is easily one of the most critical parts of Hashnode experience and migrating it was certainly fun. I got to collaborate with Girish Patil and Rajat Kapoor on this one. And unlike the
hashnode.com migration experience, this was much better planned and executed. The important part of that execution was documenting our goals, findings, and blockers etc everything on regular basis and communicating effectively on expectations. Also, this was probably the first time, we had an internal bug bash which went smoothly and made us much more confident in shipping it to our users.
But why was this migration needed in the first place?
Well, we are moving away from our legacy codebase steadily to make use of the capabilities the new one has to offer. We wanted to make the user experience feel much faster when they landed on our editor. And we saw a massive improvement in page load speed since earlier we had to proxy our editor and the extra hop cost us seconds. We not only migrated but also fixed some bugs in the markdown editor experience along with enriching the UI for it. Overall this was a solid A+ team effort.
Improving blog search on Hashnode and personal blogs
We introduced a new tab called Blogs which makes it easier for our users to search for individual/team blogs powered by Hashnode. Along with this, we also improved the article search within each blog.
Adding the capability to import dev.to posts as drafts
This was requested by many of the users of our platform and we finally prioritized this. The groundwork for this was already laid down by our engineers since we supported this for RSS articles. But it was still fun to work with nevertheless because the UX was much better than before. Now the users didn't have to worry about their old articles getting posted after import. They had the choice to publish them as drafts or posts.
Migrating Draft Preview to Blogs
The ownership of each article residing on your domain certainly feels good and Hashnode makes that an easy experience for the user. But there was
We make sure to sync your changes to a draft when you write something. But the previews of that draft used to still reside on
hashnode.com itself. So when a user had to preview their draft article or someone else's, they landed on
hashnode.com/preview/[draftId] and not in the writer's domain. So we had to make this experience seamless like our published articles.
I showed my interest to pick this up because I had a brief idea about the technical complexity of migrating this from our old codebase to our blog codebase. And after being part of two big migrations, I had enough experience to execute this one independently. And while the implementation went well, I think this got sidetracked in code reviews because we had other priority items to ship. So this stayed in code review for a whole MONTH!!. But I think everything worked out well since this affected not just our web experience but also how the mobile App flow would work with these new changes and this is probably the first time, I got to work with Mohd Shad Mirza as well.
Even before this got shipped, I worked on another task to ensure that a user can only create an article on hashnode if they have a blog. We wanted to push for content ownership here and unlock some capabilities that can only happen if the draft article is previewed on the user's domain (Support for custom widgets which we shipped recently for draft previews).
Overall, understanding the problem statement, executing it and tackling the edge cases was enjoyable while implementing this.
Worked on something that we couldn't ship to users
There are times when you might have spent working on something and even witnessed its completion but it couldn't go live due to a change of scope/priorities. This was a total revamp of one of our existing features where I got to collaborate with Sai Krishna Prasad Kandula where he did most of the heavy lifting. It was fun since we whiteboarded the flow diagrams along with possible edge cases and the executions. It started as a growth experiment but soon we realized that the scope was much broader but we managed to get it all working. The work is not discarded yet but it's also not made public to our users. Let's see when it sees the light of day 🤞.
The new WYSIWYG Editor Experience
I feel this is the highlight of my work at Hashnode in the past year. I collaborated with Girish Patil , Rajat Kapoor and Pritam Paul on this. As good as the editor migration experience was, this was a notch above. We solved for unknowns here and that makes a difference in the impact. There is so much to write about this but that would be better as a standalone blog article.
This was such a great experience. Met most of our team members finally and had a fun time with them at Phuket. Again, this could use another article. But here is a tweet by our PM Sumudu Siriwardana showing our happy faces:-
Alright in the last one, I am just photobombing and confused.
Few Bundled Things...
I like to debug issues. That's why I probably still try to solve stuff at Stack Overflow even though I am sure, ChatGPT will make me obsolete soon 🥲.
There are occasional bugs that as devs we have to solve and after solving the middleware bug which resulted in this article on our engineering blog, I faced another one where one of the drafts by a user crashed our article creation API (legacy) and also didn't let the user load that draft preview. It took me an entire day to figure out the problem here after even an hour of pair debugging with Girish Patil .
The solution to this problem was very straightforward but finding the cause was not. It was perplexing, to be honest.
But sometimes, digging deep into such perplexing behavior can give us better returns than our assumptions about the code.
Code reviews & Documentation
Besides debugging, code reviews form an important part of our dev routine and we are trying to solve for speeding up that process. As a startup, we have to move fast while making sure we don't break things. And I feel code reviews are that one point that decides a lot of it. To fasten up these reviews, I have penned down my experience in form of some guidelines we can follow as devs to ensure basic coverage for all relevant parameters before we raise a PR for review. So a code reviewer doesn't need to do the rework here.
Down the line, I hope we automate many parts of it and that the improved DX helps us move fast and confidently. Also, code reviews help me collaborate with more folks than I can if I just stick to writing code.
Being able to recruit for Hashnode is another experience I enjoy. We are welcoming a new engineer soon from those sets of interviews. Assessing candidates who are passionate about what they do and what they bring to the table is a constant learning in these interviews. So, I continue to look for folks who can help us scale Hashnode to the next level.
After completing 6 months at Hashnode, I scheduled calls with our co-founders to talk more about what my career aspirations look like and what their assessment of me is. I would like to thank my Dad here for pushing me to have these discussions. Due to those, I have a much cleaner vision of what moving forward one step ahead looks like for me.
Okay, last time I was boasting about my fitness routine but this time I gained 4.5 kgs back again after losing more than 10 kgs 6 months ago.
But before that, it's good I went on a trek with my friend and it turned out to be an impactful learning experience. We got featured here:-
It's been rare that I didn't have to collaborate with Sandeep and Syed Fazle Rahman on most of the things mentioned above. These two care deeply about what's being built and bring their own founder experience to solve problems with us. We sometimes find Sandeep building something as a side quest in a couple of hours/days and Fazle implementing a bunch of design changes that we didn't even know about. They are still builders at heart.
The experience of ownership, impact and collaboration has surely increased since I shared my last one and I see that as a win.
Thank you for your time :)