domingo, 29 de abril de 2018

Empregabilidade - Pensar fora da caixinha

Sempre detestei rótulos, você é da "Geração X", aqueles alí são de "Capricórnio", sou "Ateu - Graças a Deus". Desde que a sociedade se modernizou precisamos nos rotular para sermos encaixados em algum meio, tipo: Você é Branco, Pardo ou Negro? Você é Rico, Classe Média ou Pobre? Quando crescemos os rótulos também vão se tornando mais especializados.

Primeiro ato que ocorre na nossa vida de brasileiro é escolher um time do coração - o segundo ato é ser avesso a qualquer um que não torça para o mesmo time - e pouco importa se o time ganha ou perde sempre devemos estar a favor (e desejar a morte por ácido do outro time que por azar do destino jogar CONTRA o nosso) e achar que se ganhou é porque jogamos bem demais e se perdeu foi por culpa de fatores externos do tipo: o Juiz roubou, o Bandeirinha é cego, foi impedimento naquele gol de falta, jogaram uma "urucubaca" no nosso goleiro que amanheceu indisposto e por aí vai.

A medida que o tempo vai passando mais rótulos vão se formando, seu "Partido Político", sua "Igreja" (não, não é sua Religião), seu "Contexto Social" ou seu "Círculo de Amigos", novamente tudo o que estiver fora disso não nos serve. Afinal de contas batalhamos muito por causa do "Partido X" (perdemos horas defendo-o nas redes sociais), sem aquela "Igreja da Novena dos 7º Dias que teremos a Revelação Sagrada das Velas Coloridas do Nosso Senhor" faz parte da minha existência (raramente apareço para o culto ou mudou algo na minha vida religiosa - mas isso não é importante) terrena e sem ela não sobreviveria ao cataclisma que vai acontecer em 2182 (pouco importa se estarei vivo ou não até lá), o "Contexto do Clube dos Programadores Analistas de Computadores" afinal de contas uma vez que foi promovido tudo abaixo não existe e meu círculo de amizades só pode ser formados por pessoas que possuam os mesmos rótulos que tenho qualquer outra pessoa está completamente errada.

OK já entendemos, mas o que é "Pensar fora da caixinha"? Permita-me propor-lhe o seguinte desafio (AVISO DE SPOILER: não prossiga a leitura):


O que mais adoro nesse desafio é que rótulos não contam, não serve ser um grande matemático, ou péssimo em português, não resolve ser evangélico, espiritualista ou umbandista. Pouco importa se torce para o Flamengo ou o XV de Jaú, se é a favor ou contra o Lula, para resolvê-lo a única coisa que deve fazer é pensar fora da caixinha.

A resposta é muito simples, o espaço é completado com a letra "R", esse desenho é apenas o conjunto de marchas de um carro e a marcha que falta é a "Ré". Não me importa ser rotulado, sei que sou, mas tenho o total direito de não gostar deles (dos rótulos) afinal um rótulo não permite que vejamos o quanto aquela outra "igreja", "time", "partido" ou qualquer outra coisa pode estar mais certo ou errado na que escolhemos para seguir.

Obrigado e até a próxima
Fernando Anselmo

quinta-feira, 30 de novembro de 2017

Tecnologia - O que esperar em 2018

Final do Ano está na porta e é hora de começar as previsões tecnológicas para 2018. Antes de começar devo dizer que sou um simples desenvolvedor que lê e acompanha blogs de tecnologia. Tudo o que escrever nesta postagem está relacionado a uma simples percepção (é como olhar para um céu cheio de nuvens negras e dizer que vai chover) que obviamente pode estar errada e não acontecer.


Essas são minhas apostas para as 5 tecnologias que mais vão aparecer em 2018, traduzindo escolha uma delas, estude e se aprofunde para não ficar fora do mercado:

1ª Crescimento acelerado da Machine Learning. Neste ano esta tecnologia deu seus primeiros passinhos tímidos, mas em 2018 parece que a coisa vai finalmente deslanchar, grandes empresas como Amazon, Google e IBM estão jogando muitas fichas nisso. Esta tecnologia permite o reconhecimento de objetos e ações através de uma câmera. E o que isso vai mudar minha vida? Simples, imagine você chegar em casa e a porta lhe reconhece e abre para você, ao chegar perto do computador ele mostra as notícias que mais lhe interessam, se seu gato (ou cachorro) estiver passando ele pode analisar e verificar se está com fome ou com alguma doença através da identificação de um determinado padrão.

