The everyday adventures and discoveries of a software development engineer.

IoT no dia-a-dia

Hoje em dia, mais do que nunca, vemos noticias e lançamentos na área de IoT (Internet of Things => Internet das Coisas). Desde lampadas controladas pelo smartphone a torneiras, irrigadores, e geladeiras. Tudo pra tornar a vida mais futurista, como nos Jetsons. Em um primeiro momento ao ver esse tipo de dispositivo sempre pensei "ah, legal, deve ser divertido ligar a luz com o iPhone, mas nada vá mudar a vida de alguém". Isso foi até me mudar para a África do Sul. Na Africa do Sul há uma lei que proíbe construtoras de colocar interruptores e tomadas

Usando Touch ID como sudo no terminal

Desde que o Macbook Pro com Touch Bar foi lançado em 2016, uma feature que esperei por muito tempo foi o Touch ID (ou qualquer outro tipo de biometria) no Mac. A praticidade de utilizar um mecanismo biométrico como senha em um notebook não se compara a outras estratégias de segurança como Yubikeys, Smartcards, ou tokens. O Touch Id funciona muito bem no MacOS mas há uma situação em que ele não é utilizado: no terminal. Uso o terminal do MacOS (mais precisamente o iTerm2) diariamente e isso me incomodava desde que troquei o antigo e cansado Macbook Pro 2011

Emails em .NET

Enviar emails diretamente de aplicativos tem diversas vantagens e utilizações. Em algumas linguagens de programação a criação de rotinas para envio de mensagens utilizando servidores SMTP pode ser tão complexa que se torna pouco viável sem a utilização de componentes adicionais (que na maioria das vezes são pagos). No .NET 2.0 já existe um namespace próprio para o tratamento de envio de mensagens por email. É o System.Net.Mail. Para enviar um email, não é preciso mais do que 10 linhas! using System.Net.Mail; // ... public void sendMail(string from, string to, string subject, string message) { MailMessage message

Implementando HMAC SHA-1 no WinRT

Em um projeto que trabalhei havia uma parte da implementação que requeria que fosse gerada uma hash HMAC-SHA-1. No .NET é relativamente simples fazer isso, basta fazer a chamada: var hmac = new HMACSHA1(key).ComputeHash(data); E simples assim é gerada a hash HMAC-SHA-1. No entanto, no WinRT a coisa muda um pouco pois nem mesmo a classe HMACSHA1 está disponível no System.Security.Cryptography! A mesma implementação no WinRT fica da seguinte forma: private static string HmacSha1(string key, string message) { // instanciando o algoritmo de criptografia var crypt = MacAlgorithmProvider.OpenAlgorithm(MacAlgorithmNames.HmacSha1); // convetendo os dados para binario (tanto chave

Gerando um Unique DeviceID no Windows Phone 8.1

Em um projeto que trabalhei havia a necessidade de identificar os dispositivos por algum identificador único e imutável entre apps. O WinRT prove a API de HardwareIdentification, onde é possível chamar o método GetPackageSpecificToken para obter um token único para o hardware. No entanto este token é diferente para cada aplicativo, logo, se o objetivo for verificar em vários apps (para envio para um serviço externo, por exemplo) o DeviceID então o HardwareIdentification não é uma opção. Nas versões anteriores do Windows Phone OS era possível obter dados como IMEI, número de série, etc, já no Windows Phone 8.1