sexta-feira, 25 de janeiro de 2019

O que tenho de útil no meu celular?

Muito se fala sobre a perda de tempo com celulares. É verdade. Mas também há muito de útil no celular que eu não conseguiria de outra forma com facilidade:
- Aplicativos de mobilidade: tanto os para chamar táxis e assemelhados, quanto os para traçar rotas e conhecer horários de ônibus.
- Câmera fotográfica: muitas vezes é útil tirar foto de algo.
- Lanterna: não é muito prático levar uma lanterna de verdade por aí, não é?
- Lupa: a câmera funciona também como uma lupa.
- Comunicadores: podem evitar uma ligação, mas também podem te encher de lixo e fake news.
- Aplicativos para exercícios
- Aplicativos para email
- Aplicativos de previsão do tempo
- Aplicativos para agenda
- Aplicativos para audiolivros
- Aplicativos para escutar podcasts
- Aplicativos para bancos e cartões de crédito
- Browsers para buscas rápidas
- Aplicativos para leitura offline de textos da internet
- Redes sociais de leitores
- Gravador de voz

Será que o uso destes aplicativos compensa os riscos de usar o celular?


O que eu gostaria de conseguir fazer em 2019?

Trabalhar mais em pé, o que estou fazendo agora. Quando não der, usar um banco ou algo que não me permita ficar numa posição prejudicial para minha postura, minha coluna.

Descartar muito do lixo visual que tenho em minha sala de trabalho. Talvez doar (ou vender) livros que não são necessários (ou que não me dão alegria, nas palavras de Marie Kondo).

Trabalhar mais tempo em regime de Deep Work (Trabalho Focado - conforme livro de Cal Newport). Será que para isso vou ter que fazer contabilidade do tempo dedicado a Deep Work, como sugere Cal? Ou usar alguma técnica de formação de hábitos, incluindo recompensas, como sugere Charles Duhigg? Ou usar mais outros espaços que não minha sala (onde sou muito interrompido)?

Fortalecer o hábito da escrita de forma mais organizada. Já escrevo bastante mas os escritos ficam perdidos. Dois pontos que preciso fortalecer:
- Escrever direto no computador ou ao menos passar para o computador o que escrevi no papel
- Editar documentos antigos. Muitas vezes escrevo e deixo lá. Edição é fundamental. Escrever e reescrever sempre.

Buscar opções de antifragilidade. Esta parte vou deixar meio obscura mesmo.

Cuidar mais e melhor da minha saúde fazendo jejum intermitente mais vezes. Talvez experimentar com uma dieta carnívora ou ao menos cetogênica (no momento tento fazer algo mais paleo-lowcarb, mas sem muito rigor).

Fazer mais exercícios de força, com halteres, seguindo os ensinamentos de Mark Rippetoe. Mas como e onde? Mark diz que lendo o livro dá para aprender. E tem vários vídeos dele no YouTube também. Porém, com a evolução dos pesos talvez eu precise do espaço de uma academia.

Acompanhar política com menos regularidade. É preciso informar-se todo dia?

quinta-feira, 25 de outubro de 2018

Elixir Coding Dojo at UTFPR

We have had an Elixir Coding Dojo at UTFPR yesterday.

I was the Sensei and there was approximately 8 participants.

Some links I have suggested to the participants who want to learn more about Elixir are on this Twitter thread.

The Code Kata (problem) we chose to solve was Look and Say.

Code was posted as a gist but it is also below:

look_and_say.ex

defmodule LookAndSay do
  def lookandsay(numero) do
    numero
    |> Integer.digits()
    |> lookandsay_inicia()
    |> Integer.undigits()
  end

  defp lookandsay_inicia([cabeca | cauda]) do
    lookandsayauxaux(cabeca, cauda, 1)
  end

  defp lookandsayauxaux(estado, [], i) do
    [i, estado]
  end

  defp lookandsayauxaux(estado, [estado | cauda], i) do
    lookandsayauxaux(estado, cauda, i + 1)
  end

  defp lookandsayauxaux(estado, [novoestado | cauda], i) do
    [i, estado] ++ lookandsayauxaux(novoestado, cauda, 1)
  end
end


look_and_say_test.exs

