Kabir Shah


I am a maker aspiring to find elegant solutions to complex problems.

September 16, 2018
 // views

Hey Kabir! Tell us a bit about yourself.

I am a 14-year-old student and maker based in California. I began programming when I was 8, and I have always been interested in the technology that powers the modern world. I’ve lived in various different places across the United States and love traveling. In my free time, I enjoy doing calisthenics, programming, making music, and playing soccer.

What are your main side-projects?

My main side project is Moon, a minimal and fast compiler for building user interfaces — I’ve been working on a rewrite to launch a stable v1. It’s particularly different from existing frameworks because it compiles a simple UI language directly down to JavaScript DOM operations. It’s gotten on the front page of Hacker News multiple times and is being used in some production web apps.

Additionally, I’ve built Wade, which is a 1kb JavaScript search library that has a simple API for creating client-side searches. Wade takes in a list of text data and outputs a search function that can give relevant results for queries. It’s been on the front page of HN multiple times and has been on the front page of various subreddits. Wade has gotten lots of usage in side projects and blogs, where it powers search engines over content.

A couple of my other projects include Slash, Wing, and Ice. Slash is an efficient hash function that I created after researching cryptography. It uses a multi-dimensional boolean function along with various multiplications and XORs to properly diffuse and confuse input into a constant-length hash. I’ve used it for pseudorandom number generation, noise generation, and Ice. Ice is a project I use as a playground for procedural generation. It uses Slash to generate various works of art given a seed name, and I’ve created procedural maps, wind trails, and completely randomized pieces of art with it. Wing is a CSS framework that powers most of my projects. It uses a minimal number of classes to act as a drop-in foundation for new projects.

Other than that, I have a list of around 20-30 ideas I have planned for the future. These include an app for self-improvement, an app for leisure, and a programming language.

What motivated you to work on these projects?

When I was first getting into programming, my main motivation was curiosity. I always love knowing how things work and feel unsatisfied if I don’t understand the internals. As a result, I began making basic clones of popular apps (Twitter, Airbnb, Evernote). From here, I learned how the things we often take for granted work and went on to create my own products to solve problems I came across. Projects like Moon or Wade came from there being unviable solutions to complex problems. I attempted to tackle these problems by looking at their roots and was able to come up with straightforward solutions. If I ever find myself wishing for something to be easier or wanting something to exist, I figure out what exactly I want and write it down. Nowadays, my motivation is to solve complex problems and help as many people as I can in the process.

How have you attracted users?

My projects have gotten featured on the front page of Hacker News, Product Hunt, and Reddit. Aggregators like Hacker News get the word out, but word of mouth spreads information rapidly across loads of platforms. It leads to people writing blog posts and asking questions, which in turn leads to people looking more into my projects and spreading the word themselves. For example, Moon was featured on Hacker News and was subsequently featured on blogs like Sabe, TutorialZine, and Dev.to. After this, a YouTube crash course series was created, and Moon was ranked as one of the most popular frameworks in terms of growth in 2017.

Where do you see yourself in ten years?

In ten years, I will be 24. I see myself getting a degree and finding a job in the Bay Area to support myself financially. Ideally, I would start bootstrapping companies on the side until they become sustainable enough for me to work on full-time. At that young age, I want to live without routines and consistently try new things while traveling. In the process, I want to meet as many people as I can and want to take risks to live a more stable life later on. It’s definitely an ambitious goal, but it’s what I’m aiming for.

What are the biggest challenges you have faced and obstacles you have overcome?

One of the challenges I have faced is my age. It often leads to prejudice and underestimation. It’s one of the main reasons I don’t frequently mention my age on my projects — I want people to judge my work without bias. Another setback is my tendency to be a perfectionist. I always want my projects to be perfect when I launch them and it has led to projects taking unreasonable amounts of time to complete.

What advice would you give to new makers?

Keep in mind that everyone started from scratch. Don’t be afraid to reach out to people who can help you and always publish your projects for others to see and give feedback on. It’s crucial to get involved in the community from the start. Ask for help and help others when you can. The internet has an almost infinite number of resources to get you started with everything you need to build and launch something from scratch. The best way of learning is by creating projects. Envision projects that you want to make and work to gather the skills necessary to do it — places like Enlight are perfect for learning how to make things. Pieter Levels is a great example of someone who succeeded in bootstrapping companies. He has extensively written and talked about his journey going from absolutely nothing to launching 12 startups in 12 months, and I highly recommend following his work.

How did you learn to code?

I personally learned to code by coming up with basic project ideas and implementing them. My first project was my own website, for which I directly jumped in with no knowledge whatsoever about the field I was going into. I looked up the required skills for what I wanted to accomplish, and gradually learned and created from reading official documentation and blog posts. My very first public projects include Colicious, Wing, and Snip. A big factor in learning to code was open source. The open source community is incredibly large, and beginner issues are a great way to get started contributing to projects you love while further expanding your experience in programming.

Where can we go to learn more?

Find me on my website at kabir.sh, on GitHub @kbrsh, or on Twitter @kbrshah.

Comments (0)