A Idopter Labs trabalha com um conjunto de tecnologias que permitem que nossos times sejam extremamente eficientes no processo de desenvolvimento. Hoje, os principais desafios trabalhados junto aos nossos clientes são voltados para a web e dispositivos móveis (celulares, tablets, entre outros equipamentos). Para isso, as duas tecnologias principais adotadas são Elixir e React Native. Esse post é uma breve apresentação dessas duas tecnologias e algumas das razões pelas quais as adotamos.
Esse artigo é um resumo da conversa que tive com meu amigo Zeca no episódio número 15 do Espresso Tech. Nesse episódio, demos 5 dicas para aqueles que desejam buscar um emprego na área de tecnologia 👊🏻 Essas dicas foram selecionadas baseadas na nossa experiência atuando na área de tecnologia há mais de 15 anos — tanto no papel de empregado em busca de novas oportunidades e novos projetos, quanto no papel de empregador avaliando candidatos e contratando novos membros para a nossa equipe na Idopter Labs.
Neste post vamos falar de Behaviour Driven Development (Desenvolvimento Guiado por Comportamento), também chamado de BDD, que tem como um dos benefícios a interação dos diferentes papéis de um time tais como desenvolvedores, testadores, negócio, através da melhoria da comunicação.
Neste post iremos construir selects dinâmicos com Phoenix e LiveView. A aplicação de exemplo é uma simples página de listagem de guitarras.
A recuperação de objetos deletados é possível 🚨 apenas em buckets com versionamento habilitado 🚨. Por padrão, ao criarmos novos buckets, a funcionalidade de versionamento não é habilitada automaticamente. Neste post iremos aprender como utilizar a AWS CLI para recuperar objetos deletados em um bucket S3.
Uma mix task é um script Elixir executado através do mix e normalmente utilizado para tarefas corretivas. Neste artigo, iremos escrever uma task para popular uma coluna recém criada em uma tabela no banco de dados.Infelizmente, é comum encontrarmos aplicações com este tipo de funcionalidade como parte de uma migration. Entretanto, tal abordagem é uma anti-pattern e deve ser evitada. Migrations devem ser utilizadas única e exclusivamente para mudanças na estrutura do banco de dados, e não para a manipulação de dados.
Prestes a completar 15 anos 🎂, o Heroku continua sendo a minha escolha preferida para publicação rápida de aplicações na nuvem. Neste artigo, iremos aprender como publicar uma aplicação Elixir/Phoenix em sua infraestrutura utilizando buildpacks.Antes de mais nada, é preciso entender alguns termos essenciais do Heroku
Neste artigo vamos desenvolver uma tela de login de duas etapas com Phoenix LiveView. Falaremos também sobre os recursos extras de usabilidade que temos quando utilizamos LiveView, assim como suas limitações.Apesar do LiveView proporcionar dinamicidade e uma melhor usabilidade para o usuário — considerando que ele não precisa recarregar a página para ter dados atualizados — o mesmo não possui exatamente as mesmas capacidades que o Plug.Conn. A principal limitação do Plug.LiveView.Socket que nos afetou foi a incapacidade de “escrever” na sessão do usuário.
Rails escala bem? Bom, podemos observar o Github que, sim, escala muito bem. Mas como eles fazem? Como se resolve um problema de N+1 para que não afete a performance de pesquisas no banco de dados?Neste post, vamos começar explicando o que é o problema N+1. Depois, veremos como podemos resolvê-lo com SQL puro e, finalmente, como implementamos a solução em Rails.
Neste artigo iremos falar sobre o Phoenix LiveView. Juntos, construiremos uma aplicação web bem simples, semelhante ao Twitter. Visitantes poderão postar mensagens de texto que serão exibidas em uma única página. Todos aqueles contectados à aplicação, verão as novas mensagens publicadas em real-time!
This unwanted and extremely annoying behavior happens in almost 100% of the React Native apps I encounter. It used to happen in all of the ones I created myself, but I was bitten by this bug enough times that I decided to adopt a particular default approach for using a widely popular element in React Native: ScrollView.
Having worked on a multitude of software projects in the past 10 years, our team has adopted a workflow which we believe allows us to achieve peak efficiency. By following this workflow we are able to continuously deliver value to our clients, starting on the very first week of work.The workflow is simple. It’s composed of two phases: Inception and Development.This is the first of a series of posts where I will describe these two phases, along with a few important practices we use on each of them.In this post, I will describe the first phase, Inception. Albeit being the less technical of the two phases, we strongly believe this is the most productive way to gather requirements and, most importantly, collectively build a vision for the project.
O post de hoje começa com uma pergunta, por que criar módulos nativos usando o react native ? Se você trabalha com desenvolvimento mobile, em algum momento você irá esbarrar com alguma lib, algum sdk que só possui versões pra Android ou iOS e você tem o aplicativo já em andamento com React Native. Dado esse cenário, surge a necessidade de entender, estudar e aprender a criar a comunicação usando React Native, isso é possível e com isso a gente é capaz de extrapolar o comum e passar a desenvolver aplicativos mais poderosos ou até contribuir criando um pacote que não existia para abstrair o SDK/Lib nativas. Para criar os módulos nativos temos duas opções, criar um pacote NPM/Yarn ou criar o módulo nativo dentro do nosso projeto de aplicativo.