2ª Mais Mundos Virtuais. A um bom tempo atrás surgiu o SimLife, foi um fracasso generalizado pois as pessoas ainda não estavam preparadas para aquilo. Os novos "Mundos Virtuais" estão mais ligados a tecnologia de Realidade Aumentada. Então pense que você pode estar em um apartamento que ainda nem foi construído, ou em uma sala na qual é possível trocar os móveis de lugar apenas mechendo as mãos. Ou participar de um congresso estando presente virtualmente. Os óculos 3D que permitem tal nível de interação tem se tornado cada dia mais baratos (com R$ 50,00 é possível adquirir um) e com eles podemos interagir profundamente com esses mundos.

3ª Descobertas e análises da Ciência de Dados. Data Science veio para ficar e os analistas dessa tecnologia estão se tornando cada vez mais procurados. Neste campo um revolução está acontecendo pois linguagens como R e Python estão se destacando e não irá me supreender em nada que listas como a do Tiobe indique mais crescimento para ambas até o final de 2018 (atualmente R é a 11ª e Python a 4ª).

Chatbot ou Chatterbot. Tem coisa mais chata que ligar para uma empresa e ser atendido por um robô? Disque 1 para fazer tal coisa, disque 2 para outra... Agora imagine ser atendido e você nem saber que se trata de uma máquina. "Serviço de atendimento em que posso lhe ajudar?" acha isso muito futurista? Pois saiba que muita gente está treinando esses robos com Teras de informação para que possam substituir completamente os atendentes humanos de 1º e 2º nível das grandes empresas. Quando você for transferido para um "humano" raramente perceberá a diferença.

5ª Revolução dos Aparelhos Eletrodomésticos. Calma, sua geladeira não vai dominar o mundo, nem se apaixonar pelo forno de Microondas, basicamente isso tem a ver com uma tecnologia chamada IoT (Internet das coisas), demos passos tímidos este ano através do crescimento de placas como Arduíno e Raspberry. Acredito que o próximo ano é que veremos como essas placas vão influenciar aparelhos eletrodomésticos criando a tal "Cozinha do Futuro", imagine chegar em casa e sua cozinha preparar sozinha o seu jantar com aquela receita que sua avó costumava fazer. Acredita que estou viajando muito? Pois saiba que já é possível ter uma horta totalmente automatizada (ver FarmBot), além disso, uma empresa japonesa iniciou a primeira fazenda totalmente operada por robôs industriais que são responsáveis pelo cultivo até a coleta das hortaliças.


E aonde fica o Ser Humano nisso tudo? Simples nas questões de Inovação e Criatividade, "ainda" não conseguimos ensinar uma máquina a criar algo que não existe, essa é uma característica única do Ser Humano, além disso por mais perfeita que seja uma máquina ela sempre precisará de manutenção ou de inovações para adaptar a sua programação. Apesar de já existir um termo chamado "Singularity" isso ainda não passa de mera ficção.


A próxima geração de desenvolvedores deve contar com esses dois fatores para se destacar neste crescente mercado.

Obrigado e até a próxima
Fernando Anselmo

quinta-feira, 19 de outubro de 2017

Ubuntu - Não me arrependo

A três anos atrás fiz uma troca de Sistema Operacional, o Windows pelo o Ubuntu (por favor, Linux é apenas o Kernel), tive que realizar muitas adaptações nesse tempo. Porém, olhando para trás paro e penso que só tenho um arrependimento não ter feito isso mais cedo. Nessa postagem quero explicar os motivos, não se preocupe pois não pretendo convertê-lo nem dizer que a Microsoft é a vilã na face da terra, aprendi que liberdade é exatamente respeitar as escolhas.



80% do que faço com meus computadores (tenho 3 deles) é desenvolvimento de sistemas, o resto dos 20% é uma distração como assistir filmes ou jogar alguns games (no estilo RPG ou tiro no estilo Doom). No primeiro quisito terei que explicar que como desenvolvedor preciso testar muitos softwares principalmente versões betas de aplicativos e que muitas vezes conseguem danificar o Sistema Operacional, o que mais fazia com o Windows era usar o comando "format c:" (estava tão acostumado que trimestralmente fazia isso).

