Skip to content

Instantly share code, notes, and snippets.

View cyberglot's full-sized avatar
👋
say hi

april cyberglot

👋
say hi
View GitHub Profile

Zettelkasten

What you need

  • a way to link notes together;
  • a citation management system;
  • a way to write and edit notes;
  • an index of notes; ↳ Should I have project index note?
  • you should add it to your study / writing workflow;
@cyberglot
cyberglot / trainingcenter-mentoria.md
Last active August 27, 2018 13:25
Orientações gerais sobre a mentoria da Training Center

1. Quem é você? Como sei que você pode me ensinar algo?

Meu nome é Ju Gonçalves e eu tenho mais ou menos 7 anos de experiência trabalhando com TI. Passei meus primeiros 4 anos trabalhando como desenvolvedora front-end (HTML, CSS, JS) e depois migrei para uma abordagem mais fullstack. Estudo programação funcional desde 2013, que tem sido meu foco desde então. Meus últimos dois trabalhos foram na Dinamarca e na Holanda, trabalhando como Lead Frontend Engineer com React e como Software Engineer com Elm e Haskell. Nos últimos anos, eu venho fazendo doutorado em Ciência da Computação na Dinamarca, em que o meu foco é programação funcional, teoria de tipos e paralelismo.

2. Como vai funcionar?

Minha disponibilidade para live sessions seria 1 vez na semana, ou 1 vez a cada 2 semanas. Considerando chat por texto, eu estou disponível virtualmente o dia todo. Me adicione no cyberglot@gmail.com no gtalk. Não tenho celular, logo não tenho Whatsapp ou Telegram. Como estou na Dinamarca, estou de 3 à 5 horas (depen

Effect Handlers

  • Freer monads, more extensible effects (Haskell 2015) by Oleg Kiselyov and Hiromi Ishii
  • An Introduction to Algebraic Effects and Handlers (MFPS 2015) by Matija Pretnar
  • Programming and reasoning with algebraic effects and dependent types (ICFP 2013) by Edwin Brady

Effect systems

  • Embedding effect systems in Haskell (Haskell 2014) by Dominic Orchard and Tomas Petricek
  • A generic type-and-effect system (TLDI 2009) by Daniel Marino and Todd Millstein

Supervisor

Junia Gonçalves

PhD Student at RUC, advised by Morten Rhiger.

Main interests

  • Functional Programming
  • Programming Languages
  • Parallel and Concurrent Programming
module LHbasics where
-- sorted lists
data List a = Emp
| (:::) a (List a)
data IncList a = IncEmp
| (:<) { hd :: a, tl :: IncList a }
Require Import Arith.
Require Import List.
(* This is the definition of insertion sort from "Coq in a Hurry": *)
Fixpoint insert n l :=
match l with
| nil => n :: nil
| a :: l' => if leb n a then n :: l else a :: insert n l'
end.
Require Import Bool.
Require Import Arith.
Require Import List.
(*E1 Find the last element of a list. *)
(*E2 Find the last but one element of a list. *)
(*E3 Find the K'th element of a list. The first element in the list is number 1. *)
@cyberglot
cyberglot / retro2016.md
Last active June 8, 2019 21:24
tentando ver o lado bom de 2016...

2016 em retrospecto

2016 não foi um ano bom, em geral. Entretanto, esse foi um ano que eu considero especialmente bom na minha vida.

Tech

  • 2015 foi um ano desastroso pra mim, comecei 2016 com aviso prévio na Podio, que tava demitindo em massa todo mundo do escritório de Copenhagen. Felizmente, já na primeira semana de Janeiro, consegui uma oferta da Opbeat - que é definitivamente o produto mais interessante que já trabalhei.
  • Em Abril, larguei a Opbeat (como dev em tempo integral), para começar o doutorado em Ciência da Computação na Universidade de Roskilde. Algo que eu ensaiava fazer há muito tempo, que era me distanciar de JavaScript e desenvolvimento frontend para me dedicar à Programação Funcional e Teoria de Tipos, em um nível acadêmico.
  • Aprendi Teoria de Tipos, inclusive a implementar checadores de tipos até System F. Sei como tipos dependentes e de refinamento funcionam, embora não tenha uma visão clara de como implementá-los (2017 spoiler). Também aprendi "tipos
Verifying that +cyberglot is my blockchain ID. https://onename.com/cyberglot
@cyberglot
cyberglot / list-plus-one.hs
Created January 1, 2015 18:26
FP in Haskell - Readability II
plus1 :: [Int] -> [Int]
plus1 [] = []
plus1 (x:xs) = x + 1 : plus1 xs
-- plus1 [0,1,2,3]
-- > [1,2,3,4]