Skip to content

Dr. Stone Version of Building Rails Apps

Imagine stepping out of a time machine that brought you a century forward to today. If you had a chance to build modern software, how do you begin?

Intended Audience: This is meant to serve as a guide for non-techies, no-coders, or L1 coders who’re curious to know more about how products are built using a Ruby on Rails stack. At the end of this tutorial, you would have have built a production-grade app for some web users

In the story of Senku Ishigami, aka ‘Dr Stone’, a scientific genius plans to rebuild civilisation after humanity mysteriously petrified for 3,700 years. Senku wakes up from the petrification and restores humanity using his scientific knowledge.

He starts with creating basic tools and resources, right from learning how to spark a fire, to pottery and metalworking, in order to lay foundations. He then allies with the ‘Kingdom of Science’ members to rediscover and recreate various tech, from simple tools to more complex inventions like electricity, engines and communication devices, space exploration and even finally, reviving the entire human population from petrification.

As an amateur programmer, who is taking baby steps to build more advanced apps using all the latest modern-tech, I sometimes do feel like Dr. Stone. There has been so much progress, was I in a state of stupor so far? How can I get up-to-speed?

I’ve tried multiple times again and again, to build my first full-fledged web application on Rails. I jumped into the pool, and learnt how to swim. I made a lot of mistakes while doing so, and this blog is an attempt to make it easy for you when you do your first dive into the ocean of building web apps.

After six months of attempts in various directions, I realised that the best way I could master the core principles of how Rails apps are built, is by teaching them to the rest of the world. And if I assumed if, you, the listener, had no background whatsoever on programming, how should I deliver this content?

I was thinking of delivering it in the same style which Richard Feynman delivered calculus to his students. Feynman was able to do the start of calculus to the end in four pages in fully connected coherent reasoning.

It, it should have been explained visually, but it was being explained numerically or it should have been explained symbolically and it was being explained in cartography, what, what have you. But they were not able to keep up. And the moment you lose that rung in mathematics, the moment you miss that rung in the ladder, you can't go to the next one because now the next one the teacher's like, okay, we're done with pre-calculus, now we're moving outta calculus. And you're saying, wait, I didn't understand pre-calculus and I understand how pre-calculus leads from trigonometry to calculus. I miss that whole part. So now you get the calculus, you don't underst understand the fundamentals and now you reduce the memorization. So now you're like, okay, dx d y, when I see that symbol I do this. Yeah. But now you've lost the actual learning, you've lost the connection to the underlying principles.

This would be a bit different from other tutorials you would see online as you wouldn’t need much prerequisites. If you can figure out how to get unstuck using ChatGPT, you would be more than sufficient. I wouldn’t also pose as an expert product builder. I know barely something, but just about enough to be dangerous here.

This would be an opinionated ‘learn-to-build-a-product-along-with-me’ version. So let’s get started.

I’ll go with the example taken by Ryan Kulp from Founder/Hacker as an example for a Rails app.

Building a SaaS app from scratch for #BuildSell30
Learn to code with me in person: https://founderhacker.com/campLearn more about me at https://ryanckulp.com.WHAT WE’RE BUILDING: https://docs.google.com/docu…

What’s the problem?

We have seen founders wanting a more intimate space to share their learnings with other founders. Yet, nothing of this sort exists. We see build-in-public founders on Twitter, but it’s not as personal. Email is 1:1 and you cannot send to multiple founders at the same time. Linkedin is more ‘intimate’. How might we create such a safe space for the founders wanting to express intimate details which could even include info on financials, rundowns, startup losses.

Who is the user?

Bootstrapped founders wanting to create personal connections with other bootstrapped founders.

What’s the solution?

An invite-only newsletter swap for founders

Having decided on building a web app for this use case, we then go into the neat little insides on how web applications are built.

What is a web app?

Think about all the websites and web applications you have interacted with? They have a couple of ‘inputs’, and a couple of ‘outputs’. The inputs here could be in the form of buttons, clicks-to-links, entries to forms etc. And the outputs could be that there is a new modal that pops up, a new page is opened, an existing page is modified.

In other words, The web runs on a request-response cycle. The inputs from the user are ‘requests’ that are processed by the server, and the response is fed back to the browser. All this is done using the HTTP protocol. All modern browsers understand how to read HTTP requests. All modern servers understand how to parse requests.

But how does the server parse requests and how does it relay it back to the browser? This is where the databases come into picture.

The servers play more of a game of telephone. They use other data to process the requests better. They might read some files, access other files from other places which are not their own, and then finally provide the response back to the browser. From the image below this is represented as either ‘Internal services’ or ‘External services’.

Let’s say the user presses the Delete button, it might go into the database, and delete a particular entry. Or it adds a new entry into the database.

Process of building apps

We have five key steps to build an application.

I will also add another step here which is to actually talk to the customers. We can live in our imaginary castle hypothesizing, but what if the customer doesn’t really want this? 

So, therefore, having a Step 5. 

Which is to talk to customers. Rinse and repeat.

Rails uses a Server-side Rendering Architecture. Here, the server generates complete HTML and sends it to the browser for rendering. While in Client-side Rendering, the server sends minimal HTML and the browser generates the content using Javascript. Some examples of CSR includes AngularJS, NextJS, VueJS etc.

Now that we’ve brushed off the basics, it's about time to actually start building. It's titled as 'Founders Digest'. It's a monthly "give and get" newsletter tool. You can only access others updates if you share your own confidential stakeholder updates first. These are the techniques that would be covered by building this app — Cron Jobs, Admin Panel, Basic data visualisation, New APIs, Automatic Mailers, User registrations, and Payments via Stripe.

Wireframing

This is where we determine what we need to build. We determined we need—

  • a landing page to explain what this is to visitors
  • an application form (vs registration form) because not everyone will be accepted
  • an accept + reject user flow
  • logged-in user page (no content yet, we just know we need it)

