Concrete Logo
Hamburger button

Como foi a UIKonf 2015

  • Blog
  • 7 de Agosto de 2015
Share

Entre Maio e Junho desse ano participei de uma longa viagem internacional focada no desenvolvimento para iOS e nas comunidades mobile.

A viagem começou com a ida para Berlim, para assistir a UIKonf, conferência de dois dias que acontece desde 2013. Após mais de 40h de viagem, com escala de 12h em Newark (o que me permitiu uma escapadinha até Nova York e a perda da minha carteira com dinheiro e cartões de crédito na volta para o aeroporto =( – mas essa história fica melhor pessoalmente) –  e 7h em um trem entre Amsterdam e Berlim), finalmente cheguei à capital da Alemanha.

Após um longo banho e uma merecida noite de descanso, começamos as atividades no domingo com um belo passeio pelo Rio Spree. O passeio fazia parte das atividades sociais promovidas pela organização do evento – por sinal, uma organização de primeira, bati bons papos com os organizadores. Recomendo o passeio, se for a Berlim, faça também. O bacana é que ele foi feito com vários outros participantes do evento, então já pudemos iniciar o networking e conhecer outros profissionais da área. Nesse passeio, por exemplo, pude conhecer a Natasha Murashev, também conhecida como Natasha The Robot.

 

A conferência propriamente dita começou na segunda, com um excelente keynote do Mike Lee, entitulada World Modeling. O Mike, para quem não conhece, é um engenheiro americano fundador do movimento Appsterdam, do qual sou colaborador da embaixada brasileira. Há algum tempo o Mike não faz mais palestras técnicas, mas essa foi bastante matemática e tocante. Por meio de emoticons e um pouco de Swift, ele explicou um artigo científico com um modelo matemático bastante complexo sobre o crescimento populacional e o uso de recursos naturais. Foi alarmante, mas com um uma mensagem final bastante positiva.

A Natasha também foi palestrante, e nos apresentou a divertida introdução ao Swift (com um bocado de referências à outra Swift) chamada Swift Thinking.

tales

A conferência seguiu com a palestra Staters gonna State – uma das poucas a mostrar Objective-C – apresentada pelo Eli Perkins, engenheiro trabalhando com iOS na Venmo. A palestra mostrou como usar conceitos de programação funcional e programação funcional reativa de forma a eliminar controle de estado na aplicação e diminuir bugs no controle da mutabilidade dos estados. Foi mais uma das tantas a citar a “dualidade” Simples vs Fácil. Falou também um pouco sobre value types vs reference types – um assunto que vou falar em outro post.

A sequência foi dada pelo Junior Bontognali – a minha maior supresa. O Junior é suíço, mas a mãe é de Manaus, e por isso vem com freqüência ao Brasil. Posso dizer que ficamos bastante amigos, e vamos colaborar em algumas atividades na comunidade de desenvolvedores. Pedi autorização, e em breve devo dar uma repaginada/evoluída na excelente palestra Monads are not Monsters. Eu já havia pensado em escrever sobre monads em Swift – dando um passo além e mostrando um pouco do seu uso em Elixir (que não possui monads por padrão na linguagem) e Haskell (o Victor Nascimento já me chamou de louco algumas vezes quando citei essa ideia). Para quem não conhece, Monad é um recurso bastante usado em programação funcional para eliminar/isolar efeitos colaterais por meio da composição de funções, “amaldiçoada” pela “Crockford’s Law”. De forma bastante genérica, ela diz que uma vez que você tem a epifania e finalmente entende o que é uma monad, você perde automaticamente a habilidade de explicar o que são. A palestra do Junior mostra que isso pode não ser tão verdade com o uso divertido da técnica de “Cat Oriented Programming” :D.

Quer começar a desenvolver para Apple Watch (ainda na versão 1.0)? Assista a palestra Practical WatchKit Development, apresentada pelo Claus Höfele.

Uma preocupação constante da Concrete Solutions é a arquitetura dos projetos, e a apresentação Software Architecture in iOS and OS X Applications, por Marcel Weiher, ajudou bastante. Essa foi outra das poucas que mostraram Objective-C, e o Marcel, que é também criador da linguagem Objective-Smalltalk, não se converteu ainda ao Swift.

Podemos quase dizer que todo app mobile tem algum conteúdo assíncrono, baixando algum conteúdo da internet. Tom Adriaenssen apresentou uma técnica interessante de como “descontrair” as Massive View Controllers (piada interna entre os desenvolvedores iOS) e construir View Controllers assíncronas na palestra Async View Controllers. Ele indica o uso de protocolos que custom views adotam, views essas que são por sua vez usadas nas View Controllers assíncronas.

