Docker on Bluemix with automated full-stack deploys and delivery pipelines

Introduction

This document explains working examples on how to use Bluemix platform advanced features such as:

  • Docker on Bluemix, integrated with Bluemix APIs and middleware
  • Full stack automated and unattended deployments with DevOps Services Pipeline, including Docker
  • Full stack automated and unattended deployments with cf command line interface, including Docker

For this, I’ll use the following source code structure:

github.com/avibrazil/bluemix-docker-kickstart

The source code currently brings to life, integrated with some Bluemix services and Docker infrastructure, a PHP application (the WordPress popular blogging platform), but it could be any Python, Java, Ruby etc app.

This is how full stack app deployments should be

Before we start: understand Bluemix 3 pillars

I feel it is important to position what Bluemix really is and which of its parts we are going to use. Bluemix is composed of 3 different things:

  1. Bluemix is a hosting environment to run any type of web app or web service. This is the only function provided by the CloudFoundry Open Source project, which is an advanced PaaS that lets you provision and de-provision runtimes (Java, Python, Node etc), libraries and services to be used by your app. These operations can be triggered through the Bluemix.net portal or by the cf command from your laptop.
  2. Pre-installed libraries, APIs and middleware. IBM is constantly adding functions to the Bluemix marketplace, such as cognitive computing APIs in the Watson family, data processing middleware such as Spark and dashDB, or even IoT and Blockchain-related tools. These are high value components that can add a bit of magic to your app. Many of those are Open Source.
  3. DevOps Services. Accessible from hub.jazz.net, it provides:
    • Public and private collaborative Git repositories.
    • UI to build, manage and execute the app delivery pipeline, which does everything needed to transform your pure source code into a final running application.
    • The Track & Plan module, based on Rational Team Concert, to let your team mates and clients exchange activities and control project execution.

This tutorial will dive into #1 and some parts of #3, while using some services from #2.

The architecture of our app

Docker on Bluemix with services

When fully provisioned, the entire architecture will look like this. Several Bluemix services (MySQL, Object store) packaged into a CloudFoundry App (bridge app) that serves some Docker containers that in turns do the real work. Credentials to access those services will be automatically provided to the containers as environment variables (VCAP_SERVICES).

Structure of Source Code

You may fork and add your app components to this structure.

bridge-app and manifest.yml
The CloudFoundry manifest.yml that defines app name, dependencies and other characteristics.
containers
Each directory contains a Dockerfile and other files to create Docker containers. I left some useful examples in the repo, but we’ll only use the phpinfo and wordpress directories in this tutorial.
.bluemix folder
When this code repository is imported into Bluemix, metadata here will be used to set up your development environment under DevOps Services.
admin folder
Random shell scripts.

Watch the deployment

The easiest way to deploy the app is through DevOps Services:

  1. Click to deploy

    Deploy to Bluemix

  2. Provide a unique name to your copy of the app, also select the target Bluemix space
    Deploy to Bluemix screen
  3. Go to DevOps Services ➡ find your project clone ➡ select Build & Deploy tab and watch
    Full Delivery Pipeline on Bluemix

Under the hood: understand the app deployment in 2 strategies

Conceptually, these are the things you need to do to fully deploy an app with Docker on Bluemix:

  1. Instantiate external services needed by your app, such as databases, APIs etc.
  2. Create a CloudFoundry app to bind those services so you can handle them all as one block.
  3. Create the Docker images your app needs and register them on your Bluemix private Docker Registry (equivalent to the public Docker Hub).
  4. Instantiate your images in executable Docker containers, connecting them to your backend services through the CloudFoundry app.

The idea is to encapsulate all these steps in code so deployments can be done entirely unattended. Its what I call brainless 1-click deployment. There are 2 ways to do that:

  • A regular shell script that extensively uses the cf command. This is the admin/deploy script in our code.
  • An in-code delivery pipeline that can be executed by Bluemix DevOps Services. This is the .bluemix/pipeline.yml file.