Right now, we just have a vision in our head. We don't have focus groups. We have not started our interviews yet. We would need to think through the experience for users who haven't logged in yet. We also need to think through the experience for users who have logged in. Both would have different sets of flow.

The new user journey might look like this:

  1. Founder lands on the landing page.
  2. Founder applies to get into the newsletter swap service on the Free Plan by clicking on 'Apply' on the landing page.
  3. Founder fills in all details such as Name, Email, Sample Letter, Role.
  4. Founder receives a acceptance email if the invite gets accepted. If they are rejected, they receive a rejection email.
  5. Founder signs up through their email and accesses the dashboard on the website.
  6. On the logged in page, they can see the feed of latest posts by other founders. They could subscribe to any specific person/s on this page.
  7. Once done, they could log out if needed.

We get on to Whimsical and start mapping the pages one by one, starting with the landing page. For nomenclature, it's better to have a numbering system such as 1,2 etc along with the description of the objective of the page. In this case, the landing page will be titled as '1 Landing Page'. This makes it easy to reference later on when we have multiple pages all wired to each other on the whimsical board.

Whimsical makes it easy to use ready made UI components for quickly getting your wireframes to match your thought process.

Here you could see an example of a quick wireframe of a page with some components added up:

In this way, we start wireframing the rest of the pages based on the user journey as shown below:

Now we proceed to the next step which is database modelling. You could follow along all the key pages of the wireframe here:

The Visual Workspace | Whimsical
Whimsical combines whiteboards and docs in an all-in-one collaboration hub.

Founder Letter Wireframe

Database Modelling

What is a database? It's an organised collection of data.

Based on the wireframes, we start thinking closely on the possible database tables that are required.

Database Tables for Founder Letter

UserSubmissions
IF a submission is approved, we will map (copy/paste) the fields to a User record.

-email
-first_name
-last_name
-website
-job_role
-text
-status (pending, approved, rejected)
-user_id (MAYBE)

Users (aka Founders)
IF a user exists, it has a pair to a UserSubmission with status 'approved'

-email
-password
-first_name
-last_name
-job_role
-user_submission_id (MAYBE)
-Digests (aka Newsletters)
high level details, that Users subscribe to.