O Windows foi criado para usuários comuns que compram aplicativos em lojas e essas são versões sólidas e estáveis. Não estou denegrindo o sistema, mas nenhum "usuário avançado" usa ele, é só você assistir a vídeos no YouTube dessas pessoas e reparar que normalmente ou estão usando o MacOS ou alguma distribuição Linux. Pelo simples motivo que citei anteriormente, é muito chato ter que ficar formatando constantemente o sistema.

Optei pelo Ubuntu pois foi a distribuição (ou distro como todo mundo chama) que mais fácil me adaptei (já tinha tentado a Red Hat, a Fedora e o Debian). Não quero dizer que é a melhor, apenas foi a que me adaptei e penso que as pessoas deveriam parar com isso de ficar rotulando se essa é boa ou ruim.

Se tive problemas? sim vários, porém consegui resolver todos eles. Já tive placas de vídeo que não funcionava, vídeo que não tocava, som que não saia, certa vez depois de uma palestra minha resolução de vídeo não retornava e fique um bom tempo em 800x600, entre outras coisas que me aconteceram. E é por essas e outras que penso: "nesse quisito o Windows é bem mais tranquilo, principalmente para um usuário iniciante".





Como disse estou com o Ubuntu a 3 anos, comecei com a versão 14.04 e exatamente hoje mudei o sistema para a versão 17.10. E disse que só me arrependo por não ter trocado mais cedo de sistema foi que, mesmo com todos os problemas que passei, nesse tempo não tive mais que formatar meus computadores uma única vez. Só para que você entenda, até o processo de troca de versão no Sistema Operacional no Ubuntu é feita da seguinte forma: o Sistema me avisa que tem uma nova versão disponível e me pergunta se quero atualizar, digo que sim e pronto começa todo o processo de troca (enquanto ele ocorre continuo trabalhando normalmente).

Toda vez que instalo um aplicativo no sistema por mais beta que seja ele não consegue danificar o sistema, por quê não? Simples, porque ele não tem acesso a isso. Não é que as distros do Linux sejam a prova de vírus, é apenas que o vírus não pode chegar no Kernel do Sistema. No Windows seu usuário é Deus e ali é seu Paraíso, nas distros seu usuário é seu usuário e Deus é o "sudo", ou seja, apenas o "sudo" é que tem permissão de machucar o sistema. E você só usa ele em caso de necessidade.

No Windows você tem duas pastas importantes: "Program Files" e "Windows", a primeira é onde estão os programas instalados e a segunda aonde está o Sistema Operacional em si. Nas distros, existem várias pastas importantes, mas você tem beeeeeemmmm delimitado onde é sua casa, e tudo o que instala com seu usuário está limitado a ela. Ou seja, como corromper um sistema que para ser corrompido tenho que querer isso?

Dois programas que são quase nativos do Ubuntu e que agradam a maioria dos desenvolvedores (não que eles não possam ser instalados em outras distros), o Git e o Docker. O primeiro para publicar seus códigos na Internet e o segundo para a criação de contâineres. Resultado, quero testar um banco novo, como o  RethinkDB (um NoSQL), em pouquíssimos passos tenho um contâiner criado com ele e numa área totalmente delimitada, sendo impossível que faça algo no meu sistema que não permita (não me agradou? Mato o contâiner e pronto). Meus códigos? Boa parte está no Git assim não tenho como perdê-los. Outro aplicativo que o Ubuntu interage muito bem é com o Dropbox. E isso porque não estou tratando que linguagens como Python, Perl, Java e Assembly já fazem parte do pacote básico do sistema e que o npm é possível instalar com uma única linha de comando.

Então pergunto, o que mais posso querer como desenvolvedor?

Obrigado e até a próxima
Fernando Anselmo

Deseja saber mais sobre o sistema? Então baixe aqui meu livro gratuitamente "Instalei o Ubuntu e agora?" e talvez você veja que a mudança pode ser algo muito proveitoso.

quinta-feira, 12 de outubro de 2017

Aprendizado - Sabe programar em BASIC?