defmodule LookAndSayTest do
  use ExUnit.Case

  test "Look and Say de 1 é 11" do
    assert LookAndSay.lookandsay(1) == 11
  end

  test "Look and Say de 555 é 35" do
    assert LookAndSay.lookandsay(555) == 35
  end

  test "Look and Say de 55 é 25" do
    assert LookAndSay.lookandsay(55) == 25
  end

  test "Look and Say de 11 é 21" do
    assert LookAndSay.lookandsay(11) == 21
  end

  test "Look and Say de 5 é 15" do
    assert LookAndSay.lookandsay(5) == 15
  end

  test "Look and Say de 123 é 111213" do
    assert LookAndSay.lookandsay(123) == 111_213
  end

  test "Look and Say de 551 é 2511" do
    assert LookAndSay.lookandsay(551) == 2511
  end

  test "Look and Say de 555555 é 65" do
    assert LookAndSay.lookandsay(555_555) == 65
  end
end

Code above was created using ExToHtml:



The Coding Dojo was part of a Free Software event:


quinta-feira, 13 de setembro de 2018

How do I fit my academic job into a 37 hour week?, by Jenny Pickerill



"How do I fit my academic job into a 37 hour week? I don’t, I couldn’t possibly because this job is impossible to do/ complete/ control. But I am not willing to give my life to it or work longer hours unpaid, so here are 10 ways I survive:

1. Cut corners - I speed read (badly), I make quick decisions, I don’t read papers before a meeting, I delete emails based on the subject heading alone.

2. Don’t over prepare teaching - I have to ad lib sometimes, I limit my prep time deliberately, I do my best in the limited time available, I only try one new technique a year, I don’t dwell on a bad lecture/ seminar/ evaluation.

3. Teach the way I like - if it is enjoyable for me I hope my students will feel enthused, I don’t waste time trying to teach like others (I try to be accessible + inclusive but see pt.2)

4. Time my marking - I give each essay/ exam the time my Uni pays me to mark it (which is not a lot).

5. Avoid others’ agendas - I am cautious of being pulled into things, I take my time before agreeing to invitations/ collaborations/ favours.

6. Allocate realistic time to tasks in my calendar - I know what has to be done each week and when I am going to do it. When this gets disrupted I know what time needs to be taken from something/ somewhere else or cancelled

7. Do my share of admin - but don’t do it all, push back on bureaucracy, prioritise the things that will make a difference to the department, staff, students. Ignore some demands/ meetings/ emails.

8. Do just enough - I made a list of things I dislike doing but have to do (like grant applications) or find time consuming (like conferences) and have a yearly target. Once reached I do no more.

9. Allocate days either to teaching + admin OR research. They don’t mix.

10. Spend time on the nourishing parts of the job - I protect and cherish reading + writing days, enjoy face to face teaching + supervison, love fieldwork, and find chatting and laughing with colleagues vital."

Full thread and subsequent discussion below (on Twitter):





Related blog post by the same author: Career advice: how to work a 37-hour week

quarta-feira, 12 de setembro de 2018

Visita EBANX

Wilson Bissi foi meu orientado no mestrado e hoje trabalha no EBANX. Estive lá no dia 05/09/2018.

Vários alunos da UTFPR estagiam lá.

Linguagens que usam: Java, PHP, Ruby.

Um pequeno sistema em Elixir foi desenvolvido durante uma Hackathon interna (24 horas) como Prova de Conceito. Mostra status em TVs.

Um dos ambientes tem um quadro informativo, incluindo Kanban. O quadro é de vidro e contém varios post-its e anotações feitas a caneta para vidro.

Quase todos os ambientes são open office. Existem salas de reuniões para fins específicos.

Há uma copa em que os os funcionários podem beber água, café e comer cereais.

Funcionários podem ter aulas de inglês, pagas pela empresa, durante o horário de trabalho

Há iniciativas de diversidade (LGBTQ e outras).

Enquanto estava lá, um funcionário chegou com roupa de ciclista. Há banheiro para ciclistas.

Empresa tem muitas vagas abertas.

Há uma incubadora, mas não visitei.

Research Questions Related to My Work on the Elixir Community of Practice, Coding Dojos, Meetups, Hackathons


Papers by Margaret-Anne Storey and her co-authors:


