In our previous post, we introduced the concept of a Distributed Linked List. We also talked about how Adobe I/O Events implemented them and why those implementations failed.

After pushing out our second implementation we were keen on rearchitecting our Journaling subsystem to be more performant, cost-effective, and most importantly scalable.

From the shortcomings of the first two implementations, we had already learned that utilizing an object store (such as AWS S3) to store the event payloads was the right idea — as long as — we could batch our events together in a way that facilitated event reads.


Adobe I/O Events enables developers to create applications that can subscribe to event notifications from Adobe’s products and services. Today, a developer can subscribe to event notifications from services such as Adobe XD, Adobe Analytics Triggers, Adobe Campaign and many more.

Our developers have built integrations that allow comment notifications on an XD prototype to appear right in Slack. On the other hand, our enterprise customers are updating their CRM with data from the latest email campaign in near real-time. The possibilities are truly limitless, all thanks to the power of Adobe I/O Events.

Today, I/O Events offers client applications…

Adobe just launched the revamped Adobe Creative Cloud app for Microsoft Teams last week, and that means subscribers can now receive notifications of all relevant Creative Cloud activities directly in the Microsoft Teams application itself. These notifications can then be further shared, marked for follow-up action, and more, all thanks to the power of Adobe I/O Events.

At present, Adobe XD users will receive relevant notifications in Microsoft Teams every time someone comments on an XD prototype. …

Invariant, quite literally, means something that does not change or vary.

In the context of computer programming, it can be seen as a set of assumptions a piece of code takes before it is able to perform any computation of importance. And if those assumptions aren’t actually true the result of the computation is meaningless, or more appropriately, it cannot be guaranteed that the result is correct.

Consider the following examples you would have come across before.

Bubble Sort

The bubble sort algorithm maintains the invariant that after i passes of the algorithm on the array, the last i elements of the…

It has been long since I wanted to do a series where I could discuss my understanding of the words Code Design and what follows with it, with a wider audience and hear their perspective on it.

I wish to do this series because my philosophy really resonates with with what Einstein said, “If you can’t explain it simply, you don’t understand it well enough.” Like him, I too believe that one has truly started to master the subject, only when they can transfer their understanding of how-things-are to someone else.

This belief would serve as my underlying ideology for…

Manik Jindal

Engineering → Product | Board Game Fanatic

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store