Skip to content

Instantly share code, notes, and snippets.

View gabrielelana's full-sized avatar
🎯
Focusing

Gabriele Lana gabrielelana

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

Open Source Saturday

@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 / 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 / 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 / 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 / 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)

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 / Vagrantfile
Last active January 2, 2024 18:58
How to create a VirtualBox machine with encrypted storage with Vagrant
# -*- mode: ruby -*-
# vi: set ft=ruby :
PASSWORD_PATH = ".password"
PASSWORD_ID_PATH = ".password_id"
# Make sure to have installed vagrant-triggers plugin
# > vagrant plugin install vagrant-triggers
# After the first `vagrant up` stop the VM and execute the following steps
Verifying that +gabrielelana is my blockchain ID. https://onename.com/gabrielelana
@gabrielelana
gabrielelana / collector.ex
Last active August 29, 2015 14:21
Remove things in production
defmodule Paco.Collector do
@env String.to_atom(System.get_env("MIX_ENV") || "dev")
defmacro notify_loaded(text, state), do: call(@env, :do_notify_loaded, [text, state])
defmacro notify_started(parser, state), do: call(@env, :do_notify_started, [parser, state])
defmacro notify_ended(result, state), do: call(@env, :do_notify_ended, [result, state])
defp call(:prod, _, _), do: :ok
defp call(_, name, args) do