Neste "Dia das Crianças" queria lembrar um pouco minha infância, me tornei programador por paixão, na verdade foi depois de ter visto no cinema ao filme "Tron" (1982). Meu primeiro computador veio apenas alguns anos depois através de um TK-83C que era um clone do ZX81, resultado a primeira linguagem que aprendi foi Basic (como muita gente da minha geração).

Meu desejo de consumo sempre foi o de comprar um ZX Spectrum oficial, mas as finanças não me permitiram tal luxo. O tempo passou, as máquinas evoluiram, tive vários computadores e o desejo ficou guardado na gaveta.

Em 2014 comecei a usar o Ubuntu e através dele descobri várias coisas que podia fazer, entre elas retornar a meu antigo desejo. Então neste artigo você descobrirá como ter um ZX Spectrum (muita coisa que fizer aqui poderá ser adaptada para outros Sistemas Operacionais) que a partir de agora vou abreviar para ZX.

Instalação do Emulador

O ponto mais importante é o Emulador que é um programa que traduz as instruções para o sistema operacional, escolhi o FUSE por ser gratuito e bem compatível com o ZX. No Ubuntu existem os pacotes oficiais através dos seguintes comandos:
$ sudo apt install fuse-emulator-common
$ sudo apt install libspectrum
O primeiro comando instala o FUSE propriamente dito e o segundo a biblioteca necessária para executar o ZX.

+3 BASIC

Próximo passo é achar o programa para excutar a linguagem BASIC (Beginners All-Purpose Symbolic Instruction Code), escolhi o compilador +3 BASIC.

Para isso baixe o disco aqui e com o FUSE instalado basta clicar neste para que o +3 Basic seja executado e carregado. Na primeira vez pode apresentar um erro, não se preocupe basta esperar um pouco e quando aparecer a mensagem do Loader: "To cancel - press BREAK twice" pressione a Barra de Espaços duas vezes para entrar no menu.


Agora basta selecionar a opção +3 BASIC para entrar no editor. No menu principal do FUSE selecione "Machine | Reset" (ou pressione F5) e devemos voltar para o mesmo Menu. Saia e entre novamente do FUSE e verá que este programa será carregado por padrão.

Passos Iniciais


Primeiro detalhe que devemos conhecer é que o teclado possui algumas teclas completamente diferente do teclado tradicional do PC (principalmente os brasileiros), então veja a seguinte imagem:


