How I launched Transcribe Ninja with zero money.


Image for post
Image for post
Photo by Catherine Heath on Unsplash

Every day millions of people come up with ideas about automating something at work or how to find the “Answer to the Ultimate Question of Life, the Universe, and Everything”. Then realizing that this idea can help other people, they build a prototype to test it.

The problem comes when they don’t know if the idea would actually work, and to know they need to spend money. That money can come from asking their friends, acquiring their first customers or going the VC route.

Another way to bootstrap their idea is by…

Easy way to access secrets like API keys in AWS Lambda

Image for post
Image for post
Photo by Manja Vitolic on Unsplash

When developing functions with Lambda you will have cases when you need to access an external third-party application (e.g. Stripe). To do this you will most likely need an API key provided by the external service.

The first instinct is to save this API key as an environment variable. See the code in Terraform:

resource "aws_lambda_function" "test" {  
filename = ""
function_name = "test"
handler = "test.handler"
source_code_hash = filebase64sha256("")
runtime = "nodejs12.x"
environment {
variables = {
API_KEY = "api-key"

Although this is fine for a quick implementation, it is not 100% secure since the API…

TL;DR Return status code 200 on your GraphQL calls.

Image for post
Image for post
Photo by Ramiz Dedaković on Unsplash

If you are developing a GraphQL API without using AppSync like me, you are probably using API Gateway + Lambda to build your GraphQL endpoint.

On the frontend you may be using React along with Amplify.

You have been writing your schemas and building your queries/mutations on the backend; coding some UIs on the frontend. Then you think that you should handle errors from GraphQL, so if one occurs you can show a nice error message and avoid the users’ frustration.

You think you are clever and write this for your GraphQL endpoint:

export const handler = async event =>…

Using queues with Lambda

Image for post
Image for post
Photo by Anton Darius on Unsplash

TL;DR Lambda polling from one queue uses more than half of SQS monthly free tier.

When building event-driven applications it’s common to process objects that are uploaded to an S3 bucket. There are several ways to listen to S3 events using S3 notifications. You could directly call a lambda function after every upload or send the notification an to SNS topic/SQS queue as an intermediary between the two.

For a high-performance and scalable solution that handles errors, SQS is the best option.

Lambda has a limit of 1000 concurrent invocations per second.

SNS doesn’t guarantee that every notification will be delivered only once.

If the delivery throws an error, SQS lets…

Or how I learned to stop worrying about DevOps

Image for post
Image for post
Photo by Andreea Popa on Unsplash

I used to avoid any type of DevOps work. I didn’t know or want to learn how to provision servers, manage load balancers or scale databases. I only wanted to code for the end user.

With the rise of serverless architecture my fears of DevOps started to diminish. A lot of my pains were gone.

Then I read about Infrastructure as code (IaC) and got hooked on the idea that DevOps could be easier to manage and fun to do, since all of it is just code.

I started to learn Terraform as my de facto IaC tool since we…

Jose Antonio Gonzalez

Lead Software Engineer @ Virtual Academies

Get the Medium app

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