Skip to content

Instantly share code, notes, and snippets.

View gabrielelana's full-sized avatar
🎯
Focusing

Gabriele Lana gabrielelana

🎯
Focusing
View GitHub Profile

Keybase proof

I hereby claim:

  • I am gabrielelana on github.
  • I am gabrielelana (https://keybase.io/gabrielelana) on keybase.
  • I have a public key whose fingerprint is 181C 039B 8033 4010 66D3 C5E8 F3A4 6AB3 14CA E60E

To claim this, I am signing this object:

@gabrielelana
gabrielelana / virtual-keyboad.py
Created October 22, 2017 16:59
Virtual Keyboard POC
from evdev import UInput, InputDevice,categorize, ecodes
myKey = UInput.from_device('/dev/input/event7', name='MyKeyboard')
dev = InputDevice('/dev/input/event7')
print(dev)
for event in dev.read_loop():
if event.type == ecodes.EV_KEY:
print(event)
@gabrielelana
gabrielelana / virtual-keyboad-chords.py
Last active October 22, 2017 17:13
Virtual Keyboard With Chords POC
import threading
import time
from evdev import UInput, InputDevice,categorize, ecodes
from copy import copy
myKey = UInput.from_device('/dev/input/event2', name='MyKeyboard')
dev = InputDevice('/dev/input/event2')
events = []
waiting = False
@gabrielelana
gabrielelana / Foundation-Of-Functional-Programming-201804.md
Created March 7, 2018 08:21
Descrizione del corso "Foundation of Functional Programming: Theory and Practice"
  • Title: Foundation of Functional Programming: Theory and Practice
  • Abstract: Teoria delle categorie, morfismi, algebre, monoidi, semigruppi, funtori e ovviamente monadi! Dominare la programmazione funzionale per poterla sfruttare al massimo passa da una conoscenza teorica che è difficile da distillare partendo dalle disparate risorse ad oggi esistenti. Durante il corso verranno spiegati questi concetti in maniera rigorosa ma con frequenti riferimenti pratici per rendere il tutto più digeribile e comprensibile. L’obiettivo è quello di ottenere delle basi teoriche sufficienti per poter riconoscere e usare i costrutti della programmazione funzionale in maniera confidente ed efficace.
  • Who: Il corso verrà tenuto da Giulio Canti
  • Why: (Gabriele Lana) Volevo partecipare ad un corso come questo, non l’ho trovato e così l’ho organizzato. Sono un professionista, uso linguaggi di programmazione funzionali da diversi anni ma sono arrivato ad un punto in cui sento che mi manca un pezzo fondamentale pe
@gabrielelana
gabrielelana / Foundation-Of-Functional-Programming-20180519.md
Last active April 16, 2020 13:18
Descrizione della terza giornata del corso "Foundation of Functional Programming: Theory and Practice"

NOTA: Questa é la terza giornata di un percorso formativo, per partecipare non é strettamente obbligatorio aver partecipato alle due giornate precedenti ma é necessaria la conoscenza degli argomenti trattati in questo PDF

  • Title: Foundation of Functional Programming: Theory and Practice

  • Abstract: Teoria delle categorie, morfismi, algebre, monoidi, semigruppi, funtori e ovviamente monadi! Dominare la programmazione funzionale per poterla sfruttare al massimo passa da una conoscenza teorica che è difficile da distillare partendo dalle disparate risorse ad oggi esistenti. Durante il corso verranno spiegati questi concetti in maniera rigorosa ma con frequenti riferimenti pratici per rendere il tutto più digeribile e comprensibile. L’obiettivo è quello di ottenere delle basi teoriche sufficienti per poter riconoscere e usare i costrutti della programmazione funzionale in maniera confidente ed efficace.

  • What: Questa terza

@gabrielelana
gabrielelana / what-the-beam.md
Last active May 10, 2018 09:44
Descrizione del corso "What the BEAM: Introduction to the Erlang/Elixir Virtual Machine"
  • Title: What the BEAM: Introduction to the Erlang/Elixir Virtual Machine

  • Abstract: Per sfruttare al massimo Erlang/Elixir non é sufficiente conoscere il linguaggio, la semantica di questi linguaggi é indissolubilmente legata al loro runtime: la virtual machine BEAM. Un corso di due giorni per esplorare la BEAM, le sue carateristiche, come sfruttarla al meglio e cosa evitare. Il corso é rivolto a tutte quelle persone che hanno messo gli occhi su Erlang/Elixir e vogliono fare un passo avanti per poter realizzare software production ready.

  • What: Il corso durerá due giorni e sará strutturato come segue

    • Primo giorno
      • Overview sulla BEAM
      • Cosa è un nodo Erlang/Elixir
      • Processi
  • Cosa sono

@gabrielelana
gabrielelana / open-source-saturday-badge.md
Created May 1, 2019 12:44
Open Source Saturday Badge

Open Source Saturday

@gabrielelana
gabrielelana / io.hs
Last active October 10, 2019 08:25
IO Inside - Welcome to the Real World
import Debug.Trace (trace)
-- Try to implement and use a `putString` function without the RW and
-- see the behaviour of calling it and calling it multiple times
-- type RW = RW
type RW = Integer
type MIO a = (RW -> (a, RW))
@gabrielelana
gabrielelana / functional-ladder.md
Created November 7, 2019 15:45
Functional Ladder

LEGEND

  • x-- means: I know about it
  • xx- means: I understand it
  • xxx means: I can explain it

NOVICE

CONCEPTS

@gabrielelana
gabrielelana / ParserCombinators.hs
Last active March 21, 2021 18:20
Parser Combinators from zero in Haskell
module Parser.Combinators where
import Test.Hspec
import Data.Either
import Data.Char
import Control.Applicative
import Data.Foldable
newtype Parser a = Parser (String -> (Either String a, String))