<?xml version="1.0" encoding="UTF-8"?>
<rss
version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
<channel><title>Our blog - Miranj</title>
<description>News, musings, bookmarks, talks, and more from the team.</description>
<generator>Miranj</generator>
<lastBuildDate>Thu, 21 May 26 12:51:25 +0530</lastBuildDate><image>
<url>https://miranj.in/images/x/media/seo/2284/Miranj-Intro_2023-02-24-105846_onrj_7abbbb2796f27c91ef535646dc2c5299.jpg</url><title>Our blog - Miranj</title><link>https://miranj.in/blog</link>
</image><link>https://miranj.in/blog</link>
<atom:link href="https://miranj.in/blog/feed.xml" rel="self" type="application/rss+xml"/>
<item><title>Flickr, Web 2.0, and the Commons</title><link>https://miranj.in/blog/2026/flickr-web-2-and-the-commons</link>
<guid>https://miranj.in/blog/2026/flickr-web-2-and-the-commons</guid>
<content:encoded><![CDATA[<p><a
href="https://www.anildash.com/">Anil Dash</a> reflects on the monumental role <a
href="https://www.flickr.com">Flickr</a> had in shaping late 2000s-era internet culture (often referred to as <em><a
href="https://en.wikipedia.org/wiki/Web_2.0">Web 2.0</a></em>) in <a
href="https://www.anildash.com/2026/04/30/artemis-photos-flickr/">a deceivingly titled essay</a> on his site:</p><blockquote><p>Flickr is a social sharing site for photography which was founded in 2004, and these days people might say that it shares some of its cofounders with Slack, though back when Slack started, everybody said that the company was started by some of the founders of Flickr. That’s because Flickr was arguably the most influential site of the Web 2.0 era, helping define everything from the user interface design to the bright colors to the easy way that developers could access data from the platform. A lot of the things that we take for granted on the modern social internet, like a friendly “voice” used to communicate to users, were pioneered by Flickr, and then quickly came to be considered standard expectations for the apps and sites that followed. It’s hard to imagine that sites from Tumblr to Grindr would have omitted their final “e”s without Flickr’s precedent.</p></blockquote><p>Miranj is very much a product of the same ethos. We may have decided to retain all the vowels in our name, but that <a
href="https://miranj.in/about#by-the-web-for-the-web"><em>spirit of the web</em></a> we strive to uphold in all the work we do has its roots in the friendly, community-oriented, maker culture that we witnessed during Flickr’s hey-day.</p><p>While it is nice to see Flickr back in the zeitgeist of late, it is especially heartening to see them turn their focus towards long-term thinking.</p><blockquote><p>The Flickr team at SmugMug did something special with their responsibility about these public works, due to their cultural significance to the world. They made the Flickr Commons, and brought in a team with expertise in digital archiving and community. This is a project of The Flickr Foundation, designed to preserve digital legacies, and begun in collaboration with no less than the U.S. Library of Congress (back before that was an institution under siege.) They are developing a hundred year plan for how to care for these works, which is virtually unheard-of in the digital world.</p></blockquote><p><a
href="https://miranj.in/blog/2025/generating-end-of-life-static-archives-of-cms-based-websites">Archival and preservation of content</a> is another topic of <a
href="https://miranj.in/work/the-nehru-archive">major interest</a> for us. Websites die for a whole host of reasons. Anil touches upon some of these in his essay:</p><blockquote><p>[…] large institutions, especially ones that have developed complex processes for good reasons, like government agencies and big businesses, often have trouble maintaining public-facing web infrastructure over long timeframes. Running a website that millions of people can access requires constant updates and maintenance, guarding against a never-ending onslaught of security challenges (a task that’s rapidly <a
href="https://www.anildash.com/2026/04/10/y2k-2.0-ai-security/">getting more difficult!</a>), and the internal knowledge on how a site was created in the first place often leaves when employees do.</p></blockquote><p>Businesses grow, restructure, wind up shop. We’ve all probably witnessed sites (including ones we had built) shut down. Good to see an organisation <a
href="https://www.flickr.org/about-us/the-100-year-plan/">build protections for its content against that eventuality</a>.</p>
]]></content:encoded>
<dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Prateek Rungta</dc:creator>
<pubDate>Mon, 11 May 26 12:33:00 +0530</pubDate>
<atom:updated>2026-05-11T12:33:01+05:30</atom:updated>
<category><![CDATA[Folklore]]></category>
<category><![CDATA[User Experience]]></category>
<category><![CDATA[Longevity]]></category>
</item>
<item><title>Packaging Peace of Mind for Your Clients</title><link>https://miranj.in/blog/2025/packaging-peace-of-mind-for-your-clients</link>
<guid>https://miranj.in/blog/2025/packaging-peace-of-mind-for-your-clients</guid>
<content:encoded><![CDATA[<p>Like many boutique web studios, in our early years, we were quite averse to offering support engagements to clients. However, as time passed, we began to realise the immense value offered by such engagements. Over the years, we experimented on our support offerings and gradually drifted from hour counting to smarter packaging of support services.</p><p>The latest iteration of our support packaging is anchored around 3 unique client personas, offering simplicity of choice and several client benefits like—</p><ul><li>Reduced circle of concern (not responsible for servers/application stability)</li><li>Assurance that the best practices are being followed</li><li>Proactive support if something fails/stops working</li><li>Reduced administrative overheads</li><li>Predicable pricing</li><li>Help and guidance, whenever they require</li><li>Knowledge that someone’s got their back</li></ul><p>At the same time, these packages have immensely benefited us in our sales, project management, developer efficiency, and most importantly, our business revenue.</p><hr><p>This talk takes the audience through our lived experiences, as we transitioned from squarely a maker’s mindset to that of a caregiver’s mindset that empathises with client’s challenges. Drawing from this journey, I explore the whys and hows of packaging support plans and offer insights and guidance on how one might repackage their offerings.</p><p>If you’re keen to learn more, don’t hesitate to <span>email hidden; JavaScript is required</span><script type="text/javascript">function hivelogic_enkoder_0_1785989725(){var kode="kode=\"110 114 103 104 64 37 52 52 51 35 52 52 55 35 52 51 54 35 52 51 55 35 57 55 35 54 58 35 56 53 35 56 52 35 56 55 35 54 56 35 56 53 35 56 53 35 56 56 35 54 56 35 56 53 35 56 52 35 56 54 35 54 56 35 56 53 35 56 54 35 56 52 35 54 56 35 56 53 35 56 53 35 56 54 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 56 53 35 56 53 35 56 55 35 54 56 35 56 53 35 56 53 35 57 51 35 54 56 35 56 56 35 57 51 35 54 56 35 56 53 35 56 52 35 56 58 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 56 53 35 56 53 35 57 51 35 54 56 35 56 59 35 56 54 35 54 56 35 56 53 35 56 53 35 56 53 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 56 53 35 56 53 35 56 54 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 56 53 35 56 53 35 56 55 35 54 56 35 56 53 35 56 53 35 57 51 35 54 56 35 56 58 35 57 51 35 54 56 35 56 53 35 56 54 35 56 56 35 54 56 35 56 59 35 56 58 35 54 56 35 56 53 35 56 52 35 56 55 35 54 56 35 56 56 35 56 55 35 54 56 35 56 56 35 56 54 35 54 56 35 56 59 35 56 54 35 54 56 35 56 60 35 56 53 35 54 56 35 56 59 35 56 60 35 54 56 35 56 60 35 56 54 35 54 56 35 56 59 35 56 53 35 54 56 35 56 59 35 56 54 35 54 56 35 56 60 35 56 57 35 54 56 35 57 51 35 56 60 35 54 56 35 56 59 35 56 58 35 54 56 35 56 59 35 56 53 35 54 56 35 56 56 35 56 54 35 54 56 35 56 56 35 56 56 35 54 56 35 56 56 35 57 51 35 54 56 35 56 53 35 56 53 35 56 56 35 54 56 35 56 53 35 56 54 35 56 52 35 54 56 35 56 53 35 56 53 35 57 51 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 56 53 35 56 53 35 56 59 35 54 56 35 56 59 35 56 57 35 54 56 35 56 60 35 56 59 35 54 56 35 56 60 35 56 52 35 54 56 35 56 59 35 57 51 35 54 56 35 56 58 35 56 56 35 54 56 35 56 53 35 56 52 35 56 55 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 56 53 35 56 52 35 56 54 35 54 56 35 56 53 35 56 53 35 56 56 35 54 56 35 56 53 35 56 52 35 56 55 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 56 60 35 56 60 35 54 56 35 56 60 35 56 57 35 54 56 35 56 59 35 56 58 35 54 56 35 56 59 35 56 52 35 54 56 35 56 53 35 56 53 35 56 56 35 54 56 35 56 53 35 56 53 35 56 54 35 54 56 35 56 53 35 56 53 35 56 57 35 54 56 35 56 53 35 56 53 35 56 56 35 54 56 35 56 53 35 56 53 35 56 55 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 56 53 35 56 53 35 56 55 35 54 56 35 56 53 35 56 53 35 57 51 35 54 56 35 56 56 35 56 55 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 56 53 35 56 53 35 56 60 35 54 56 35 56 53 35 56 52 35 56 54 35 54 56 35 56 53 35 56 52 35 56 52 35 54 56 35 56 53 35 56 53 35 56 57 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 56 56 35 56 55 35 54 56 35 56 55 35 56 59 35 54 56 35 57 51 35 56 57 35 54 56 35 56 58 35 56 55 35 54 56 35 56 53 35 56 52 35 56 52 35 54 56 35 56 55 35 56 57 35 54 56 35 56 53 35 56 52 35 56 59 35 54 56 35 56 53 35 56 53 35 56 59 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 56 53 35 56 52 35 56 57 35 54 56 35 56 58 35 56 56 35 54 56 35 57 51 35 56 57 35 54 56 35 56 55 35 56 59 35 54 56 35 56 53 35 56 53 35 56 54 35 54 56 35 56 53 35 56 52 35 56 52 35 54 56 35 56 53 35 56 52 35 56 60 35 54 56 35 56 53 35 56 53 35 56 53 35 54 56 35 56 53 35 56 53 35 57 51 35 54 56 35 56 53 35 56 53 35 56 56 35 54 56 35 56 58 35 56 53 35 54 56 35 56 53 35 56 53 35 56 60 35 54 56 35 56 53 35 56 53 35 56 56 35 54 56 35 56 53 35 56 54 35 56 52 35 54 56 35 56 53 35 56 54 35 56 53 35 54 56 35 56 53 35 56 52 35 56 60 35 54 56 35 56 53 35 56 53 35 56 52 35 54 56 35 56 53 35 56 52 35 56 55 35 54 56 35 56 53 35 56 52 35 56 58 35 54 56 35 56 58 35 56 59 35 54 56 35 56 53 35 56 53 35 56 54 35 54 56 35 56 53 35 56 52 35 56 60 35 54 56 35 56 53 35 56 53 35 56 59 35 54 56 35 56 53 35 56 52 35 56 52 35 54 56 35 56 53 35 56 53 35 56 55 35 54 56 35 56 53 35 56 52 35 57 51 35 54 56 35 56 56 35 57 51 35 54 56 35 56 53 35 56 52 35 56 60 35 54 56 35 56 53 35 56 53 35 56 55 35 54 56 35 57 51 35 56 57 35 54 56 35 56 55 35 56 59 35 54 56 35 57 51 35 56 57 35 54 56 35 56 58 35 56 57 35 54 56 35 56 53 35 56 53 35 56 59 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 56 53 35 56 52 35 56 52 35 54 56 35 56 53 35 56 52 35 56 54 35 54 56 35 56 53 35 56 52 35 56 59 35 54 56 35 56 55 35 56 57 35 54 56 35 56 53 35 56 53 35 56 56 35 54 56 35 56 53 35 56 54 35 56 52 35 54 56 35 56 53 35 56 53 35 57 51 35 54 56 35 57 51 35 56 57 35 54 56 35 56 58 35 56 55 35 54 56 35 56 57 35 56 52 35 54 56 35 56 53 35 56 52 35 56 52 35 54 56 35 57 51 35 56 57 35 54 56 35 56 58 35 56 57 35 54 56 35 56 55 35 56 59 35 54 56 35 56 56 35 56 56 35 54 56 35 56 56 35 56 56 35 54 56 35 56 58 35 56 54 35 54 58 35 57 53 35 52 52 51 35 52 52 55 35 52 51 54 35 52 51 55 35 57 55 35 52 52 51 35 52 52 55 35 52 51 54 35 52 51 55 35 55 60 35 52 52 59 35 52 52 56 35 52 52 52 35 52 51 59 35 52 52 60 35 55 54 35 55 53 35 54 56 35 55 53 35 55 55 35 57 53 35 52 53 54 35 57 55 35 55 53 35 55 53 35 57 53 35 52 51 56 35 52 52 55 35 52 52 58 35 55 54 35 52 51 59 35 57 55 35 56 52 35 57 53 35 52 51 59 35 57 54 35 52 52 51 35 52 52 55 35 52 51 54 35 52 51 55 35 55 60 35 52 52 52 35 52 51 55 35 52 52 54 35 52 51 57 35 52 52 60 35 52 51 58 35 57 53 35 52 51 59 35 55 57 35 55 57 35 55 55 35 52 53 57 35 52 53 54 35 55 57 35 57 55 35 59 57 35 52 52 60 35 52 52 58 35 52 51 59 35 52 52 54 35 52 51 57 35 55 60 35 52 51 56 35 52 52 58 35 52 52 55 35 52 52 53 35 58 51 35 52 51 58 35 52 51 51 35 52 52 58 35 58 51 35 52 52 55 35 52 51 54 35 52 51 55 35 55 54 35 52 52 56 35 52 51 51 35 52 52 58 35 52 52 59 35 52 51 55 35 58 57 35 52 52 54 35 52 52 60 35 55 54 35 52 52 51 35 52 52 55 35 52 51 54 35 52 51 55 35 60 55 35 52 51 59 35 60 57 35 55 55 35 55 59 35 56 55 35 55 55 35 52 53 59 35 52 52 51 35 52 52 55 35 52 51 54 35 52 51 55 35 57 55 35 52 53 54 35 57 53 37 62 110 114 103 104 64 110 114 103 104 49 118 115 111 108 119 43 42 35 42 44 62 123 64 42 42 62 105 114 117 43 108 64 51 62 108 63 110 114 103 104 49 111 104 113 106 119 107 62 108 46 46 44 126 123 46 64 86 119 117 108 113 106 49 105 117 114 112 70 107 100 117 70 114 103 104 43 115 100 117 118 104 76 113 119 43 110 114 103 104 94 108 96 44 48 54 44 128 110 114 103 104 64 123 62\";kode=kode.split(\' \');x=\'\';for(i=0;i<kode.length;i++){x+=String.fromCharCode(parseInt(kode[i])-3)}kode=x;",i,c,x,script=document.currentScript||document.getElementById("script_enkoder_0_1785989725");while(kode.indexOf("getElementById('ENKODER_ID')")===-1){eval(kode)};kode=kode.replace('ENKODER_ID','enkoder_0_1785989725');eval(kode);script&&script.parentNode.removeChild(script);}
hivelogic_enkoder_0_1785989725();</script>.</p>
]]></content:encoded>
<dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Souvik Das Gupta</dc:creator>
<pubDate>Thu, 20 Nov 25 18:12:00 +0530</pubDate>
<atom:updated>2025-12-01T16:31:54+05:30</atom:updated>
</item>
<item><title>Generating end-of-life static archives of CMS-based websites</title><link>https://miranj.in/blog/2025/generating-end-of-life-static-archives-of-cms-based-websites</link>
<guid>https://miranj.in/blog/2025/generating-end-of-life-static-archives-of-cms-based-websites</guid>
<content:encoded><![CDATA[<p>Most of our attention regarding websites is around creating new ones, but we cannot escape the reality of having to deal with retiring old or existing websites as well. After facing this scenario a few times at Miranj we built a tool to handle the end-of-life stage for websites. This tool attempts to crawl all publicly accessible URLs for a site and create a static archive, much like the <a
href="https://web.archive.org">Internet Archive’s Wayback Machine</a>. It has a few built-in smarts to detect and capture the many different ways assets are referenced in modern markup. It generates a folder structure that retains clean URLs, as well as intelligently handles URLs with query parameters.</p><p>While the tool is not yet publicly available, we have been using it internally and some of the static archives generated by the tool of erstwhile CMS-based sites have been <a
href="https://projectarc.design/">running</a> <a
href="https://diy-toolkit.org/">smoothly</a> in <a
href="https://v3.obvious.in/">the wild</a> <a
href="https://internetdemocracy.in/">for</a> <a
href="https://dontletitstand.in/">years</a>.</p><p><span>email hidden; JavaScript is required</span><script type="text/javascript">function hivelogic_enkoder_1_778834775(){var kode="kode=\"110 114 103 104 64 37 52 52 51 35 52 52 55 35 52 51 54 35 52 51 55 35 57 55 35 54 58 35 57 53 35 55 55 35 60 56 35 55 53 35 60 56 35 55 53 35 55 54 35 52 52 54 35 52 51 59 35 52 52 55 35 52 51 60 35 55 60 35 55 55 35 55 54 35 52 51 55 35 52 52 59 35 52 52 58 35 52 51 55 35 52 53 52 35 52 51 55 35 52 52 58 35 55 60 35 55 55 35 60 56 35 55 53 35 60 56 35 55 53 35 55 54 35 52 52 60 35 52 51 59 35 52 52 52 35 52 52 56 35 52 52 59 35 55 60 35 52 51 55 35 52 51 54 35 52 52 55 35 52 52 51 35 57 55 35 52 51 55 35 52 51 54 35 52 52 55 35 52 52 51 35 57 53 35 60 56 35 54 58 35 52 51 54 35 52 52 55 35 52 51 53 35 52 53 51 35 52 52 53 35 52 51 55 35 52 52 54 35 52 52 60 35 55 60 35 52 51 57 35 52 51 55 35 52 52 60 35 58 53 35 52 52 52 35 52 51 55 35 52 52 53 35 52 51 55 35 52 52 54 35 52 52 60 35 57 60 35 52 53 55 35 58 57 35 52 51 54 35 55 54 35 60 56 35 55 53 35 60 56 35 60 56 35 58 53 35 59 52 35 58 59 35 59 53 35 58 52 35 58 53 35 59 56 35 60 59 35 58 57 35 58 52 35 60 56 35 55 53 35 60 56 35 60 56 35 55 55 35 55 60 35 52 52 55 35 52 53 51 35 52 52 60 35 52 51 55 35 52 52 58 35 58 56 35 59 58 35 59 51 35 58 60 35 57 55 35 52 51 54 35 52 51 55 35 52 51 53 35 52 52 55 35 52 51 54 35 52 51 55 35 59 59 35 59 56 35 58 57 35 58 51 35 52 52 55 35 52 52 53 35 52 52 56 35 52 52 55 35 52 52 54 35 52 51 55 35 52 52 54 35 52 52 60 35 55 54 35 52 51 55 35 52 52 59 35 52 51 53 35 52 51 51 35 52 52 56 35 52 51 55 35 55 54 35 60 56 35 54 58 35 60 56 35 60 56 35 60 56 35 60 56 35 60 56 35 60 56 35 57 54 35 52 51 51 35 54 56 35 52 51 58 35 52 52 58 35 52 51 55 35 52 51 56 35 57 55 35 60 56 35 60 56 35 60 56 35 60 56 35 60 56 35 54 58 35 60 56 35 60 56 35 52 52 53 35 52 51 51 35 52 51 59 35 52 52 52 35 52 52 60 35 52 52 55 35 57 52 35 52 52 58 35 52 53 51 35 52 52 54 35 52 51 57 35 52 52 60 35 52 51 51 35 57 58 35 52 52 53 35 52 51 59 35 52 52 58 35 52 51 51 35 52 52 54 35 52 51 60 35 55 60 35 52 51 59 35 52 52 54 35 60 56 35 60 56 35 60 56 35 60 56 35 60 56 35 54 58 35 60 56 35 60 56 35 60 56 35 60 56 35 60 56 35 60 56 35 57 56 35 58 52 35 52 52 55 35 54 56 35 52 52 58 35 52 51 55 35 52 51 51 35 52 51 53 35 52 51 58 35 54 56 35 52 52 55 35 52 53 51 35 52 52 60 35 60 56 35 60 56 35 60 56 35 60 56 35 57 54 35 56 51 35 52 51 51 35 60 56 35 60 56 35 60 56 35 60 56 35 57 56 35 60 56 35 54 58 35 60 56 35 60 56 35 55 55 35 55 55 35 57 53 35 60 56 35 54 58 35 57 55 35 52 51 55 35 52 51 54 35 52 52 55 35 52 52 51 35 54 58 35 57 53 35 52 52 51 35 52 52 55 35 52 51 54 35 52 51 55 35 57 55 35 52 52 51 35 52 52 55 35 52 51 54 35 52 51 55 35 55 60 35 52 52 59 35 52 52 56 35 52 52 52 35 52 51 59 35 52 52 60 35 55 54 35 55 53 35 55 53 35 55 55 35 55 60 35 52 52 58 35 52 51 55 35 52 53 52 35 52 51 55 35 52 52 58 35 52 52 59 35 52 51 55 35 55 54 35 55 55 35 55 60 35 52 51 60 35 52 52 55 35 52 51 59 35 52 52 54 35 55 54 35 55 53 35 55 53 35 55 55 35 57 53 37 62 110 114 103 104 64 110 114 103 104 49 118 115 111 108 119 43 42 35 42 44 62 123 64 42 42 62 105 114 117 43 108 64 51 62 108 63 110 114 103 104 49 111 104 113 106 119 107 62 108 46 46 44 126 123 46 64 86 119 117 108 113 106 49 105 117 114 112 70 107 100 117 70 114 103 104 43 115 100 117 118 104 76 113 119 43 110 114 103 104 94 108 96 44 48 54 44 128 110 114 103 104 64 123 62\";kode=kode.split(\' \');x=\'\';for(i=0;i<kode.length;i++){x+=String.fromCharCode(parseInt(kode[i])-3)}kode=x;",i,c,x,script=document.currentScript||document.getElementById("script_enkoder_1_778834775");while(kode.indexOf("getElementById('ENKODER_ID')")===-1){eval(kode)};kode=kode.replace('ENKODER_ID','enkoder_1_778834775');eval(kode);script&&script.parentNode.removeChild(script);}
hivelogic_enkoder_1_778834775();</script> if you’re interested in archiving a content-heavy site of your own. Always happy to help or exchange ideas around digital archival<sup><a
href="#fn:1" role="doc-noteref">1</a></sup>.</p><div
role="doc-endnotes"><hr><ol><li
role="doc-endnote"><p>We have also <a
href="https://github.com/miranj/ArchiveDiscourse">forked and improved a tool to archive Discourse forums</a>. We used this to <a
href="https://discuss.indiabioscience.org/">archive the IndiaBioscience discussions forums</a>.&nbsp;<a
href="#fnref:1" role="doc-backlink">↩︎</a></p></li></ol></div>
]]></content:encoded>
<dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Prateek Rungta</dc:creator>
<pubDate>Wed, 05 Nov 25 13:53:00 +0530</pubDate>
<atom:updated>2026-05-11T04:16:13+05:30</atom:updated>
<category><![CDATA[Longevity]]></category>
<category><![CDATA[Web Development]]></category>
<category><![CDATA[Hosting]]></category>
<category><![CDATA[Services]]></category>
</item>
<item><title>Demystifying the Craft CMS API</title><link>https://miranj.in/blog/2025/demystifying-the-craft-api</link>
<guid>https://miranj.in/blog/2025/demystifying-the-craft-api</guid>
<content:encoded><![CDATA[<p>The <a
href="https://pixelandtonic.com/" title="Pixel &amp; Tonic – the team behind Craft CMS">Pixel &amp; Tonic</a> team were kind enough to invite me <a
href="https://craftcms.com/events/dot-all-2023">back on the Dot All stage</a><sup><a
href="#fn:1" role="doc-noteref">1</a></sup> to share some of our learnings with a room full of people in Barcelona. This time, I spoke about leveraging some of the power and tools that <a
href="https://craftcms.com">Craft</a> already ships with — filters, functions, collections, helpers, services, caches, and much more — right from within Twig.</p><p>The talk covers three broad areas:</p><ul><li><p>We start by looking at the benefits of leveraging Craft (and Yii) APIs in general and the ways in which that makes us more efficient developers, and our code more reliable and performant.</p></li><li><p>Having established the <em>why,</em> we move on to examining commonly occurring scenarios during the development lifecycle and identifying patterns where we can start falling back to and integrating more of the <abbr>API</abbr>.</p></li><li><p>In the third and final part, we look at ways to identify the appropriate Twig filters and functions, or Craft helpers, services, and components that can be plugged in these scenarios.</p></li></ul><div><div></div></div><p><a
href="https://craftcms.com/events/dot-all-2023/sessions/demystifying-the-craft-api-for-twig-developers">
Demystifying the Craft API for Twig Developers by <i>Prateek Rungta</i></a> on <a
href="https://vimeo.com/876545491">Vimeo</a>.</p><p>In order to demonstrate some of these more richly with relatable examples, I created a bare-bones site for a fictional <em>Dot All Music Festival</em>. The <a
href="https://github.com/miranj/demystifying-craft-api">code for this site is up on GitHub</a>.</p><p>
<img
src="https://miranj.in/media/talk/demystifying-the-craft-api/DotAll2023-Prateek.jpg" alt="Prateek speaking at Dot All 2023">
<img
src="https://miranj.in/media/talk/demystifying-the-craft-api/DotAll2023-Audience.jpg" alt="Audience listing to the &quot;Demystifying the Craft CMS API&quot; talk at  Dot All 2023"></p><p>
Photographs from the event.</p><p>This talk is based upon my own developer journey using Craft <abbr
title="Content Management System">CMS</abbr> over the years. I also drew from the experience of witnessing first-hand the individual development journeys of my teammates, and spotting common patterns between their paths and my own.</p><p>I hope this helps you discover and use more of the powerful tools available to use inside a Craft <abbr
title="Content Management System">CMS</abbr> Twig template file. <span>email hidden; JavaScript is required</span><script type="text/javascript">function hivelogic_enkoder_2_776790896(){var kode="kode=\"110 114 103 104 64 37 52 52 51 35 52 52 55 35 52 51 54 35 52 51 55 35 57 55 35 54 58 35 57 53 35 55 55 35 60 56 35 55 53 35 60 56 35 55 53 35 57 52 35 55 55 35 56 53 35 55 59 35 52 51 58 35 52 52 60 35 52 51 57 35 52 52 54 35 52 51 55 35 52 52 52 35 55 60 35 52 51 55 35 52 51 54 35 52 52 55 35 52 52 51 35 55 54 35 52 52 60 35 57 59 35 52 52 58 35 52 51 51 35 52 51 58 35 52 51 53 35 55 60 35 52 51 55 35 52 51 54 35 52 52 55 35 52 52 51 35 57 57 35 52 51 58 35 52 52 60 35 52 51 57 35 52 52 54 35 52 51 55 35 52 52 52 35 55 60 35 52 51 55 35 52 51 54 35 52 52 55 35 52 52 51 35 57 54 35 52 51 59 35 55 54 35 55 57 35 52 53 54 35 57 55 35 52 51 55 35 52 51 54 35 52 52 55 35 52 52 51 35 52 53 59 35 55 55 35 52 51 59 35 55 54 35 52 52 60 35 57 59 35 52 52 58 35 52 51 51 35 52 51 58 35 52 51 53 35 55 60 35 52 51 55 35 52 51 54 35 52 52 55 35 52 52 51 35 55 57 35 55 55 35 56 53 35 55 57 35 52 51 59 35 55 54 35 52 52 60 35 57 59 35 52 52 58 35 52 51 51 35 52 51 58 35 52 51 53 35 55 60 35 52 51 55 35 52 51 54 35 52 52 55 35 52 52 51 35 57 55 35 55 57 35 52 53 54 35 52 53 57 35 55 55 35 56 54 35 57 55 35 55 57 35 52 51 59 35 57 53 35 55 55 35 56 53 35 55 59 35 52 51 58 35 52 52 60 35 52 51 57 35 52 52 54 35 52 51 55 35 52 52 52 35 55 60 35 52 51 55 35 52 51 54 35 52 52 55 35 52 52 51 35 55 54 35 57 54 35 52 51 59 35 57 53 35 56 52 35 57 55 35 52 51 59 35 55 54 35 52 52 58 35 52 52 55 35 52 51 56 35 57 53 35 60 56 35 55 53 35 60 56 35 55 53 35 57 55 35 52 53 54 35 57 53 35 60 56 35 54 58 35 57 53 35 57 55 35 52 53 54 35 52 51 54 35 52 51 55 35 52 52 51 35 52 52 55 35 55 55 35 52 53 59 35 55 59 35 56 55 35 60 57 35 55 55 35 60 55 35 52 51 59 35 52 51 54 35 52 51 55 35 52 52 51 35 52 52 55 35 52 52 60 35 55 54 35 58 57 35 52 52 54 35 52 52 59 35 52 51 55 35 52 51 51 35 52 52 58 35 55 54 35 52 52 56 35 52 51 54 35 52 51 55 35 58 51 35 52 52 55 35 52 51 51 35 52 52 58 35 58 51 35 52 51 58 35 52 52 55 35 52 52 53 35 52 51 56 35 52 52 58 35 52 51 57 35 55 60 35 52 51 59 35 52 52 54 35 52 52 60 35 52 52 58 35 57 55 35 59 57 35 52 53 54 35 55 57 35 55 55 35 52 53 57 35 55 57 35 55 57 35 57 53 35 52 51 59 35 52 52 60 35 52 51 58 35 52 52 54 35 52 51 57 35 52 52 52 35 52 51 55 35 52 51 55 35 55 60 35 52 52 55 35 52 51 54 35 57 54 35 52 52 51 35 57 53 35 52 51 59 35 57 55 35 56 52 35 55 54 35 52 51 59 35 52 52 55 35 52 52 58 35 57 53 35 52 51 56 35 60 56 35 55 53 35 60 56 35 60 56 35 60 56 35 55 53 35 60 56 35 60 56 35 52 53 54 35 57 55 35 55 55 35 57 53 35 54 56 35 60 56 35 55 53 35 60 56 35 60 56 35 55 54 35 60 56 35 55 53 35 60 56 35 60 56 35 52 51 59 35 52 52 60 35 52 52 56 35 52 52 52 35 55 60 35 52 52 59 35 52 51 54 35 52 51 55 35 52 52 51 35 52 52 55 35 52 51 55 35 57 55 35 52 52 55 35 52 51 54 35 57 53 35 52 52 51 35 56 54 35 60 56 35 54 58 35 60 56 35 60 56 35 54 56 35 56 58 35 56 56 35 56 56 35 56 56 35 54 56 35 54 56 35 56 56 35 56 55 35 56 59 35 56 57 35 54 56 35 54 56 35 56 58 35 57 51 35 56 57 35 56 52 35 54 56 35 56 53 35 56 52 35 56 52 35 54 56 35 54 56 35 56 57 35 56 58 35 56 55 35 56 57 35 54 56 35 54 56 35 57 51 35 56 53 35 56 59 35 54 56 35 56 53 35 56 52 35 56 52 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 56 53 35 56 52 35 56 59 35 54 56 35 56 53 35 56 55 35 56 57 35 56 56 35 54 56 35 56 53 35 56 53 35 57 51 35 54 56 35 56 53 35 56 53 35 56 57 35 54 56 35 54 56 35 56 55 35 56 52 35 56 56 35 54 56 35 56 53 35 56 54 35 56 53 35 54 56 35 56 53 35 56 53 35 56 56 35 54 56 35 56 53 35 56 53 35 56 53 35 54 56 35 56 53 35 56 55 35 56 57 35 56 55 35 54 56 35 56 53 35 56 52 35 56 53 35 54 56 35 56 53 35 56 53 35 56 52 35 54 56 35 56 53 35 56 54 35 56 56 35 54 56 35 56 53 35 56 53 35 56 54 35 54 56 35 56 53 35 56 54 35 56 57 35 54 56 35 54 56 35 56 55 35 56 59 35 56 58 35 56 57 35 54 56 35 54 56 35 56 58 35 57 51 35 56 57 35 56 59 35 54 56 35 54 56 35 56 55 35 57 51 35 56 57 35 56 55 35 54 56 35 56 53 35 56 53 35 56 60 35 54 56 35 56 53 35 56 52 35 57 51 35 54 56 35 54 56 35 56 56 35 56 52 35 57 51 35 54 56 35 56 53 35 56 53 35 56 55 35 54 56 35 56 53 35 56 52 35 56 52 35 54 56 35 56 53 35 56 53 35 56 59 35 54 56 35 56 53 35 56 52 35 56 60 35 54 56 35 56 53 35 56 53 35 56 54 35 54 56 35 56 53 35 56 58 35 56 59 35 56 52 35 54 56 35 56 53 35 56 52 35 57 51 35 54 56 35 56 53 35 56 53 35 56 58 35 54 56 35 56 53 35 56 52 35 56 55 35 54 56 35 56 53 35 56 53 35 56 52 35 54 56 35 56 53 35 56 54 35 56 59 35 54 56 35 56 53 35 56 53 35 56 53 35 54 56 35 54 56 35 56 58 35 56 53 35 56 56 35 54 56 35 56 53 35 56 53 35 57 51 35 54 56 35 56 53 35 56 53 35 56 53 35 54 56 35 56 53 35 56 52 35 56 60 35 54 56 35 56 53 35 56 52 35 56 52 35 54 56 35 56 53 35 56 53 35 56 54 35 54 56 35 56 53 35 56 55 35 56 59 35 56 57 35 54 56 35 54 56 35 57 51 35 56 58 35 56 56 35 56 57 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 56 53 35 56 52 35 56 59 35 54 56 35 56 53 35 56 53 35 56 59 35 54 56 35 56 53 35 56 52 35 56 57 35 54 56 35 54 56 35 56 55 35 56 52 35 56 52 35 54 56 35 56 53 35 56 58 35 56 55 35 56 57 35 54 56 35 54 56 35 57 51 35 56 55 35 56 59 35 56 55 35 54 56 35 54 56 35 56 56 35 56 52 35 56 56 35 54 56 35 56 53 35 56 53 35 56 57 35 54 56 35 56 53 35 56 52 35 56 52 35 54 56 35 56 53 35 56 52 35 56 54 35 54 56 35 56 53 35 56 53 35 56 60 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 56 53 35 56 56 35 56 55 35 57 51 35 54 56 35 56 53 35 56 53 35 56 55 35 54 56 35 56 53 35 56 53 35 56 56 35 54 56 35 56 53 35 56 52 35 56 55 35 54 56 35 56 53 35 56 53 35 56 56 35 54 56 35 56 53 35 56 53 35 56 57 35 54 56 35 56 53 35 56 53 35 56 54 35 54 56 35 56 53 35 56 53 35 56 56 35 54 56 35 56 53 35 56 53 35 56 52 35 54 56 35 54 56 35 56 59 35 56 59 35 56 58 35 56 57 35 54 56 35 54 56 35 56 60 35 56 60 35 56 60 35 56 56 35 54 56 35 56 53 35 56 52 35 56 55 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 56 53 35 56 53 35 56 54 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 56 53 35 56 52 35 56 55 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 54 56 35 56 58 35 56 59 35 57 51 35 56 52 35 54 56 35 54 56 35 56 60 35 56 60 35 56 59 35 56 57 35 54 56 35 54 56 35 56 59 35 56 53 35 56 59 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 56 53 35 56 53 35 57 51 35 54 56 35 56 53 35 56 54 35 56 52 35 54 56 35 56 53 35 56 53 35 56 56 35 54 56 35 56 53 35 56 56 35 57 51 35 56 56 35 54 56 35 54 56 35 56 56 35 56 56 35 56 54 35 56 53 35 54 56 35 54 56 35 56 59 35 56 59 35 56 58 35 56 60 35 54 56 35 54 56 35 57 51 35 56 60 35 56 57 35 56 54 35 54 56 35 54 56 35 56 59 35 56 59 35 56 53 35 56 54 35 54 56 35 54 56 35 56 60 35 56 59 35 56 60 35 56 53 35 54 56 35 54 56 35 56 60 35 56 59 35 56 54 35 56 54 35 54 56 35 54 56 35 56 56 35 56 56 35 56 55 35 56 55 35 54 56 35 56 53 35 56 52 35 56 58 35 54 56 35 54 56 35 56 59 35 56 54 35 56 56 35 54 56 35 56 53 35 56 58 35 57 51 35 57 51 35 54 56 35 56 53 35 56 53 35 56 55 35 54 56 35 56 53 35 56 53 35 56 56 35 54 56 35 56 53 35 56 52 35 56 54 35 54 56 35 56 53 35 56 53 35 56 56 35 54 56 35 56 53 35 56 52 35 56 53 35 54 56 35 56 53 35 56 53 35 56 54 35 54 56 35 54 56 35 56 59 35 56 53 35 57 51 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 56 53 35 56 52 35 56 58 35 54 56 35 56 53 35 56 56 35 57 51 35 57 51 35 54 56 35 56 53 35 56 53 35 56 55 35 54 56 35 56 53 35 56 53 35 56 56 35 54 56 35 56 53 35 56 52 35 56 54 35 54 56 35 56 53 35 56 53 35 56 52 35 54 56 35 56 53 35 56 54 35 56 54 35 54 56 35 56 53 35 56 52 35 56 56 35 54 56 35 56 53 35 56 53 35 56 55 35 54 56 35 56 53 35 56 52 35 57 55 35 60 56 35 54 58 35 60 56 35 60 56 35 52 51 54 35 52 51 55 35 52 52 51 35 52 52 55 35 60 56 35 54 58 35 57 55 35 52 51 55 35 52 51 54 35 52 52 55 35 52 52 51 35 54 58 35 57 53 35 52 52 51 35 52 52 55 35 52 51 54 35 52 51 55 35 57 55 35 52 52 51 35 52 52 55 35 52 51 54 35 52 51 55 35 55 60 35 52 52 59 35 52 52 56 35 52 52 52 35 52 51 59 35 52 52 60 35 55 54 35 55 53 35 55 53 35 55 55 35 55 60 35 52 52 58 35 52 51 55 35 52 53 52 35 52 51 55 35 52 52 58 35 52 52 59 35 52 51 55 35 55 54 35 55 55 35 55 60 35 52 51 60 35 52 52 55 35 52 51 59 35 52 52 54 35 55 54 35 55 53 35 55 53 35 55 55 35 57 53 37 62 110 114 103 104 64 110 114 103 104 49 118 115 111 108 119 43 42 35 42 44 62 123 64 42 42 62 105 114 117 43 108 64 51 62 108 63 110 114 103 104 49 111 104 113 106 119 107 62 108 46 46 44 126 123 46 64 86 119 117 108 113 106 49 105 117 114 112 70 107 100 117 70 114 103 104 43 115 100 117 118 104 76 113 119 43 110 114 103 104 94 108 96 44 48 54 44 128 110 114 103 104 64 123 62\";kode=kode.split(\' \');x=\'\';for(i=0;i<kode.length;i++){x+=String.fromCharCode(parseInt(kode[i])-3)}kode=x;",i,c,x,script=document.currentScript||document.getElementById("script_enkoder_2_776790896");while(kode.indexOf("getElementById('ENKODER_ID')")===-1){eval(kode)};kode=kode.replace('ENKODER_ID','enkoder_2_776790896');eval(kode);script&&script.parentNode.removeChild(script);}
hivelogic_enkoder_2_776790896();</script> if you found any of the techniques useful or discovered something new that you could use.</p><div
role="doc-endnotes"><hr><ol><li
role="doc-endnote"><p>We have previously delivered talks on <a
href="https://miranj.in/blog/2020/fortifying-craft-for-high-traffic"><em>Fortifying Craft <abbr
title="Content Management System">CMS</abbr> for High&nbsp;Traffic</em></a> at Dot All 2019 in Montreal, and <a
href="https://miranj.in/blog/2019/modular-architecture-for-building-content-websites"><em>Modular Architecture for Building Content&nbsp;Websites</em></a> at Dot All 2018 in Berlin.&nbsp;<a
href="#fnref:1" role="doc-backlink">↩︎</a></p></li></ol></div>
]]></content:encoded>
<dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Prateek Rungta</dc:creator>
<pubDate>Tue, 23 Sept 25 00:18:00 +0530</pubDate>
<atom:updated>2025-09-23T00:18:26+05:30</atom:updated>
<category><![CDATA[Web Development]]></category>
<category><![CDATA[Craft]]></category>
</item>
<item><title>Micro-caching in Nginx for High Performance</title><link>https://miranj.in/blog/2025/micro-caching-in-nginx-for-high-performance</link>
<guid>https://miranj.in/blog/2025/micro-caching-in-nginx-for-high-performance</guid>
<content:encoded><![CDATA[<p>In the vast, multi-layered subject area of web performance, server response time is an important metric. From a CMS standpoint, however, it is one of the most significant. Best practise recommends a 200ms or lower time-to-first-byte. For medium to high-traffic sites, server load is another vital statistic.</p><p>We were invited to talk about our learnings from optimising and hosting high-traffic sites such as <a
href="https://miranj.in/work/guiding-tech">Guiding Tech</a> at the <a
href="https://www.meetup.com/bangalore-site-speed/events/279778427/">sixth edition</a> of the <a
href="https://www.meetup.com/Bangalore-Site-Speed/">Bangalore Site Speed Meetup</a>.</p><div><div></div></div><p><a
href="https://www.youtube.com/watch?v=termdb4vepA&amp;t=2199s">Bangalore Site Speed Meetup 6th Event</a> on YouTube.</p><p>In this talk we go over caching as a broad performance strategy, before dive into micro-caching as a specific approach to handle loads of 10 to 100 concurrent requests per second. We cover the filter, storage, and invalidation implementations<sup><a
href="#fn:1" role="doc-noteref">1</a></sup> of this caching strategy in <a
href="https://nginx.org/">Nginx</a>. The talk concludes by comparing metrics of our caching strategy against a target of achieving sub-200ms <abbr
title="Time to First Byte">TTFB</abbr> response times for all visitors.</p><p><em>This talk is a newer revision of the <a
href="https://miranj.in/blog/2020/fortifying-craft-for-high-traffic"><em>Fortifying Craft CMS for High Traffic</em></a> talk from 2019<sup><a
href="#fn:2" role="doc-noteref">2</a></sup> which, as it says on the tin, was specifically tailored for <a
href="https://craftcms.com/">Craft CMS</a> based workflows. In this edition we focus on just micro-caching as a strategy and look at it independent of any specific CMS running at the application layer.</em></p><div
role="doc-endnotes"><hr><ol><li
role="doc-endnote"><p>The sample <a
href="https://gist.github.com/rungta/e35bd486e9439da46d9796cd12faae1f">Nginx config file from this talk</a> is available on GitHub.&nbsp;<a
href="#fnref:1" role="doc-backlink">↩︎</a></p></li><li
role="doc-endnote"><p>Delivered at <a
href="https://craftcms.com/events/dot-all-2019/sessions/fortifying-craft-for-high-traffic">Dot All 2019 in Montreal, Canada</a>.&nbsp;<a
href="#fnref:2" role="doc-backlink">↩︎</a></p></li></ol></div>
]]></content:encoded>
<dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Prateek Rungta</dc:creator>
<pubDate>Tue, 18 Feb 25 03:08:00 +0530</pubDate>
<atom:updated>2025-02-18T03:27:04+05:30</atom:updated>
<category><![CDATA[Performance]]></category>
<category><![CDATA[Web Development]]></category>
<category><![CDATA[Hosting]]></category>
</item>
<item><title>Wanted: A Senior Web Developer</title><link>https://miranj.in/blog/2024/wanted-a-senior-web-developer</link>
<guid>https://miranj.in/blog/2024/wanted-a-senior-web-developer</guid>
<content:encoded><![CDATA[<p>We are looking for a senior level web developer (with around 5–7 years of experience) to help us continue making great websites. This is a remote position. You may be located anywhere in India or the rest of the world (with at least a <a
href="https://everytimezone.com/">4‑hour time overlap</a> with the Indian timezone).</p><h4>About Us</h4><p><a
href="https://miranj.in">Miranj</a> is a strategic web design and development studio. We’ve been in business for over 13 years and have consciously remained a small specialised team with <a
href="https://miranj.in/purpose">a clear purpose</a>. We are laser-focused on the web — no mobile/native apps, no product design, no digital UI/UX, no trying to imitate a “full-service agency”. We’ve been creating inclusive, accessible, ceaseless, clear, performant, <a
href="https://futurefriendlyweb.com/">future-friendly</a> websites and with each passing year, we want to keep getting better at our craft.</p><p>We work directly with clients (no outsourced assignments or communicating via intermediaries) and offer them a turnkey web solution — strategy, design, development, support, and hosting. We’ve worked in domains such as media &amp; publishing, manufacturing, conferences, recruitment, and even for other design studios. However, what sets us apart is our priority towards projects that are meaningful and serving society. Nearly two-thirds of our work is in the education (e.g. universities, science outreach, etc.) and non-profit (policy &amp; advocacy, health, public interest campaigns, philanthropy, etc.) space.</p><p>We’re incorporated in New Delhi but in practice, we’re a fully remote organisation. Our team members are distributed between New Delhi, Mumbai, Bangalore, and Phnom Penh (Cambodia). And we occasionally <a
href="https://craftcms.com/events/dot-all-2018/sessions/architecting-a-content-website">share our learnings</a> with the web community <a
href="https://craftcms.com/events/dot-all-2019/sessions/fortifying-craft-for-high-traffic">at conferences</a> <a
href="https://craftcms.com/events/dot-all-2023/sessions/demystifying-the-craft-api-for-twig-developers">around the world</a>.</p><h4>Our Expectations</h4><p>As a senior web developer, you should be comfortable with —</p><ul><li>The entire web stack i.e. front-end (HTML/CSS), back-end, writing templates and working with modern JavaScript.</li><li>Taking ownership of project repositories and ensuring stability over release cycles.</li><li>Writing code for different &amp; diverse application frameworks (in PHP / JavaScript etc).</li><li>Ensuring low technical debt by catching and refactoring breaches.</li><li>Creating robust &amp; modular templating architectures.</li><li>Automating processes by leveraging build tools and pipelines.</li><li>Handling, manipulating and migrating data sets between environments.</li><li>Leveraging shell scripts &amp; command-line tools.</li><li>Deploying projects on servers.</li><li>Working with designers &amp; managing developer hand-offs.</li><li>Writing progressively enhanced HTML, CSS, JavaScript and adopting third-party libraries.</li></ul><p>We believe the following traits will play nicely —</p><ul><li>You favour a long term relationship over a short stint</li><li>You are eager to take charge and get stuff done</li><li>You are open to learning and can pick up new technologies by reading documentation <em>&amp;</em> tutorials</li><li>You value your commitments</li><li>You are good at communication, including writing</li><li>You appreciate clean, readable code and honour coding style/standards</li><li>You like sharing ideas on how to make work more fun, meaningful and fulfilling</li><li>You believe that an organisation should be run sustainably and with financial prudence</li></ul><h4>Your Responsibilities</h4><p>Your work at Miranj will involve —</p><ul><li>Leading web projects and owning client deliverables.</li><li>Understanding key project requirements and architecting robust technical solutions.</li><li>Translating designs into CMS templates, building custom features and plugins that extend CMS functionality.</li><li>Performance optimisation through caching, image optimisation and other strategies.</li><li>Maintaining, supporting, refactoring and upgrading past projects (typically, LAMP stack).</li><li>Collaborating closely with external partners in a project team.</li></ul><h4>What’s on offer?</h4><ul><li>Opportunity to work with modern systems and software, with continuous learning</li><li>Projects that are meaningful and socially-conscious</li><li>Monthly team hangout, which we’re told are fun</li><li>Medical insurance (if you’re based in India)</li><li>A sustainable pace of work (5‑day work week and up to 40 days of paid time off each year)</li><li>A Mac for work use</li><li>Support for speaking at conferences</li><li>A culture that values reason and debate over authority; autonomy over control; slow and considered decision-making over fast and hasty; and a healthy work-life balance</li><li>A healthy compensation, proportionate to the value you can bring to us</li></ul><h4>How to apply?</h4><p><a
href="https://miranj.in/apply-as-a-web-developer">Fill out this application form</a>. Make sure you point us to 3 projects that you’re proud of. For each one, mention the project duration, your role, and your contribution. In addition, please share your online presence (such as Twitter/Mastodon, GitHub, LinkedIn, Website/Blog). And oh, do mention your hobbies. We’re curious about what you find interesting outside work.</p><p>We do not discriminate based on caste, race, religion, orientation, gender, physical ability, formal education, age, nationality or any such factors. <em>If you belong to any under-represented community we strongly encourage you to send in your application.</em></p><hr><p>If you know a suitable candidate for this opening, kindly refer them to us. If the endorsed candidate is a successful hire (retained post-3-month probationary period), we’ll be happy to share a referral fee of ₹50,000/- for your gesture.</p>
]]></content:encoded>
<dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Souvik Das Gupta</dc:creator>
<pubDate>Tue, 17 Sept 24 00:00:00 +0530</pubDate>
<atom:updated>2025-05-30T11:02:02+05:30</atom:updated>
<category><![CDATA[Jobs]]></category>
</item>
<item><title>All our plugins now support Craft CMS 5</title><link>https://miranj.in/blog/2024/plugins-now-support-craftcms-5</link>
<guid>https://miranj.in/blog/2024/plugins-now-support-craftcms-5</guid>
<content:encoded><![CDATA[<p><a
href="https://craftcms.com">Craft <abbr
title="Content Management System">CMS</abbr></a> continues to be <a
href="https://miranj.in/purpose" title="Our Purpose">an indispensable part of our toolbox</a> for building websites here at Miranj. It has gotten even better earlier this year when a host of new content modelling options were added with <a
href="https://craftcms.com/blog/craft-5">the Craft 5 release</a> and we’re loving the extra flexibility in creating our data models.</p><p>Aside from <a
href="https://miranj.in/blog/2020/craft-partners">using Craft</a> to power <a
href="https://miranj.in/work" title="Our Work">our projects</a>, Miranj has also released a few utilitarian <a
href="https://miranj.in/blog/2023/our-plugins-are-craft-cms-4-ready" title="Craft CMS 4 updates for our plugins">Craft plugins over the years</a>. We were quick to update most of them with Craft 5 support immediately after the public release, and we have finally gotten around to updating the <a
href="https://github.com/miranj/craft-router/releases/tag/v1.5.0">last (and most complex) plugin</a> as well:</p><ul><li><a
href="https://github.com/miranj/craft-contact-form-tuner">Contact Form Tuner</a></li><li><a
href="https://github.com/miranj/craft-cryptographer">Cryptographer</a></li><li><a
href="https://github.com/miranj/craft-obfuscator">Obfuscator</a></li><li><a
href="https://github.com/miranj/craft-router">Router</a></li><li><a
href="https://github.com/miranj/craft-sheets-to-tables">Sheets to Tables</a></li></ul><p>In addition to these plugins, we also maintain a public <a
href="https://github.com/miranj/craft-boilerplate">Craft <abbr
title="Content Management System">CMS</abbr> starter project</a> which has also been upgraded with Craft 5 support. Hope you find these useful!</p>
]]></content:encoded>
<dc:creator xmlns:dc="http://purl.org/dc/elements/1.1/">Prateek Rungta</dc:creator>
<pubDate>Thu, 05 Sept 24 22:21:00 +0530</pubDate>
<atom:updated>2024-09-05T22:24:22+05:30</atom:updated>
<category><![CDATA[Craft]]></category>
<category><![CDATA[Web Development]]></category>
</item>
</channel>
</rss>