Uma das palestras inspiracionais foi apresentada pelo engenheiro da Realm JP SimardFixing the Swift Tooling Problem. A premissa da palestra: Swift tem muito potencial, mas o maior problema hoje é o ferramental – ótimo, vamos corrigir esse problema! Na época da apresentação, ainda não era conhecido que Swift se tornaria oficialmente “open source”, então o JP fez um “call to arms” para que nós passássemos a criar ferramentas, plugins para o Xcode e ajudar nos projetos já abertos, inclusive fazendo melhorias nas partes já abertas do _llvm que possam ajudar a Apple a facilitar a nossa vida em Swift. Ele mostrou uma lista de ferramentas ainda inexistentes ou bastante problemáticas e sugeriu formas de resolvermos esse problema.

Terminamos o primeiro dia da conferência com o Ash Furrow apresentando outra das palestras extremamente motivacionais: Teaching and Learning. Muitos desenvolvedores saíram da palestra direto para o computador, com o único motivo de criar ou atualizar seus blogs. A palestra motivava a todos a ensinarem por meio de blogs, livros, palestras, conferências, etc… Eu já tenho feito a minha parte colaborando com o movimento Appsterdam Br e o CocoaHeads BR, mas ainda falta escrever mais (como organizo o capítulo de SP do CocoaHeads Br, evito palestrar tanto quanto gostaria/poderia). Mas o Ash dá boas dicas de como perder o medo e evitar os bullies e trolls da internet. Vá escrever/ensinar. É bom para a reputação e para o ego e ainda ajuda você a aprender mais 😀

Fomos então para a keynote do segundo dia com a Halle Winkler e a palestra Duct-taping the gates of chaos shut: the weird, little, useful, sustainable indie. Ano passado tive a oportunidade de ver outra excelente palestra dela na NSConference: Post-Apocalyptic Technical Ethics.

Na sequencia das palestras veio o Brian Gesiak, engenheiro do Facebook e criador do Quick (framework de testes para Swift e Objective-C inspirado no RSpec e Specta). Apesar de eu ainda não ter escrito muito código em Swift, tenho estudado bastante, e uma das minhas maiores preocupações é nos Design Patterns da linguagem – basicamente nenhum foi criado. Por ser uma linguagem multiparadigma, uma constante nas conferências e artigos de Swift é: ”Go Functional or Go Home” – e a UIKonf manteve a “regra”, com grande parte das palestras falando de programação funcional e Swift. A palestra iOS API Design: Swift Patterns, por exemplo, apresentou ótimas dicas de como usar algumas funcionalidades da linguagem para evoluir uma API em Swift. Quem sabe não acabam virando design patterns? Espero que sim :).

E já que falei acima sobre juntar Swift, Elixir e Haskell em um mesmo post, o Joe Burgess mostrou que isso é possível com a palestra Learning Swift Through Lessons in Haskell. Comecei a aprender um pouco de Haskell no Channel 9 depois de tentar entender programação funcional com Erlang (nunca tinha ouvido falar de Haskell antes, mas já conhecia Erlang de nome durante meu mestrado) e descobrir que Erlang não é puramente funcional. Fui aprender Erlang por causa das funcionalidades de escalabilidade/estabilidade (e porque queria entender melhor o conceito de block sem Objective-C, que sabia ter vindo dos lambdas de programação funcional). Já que Swift é mais ”funcional” que Objective-C, aprender Haskell poderia ser uma boa para entender alguns conceitos por trás da linguagem. Ao assistir essa palestra (e da próxima que falo a seguir) fiquei bastante empolgado em usar programação funcional com Swift, mas depois da WWDC mudei um pouco a opinião. Espero escrever sobre isso em breve.

Como disse no parágrafo anterior, a palestra Functional View Controllers do Chris Eidhof apresentou outra curiosidade de programação funcional que me fez querer usar mais esse estilo com Swift. O Chris é um dos criadores da UIKonf (esse foi o primeiro ano que foi organizado por outro grupo, por questões pessoais e profissionais o Chris estava sem tempo e chegou a anunciar a morte da conferência antes de o novo grupo assumir) e um dos autores do livro Functional Programming in Swift. Ele também é ex-programador Haskell – sim, ele trabalhou profissionalmente com Haskell – e um dos criadores da revista objc.io. Ele fez na UIKonf um live coding apresentando um experimento criando um cliente do GitHub 100% usando apenas programação funcional, expandindo as ideias da primeira edição da objc.io – Lighter View Controllers. Como disse, não sei mais se acho uma boa ideia, mas é bastante interessante.