https://dl.acm.org/citation.cfm?id=2568305
RQ 1: How does Twitter increase software developer awareness of people, trends, and practices?
RQ 2: How does Twitter help software developers extend their software knowledge?
RQ 3: How does Twitter nurture relationships between software developers?
RQ 4: What are the challenges faced by software developers using Twitter, and how do they cope with them?
RQ 5: What are the reasons for non-adoption of Twitter by software developers?


Supplementary Material!!! http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.701.4213&rep=rep1&type=pdf


https://rdcu.be/5OJT
RQ1 What types of knowledge artifacts are shared on Stack Overflow and the R-help mailing list within the R community?
RQ2 How is the knowledge constructed on Stack Overflow and the R-help mailing list?
RQ3 Why do users post to a particular channel and why do some post to both channels?
RQ4 How do users participate on both channels over time?
RQ5 Are there significant differences in participation activity between community users?


https://dl.acm.org/citation.cfm?id=3180180
RQ1: What motivates developers to participate in programming-related news aggregators?
RQ2: What are the characteristics of the content posted in programming-related news aggregators?
RQ3: What suggestions do the participants have to improve the community and features of programming-related news aggregators?


https://link.springer.com/article/10.1007/s10664-017-9501-9
RQ1: What kinds of program knowledge are captured in screencasts on YouTube?
RQ2: How are YouTube screencasts used to document code?
RQ3: What motivates developers to create screencasts on YouTube?
RQ4: How do developers produce screencasts for YouTube and what challenges do they
face?
RQ5: How do screencasts hosted on YouTube compare to screencasts hosted on a professional platform?


https://ieeexplore.ieee.org/document/7498605/
RQ1 Who is the social programmer that participates in these communities?
RQ2 Which communication channels do these developers use to support development activities?
RQ3 Which communication channels are the most important to developers and why?
RQ4 What challenges do developers face using an ecosystem of communication channels to support their activities?


https://dl.acm.org/citation.cfm?id=2983989
No RQ
“Our goal in this paper is to provoke and inspire researchers to study the impact (positive and negative) of Bots on software development.”



https://dl.acm.org/citation.cfm?id=2869117
RQ1: What do developers use Slack for and how do they benefit?
RQ2: What bots do developers use and why do they use them?

https://dl.acm.org/citation.cfm?id=2819340
No RQ.
“Collaboration has become an integral aspect of
software engineering. The widespread availability and adoption
of social channels has led to a culture where today’s developers
participate and collaborate more frequently with one another.
Awareness is widely accepted as an important feature of collaboration,
but exactly what this encompasses and how processes and
tools should be evaluated in terms of their awareness support
remains an open challenge. In this paper, we borrow a theory of
regulation from the Learning Science domain and show how this
theory can be used to provide more detailed insights into how
collaboration tools and processes can be compared and analyzed“

https://dl.acm.org/citation.cfm?id=2675284
RQ1: How does GitHub support learning and teaching?
RQ2: What are the motivations for and benefits of using GitHub for education?
RQ3: What challenges are related to the use of GitHub for education?

https://dl.acm.org/citation.cfm?id=2593887
No RQ
Software developers rely on media to communicate, learn, collaborate, and coordinate with others. Recently, social media has dramatically changed the landscape of software engineering, challenging some old assumptions about how developers learn and work with one another. We see the rise of the social programmer who actively participates in online communities and openly contributes to the creation of a large body of crowdsourced socio-technical content.

https://ieeexplore.ieee.org/abstract/document/6614756/
No RQ.
In this position paper, we perform an analysis of the
comment dataset published by Stack Exchange, focusing on
the content of those comments and how frequently individual
comments are repeated.

https://ieeexplore.ieee.org/abstract/document/6613850/
(not identified as RQs)
1) What do software developers blog about?
2) Why do software developers blog?
3) How interactive are software development blogs?
4) What are the challenges for developers who blog?


https://dl.acm.org/citation.cfm?id=2441791
RQ1: Why are software developers and other actors participating
in the social programming ecosystem?
RQ2: How do software developers and other actors interact
in the social programmer ecosystem?
RQ3: What is the impact of participating in the social programmer
ecosystem?
RQ4: What are the risks and challenges faced by participating
in the social programmer ecosystem?