JCM

Oi, eu sou o Jonathan.

Staff software engineer na Lindy, uma plataforma de agentes de IA. Escrevi a primeira linha de código dela em 2023 e desde então construo agentes, e o framework em que eles rodam: a camada que conversa com cada fornecedor de LLM, tool calling, memória e contexto, sandboxes onde um agente ganha um shell e um sistema de arquivos, e os agentes de código que hoje apontamos para o nosso próprio backlog.

Boa parte da minha semana vai para deixar o time mais rápido do que eu: revisar pull requests, fazer lunch and learns, automatizar o que é feito duas vezes e transformar o que funcionou em guias e agent skills, para a próxima pessoa começar já com a resposta. Faço quase tudo isso às claras no Slack, então quando desbloqueio uma pessoa o contexto vira contexto do time: a próxima pessoa encontra, e o nosso Lindy teammate também.

Ultimamente a maior parte desse esforço foi para AI coding para a empresa inteira, para que todo mundo, não só engenheiros, consiga fazer mudanças reais no produto por conta própria, e para um Reviewer Agent para o que virou o próximo gargalo quando todo mundo passou a conseguir entregar: as revisões e o ciclo de validação.

O resto do trabalho é tudo que fica em volta disso: o produto em que as pessoas de fato clicam e a plataforma pela qual ele vai para produção, então uma semana normal vai de um componente Relay a um workflow Temporal a um node pool no Kubernetes, e eu meio que gosto disso. Antes da Lindy: colaboração em tempo real na Teamflow, backend e DevOps na HelloMD, o app da Gol Linhas Aéreas na Entria e cinco anos de freelance.

Autodidata em Engenharia de Software, mas formado em Ciências Contábeis. Moro em Foz do Iguaçu, Brasil. Também amo open-source e tento contribuir sempre que dá. Mantenho o node‑libcurl desde 2016.

Antes
  • Teamflow2021–2025
  • Croz2020–2021
  • HelloMD2018–2019
  • Feedback House2018
  • Entria2017–2018
  • Freelance2012–2017

Textos

Pretendo voltar a escrever, uma hora dessas, em breve. Por enquanto, estes são alguns posts que escrevi quando LLM ainda não era uma coisa, heh.

    1. How To Code in TypeScriptA ten-part TypeScript series I wrote for DigitalOcean, from basic types to generics, namespaces, and modules. This post just points to it.
    1. Automated Deployment of React Native Apps Using Fastlane - Part 1 - Play StoreEveryone that has been releasing apps manually knows how tiresome and time consuming the process is, the main idea behind this...
    1. How To Automate Deployments to DigitalOcean Kubernetes with CircleCIHaving an automated deployment process is a requirement for a scalable and resilient application, and GitOps, or Git-based DevOps, has rapidly become a popular method of organizing CI/CD with a Git repository as a “single source of truth.” Tools like CircleCI…
    1. Using CircleCI Workflows to Replicate Docker Hub Automated BuildsCircleCI workflows is a powerful feature that can be used to make your deployment process simple and intuitive.
    2. Introduction to GraphQL Mongo HelpersIf you are using MongoDB and GraphQL, you probably have some arguments on your resolvers to filter the data returned from MongoDB. Using those helpers you can reduce the amount of code duplication when doing that!
    3. Client-Supplied Custom Sorting Using GraphQLIt’s not uncommon the need to sort/order data returned from an API, based on arguments sent by the client. With REST we could just use query-strings, but how to do it in GraphQL?
    4. GraphQL Mutation Arguments Validation with Yup using graphql-middlewareRecently, I found out about the awesome library by Prisma called graphql-middleware, which allows running arbitrary code before/after your GraphQL resolvers are called.
    5. Parallel testing a GraphQL server with Jest and MongoDBThis is a follow-up to the awesome post written by Sibelius Seraphini: Testing a GraphQL server using Jest
    6. Using Fastlane Match With Existing Certificates Without Revoking ThemFastlane match improves drastically code signing, even for small teams, their only issue is that by default, it does not work with existing certificates, and that is a show stopper for anyone trying to use it on existing projects.
    1. Encapsulating data on GraphQL using LoadersIf you have already used GraphQL, you probably saw that it can consume data coming from the most varied sources, be it a local database or an external API, while centralizing them in a single, self-contained, API.
    2. Access Control List on GraphQL with LoadersIn our previous post, we saw how to encapsulate data from any data source to be used on our GraphQL resolvers using Loaders, now let’s see a more robust example of that, on how to create some access control rules directly on those loaders.
    3. Re-utilizing React Native styles with Styled ComponentsHaving to refactor some components to use styled-components I felt the urge to reuse some existing styles created to be used with React Native StyleSheet, directly on styled!