Hector Zarate, engenheiro do Spotify, apresentou ideias de como criar pequenos apps, agrupá-los de forma modular e gerar o app final do Spotify na palestra iOS at Spotify: From Plan to Done. Usando algumas ideias dele e algumas que eu já estava elaborando, pretendo criar uma série de posts e disponibilizar um projeto open source. Com o lançamento do iOS 9 se aproximando, poderemos – em geral – acabar com o suporte ao iOS 7 (sou da opinião de suportar no máximo duas versões major – no caso, 8 e 9). Com isso, poderíamos passar a distribuir esses micro-apps como frameworks dinâmicos, contendo binários e assets como imagens, ícones e fontes customizadas.

Seguindo a linha de programação funcional reativa – um tópico quente no desenvolvimento em iOS – Jens Ravens nos apresentou a palestra Functional Reactive Programming without Black Magic – Build your own ReactiveCocoa from scratch, descrevendo conceitos por trás do ReactiveCocoa e uma versão simplificada do mesmo. A última versão estável lançada foi a 2.5, mas desde o lançamento do Swift o time por trás do ReactiveCocoa vem desenvolvendo a versão 3.0 toda reescrita na nova linguagem – e sem compatibilidade reversa. As vezes você não depende de toda a arquitetura e complexidade do ReactiveCocoa. A versão do Jens pode ajudar com isso – ou você pode usar essa apresentação como introdução aos conceitos por trás do ReactiveCocoa.

A conferência foi seguida pela palestra Prototyping Touch Interfaces (and my open-source story), apresentada pelo Saniul Ahmed, mas essa eu não assisti =/. Durante a apresentação fui fazer networking e tomar um café – porque era o momento do melhor café do dia. Nesse momento rolou uma pequena piada sobre globalização: em Berlim existe um movimento forte de cafeterias artesanais, e o café distribuído na conferência era de uma delas. A cafeteria aberta em Berlim era de dois caras de Sidney – Austrália. E, na minha opinião, o melhor café deles – que vinha de diversos países – era um café cultivado Minas Gerais e torrado e moído na França.

Maxim Cramer – ex-engenheira mas sempre apaixonada por design – nos contou então como foi contratada como engenheira pra trabalhar no app SwiftKey e como fez a mudança para trabalhar com User Experience na palestra A Journey into Design. Também explica um pouco sobre alguns dos diversos conceitos por trás do UX.

Por último, mas não menos importante – talvez, na verdade, a mais importante – veio outra das melhores palestras, na minha opinião. Graham Lee, depois de tantas horas de Swift e programação funcional na conferência, falou sobre Object-Oriented Programming in Objective-C. Foi ótimo vê-lo apresentar, já que ele é um dos meus “heróis”. Antes de trabalhar profissionalmente com Objective-C – e com (na época) o iPhoneOS – eu trabalhava desenvolvendo backends para bancos e operadoras de cartão de crédito, usando simplesmente C e programação estruturada. Passei 8 anos trabalhando com isso, então programação estruturada estava bastante enraizado em mim. Quando comprei meu primeiro Mac entre o final de 2006 e início de 2007 – uns 6 meses antes do anúncio do primeiro iPhone – resolvi que queria entrar no mestrado e que iria usar o Mac na academia.

Comecei, então, a aprender Objective-C em tutoriais do finado Mac Research: um site que ensinava e mostrava como usar Macs em pesquisas científicas. Programas úteis, como desenvolver usando XSAN (uma forma de processamento distribuído de alta performance) e um enorme tutorial de Objective-C. Como trabalhava durante o dia com C, passei a escutar um podcast chamado Late Night Cocoa, gravado pelo Steve “Scotty” Scott – organizador da NSConference e host de diversos podcasts, outro dos meus heróis. Em um desses podcasts, o Grahan Lee tinha um trecho em que falava sobre segurança. Nessa palestra, ele fala um pouco sobre a crise na programação estruturada e os problemas que a programação orientada a objetos resolve. E são os mesmos que agora, vinte anos depois, tentamos resolver com programação funcional em Swift. Será que daqui a vinte anos diremos que programação funcional está em crise e resolveremos o problema com outro “novo” paradigma de programação? Além disso, aprendi um bocado sobre programação orientada a objetos nessa apresentação – mesmo depois de 7 anos trabalhando nesse paradigma.

Como sempre, aprendi bastante nessa conferência, e espero muito poder participar no ano que vem. Inclusive fiz uma “aposta/acordo/promessa” com a Diana Arce – uma das organizadoras do evento, responsável pela produção visual e captura do vídeos. Ela não é engenheira/desenvolvedora, mas prometeu que aprende Swift para o ano que vem, contando que eu e outro amigo brasileiro que esteve na conferência comigo – o Newton Mota – submetamos propostas de palestras para o ano que vem. Estou comprometido com isso!

De lá, eu e o Newton fomos para Amsterdam conhecer o pessoal por trás da comunidade Appsterdam. Mas isso fica para outro papo. Ficou com alguma dúvida ou tem algo a acrescentar? Deixe um comentário. Até a próxima!