Observe que a aspas duplas (") se encontra em cima da letra P, ou os dois pontos (:) na letra Z, para conseguí-los use a combinação Ctrl+P ou Ctrl+Z.

Segundo detalhe é como criar, salvar e ler um programa?

Precisamos criar um drive de disco, no menu superior do FUSE acesse "Media |  Disk | +3 | Drive A: | Insert New...", agora precisamos formatá-lo, para fazer isso no editor digite o seguinte comando:
format "a:" 
Se tudo ocorrer bem receberá a mensagem "No data, 0:1" (aperte barra de espaço para retornar ao editor), digite o comando "cat" para ver os arquivos existentes no disco. Agora vamos proceder um pequeno teste digite a seguinte codificação:
10 LET a = 10
20 PRINT a
Para executar digite o comando "run", se tudo der certo verá o valor 10 na tela e a mensagem "0 OK, 20:1". Conseguiu perceber o que o programa faz? A linha 10 cria uma variável a com o valor 10 e a segundo mostra o valor dessa variável.

Pronto agora que temos nosso programa devemos salvá-lo, para isso digite o comando:
save "prog01.bas"
E após receber a mensagem de OK digite novamente o comando "cat" para verificar que está tudo OK.


Agora pressione F5 para "resetar" o editor. Entre novamente no editor e digite o comando:
load "prog01.bas" e o programa salvo retornará ao editor.

Indo mais além

Em 1985 surgiu uma das melhores revistas de informática para minha geração, na verdade eram livrinhos, chamada Micro Aventura.


Para minha tristeza só durou 10 edições. Cada edição além da história trazia vários programas a serem executados e ao final a explicação de cada um. E foi assim que me aperfeiçoei com o BASIC e realmente comecei a me tornar um programador. É possível baixar os livros neste site (ou comprá-los no Mercado Livre como Edição de Colecionador) e aproveitar tudo o que essa linguagem tem para oferecer.

Quer explorar mais? Então veja esses dois livros:

Understanding Mathematics and Logic Using BASIC Computer Game
Basic Computer Games - Microcomputer Edition

Obrigado e até a próxima
Fernando Anselmo

Dica, quer mais programas para esse emulador? Então não deixe de visitar esse site.


segunda-feira, 2 de outubro de 2017

Divertimento - Brincando com Papel

Uma das artes que mais adoro é chamada de Papercraft (acredito que a palavra japonesa para isso seja Pepakura), e realizar objetos nessa técnica envolve os seguintes passos: Criar (ou localizar) um modelo em 3 dimensões, imprimir, recortar e montar. Ou seja, não é preciso de nenhum material ou habilidade especial apenas tesoura, cola e um bom nível de paciência.

Assim como o Origami (que é a arte dobradura em papel) essa arte teve sua origem no Japão (ou China - existe uma boa discussão sobre isso) e foi popularizada após a II Grande Guerra trazida para os EUA. É diferente no que se refere ao uso de tesoura ou cola. Mas ambos surgiram como um passatempo que virou arte na mão de modelistas profissionais.

Para introduzí-lo nessa arte escolhi um modelo que me apaixonei a primeira vista, assistindo a um documentário sobre o Festival das Lanternas de Peixes Dourados de Yanai.


Fiquei louco com esse peixe e corri atrás até conseguir o modelo em PaperCraft para montá-lo. Até que finalmente encontrei.


Recomendo-lhe apenas 2 coisas, primeiro imprima em uma boa impressora colorida e segundo não use uma folha A4 comum e sim um papel de gramatura maior (mais grosso, preferencialmente entre 120 a 200 grs - O papel normal tem 75) que pode ser encontrado em qualquer boa papelaria.

Aqui está o modelo para impressão: Baixe aqui o PDF

Bom Relaxamento e até a próxima
Fernando Anselmo

PS. Já falei sobre Papercraft nesse blog em um outro artigo.

sábado, 19 de agosto de 2017

Linux - Gravar de Vídeos de Forma Livre vale a pena?

Para disponibilizar os vídeos para meu canal no YouTube utilizo basicamente 2 programas, o primeiro, para gravar, é chamado de SimpleScreenRecord e o segundo, para editoração OpenShot Video Editor. Ambos gratuitos e ambos rodam perfeitamente bem em vários sistemas operacionais incluindo meu Ubuntu.
O que eu acho mais engraçado nas pessoas é que elas acham que é necessário gastar uma grana em softwares (ou que apenas o Mac faz isso) para gerar vídeos de qualidade e que aplicativos gratuitos não prestam. Hoje enquanto estava gerando a segunda aula para meu curso de Spring com JSon aconteceu algo bem inusitado, bem no final (após gravar quase uma hora e meia de vídeo) aconteceu uma queda de energia. Qual o pensamento? Perdi tudo, desisto, vai ficar sem aula e deixa para amanhã. Mas após religar o computador descubro que o vídeo estava lá. Porém, e obviamente, estava corrompido, e lá vem o pensamento de novo: "Perdi tudo, desisto..." (e toda a choradeira comum) só que me lembrei que estava no Ubuntu.

Isso mesmo estava em um sistema operacional que me oferecia várias manipulações de arquivos então a solução foi abrir o terminal e digitar uma simples linha comando para recuperar meu vídeo:
$ ffmpeg -err_detect ignore_err -i arquivo.mkv -c copy resolvido.mkv
Se estivesse em qualquer outro sistema provavelmente estaria, procurando por um software que resolvesse meu problema e, pagando ou realizando alguma espécie de pirataria (atrás de uma versão craqueada). Fico maravilhado como o simples fato de usar um sistema livre me faz pensar em soluções livres.

Não estou falando que todo mundo que usa outro sistema não pensa assim, mas para quem é aficionado pelo Windows ou Mac quando foi a última vez que usou algo livre? Ou pensou em usar, é quase automático, quem usa esses ambientes quando querem um Editor Profissional pensam logo no Photoshop e torcem o nariz para o Gimp ou Krita. Quando querem uma suíte escritório correm para o MS-Office (que agora é Office 365) e esquecem completamente que existe o Libre-Office que faz exatamente a mesma coisa.

Existem excelentes soluções abertas e consigo produzir tudo que quero com elas, não vejo a menor necessidade (pelo menos até o momento) de recorrer a qualquer software "alternativo" que no máximo irá encher meu computador de vírus.

Obrigado e até a próxima
Fernando Anselmo








terça-feira, 15 de agosto de 2017

Instalação do Scratch 2.0 no Ubuntu 17.04

Desde que a Adobe Air abandonou o Linux começou a dar problemas para atualizar a versão do Scratch 2.0 no Ubuntu, a coisa desandou de vez quando instalei a versão 16.10. Depois de muito sufoco finalmente consegui um passo a passo de como instalar e nunca mais ter problemas pois bastará apenas copiar uma nova versão do arquivo .AIR para a pasta.


 Então vamos a um passo a passo, vou dividí-lo em três partes.

1ª Parte - Instalação das bibliotecas i386

# Instalar as bibliotecas i386 necessárias
$ sudo apt-get install libgtk2.0-0:i386 libstdc++6:i386 libxml2:i386 libxslt1.1:i386 libcanberra-gtk-module:i386 gtk2-engines-murrine:i386 libqt4-qt3support:i386 libgnome-keyring0:i386 libnss-mdns:i386 libnss3:i386

# Disponibilizar o keyring para o Adobe Air
$ sudo ln -s /usr/lib/i386-linux-gnu/libgnome-keyring.so.0 /usr/lib/libgnome-keyring.so.0
$ sudo ln -s /usr/lib/i386-linux-gnu/libgnome-keyring.so.0.2.0 /usr/lib/libgnome-keyring.so.0.2.0

2ª Parte - Instalação do Adobe AIR SDK

# Download do Adobe Air
$ cd ~/Downloads
$ wget http://airdownload.adobe.com/air/lin/download/2.6/AdobeAIRSDK.tbz2
$ sudo mkdir /opt/adobe-air-sdk
$ sudo tar jxf AdobeAIRSDK.tbz2 -C /opt/adobe-air-sdk

# Download Air runtime/SDK do Archlinux
$ wget https://aur.archlinux.org/cgit/aur.git/snapshot/adobe-air.tar.gz
$ sudo tar xvf adobe-air.tar.gz -C /opt/adobe-air-sdk
$ sudo chmod +x /opt/adobe-air-sdk/adobe-air/adobe-air

3ª Parte - Instalação do Scratch na última versão disponível

# Pegar a última versão do Scratch em https://scratch.mit.edu/scratch2download/
$ sudo mkdir /opt/adobe-air-sdk/scratch
$ wget https://scratch.mit.edu/scratchr2/static/sa/Scratch-456.0.4.air
$ sudo cp Scratch-456.0.4.air /opt/adobe-air-sdk/scratch/
Um detalhe, aqui você pode abrir o arquivo "Scratch-456.0.4.air" com o com "Compactador de arquivos e retirar o ícone "icons/AppIcon128.png" e copiá-lo para a mesma pasta que foi colocado o arquivo Scratch-XXX.X.Xair.
$ sudo cp /tmp/icons/AppIcon128.png /opt/adobe-air-sdk/scratch/scratch.png
Por fim agora basta criar um arquivo em "/usr/share/applications" chamado "Scratch2.desktop" e adicionar as seguintes configurações nele:
[Desktop Entry]
Encoding=UTF-8
Version=1.0
Type=Application
Exec=/opt/adobe-air-sdk/adobe-air/adobe-air /opt/adobe-air-sdk/scratch/Scratch-456.0.4.air
Icon=/opt/adobe-air-sdk/scratch/scratch.png
Terminal=false
Name=Scratch 2
Comment=Programming system and content development tool
Categories=Application;Education;Development;ComputerScience;
MimeType=application/x-scratch-project
Dar permissão de execução para este arquivo:
$ sudo chmod +x /usr/share/applications/Scratch2.desktop
E pronto, agora basta executar e desfrutar deste ambiente de lógica e programação.


Agora quando surgir uma nova versão basta copiar para a pasta "scratch" e modificar no arquivo desktop e fim dos problemas.

Obrigado e até a próxima
Fernando Anselmo