-title (example: Fomo.com)
-website
-description (example: Monthly updates from a bootstrapped solo founder.)
-avatar_url (example: https://fomo.com/favicon.ico)
-user_id (ex: 5)

StakeholderUpdates
the actual newsletter records containing readable content.

-digest_id (which Digest does this update belong to?)
-content (example: "This month we...")

Subscriptions
what ARE subscribers? just Users with a relationship to other users.

-digest_id (example: 4)
-user_id (example: 2)

This is also represented on a block level using an Entity Relationship Diagram as shown below:

Only the UserSubmissions which have been approved become Users. Each User can have a Digest. Each Digest can have Stakeholder Update. Each Subscription is a parent of Digest and User.

What is the difference between a database table and a model? Why are some singular and some plural?

The database is where data is actually stored. The model governs interacting with that data for the rest of the application. The goal is to separate the details of how data is stored from how it is used.

In Ruby on Rails, the naming conventions for databases are specific and follow a set pattern to maintain consistency and compatibility with the framework's underlying structure:

  1. Model names should be singular. Models represent an individual instance of an entity. For example, if you are dealing with users, the model name should be User.
  2. Database table names should be plural. Rails uses this convention to represent the collection of model instances it contains. So, following the user example, the corresponding table should be named users.

These conventions help in distinguishing between singular instances (models) and collections of instances (tables, controllers)

(to be continued)

Obsessing over personal websites

Intended Audience—For those of us who have attempted to make a personal website of their own and have guilt-tripped over making multiple updates every year

I’ve been obsessed with my personal website. It’s not even about the views and impressions which I’m receiving. I have one subscriber on my mailing list from my website, and compared to internet writer standards, I am virtually non-existent. 

Yet, I care deeply about this little corner on the internet. It's a place where I optimise for depth over engagement and audience-building.

It’s my resume, my business card, my store, my directory, as well as my own personal magazine. It’s that one place online that I completely own and control.

As David Perell puts it, it's one's own intellectual real estate.

I’m obsessed with it enough to keep revamping my website every year. Just like the corporate re-branding exercises we’re familiar with, I do my own rebranding for my personal website. I reflect on what is NOW my personal brand. I sometimes redo the styling, the fonts and the formatting from scratch and start with a clean slate. I sometimes redo my writing based on my current thinking style and philosophy.

Previously, my favourite font of choice was Karla, then I switched to Poppins, Assistant, Inter, Helvetica Neue and now I'm falling in love with antique serif types (such as the one you see here in this blog)

Every time, I looked back at my previous work as depicted in my website, it felt shitty, and poorly done. But that was the whole point. The new version of yourself would never be satisfied with the previous work you've put in. I think @reidhoffman’s “If you're not embarrassed by the first version of your product, you've launched too late” applies well here.

I now had newer updated standards. My personal website updates have mapped my personal evolution over time, as well as my current standards of quality work.

My first website was a Tumblr blog containing a roll of all my photos under one roof. Back then, I identified myself as a photographer, and wanted to showcase this skillset to the world. Slowly, with more and more experiences, the labels which I used to define myself changed. Four years back, I was labeling myself as a ‘UI/UX designer’, and tried to showcase my love of design through my portfolio site on Wix. The objective of this site was to help in job conversions. I wanted recruiters to look at my website and ask for an interview. My way of achieving this was to put mountains and mountains of work online, and in public.

Whenever there was a reference to my previous work, I mapped the portfolio project links to keyboard shortcuts to make it easier to share with the headhunters on chat windows. And whenever I got an opportunity, I shared my screen, and took them through my work reel. I’d obsessively documented my work and my projects. And I was proud of it all.

 A sure shot way to demonstrate my competence and core skills. Share widely, engage with peers. Debate/collaborate with folks who approach me through my website. Leave behind a legacy online.

And I waited for job offers to roll in. And it did!

My current role as a Product Manager at Noora Health was a result of this building-with-my-garage-door-open-stint.

I had my skin-in-the-game as well as my soul-in-the-game.

This year, I wanted to revamp my personal website with a focus on writing. I’ve been lately viewing writing as a form of thinking, and I wanted to condense and crystallize my ideas into one roof. I redesigned my website again with this brief in mind.

Ghost website now pointing to blog.shreyasprakash.com

This was a setup I was satisfied until I realised how all those javascript animations and micro-interactions were killing the load time and performance of the website. It was at this junction that I discovered this site.

I wanted to make my site more 'simple'. So, I dumped the earlier direction of a '13 megabyte parallax-ative home page prepping for some awwward banner on the top corner of my site'. I just used simple HTML5 tags, deleted all the complex JS and checked the performance speed again.

The site was just 8KB, and had a 100% performance rating as per Google PageSpeed Insights

My current website reflects a lot of my ideals here. I dumped my original plan of making it more 'designerly', and went for simplicity instead. Simplicity is the ultimate sophistication.


Simple not just on the front-end, but on the back-end too. The front end blog is hosted on Ghost, an open-source platform for publishing blogs. The blog currently points to blog.shreyasprakash.com, and I have wrapped it on my personal domain as an external wrapper. I’ve been an aspiring founder/hacker, and have started to care about why and how my blog/website is setup. Also planning to setup a /now page to talk a bit more about my daily diaries and current updates. It would serve more as a one-to-many social network where I could post more ephemeral updates. 

I’m inspired by Derek Sivers to eventually migrate my email service provider as well as my file storage on a digital ocean droplet. Let’s see how it goes!

Instead of routing my internet friends to an external site, I want them to land on my website first. I’ve started to think long term and have come to a realisation that individuals last longer than companies. With the emergence of ChatGPT and other large language models, even a giant like Google is actively contending with significant competitive pressures. This situation highlights that no company, regardless of its size, is shielded from market challenges and competitors.

I want my website to be a definitive place to get everything I create. I will still continue to put stuff on some other company’s sites (such as Twitter tweets). However, they would be secondary copies and not the primary source.

Eventually, I want this to be my 'root'. I can fork it wherever I want.

English is the hot new programming language

It's the best time to learn coding, no matter what your profession is.

Intended Audience—Indie no-code developers, digital marketers and other non-tech professionals working in tech

I made a resolution for 2024 to learn Ruby on Rails, a controversial web development framework famous for maximising developer productivity. In the business of building and growing products, I wanted to be a self-taught developer too.

Sketch inspired by Henrik Kniberg's presentation on cursor.sh

The goal behind my trite, cliched new-year resolution was to get to a point where I could build apps in a weekend. I have been day-dreaming about a state where—I get a shower-thought, I write code, and in 2-3 hours, I have a production-grade software that’s ready to roll. An end goal of shower-thought driven software engineering was my final objective.

After a brief affair with no-code apps where I tried to achieve this agility (Bubble, Softr, Glide, Framer), I realized that most of these apps were platform-dependent. You couldn’t export your code. You had more lock-ins, and lesser customisations. It was this meme all over again:

I realized that hard-coding was the only way. So I dived deep into Ruby on Rails this year. And to ingest and digest it as much as I can, I’ve been racing past the Learn Enough tutorials by Michael Hartl for the last two months. I also ended up binge watching screencasts from Ryan Kulp’s Founder Hacker course for an added perspective. The first red-pill moment was when I built my first ruby script to solve my own scratch on making wikipedia imports into Obsidian easier, I started gaining more technical sophistication to make quick things and ship it for myself.

My progress in hacking my way around, learning about enough coding to be dangerous, and also racing through different steps of the web development (Git, IDEs, HTML, TypescriptCSS, JS, Ruby, Ruby on Rails) would have not been possible without asking the most stupidest of my questions to ChatGPT as a newbie, amateur, rookie developer.

From the Founder Hacker course, where Ryan Kulp builds a Ruby on Rails app live on Youtube

I’ve found bugs in the code, copied the error without understanding into ChatGPT and then again back to the IDE to make changes and see if it works. And I’ve realised that the barrier for designers to code and bring their designs to life is getting narrower over time. You’re literally ‘spellcasting’ to get your code out, by just chatting with the LLM. 

From tl;draw to Diagram and Galileo AI, we’re seeing instances where prototypes are being built at the speed of the ‘mouth’. Every type of programming becomes a conversational design piece – text to text, text to video, text to code, text to game, text to UI, text to 3D prints, etc.

Over time, I’ve realised that I am not actually learning Ruby on Rails. I’m learning a way to ask around and figure out in plain English. I’m building stuff by prompting. To name a few:

  • A simple web UI
  • A telegram chat for meal planning
  • Ruby on Rails UI components adapted to TailwindCSS

LLMs are the closest thing in the real world to magic, and prompts are the magic spells. Just like spelling wingardium leviosa, you’re typing carefully curated prompts. We’re seeing examples such as Promptbase where prompts are secret magic-spells being traded on the marketplaces. (I'd earlier shipped Prompt Hero to ride on this wave)

PromptBase | Prompt Marketplace: Midjourney, ChatGPT, DALL·E, Stable Diffusion & more.
Search 100,000+ quality AI prompts from top prompt engineers. Produce better outputs, save on time & API costs, sell your own prompts.

With the rise of LLM-backed coding assistants, I’m not even copy+pasting into ChatGPT questions anymore. LLMs are being tightly integrated into the codebases through these coding assistants. I’ve been recently using cursor.sh, an AI-native IDE. They can now read, explain code, document code, write code, autocomplete it, diagnose issues, and even perform arbitrary IDE tasks. Everything is pretty cool, right?

In the final stage of developer productivity, AI-native IDEs seem to be the direction where the world is heading. English is the hot new programming language, and I’ve been coding in English using these AI-native IDEs. 

We’re now seeing a new breed of design engineers, who could both design and ship code at the same time, improving the production cycle between building and shipping software.

It somehow seems like a great time for anyone, be it an architect, product manager, roadside cartoonist, sociologist, to be a design-engineer first. If all we need is english to code and build products, then who is stopping us? 

Everyone can now do shower-thought driven software engineering if all that’s needed is crafting good prompts.

Update: Devin enters the chat.

The role of taste in building products

Taste is one of the hardest things to talk about in the product circles. So, let's talk about taste.

Take Marc Lou, a familiar figure within the Twitter Indiehacking circle. He's garnered attention for openly sharing his journey as a product builder. This transparency has piqued interest in his projects well before their launch, as followers have grown to appreciate his distinctive approach. A notable instance of this was the excitement around his AI logo generator, which swiftly climbed to the top spot on Product Hunt. Despite its remarkable simplicity, the product captured the audience's attention, largely because the audience already understood the creator's taste.

LogoFast - Product Information, Latest Updates, and Reviews 2024 | Product Hunt
Choose your hero icon, splash on some color magic, give it a twirl, and voilà – your stunning logo’s ready to shine! 🌟 Or let our AI wizard craft the perfect emblem for you, no wand-waving required!✨

LogoFast on Product Hunt

Unlike indie hackers, and other product builders, companies do prioritise rigorous A/B testing and data-driven decision-making. As the projects involve larger teams, and processes, they subscribe to the philosophy of 'letting the data do the talking'. Take this snippet from Flo Health's Medium blog here for example. Each and every feature is rigorously tested and experimented before going live.

Flo experiments dashboard as shown on their Medium blog

However, a shift is occurring in this mindset.

People are considering taste and sensibility, despite the fact that taste is one of the hardest things to talk about.

Brie Wolfson describes this inexplicability in his essay on Taste—

When I ask people what they mean by “taste,” they’ll stumble around for a bit and eventually land on something like “you know it when you see it,” or “it’s in the eye of the beholder.” I understand. Words like taste are hard to pin down, perhaps because they describe a sensibility more than any particular quality, a particular thing. We’re inclined to leave them unencumbered by a definition, to preserve their ability to shift shapes. But I don’t think we have to. And for the past several months, I haven’t been able to resist the urge to try to articulate taste.

This comes, in part, from a place of wanting to be precise — now that the term is such a frequent and varied part of our lexicon, it runs the risk of losing its meaning.  But I also believe taste is something we can and should try to cultivate. Not because taste itself is a virtue, per se, but because I’ve found a taste-filled life to be a richer one. To pursue it is to appreciate ourselves, each other, and the stuff we’re surrounded by a whole lot more. So, how to wrap my arms around this term in a way that captures its spirit without flattening it?

I can’t think of a piece of writing that does this more effectively than Susan Sontag’s “Notes on ‘Camp.’” In her words, “a sensibility is one of the hardest things to talk about... To snare a sensibility in words, especially one that is alive and powerful, one must be tentative and nimble. The form of jottings, rather than an essay (with its claim to a linear, consecutive argument), seemed more appropriate for getting down something of this particular fugitive sensibility.” 

Consider the approach of Linear, a company that diverges from the data-dominated decision-making model. Linear emphasizes the importance of taste and opinion in validating ideas and assumptions, rather than relying solely on A/B testing and metrics. This approach is about trusting one's gut in a product's readiness for launch, based on qualitative feedback and iterative improvements.

With certain projects, we might pull up specific data or metrics to see if the data gives us any more insights, but it’s not the way we make decisions. We don’t do A/B tests. We validate ideas and assumptions that are driven by taste and opinions, rather than the other way around where tests drive decisions. There is no specific engagement or other number we look at. We beta test, see the feedback, iterate, and eventually we have the conviction that the change or feature is as good as it can be at this point and we should release it to see how it works at scale. — Karri Saarinen, CTO of Linear

This perspective is shared by Jason Fried, Co-Founder of 37 Signals (makers of Basecamp and Hey). Fried challenges the notion that everything must be A/B tested, questioning the practicality and relevance of 'statistical significance.'

I am not driven by data, or I don't have different P&Ls for each product in a way where we're looking at them very carefully. It's in total, collectively, are we making more money than we spend? That's the only thing we ultimately look at, whether or not this product is more profitable than that product, and this is behind that, it's all the things we do. It's all the things we do. I don't even think you can actually draw lines back to everything and go, "That was worth it. That wasn't worth it." What is the value of saying thank you to somebody? Would you want to A/B test that and, if it turned out that it was worse to say thank you to somebody, would you not do that? No, you would do it because it's still the right thing to do. — Jason Freid, Basecamp

He argues for a more holistic view of success, focusing on overall profitability rather than the minutiae of individual product performance. Yet, the essence of 'taste' remains somewhat enigmatic. It involves an understanding of what makes a project or product resonate, balancing quality, appeal, and budget.

But there are some great examples showcasing this. Apple's approach to sustainability reporting exemplifies this. Apple provided a new spin to the boring 10-page report format, focusing instead on a creative ad campaign outlining their efforts in a smart, eye-catchy fashion. They could have done the same thing in a more convenient format, but they chose to do it differently.

Apple provided a new spin to the boring 10-page report format, focusing instead on a creative ad campaign outlining their efforts in a smart, eye-catchy fashion.

As Brent Schlender describes in "Becoming Steve Jobs," Apple's resurgence from near-bankruptcy was driven by Jobs' ability to harness 'trusted auteur directors' to realize a singular vision. Airbnb's Brian Chesky also embodies this concept of taste. His 15-year journey in developing a nuanced understanding of both the demand and supply sides of Airbnb's service has culminated in a distinct, qualitative essence that defines the brand.

Taste is nothing but intuition translated to action.  It's your System 1 in action. A firefighter immediately notices thick smoke billowing from the house. All the years of training and experience has honed his instincts, and snap-second judgements. In split seconds, the firefighter is deciding on calls to backup, begin immediate entry, as well as identify escape routes to rescue victims.

Taste is nothing but intuition translated to action.

Who should steer the course of a product's development – data-driven product managers or visionary auteurs? Should the focus be on relentlessly testing every modification and feature addition, or should we trust in the guidance of these auteur directors to fulfill their promise of impeccable taste?

World's most ancient public health problem

Maternal mortality rates have remained stubbornly static over the past 8 years, and in some countries, from the United States to Venezuela, they have risen.

From the place I come from, in Kerala, a baby is not given a name until he/she is 28 days old. And for marginalised castes/communities, the naming ceremony is delayed to 90 days. I never really questioned as to why this was the case. I let it become a ritual system until I overheard a conversation between some of our family members. This was mainly because the chances of a baby surviving was very low in our previous times. So our forefathers temporarily delayed the naming ceremony to avoid the emotional downpour if things go south. And for marginalised communities, the mortality rate was even more low owing to the difficult circumstances.

Knowing this reality shocked me. We might have more complex challenges facing the world right now — AI taking people’s jobs, climate change induced shock waves, food insecurities, refugee rights, future pandemics etc. But I believe that the cause of addressing maternal deaths requires the most urgency. When a mother dies during childbirth, the future dies with her.

This death happens 800 times a day. Worldwide. Once every two minutes, a mother dies from complications due to childbirth.

By the time you would have finished reading this introduction, there might have been a few maternal deaths.

According to this report by Bill and Melinda Gates — Every year, approximately 5 million children die before they reach their fifth birthday. Nearly another 2 million babies never take their first breath—they’re stillborn. Although these deaths have continued to decline since the mid-2010s, they’re not declining fast enough, especially for infants. Most child deaths—74 percent—happen during a baby’s first year.

It’s a remarkable irony that we’re still way off when it comes to maternal mortality rate. Even despite breakthrough progress in wide range of global challenges. AIDS medicines, contraceptives, bed nets to prevent malaria, childhood vaccines, even Tuberculosis for that matter.

If you notice the figure below, you’ll only see a 3% annual decline from 2000. We’re way off the SDG target of reaching less than 70 deaths per 100,000 live births.

It’s also a strange problem as it’s not just solved by overall economic development of the respective country. Globally, maternal mortality rates have remained stubbornly static over the past eight years, and in some countries, from the United States to Venezuela, they have risen. 2

Let that sink in a bit. United States has seen a surprising rise in their MMR post COVID. The death rates of black mothers in UK and US have doubled since 1999. There is a huge opportunity for all of us to save millions of lives. If we are able to make more innovations accessible to the LMIC countries, almost 6.4 million lives could be saved by 2040.

We need innovations of all forms to tackle this. Not just technical innovations, but we need systemic innovations too. At Noora Health, we understand the power of health education training, and how that could have a profound impact for parents and their families. Our way of tackling this challenge has been through the systemic front.

Service walkthroughs for social change | The Companion
A low-resource and high-impact alternative for exploring, evaluating, and communicating services within social impact organizations.

An example of how we do service walkthroughs at Noora Health

By providing the right information at the right time, the curriculum is able to help new parents and their loved ones navigate this journey. For newly delivered mothers, it could be the first days for a newborn. For an expectant mother, it could be during the entire antenatal period.

Picture Courtesy: Noora Health
Picture courtesy: Noora Health, Indonesia

Once a patient is discharged from the hospital, it’s the family who takes care of them. By imparting health education to the family, various risks are avoided. We want to tap into this unlimited resource. This, to us, is a systemic innovation as the desire to help people we love is universal.

The Care Companion Program (CCP) model at Noora Health is uniquely designed around a set of principles that are known to promote behavior change, but aren’t often implemented and rarely in combination:

  • Family Centered, engaging the family member vs. the patient who is often exhausted and trying to recover;
  • Timely, providing caregivers what they need when they need it;
  • Trust-Based, anchoring on healthcare staff who families trust,
  • Skills Oriented, focusing on equipping families with actionable skills that drive health outcomes;
  • Reinforcing, supporting caregivers throughout their journey from the hospital to home, not just at one time.
Effect of CCP
Effect of CCP
Care Companion Program being conducted across hospitals in India. [Source: Noora Health]

After leaving healthcare facilities, caregivers have access to the Noora-managed Care Companion Platform, which helps reinforce and supplement the skills and information received. Caregivers sign-up at the hospital, and then receive tailored information at scheduled points in time, including reminders and new content, most often via WhatsApp.

The Platform also provides on-demand support. Caregivers can ask questions that are fielded by Noora’s clinical team of nurses, who either clarify or supplement behavior change advice (e.g., steps for wound care, diet advice for diabetics), or provide advice on when symptoms warrant a healthcare facility visit.

While this level of support may seem daunting to provide at scale, 95% of the questions received can be answered from a bank of Frequently Asked Questions and only 5% require escalation to our team of doctors and specialists.

In this way, by looking at health education through a more systemic lens, we’re able to provide crucial information for the caregivers at each and every phase of their journey.

Dear enterprises, we're tired of your subscriptions

Software is eating the world. But are we eating it the right way?

When you build a SaaS app, how do you price it? The first option which comes to everyone's mind is a monthly/yearly subscription model.

While building Clarity notes, I was stuck with a usual question when it comes to building a SaaS—How should I price the app? We settled on the usual monthly/yearly pricing structure. It included a free version to allow users to try out the YouTube note-taking feature as well as a Pro Plan involving all the advanced features not available in the free version. We also tailored an Academic Plan, offering students an affordable option to take notes on YouTube.

We had a successful initial launch on Product Hunt, #3 Product of the day, and later being a finalist in the Golden Kitty Awards.
We had a successful initial launch on Product Hunt, #3 Product of the day, and later being a finalist in the Golden Kitty Awards.

I was not an expert in pricing while launching this app. However, it took me time to explore the various options available for pricing in general. If we take the mythical thirty thousand foot view, no matter what we’re actually doing with pricing, whether it’s a — non profit, retail, SaaS, DTC etc — we’re ultimate in the business of value creation. Price, after all, is the exchange rate on the value we’re creating in the world. In Pricing 101, the monthly subscription plan is just one of the many possibilities to set the pricing. There are multiple such value metrics, such as — per seat per 1000 visits, per CPA, per GB used, per transaction etc.

Circling back to the value metric of a monthly subscription we tried out for Clarity Notes, when viewed in isolation, this case might appear appealing — after all, who wouldn’t be tempted by a service costing less than a cup of coffee a month?

Yet, when considering the broader context of numerous SaaS apps and subscriptions vying for a user’s attention, the allure diminishes. In today’s gig economy, there’s a growing trend towards renting rather than owning everything — from daily news sources like the New Yorker to music playlists on Spotify, and even on-demand video services like Netflix and YouTube.

Most SaaS models come with a monthly/annual subscription plan with an option to try it out for a limited period of time
Most SaaS models come with a monthly/annual subscription plan with an option to try it out for a limited period of time

Sure, there are some costs associated with running software — ranging from customer support, cloud storage etc that could justify the monthly subscription model?

I came across this graph in Lenny’s newsletter which depicts the opportunity cost of not setting the pricing to the right value metric. We’re missing out on revenue by charging just a flat monthly pricing.

If you remember back to your high school or college economics class, the professor put a point on a demand curve for the perfect price and said “the revenue a firm gets is the area under that point.”

The problem here is — what about all that other area under the curve? You’re missing out on that revenue by charging a flat monthly fee. 

37signals rolled out an antidote to SaaS monthly subscriptions models with Once, which is a heretic to what it calls the “Church of Recurring Revenue” by selling software the old fashioned way: pay once and host the software. Just because software isn’t sold in a box doesn’t mean it has to be a subscription. “The post-SaaS era is around the corner,” promises Jason Fried, CEO of 37signals.


SaaS still makes sense for many products, but its grip will slip. Installation and administration used to be hopelessly complicated, but self–hosting tech is simpler now and vastly improved. Plus, IT departments are hungry to run their own IT again, tired of being subservient to Big Tech’s reign clouds — Jason Fried

Enterprises might also be facing various other hidden costs apart from hosting tech and providing customer support. Take this software for example — Audionotes.pro

The wrapper on top of another wrapper on top of another wrapper
The wrapper on top of another wrapper on top of another wrapper

It’s an application helping you take automatic transcriptions of your audio notes. Audionotes is basically a Bubble application made on top of a GPT-4 API helping process and summarise notes better. It’s a wrapper on top of a subscription wrapper (Bubble) on top of another subscription wrapper (GPT4 API). And we pay for all the wrappers together (as a subscription)

In the long term, the users pay the brunt and might churn from opting into these subscriptions. (It’s one big pyramid scheme of subscriptions for the user). We also cannot blame the enterprises as they are also heavily dependent on various other enterprises offered as subscriptions.

Taking these factors into account, I’ve realised that Clarity notes is not just competing with other Youtube note taking apps, it’s also competing with Youtube, Netflix, Spotify etc. All of us are eating into the same monthly salary, piece by piece.

Which makes us think — Are there any alternative pricing models when it comes to SaaS products?

We’re seeing various innovations in SaaS pricing. Let’s look at five different software pricing models that don’t default to a monthly subscription model.

Lifetime deals

Once you purchase and redeem a lifetime deal, you have access to that tool for the lifetime of the product.

This might seem like a great option for users. You pay once and forget about it. The company also can benefit from the immediate capital injection. They are phenomenal for getting early adopters onboarded FAST.

However, growth might slow down when the lifetime deals end. In this regard, monthly subscriptions are considered a more sustainable offer for the enterprises.

Not just that, with lifetime deals, there is also this risk of complacency in updating and adding new features. However, in subscription models, this comes as a part of the package. Indiehackers place their apps in SaaS boutiques such as Appsumo for getting more visibility.

Framer keeps the feature updates visible through their highly active Discord community (Big fan of Benjamin’s community strategy BTW)
Framer keeps the feature updates visible through their highly active Discord community (Big fan of Benjamin’s community strategy BTW)

Lifetime deals + Monthly subscriptions

iA, the popular writing software has a very contrary take on their SaaS pricing. They offer both. They provide the customers and option to either buy or subscribe.

We tried different things before. We tried high prices, mid-range prices, low prices, free, and freemium. Getting Android users to pay for software is not for the feeble-hearted. So far, offering a free basic version with a choice between paid and subscription seems to be the only thing that works. And that doesn’t mean we buy yachts, it means that we might be sustainable in one or two years.

Surprisingly, the revenue share between one-time payments and monthly subscriptions for iA has been a tie—50/50.

Buy Once + Host on your own server

If we circle back on the definition of a lifetime deal — Once you purchase and redeem a lifetime deal, you have access to that tool for the lifetime of the product.

Apart from the quick capital injection, it might not be sustainable for the enterprise as one might still need to pay for the hosting. These marginal costs might creep up over time.

Jason Fried, the CEO of Basecamp has a new spin to the pricing story. Through Once, they plan to provide users the ability to host the software. They just have to pay one-time for the software, and the rest is up to them to host it the way they would like.

Introducing ONCE, a new line of software products from 37signals. Pay one time, own forever. We write the code, you get to see it. We give you the software, you get to host it. Simple and straightforward, not enterprisey and bloated. For one fixed price. Once.
From the landing page of Once
From the landing page of Once

Pay per task

Zapier, a company valued at $5 billion, revolutionized its pricing structure by introducing a “pay-per-task” system, moving away from the traditional monthly subscription model.

Pay-per-task, as an emerging model, reflects a nuanced understanding of customer preferences and a commitment to meeting their specific needs. This shift is likely driven by growing dissatisfaction with monthly subscriptions. Take, for instance, our annual expenditure of approximately $40,000 on Figma. Each monthly bill is a reminder of the disconnect between our usage and the costs incurred.

Alternatives like pay-per-pixel, pay-per-project, or one-time purchases are increasingly becoming more appealing.

Software Couture Houses

Recently came across Andy’s !Boring — an independently owned software couture house.

Under the !Boring umbrella, Andy has launched a suite of apps — WeatherCalculator, and Timer(Not Boring) Habits wildly amplifying a pretty mild-mannered category, tearing down the traditional approach in favor of eye-popping aesthetics, zingy haptics, spiffy 3D animations, and plenty of the delight and fun that nabbed the app its 2022 Apple Design Award.

They are designer-labelled, contrarian, and far from the default. As the title claims to ‘ditch the default, and to support interesting’ —

“It’s about adding something extra,” says Allen. “You can write a to-do list on a piece of paper and it works just the same, right?” If strict practicality is your goal, the app ecosystem is swimming in weather apps and habit trackers, and Allen is the first to admit that (Not Boring) apps aren’t for everyone. “But,” he says with a smile, ”they’re definitely really for some people.” — Apple Developers

How does the pricing work? — You pay for the membership and get access to the entire range of apps that are developed by Andy. It’s more like a SaaS, but instead of paying for one app, you pay for the whole gamut of apps. It’s a bit different from an aggregator such as Appsumo as it’s not a collection of curated applications.

I foresee many such software couture houses.

What’s next?

Historically, we have always taken the stance of function over form, and to just GET THE JOB DONE. However, this very act has backfired in some cases. People don’t just seek utility, but also fun and delight.

I just wanted to conclude this incomplete essay with a quote by Verganti, a pioneer in design-driven innovation—People don’t buy products. People buy meanings.

Dear enterprises, we’re tired of your subscriptions. We seek newer meanings and want to rethink our relationship with software.

It’s nice to see various such relationships emerge, as shown from the earlier examples — ranging from renting, to owning, to renting partially, to owning a suite of apps, to even renting a suite of apps. Software is eating the world. And let’s make sure that it eats the world the right way.

Products need not be user centered

We've used the word 'user-centered design' infinite times, over and over again. We've even forgotten why we use it.

Putting the user first has always been the golden rule in design. It’s so common that nobody really questions it anymore. We’re told, ‘The user knows best. Listen to them.’

I’ve had my skepticism about the framing of the term — user-centered design. I’ve kept myself from voicing this apprehension, afraid of being dismissed as an outright blasphemy in the design circles. However, having shifted gears from design to PM roles, I feel more comfortable expressing a spicy hot take that — Products need not always be user-centered.

So what’s the problem here with user-centered design?

Imagine you’re crafting a product for Michael Johnson, a fictional character representing the ‘average’ user: a 38-year-old IT project manager juggling work and family life. This approach, while seemingly comprehensive, inadvertently overlooks the diverse spectrum of users with unique needs and preferences. This is the essence of the ‘long tail problem’ as articulated by Kasey Klimes. It states that focusing solely on the average user risks marginalizing those outside this central demographic. The product ends up serving the gaussian middle.

User-centered design by default tends to get optimised for the average. It implies a focus to the right profile of a user. And that’s NOT always the right approach. We just have so much variance in the users, that I sometimes wonder: how do we expand the scope of a product from the gaussian middle to the long tail?

There is a way of addressing the long-tail problem, but it requires a very different paradigm for thinking about the way we design products, tools, and services. We can call this paradigm design for emergence. — Kasey Klimes, Design for emergence

Fortunately, there is a new kid on the block — and that’s design for emergence. This concept finds its roots in Seymour Papert’s emphasis on ‘low floors’ and ‘high ceilings’ in technology. According to him, technology should be accessible for beginners (low floor) yet offer advanced users the scope for complex projects (high ceiling). Think of LEGO, with its simple yet versatile bricks, offering endless creative possibilities — that’s this philosophy brought to life.”

Low floors: could make any object with the least number of pieces. High ceiling — you could even make Optimus Prime from Transformers if you really want to
Low floors: could make any object with the least number of pieces. High ceiling — you could even make Optimus Prime from Transformers if you really want to

Subway is another example. A sandwich is made composable. You can choose your toppings, the patty, the sauces in a truly unique way. There is no one ‘right’ way for the ‘right’ user. There are multiple ways for multiple users. By designing products with low floors, wide walls and high ceilings, every fringe user can now use the product the way they want it. Even coffee has become ‘composable’ this way.

An example of how a sandwich is made composable
An example of how a sandwich is made composable

Designing for emergence is just that. Products with “low floors” and “high ceilings”. Let’s take a couple of digital examples where this has stood out:

Taking Notion for example, where a document processor becomes infinitely composable through infinite ‘content blocks’.
Taking Notion for example, where a document processor becomes infinitely composable through infinite ‘content blocks’.

Zapier makes automations infinitely composable through its automation blocks

Arc makes browsers infinitely composable by providing users the ability to make multiple workspaces and customising it the way they want. They even go further providing art tools to even choose the font and styling of the user’s apps
Arc makes browsers infinitely composable by providing users the ability to make multiple workspaces and customising it the way they want. They even go further providing art tools to even choose the font and styling of the user’s apps

If we classify software in terms of an axes between convention and configurability, on one extreme, you have the DIY types: like Notion built on the principle of composability through content blocks. On the upside, you see people use Notion for all kinds of purposes such as — wiki, project management, CRM, documentation etc. Notion definitely has a high ceiling. However, on the downside, it suffers from ‘too much’ composability leading to featuritis. Features keep getting added, which affects the speed, stability and performance in the core features that defines the essence of Notion (high floor)

Configuration through composability is great. But there are times when you would rather choose a full course buffet curated by a chef, than being given 100 different options to choose and customise on your own. This is where the other extreme lies. Design which chooses convention over configuration. Ruby on Rails is opinionated software, where a team of chefs have picked ingredients on our behalf. As DHH puts it, it isn’t meant to appeal to the taste of everyone, everywhere. This works great when the user doesn’t really know what to look for.

There are lots of à la carte software environments in this world. Places where in order to eat, you must first carefully look over the menu of options to order exactly what you want…Rails is not that.

Rails is omakase. A team of chefs picked out the ingredients, designed the APIs, and arranged the order of consumption on your behalf according to their idea of what would make for a tasty full-stack framework. The menu can be both personal and quirky. It isn’t designed to appeal to the taste of everyone, everywhere.

When we, or in some cases I — as the head chef of the omakase experience that is Rails — decide to include a dish, it’s usually based on our distilled tastes and preferences. I’ve worked in this establishment for a decade. I’ve poured well in the excess of ten thousand hours into Rails. This doesn’t make my tastes right for you, but it certainly means that they’re well formed. — 
DHH on this blog.

Apparently, it’s not just DHH and Ruby on Rails, but also how Tesla was envisioned by Elon Musk:

Taking these different philosophies into account, it would be harmful to consider ‘user-centered’ design as the only way to build products. You can design products in DIY, composable ways as illustrated by LEGO and Roblox. Or in Omakase, conventional way as shown by Ruby on Rails.

Products need not always be user-centered. It can be emergent too, accomodating a varied spectrum of users to use the product.

How might we help children invent for social good?

What surviving an attack from a man-eating tiger has taught me about invention and rural entrepreneurship

I stayed in a tribal village in India for a year teaching children leadership skills through design thinking. Here’s a story behind my non-profit initiative and how we’ve impacted 1200+ children from 3 rural areas (also a short segway in which I was chased by a man-eating tiger)

Can children invent for social good?

How might we enable children to be at the frontiers of social innovation?

We expect kids to do kids-related work, but what if they stepped up as leaders and gave back to their community? This was the guiding question behind this social initiative.


As an impact initiative, we followed the open innovation framework for structuring our work. Systemic change does indeed take time. 1-2-3 or even 5-10 years to have something tangible. Most of the social innovations got stuck at prototype/scaling stage which we wanted to avoid.


I stayed with the locals in the tribal village of Maharashtra, India to understand the context. To bond with the villagers, I actively involved as a teacher, helped with the jaggery production and rice harvesting. The day ended with copious notes from all the observations.


Lobhi village was quite remote and secluded. Lying amidst a thick forest belt often frequented by leopards and tigers. This is a picture that I took while being chased by one of these man-eating tigers which visited our village during summertime (yes, I live to tell this story)

While working with rural children closely, I was baffled by their creativity. Less was more!

They build upon innovative ideas using fewer resources. They played with flowers, fruits, clay and even dried leaves. The play didn’t require plastic toys or some fancy 3D printers


Yet, at the same time, their creativity was underutilized. 70 percent of India’s workforce resided in rural areas but only 20% of the graduates were workforce ready. The ethnography studies led to the formulation of our social initiative.


2+ years of experimentation in the form of pilots in rural schools helped us to carve out this program. We aimed at providing leadership skills through design thinking. The program was divided into three phases (unconditioning, critical thinking & design thinking)


Why design? Because design is not just about making cute little drawings, but so much more. You could think about problems critically and solve them. We believed in the vision of nurturing such young changemakers through design.

As a product of the traditional educational system, you had to do a lot of ‘unlearning’ to look at problems differently and to tackle them. The first phase of our program did exactly that. Letting your mind unlearn, and to let your creativity juices to flow more freely.


We also observed a lot of students getting stuck with creative block to build and explore. So we designed various challenges to create an enriched visual library of mechanisms, structures, materials and applied science/maths for the kids


This is one such example from an activity which we designed. The challenge was to build a bridge that could hold their own weight using popsicle sticks


This is another such example from the design thinking phase. The students were asked to go for nature walks and document their observations. In this manner, the core values of observation, empathy and team work were reinforced among our children.


The vision was focused towards building self-reliant student leaders from the community. The OECD Learning Framework 2030 was followed to make sure that the knowledge, skills and values were aligned through our curriculum.


The tap (money) shouldn’t run dry, even if it is for a good cause. So we systematically injected funds through external grant agencies and crowdfunding support. The financial capital was leveraged along with social capital (media, mentors, hackathons) to scale impact.


Will take you through some examples which I personally consider as a ‘systemic change’ for the communities.


Our students build 12+ innovations over the course of time. The beauty of these innovations were the simplicity and resourcefulness and the ‘jugaad’ (frugal mindset). Local solutions developed locally by the locals


Among the innovations included a pole climber (risk free climbing of poles by electricians), smokeless chulha (smoke-free mud stove), grass scythe (for wheat harvesting), leaf plate machine (local production of sustainable leaf based plates) etc


Firewood carrier: Helping farmers transport firewood through a bamboo based carrier. Slurry Maker: Clog-free slurry for biogas plants intended for cooking. The kids went through the design thinking process and developed these innovations


After seven months of lobbying, a one-of-a-kind children-led makerspace was established!

This provided the students with a platform for expressing their creativity. The students also actively involved with the community (farmers, artisans etc) and co-created solutions with them


A couple of our student innovators also got scholarships and were award recipients for their impact work. All these observations were published as a book titled ‘Rural Design Toolkit’. This was meant to encourage all our young grassroots innovators :)


One of the innovations (smokeless chulha) also achieved significant maturity for taking it forward in terms of production. A group of 8 women members formed a team and were trained by the student innovator to take it forward as a social enterprise.


The systemic shift is still quite a hefty word. More than the innovations and the enterprises formed, the mindset shift which we observed is what we are the proudest of. From ‘What can the government do for us?’ to ‘What can we do for the community?’