When I was trying to help a friend out on some Python code challenges I came to understand that sharing small pieces of code and solutions is not very easy. The solution back then was to use GitHub, using GitHub for code snippets made no sense. I wanted a way where people could share small pieces of code, code snippets, Proof of Concepts easily.
What it does
Pyfiddle, allows users to easily run, share, bookmark and collaborate on Python code using just a browser. It also has some nifty features like installing third party packages (using PIP), passing arguments to programs, passing user inputs to programs and also to set environment variables.
How I built it
When I thought of building something like this there were many options but AWS Lambda felt like the perfect fit because I could entire GIVE AWAY an entire container to the user for his program executions. This gives the user a lot of flexibility which other online editors do not. The core of Pyfiddle's infrastructure is AWS Lambda.
List of technologies,
- [Django] - Powers the web app!
- [jQuery] - For front end UI functionality
- zappa - Acts a Serveless framework which provides an itnerface to AWS CloudFormation.
- Semantic UI - UI CSS Library
- AWS Lambda (Python Environments) for a Serverless web application
- AWS Lambda (Python Environments) for isolated fiddle executions
- AWS API Gateway for domain endpoints
- AWS RDS (Aurora - MySQL) for storing data
- AWS Cloud Watch for monotioring and logging
- AWS Work Email for email related tasks
- AWS Route 53 for managing domain and DNS
Challenges I ran into
Security: Because user's programs were being run as my code inside my Lambda Functions, certain things had to be taken. Usability: Since the entire editor is in the browser, giving the user a feel of a desktop editor was a little challenging. Motivation: Being the single developer of an app is always challenging, I kept pushing myself to launch it and now I am very happy about it.
Accomplishments that I'm proud of
Pyfiddle's current stats:
- Over 1500 registered users, most of them being grad students around the world, using it for assignments and learning purposes with ease.
- Approximately 100 new users to the website everyday.
- Over 3,00,000 fiddle executions so far.
What I learned
- Building apps as the sole individual is hard but equally rewarding, I get emails from people around the world, which makes me really happy.
- AWS Lambda has huge potential, and I am close to launching my second application with it ( https://swarmload.net )
What's next for pyfiddle
- New features ( Interactive console, fancier UI )
- Subscription model, removing certain current limitations for Paid users.