From here, we will detail each of these steps both as commands (on the script) and as stages of the pipeline.

  1. Instantiate external services needed by your app…

    I used the cf marketplace command to find the service names and plans available. ClearDB provides MySQL as a service. And just as an example, I’ll provision an additional Object Storage service. Note the similarities between both methods.

    Deployment Script
    cf create-service \
      cleardb \
      spark \
      bridge-app-database;
    
    cf create-service \
      Object-Storage \
      Free \
      bridge-app-object-store;
    Delivery Pipeline

    When you deploy your app to Bluemix, DevOps Services will read your manifest.yml and automatically provision whatever is under the declared-services block. In our case:

    declared-services:
      bridge-app-database:
        label: cleardb
        plan: spark
      bridge-app-object-store:
        label: Object-Storage
        plan: Free
    
  2. Create an empty CloudFoundry app to hold together these services

    The manifest.yml has all the details about our CF app. Name, size, CF build pack to use, dependencies (as the ones instantiated in previous stage. So a plain cf push will use it and do the job. Since this app is just a bridge between our containers and the services, we’ll use minimum resources and the minimum noop-buildpack. After this stage you’ll be able to see the app running on your Bluemix console.

    Deployment Script
    Delivery Pipeline
    Stage named “➊ Deploy CF bridge app” simply calls cf push;
  3. Create the Docker images

    The heavy lifting here is done by the Dockerfiles. We’ll use base CentOS images with official packages only in an attempt to use best practices. See phpinfo and wordpress Dockerfiles to understand how I improved a basic OS to become what I need.

    The cf ic command is basically a clone to the docker command, but pre-configured to use Bluemix Docker infrastructure. There is simple documentation to install the IBM Containers plugin to cf.

    Deployment Script
    cf ic build \
       -t phpinfo_image \
       containers/phpinfo/;
    
    cf ic build \
       -t wordpress_image \
       containers/wordpress/;
    
    
    Delivery Pipeline

    Stages handling this are “➋ Build phpinfo Container” and “➍ Build wordpress Container”.

    Open these stages and note how image names are set.

    After this stage, you can query your Bluemix private Docker Registry and see the images there. Like this:

    $ cf ic images
    REPOSITORY                                          TAG     IMAGE ID      CREATED     SIZE
    registry.ng.bluemix.net/avibrazil/phpinfo_image     latest  69d78b3ce0df  3 days ago  104.2 MB
    registry.ng.bluemix.net/avibrazil/wordpress_image   latest  a801735fae08  3 days ago  117.2 MB
    

    A Docker image is not yet a container. A Docker container is an image that is being executed.

  4. Run your containers integrated with your previously created bridge app

    To make our tutorial richer, we’ll run 2 sets of containers:

    1. The phpinfo one, just to see how Bluemix gives us an integrated environment
      Deployment Script
      cf ic run \
         -P \
         --env 'CCS_BIND_APP=bridge-app-name' \
         --name phpinfo_instance \
         registry.ng.bluemix.net/avibrazil/phpinfo_image;
      
      
      IP=`cf ic ip request | 
          grep "IP address" | 
          sed -e "s/.* \"\(.*\)\" .*/\1/"`;
      
      
      cf ic ip bind $IP phpinfo_instance;
      Delivery Pipeline

      Equivalent stage is “➌ Deploy phpinfo Container”.

      Open this stage and note how some environment variables are defined, specially the BIND_TO.

      Bluemix DevOps Services default scripts use these environment variables to correctly deploy the containers.

      The CCS_BIND_APP on the script and BIND_TO on the pipeline are key here. Their mission is to make the bridge-app’s VCAP_SERVICES available to this container as environment variables.

      In CloudFoundry, VCAP_SERVICES is an environment variable containing a JSON document with all credentials needed to actually access the app’s provisioned APIs, middleware and services, such as host names, users and passwords. See an example below.

    2. A container group with 2 highly available, monitored and balanced identical wordpress containers
      Deployment Script
      cf ic group create \
         -P \
         --env 'CCS_BIND_APP=bridge-app-name' \
         --auto \
         --desired 2 \
         --name wordpress_group_instance \
         registry.ng.bluemix.net/avibrazil/wordpress_image
      
      
      cf ic route map \
         --hostname some-name-wordpress \
         --domain $DOMAIN \
         wordpress_group_instance

      The cf ic group create creates a container group and runs them at once.

      The cf ic route map command configures Bluemix load balancer to capture traffic to http://some-name-wordpress.mybluemix.net and route it to the wordpress_group_instance container group.

      Delivery Pipeline

      Equivalent stage is “➎ Deploy wordpress Container Group”.

      Look in this stage’s Environment Properties how I’m configuring container group.

      I had to manually modify the standard deployment script, disabling deploycontainer and enabling deploygroup.

See the results

At this point, WordPress (the app that we deployed) is up and running inside a Docker container, and already using the ClearDB MySQL database provided by Bluemix. Access the URL of your wordpress container group and you will see this:

WordPress on Docker with Bluemix

Bluemix dashboard also shows the components running:

Bluemix dashboard with apps and containers

But the most interesting evidence you can see accessing the phpinfo container URL or IP. Scroll to the environment variables section to see all services credentials available as environment variables from VCAP_SERVICES:

Bluemix VCAP_SERVICES as seen by a Docker container

I use these credentials to configure WordPress while building the Dockerfile, so it can find its database when executing:

.
.
.
RUN yum -y install epel-release;\
	yum -y install wordpress patch;\
	yum clean all;\
	sed -i '\
		         s/.localhost./getenv("VCAP_SERVICES_CLEARDB_0_CREDENTIALS_HOSTNAME")/ ; \
		s/.database_name_here./getenv("VCAP_SERVICES_CLEARDB_0_CREDENTIALS_NAME")/     ; \
		     s/.username_here./getenv("VCAP_SERVICES_CLEARDB_0_CREDENTIALS_USERNAME")/ ; \
		     s/.password_here./getenv("VCAP_SERVICES_CLEARDB_0_CREDENTIALS_PASSWORD")/ ; \
	' /etc/wordpress/wp-config.php;\
	cd /etc/httpd/conf.d; patch < /tmp/wordpress.conf.patch;\
	rm /tmp/wordpress.conf.patch
.
.
.

So I’m using sed, the text-editor-as-a-command, to edit WordPress configuration file (/etc/wordpress/wp-config.php) and change some patterns there into appropriate getenv() calls to grab credentials provided by VCAP_SERVICES.

Dockerfile best practices

The containers folder in the source code presents one folder per image, each is an example of different Dockerfiles. We use only the wordpress and phpinfo ones here. But I’d like to highlight some best practices.

A Dockerfile is a script where you define how a container image should be built. A container image is very similar to a VM image, the difference is more related to the file formats they are stored. VMs uses QCOW, VMDK etc while Docker uses layered filesystem images. From the application perspective, all the rest is almost the same.

  1. Being a building script, it starts from a base parent image, defined by the FROM command. We used a plain official CentOS image as a starting point. You must select very carefully your parent images, in the same way you select the Linux distribution for your company. You should consider who maintains the base image, it should be well maintained.
  2. Avoid creating images manually, as running a base container, issuing commands manually and then committing it. All logic to prepare the image should be scripted in your Dockerfile.
  3. In case complex file editing is required, capture edits in patches and use the patch command in your Dockerfile, as I did on wordpress Dockerfile.
    To create a patch:

    diff -Naur configfile.txt.org configfile.txt > configfile.patch

    Then see the wordpress Dockerfile to understand how to apply it.

  4. Always that possible, use official distribution packages instead of downloading libraries (.zip or .tar.gz) from the Internet. In the wordpress Dockerfile I enabled the official EPEL repository so I can install WordPress with YUM. Same happens on the Django and NGINX Dockerfiles. Also note how I don’t have to worry about installing PHP and MySQL client libraries – they get installed automatically when YUM installs wordpress package, because PHP and MySQL are dependencies.

When Docker on Bluemix is useful

CloudFoundry (the execution environment behind Bluemix) has its own Open Source container technology called Warden. And CloudFoundry’s Dockerfile-equivalent is called Buildpack. Just to illustrate, here is a WordPress buildpack for CloudFoundry and Bluemix.

To chose to go with Docker in some parts of your application means to give up some native integrations and facilities naturally and automatically provided by Bluemix. With Docker you’ll have to control and manage some more things for yourself. So go with Docker, instead of a buildpack, if:

  • If you need portability, you need to move your runtimes in and out Bluemix/CloudFoundry.
  • If a buildpack you need is less well maintained then the equivalent Linux distribution package. Or you need a reliable and supported source of pre-packaged software in a way just a major Linux distribution can provide.
  • If you are not ready to learn how to use and configure a complex buildpack, like the Python one, when you are already proficient on your favorite distribution’s Python packaging.
  • If you need Apache HTTPD advanced features as mod_rewrite, mod_autoindex or mod_dav.
  • If you simply need more control over your runtimes.

The best balance is to use Bluemix services/APIs/middleware and native buildpacks/runtimes whenever possible, and go with Docker on specific situations. Leveraging the integration that Docker on Bluemix provides.

US bank account for non-US citizens

I’ve searched for a long time and finally found a US regular bank that will let me open a free checking account. It is BBVA Compass bank.

All these services are free: ATM withdraw and deposit (BBVA’s and AllPoint ATMs), full featured Internet banking, full featured mobile banking, Visa debit card, Apple Pay and more. The non-free services are listed here and exact rates depend on the state where the account was opened.

bbva-logo

To open a checking account, you must personally visit a physical branch in US and spend 40 minutes on an interview. You will leave the branch with an open account and routing numbers containing a $26 balance plus valid user and password that can be used on BBVA’s app and Internet banking. Free debit card will arrive to some US address in a week or two, so no ATM until then.

They have 2 free checking account types. The NBA Checking type is better – and this is the one you should open – because it gives you free access to AllPoint ATMs which are very popular throughout US and can be found in almost every 7 Eleven store. Use the AllPoint app to find one near you. Continue reading

WordPress on Fedora with RPM, DNF/YUM

WordPress is packaged for Fedora and can be installed as a regular RPM (with DNF/YUM). The benefits of this method are that you don’t need to mess around with configuration files, filesystem permissions and since everything is pre-packaged to work together, additional configurations are minimal. At the end of this 3 minutes tutorial, you’ll get a running WordPress under an SSL-enabled Apache using MariaDB as its backend.

All commands need to be executed as root. Continue reading

Is Open Source Swift a good thing ?

swift-progOn December 3 Apple has open sourced the Swift programming language on Swift.org. The language was first released (not Open Source yet) about the same time as iOS 8 and was created by Apple to make Mac and iOS app development an easier task. Swift is welcome as one more Open Source language and project but is too early to make a lot of noise about it. Here are my arguments: Continue reading

Impressões sobre o show do Vento em Madeira

VentoEmMadeira
Ontem, 16 de junho de 2015, fui ao show do Quinteto Vento em Madeira no Centro Cultural Cachuera. Dividiram o palco com Mônica Salmaso. Apesar da presença da cantora, não foi um show de MPB. Mônica novamente exercitou seu lado B jazzístico, deixou as letras de lado e ficou só no tum-dá-chibum dos scats.

O quinteto é liderado pela ótima flautista Léa Freire que tem um longo currículo de composições e gravações muito boas. Há também Teco Cardoso, que já me fez perder a conta de quantos álbuns monumentais da Música Instrumental Brasileira ele participa. De Ulisses Rocha a Orquestra Popular de Câmara, ao Pau Brasil, enfim… Em boa parte do show os sopros de ambos participaram de exuberantes diálogos: sax baixo de Teco subia quando a flauta de Léa descia e assim por diante.

Como bons representantes da cena instrumental paulistana, o Quinteto Vento em Madeira é vanguardista. Digo isso como um contraponto à cena carioca, que é mais renovadora do bom e velho choro/bossa/samba em roupagem instrumental. Mas voltando à vanguarda paulistana, ela é avançada, ou seja, exige algumas boas “escutadas” por ouvidos já amaciados para que seja apreciada. É o caso do Duofel, Grupo Medusa, Feijão de Corda, D’Alma e outros daqui da Pauliceia, que preferem a jornada do experimentalismo dissonante ao invés do pop instrumental.

Mas esse não é, repito: NÃO É, o caso do Vento em Madeira. Apesar de claramente soarem como a geografia vanguardista paulistana, eles conseguem ser fáceis e deliciosos. Ocupam assim um espaço incomum, difícil de preencher e é isso o que faz o Vento em Madeira extraordinário. Talvez pelo comando da natureza melódica dos instrumentos de Léa e Teco, talvez porque se projetaram assim, sei lá. E não importa. O que importa é que foi um dos melhores shows que fui nos últimos tempos, composições automaticamente inspiradoras e melódicas à moda antiga, só que tudo novinho em folha.

Acho também que eles tinham que sequestrar a Mônica de vez e virar um sexteto. Esse negócio de “participação especial” já não cola mais porque a gente sabe que ela tá em todas. E se arriscar muito ela passa a Joyce que para mim é ainda a maior “scater” do Brasil.

Uma coisa que me deixa mordido de feliz são os maracatus que aparecem do nada no meio das músicas. Adoro maracatu. Não há nada mais brasileiro, intenso e chacoalhante do que maracatu. E é tudo culpa do baterista Edu Ribeiro. O pianista Tiago Costa também se destacou como autor de ótimas composições.

Ponto marcante do show foi o veterano pianista Amilton Godói (ex-Zimbo Trio) roubar a cena com Léa, ele no piano, ela na flauta contra-baixo, instrumento este que eu nunca tinha visto nem ouvido. Do tamanho de uma pessoa de pé, soa grave e delicado, acompanhamento perfeito para a suave composição de Amilton.

Tem que ser muito petulante, ou escravo de rádio ruim, ou tremendamente desinformado prá dizer que a Música Brasileira está perdida, que não se faz mais coisa boa por aqui. O Vento em Madeira está aqui prá desdizer isso.

Fiquei feliz também que veio meu amigo Luiz e ganhei dele um álbum do violeiro Levi Ramiro que adoro. E que também consegui convencer meu ocupado colega de trabalho Alvaro Guimaraes, flautista, a adiar seus afazeres profissionais e vir ao show.

A nova TI do iPhone

Do PC ao Datacenter, como o iPhone mudou tudo o que fazíamos em TI

A fórmula era ambiciosa para 2007: um telefone com inovadora tela multitoque grande, teclado virtual que finalmente funcionava, SMS repensado e apresentado como uma conversa, aplicação de e-mail com interface extremamente efetiva e clara, inúmeros sensores que interagiam com o mundo físico. E, acima de tudo, um browser completo e avançado, que funcionava tão bem quanto o que tínhamos no desktop. Continue reading

WordPress Community is in Pain

I don’t know about you senior bloggers but I’m starting to hate the way the WordPress community has evolved and what it became.

From a warm and advanced blogging software and ecosystem it is now an aberration for poor site makers. Themes are now mostly commercial, focused on institutional/marketing sites and not blogs anymore. WordPress is simply a very poor tool for this purpose. You can see this when several themes are getting much more complex than WordPress per se. Continue reading

SMS sem Ansiedade

SMS, WhatsApp, iMessage, Hangouts mudaram a forma como nos comunicamos.

Só não podemos nos deixar cair na armadilha de achar que a mensagem entrou no cérebro do destinatário quando aparece ✔✔. Evite ansiedade desnecessária pois o destinatário pode estar ocupado, esqueceu de responder ou simplesmente viu mas não leu direito.

De resto essas Apps são adoráveis mesmo.

Publicado também no Facebook.

Como “Cloudificar” seu Datacenter Atual

Os gerentes de infra-estrutura de TI de hoje em dia tem um novo concorrente inesperado: as Clouds Públicas.

Ele investiu nos últimos anos em energia, rede e computadores de alta qualidade para ver seus usuários internos acabarem preferindo as Clouds Públicas por serem mais ágeis, elásticas e com modelo de cobrança mais preciso (paga só se usar). Continue reading

O problema em fazer tudo o que seu filho quer…

O problema em fazer tudo o que seu filho quer não é exatamente ele ficar mimado. Se ele ficar, no futuro (um tempo e espaço que ainda não existe), depois a vida conserta, é um problema menor.

O verdadeiro dilema, hoje, é isso transformar a vida dos pais num inferno. Dá prá medir isso por quanto você, pai/mãe, sucumbe aos caprichos dos filhos. A palavra chave aqui é “capricho”. Pais devem saber diferenciar capricho de necessidade real dos filhos. Choro de criança é uma força extremamente potente da natureza, tipo, é muito difícil não se comover e não agir, principalmente para as mães e avós, que são mais sensíveis. Mas agir sempre no sentido de parar o choro é, de certa forma, sucumbir aos caprichos, então quem cuida deve aprender a ser forte, eventualmente deixar chorar, saber identificar o verdadeiro motivo do choro, conseguir interpretar se está realmente doendo ou se simplesmente quer o iPad ou chocolate na hora errada. E fazer tudo com ternura, mas se permitir endurecer quando necessário. Essa é a sabedoria que se adquire na paternidade/maternidade.

Você só possui o presente, o futuro não existe. Não aja de forma a moldar seus filhos, é sacrifício demais para algo que está 1000‰ fora do seu controle.

Eu acredito que a melhor paternidade/maternidade é aquela que é regada de amor. Inclusive amor próprio.

Publicado também no Facebook.

Se você tiver vontade de abandonar o Brasil…

Se você tiver vontade de abandonar o Brasil, ir embora de vez porque está cansado disso tudo, deve parar e perguntar se a sua vida está mesmo tão ruim assim. E se essa ruindade toda é mesmo culpa do país onde você vive.

Há muitas pessoas que displicentemente falam mal de tudo com bem pouca profundidade. E isso é enormemente amplificado pelas usinas de circulação de pensamento que são as redes sociais. Tem certeza que você não está sendo facilmente influenciado por isso ? Continue reading

Ode às Redes Sociais e à Livre Circulação de Pensamento

Tirando uns 60% de conteúdo ainda meio supérfluo, redes como Facebook e Twitter são ferramentas sem precedentes na história da humanidade.

Se você consegue enxergar além da piadinha, da foto do bebê e do bichinho, perceberá que tratam-se de verdadeiras usinas de difusão e circulação de pensamento que mantém a mente fascinada, o raciocinio arejado e o coração aberto.

Não menospreze essas ferramentas alegando que prefere relações pessoais cara a cara. É como descartar voar só porque a natureza não te deu asas. É como desprezar Paris só porque você é carioca da gema. Já superamos isso, é uma desculpa ingênua, que não cola, que soa mal e não “cool”.

Seja um partícipe na circulação do pensamento. As idéias, a informação, o pensamento, tudo isso quer ser útil, de alto alcance, para transformar. Não exclusivo, não de difícil acesso e nem caro. Esses sistemas de engajamento podem completar e potencializar o melhor de você como qualquer ferramenta quando usada para o bem, só que de uma forma nunca antes vista na história desta humanidade.

Microsoft Windows na plataforma Power com KVM e QEMU

Com o lançamento de KVM para Power se aproximando no horizonte, tem se falado muito sobre rodar o Microsoft Windows em Power.

Só uma rápida retrospectiva, KVM é a tecnologia do Kernel do Linux que permite rodar máquinas virtuais de forma muito eficiente. E o QEMU é o software que emula diversos aspectos de um computador (portas serias, rede, BIOS/firmware, disco etc). O QEMU existia antes do projeto KVM e possibilita rodar, de forma razoavelmente lenta devido a emulação de todos os aspectos do hardware, outro sistema operacional completo dentro dele.

Continue reading

Casal, Separação e Amor

Quando um casal se separa e cada um sai em busca de outros companheiros, com certeza encontrarão alguns que não tem os “defeitos e problemas” do anterior porque se especializaram em detectar esses “defeitos”. Mas com o tempo, com certeza absoluta encontrarão outros tipos de problemas, às vezes maiores que os do anterior, porque neste mundo nada ainda é perfeito, tudo está em constante evolução.

União edificante e bem sucedida é aquela em que cada um dá o melhor de si e ajuda o companheiro a superar seus problemas, exercitando amor fraternal e de nível superior.

Amor esse que não deve ser confundido com a curta faísca da paixão, amor que não é atração que decai tão rápido quanto a carne, que não é dependência emocional nem financeira. Amor que não é interesse e que não é medo ou veneração por regras sociais e religiosas.

Publicado também no Facebook.

O Twitter vai acabar, Facebook vai prevalecer

Prevejo (e costumo acertar essas coisas) que a médio prazo o Twitter tende a desaparecer. Mesmo com conteúdo melhor — pelo menos das pessoas que eu sigo —, seu concorrente, o Facebook, tem mais funcionalidades e possibilidades, é mais auto-contido e é mais colorido e diverso, o que o torna mais popular também.

Então acho que muitos continuarão migrando para o Facebook e deixando gradativamente de usar o Twitter, infelizmente.

Publicado também no Facebook

Paz de Espírito

Não vim aqui para ter paz. Paz terei quando morrer.

Vim aqui para interagir com as pessoas, com as coisas e com o mundo. Despertar interesses, sensibilidade que vai além dos sentidos físicos e assim superar as aparências. Vim experimentar relacionamentos com o mínimo de diplomacia possível, pois esta esconde a essência e as verdadeiras intenções.

Sou muito jovem para ter paz. Há muito o que observar e aprender sobre o universo. Há muito o que se pensar e concluir, pois a opinião pronta dos outros me servirá no máximo como mais um parâmetro para a construção do meu próprio pensamento. E tudo isso é interessante e inquietante, fomentado pela minha infinita sede de saber. Ainda não há espaço para paz e isso é bom, pois é o tempo natural das coisas.

Desconfio de jovens com paz. Isso tem outro nome. Eu chamo de letargia, conformidade, desinteresse. Isso também é porta aberta para pensamentos alheios que não lhe são necessariamente úteis ou saudáveis. Publicidade, a ciência que estuda como fazer você desejar o que não precisa, quer essa porta aberta na sua cabeça. Quer você com “paz”.

No fim da vida, quando tiver acumulado diversas experiências edificantes, quando e se tiver a clara sensação de que cresci e junto ajudei o mundo a crescer, aí sim haverá espaço para paz na minha alma. E será um novo começo, leve e bem-vindo como a manhã fresca de um dia de folga.

Publicado também no Facebook

OpenShift for Platform as a Service Clouds

OpenShift-LogoAt the Fedora 20 release party another guy stepped up and presented+demonstrated OpenShift, which was the most interesting new feature from Red Hat for me. First of all I had to switch my mindset about cloud from IaaS (infrastructure as a service, where the granularity are virtual machines) to PaaS. I heard the PaaS buzzword before but never took the time to understand what it really means and its implications. Well, I had to do that at that meeting so I can follow the presentation, of course hammering the presenter with questions all the time.
Continue reading

O judaismo e sua “não definição”

Sou de família judaica e já pensei muito sobre este assunto (comentando um artigo de minha amiga Andréa Kogan), decorrente de, na minha adolescência, começar a achar certas coisas muito esquisitas e essencialmente preconceituosas.

Conclui que há o judaísmo religião e há o judaísmo cultura (relacionado a história de um povo etc). E tomei a posição de ser um péssimo judeu religioso por achar a religião judaica, encarnada aparentemente em tradições que não fazem nenhum sentido, deveras obsoleta e desatualizada. Em termos de conhecimento e cultura espiritual, acho que há coisas melhores hoje em dia, como o espiritismo e bahai (não sei se é assim que se escreve).

Mas também me considero um judeu-cultural por excelência, pela forma como sinto a conexão com minhas raízes, com a história. É-me emocionante. Ah, e sou também um excelente judeu que vai em festas pois adoro as pessoas, comidas típicas e tal.

Promover a comunidade, quando não há intenções de segregação, é a melhor e mais duradoura característica do judaísmo.

Este meu comentário também apareceu no Facebook.

GMail as mail relay for your Linux home server

Since my Fedora Post-installation Configurations article, some things have changed in Fedora 20. For example, for security and economy reasons, Sendmail does not get installed anymore by default. Here are the steps to make your Linux home computer be able to send system e-mails as alerts or from things that run on cron. All commands should be run as user root. This is certified to work on Fedora 21.

Continue reading

Coisas que aprendi e descobri na Latinoware 2013

 

Inovação e o Filme do Steve Jobs

Jobs movie Ashton KutcherBom mesmo o filme sobre Steve Jobs, para mostrar como é árida a jornada para a Inovação. Como é solitário, como todos ficam te falando que está tudo errado.

Inovar não é repetir essa mesma palavra 800 vezes em PowerPoints. É ter Visão (A Centelha Motivadora), se preocupar com Detalhes e Persistir. Sendo que Visão é o fator menos importante porque ela muda, refina e se adapta durante a jornada. Persistir é deveras mais dispendioso para conseguir atravessar o mar de antiquados que tentarão te impedir.

Essa é pros loucos, pros deslocados, rebeldes, encrenqueiros, pros pinos redondos nos buracos quadrados… pros que vêem as coisas diferente — eles não curtem regras… Você pode citá-los, discordar deles, glorificar ou denegrí-los, mas a única coisa que você não pode fazer é ignorá-los, porque eles mudam as coisas… eles empurrar a humanidade prá frente, e enquanto alguns os vêem como loucos, nós vemos genialidade, porque aqueles que são loucos o suficiente prá achar que podem mudar o mundo, são os que mudam.

Rob Stiltanen & Ken Segall

Install OS X on a Mac computer from an ISO file

For some reason nobody published a simple guide like this. Maybe nobody tryied this way. I just tryied and it works with OS X Mountain Lion on a Mid 2012 MacBook Air.

If you have a Mac computer or laptop and want to install OS X, and all that you have is the operating system installation ISO image, you just need an external USB storage (disk or pen drive) of 5GB minimum size. Those regular 120GB or 1TB external disks will work too.

Just remember that all data on this external storage will be erased, even if the Mac OS X installation ISO is just 4.7GB. So make a backup of your files and after installtion you can re-format the external disk and recover the files on it.

To make the OS X installation ISO image file usable and bootable from the external storage, use the Mac OS terminal app or, on Linux, use the command line. This is the magic command:

dd if="OS X Install DVD.iso" of=/dev/disk1 bs=10m

You might want to change the red part of this command to the disk name that you get when inserted the external storage. Remember to not use things like disk1s1 or, on Linux, sdc1. The highlighted blue part on these examples are the partition name, and you don’t want that. You want to use the whole storage, otherwise it will not boot the computer.

After the command finishes execution, boot the Mac computer with the alt/option key pressed. Several devices will appear on screen for you to choose wich one to boot. Select the one with the USB logo and called “EFI Boot“.

Mac OS X installation app will boot and you can start the process. Remember that the default behavior here is to upgrade the installed system. If you want a clean install, select the Disk Utility app on the menu and make sure you erase and create a new partition on the Mac internal storage.

As a side technical note, this is all possible because ISO images — primarily designed for optical disks — can also be written to regular other storages as pen drives. And Apple has also put the right bits on these ISO images to allow it to boot from non-optical disks too.

Exchange large amounts of files with me

I maintain a large amount of browseable files at http://amp.alkalay.net/media/Musica/ that can be accessible also by SFTP on sftp://amp.alkalay.net:/home/pubsandbox/.

You can access thse files with any SFTP (Secure Shell FTP) client on sftp://everestk2:k2everest@amp.alkalay.net:/home/pubsandbox/.

There is a visual way to download files from there using FileZilla. Just follow the steps. Continue reading

Unicode ♥ וניקוד ☻ Уникод ♫ يونيكود

Você sabia que há pouco tempo era impossível misturar diversas línguas numa mesma frase de texto sem a ajuda de um editor multilíngue especial? Mais ainda, que havia idiomas cujas letras sequer tinham uma representação digital sendo impossível usá-las em computadores?

Tudo isso virou passado com o advento do Unicode e para entendê-lo vamos relembrar alguns conceitos: Continue reading

Sobre Profetas e Bolas de Cristal

Este é um artigo sobre Business Intelligence, Business Analytics, Big Data e Data Mining.

Há quem diga que os antigos profetas eram pessoas comuns que proferiam simples consequências lógicas baseadas em observação mais profunda de fatos de seu presente e passado. Tudo o que vemos à nossa volta é resultado de alguma ação, tem uma história e um motivo de ser e de existir. Em contrapartida, seguindo um mesmo raciocínio científico, se algo aparentemente “não tem explicação” é porque ninguém se aprofundou suficientemente nos fatos históricos que o causaram. Continue reading