Skip to content

Instantly share code, notes, and snippets.

@lucasp90
Last active June 14, 2019 20:32
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save lucasp90/506588278fc51557e669f9bdc917ec43 to your computer and use it in GitHub Desktop.
Save lucasp90/506588278fc51557e669f9bdc917ec43 to your computer and use it in GitHub Desktop.
Buzzconf 2019

Buzzconf 2019

Quoted Domain Specific Languages

Phil Walder

Probabilistic programming with PyMC and ArviZ

Osvaldo Martín

La charla consistió en presentar cómo se pueden resolver modelos de manera simple con python y PyMC. Esta herramienta soporta varias formas de generar modelos probabilisticos, evitando que tengamos que calcular integrales a mano: modelos lineales generalizados (student-t, logistic regression, poisson...) Se advirtió que estos modelos no son suficientes para hacer big data, pero se mencionaron recursos que hablan sobre cómo aplicar modelos a estos problemas

Building web apps like it's 1972

Leandro Ostera - src

1963 - Sketchpad -> Primera GUI 1968 - NLS - Online System 1980 - Parc - Smalltalk

El speaker introduce el modelo de actores, planteando que para programar aplicaciones tenemos que tener dos cosas en cuenta: modelos computacionales y una filosofía.

Para lo primero entra en juego directamente el modelo de actores:

  • Procesos comunicándose mediante mensajes
  • Aislamiento de fallos por defecto
  • Asincronismo por naturaleza
  • Paralelizable

Lenguajes que lo soportan bien: Erlang, Pony

Para el tema de la filosofía, tenemos que tener dos conceptos presentes:

  • Liveness: Siempre responder a interacción de usuario
  • Directness: Todo lo que ves puede modificarse.

Ejemplos de herramientas que utilizan este modelo:

  • Pharo
  • StageVM

Refactoring for functional programming

Simon Thompson

Refactoring es transformar, pero manteniendo una precondición (a veces olvidamos eso y usamos el término refactoring de forma muy relajada)

Análisis para determinar las precondiciones:

  • Análisis semántico
  • Tipos
  • Side-effects
  • Modules

no es sólo parsear archivos

Al armar una herramienta tenemos que ver que sea:

  • factible: ¿Podemos construirla?
  • deseable: ¿La gente quiere usarla?
  • Viable: ¿Se puede hacer plata con ésto? ¿Es sostenible en un ambiente de investigación?

El speaker no estaba muy de acuerdo con proponer herramientas de refactoring independientes al lenguaje, dado que hay mucho contexto que no puede ser abstraido de éste y es necesario para analizar las precondiciones.

También se debería optar por involucrar al usuario en lugar de automatizar por completo, a veces dar la posibilidad de optar resuelve el problema de mejor manera. En adición, también conviene obtener información del uso de las herramientas para fortalecer los features más utilizados, a veces un abanico de herramientas no es necesario si la herramienta hace bien lo que el usuario utiliza ;)

How to recognize good teaching practices using machine learning

Karen Serfaty

La speaker expuso la forma en que utilizó machine learning para su trabajo de tesis en la carrera de ciencias de la educación, relacionada con (learning analytics)(https://en.wikipedia.org/wiki/Learning_analytics)

¿Por qué las preguntas en clase pasan desapercibidas? El objetivo de la investigación: reconocer preguntas abiertas y cerradas -> Clasificación

Tipos de preguntas:

  • Cerradas -> si/no, única respuesta. Prueban la memoria de la persona
  • Abiertas -> generan aprendizajes significativos. "¿Por qué?"

Etapas de ML

  1. Juntar datos: para entrenar un modelo se necesitan muchos ejemplos
  2. Labeling: etiquetar los datos. A veces hay que hacerlo a mano, es la etapa más costosa
  3. Entrenar modelo: es importante splitear los datos
  4. Probar el modelo (eficacia, eficiencia)

Why Rust

Santiago Pastorino

Rust es un lenguaje principalmente orientado a systems programming, en contextos en los que optimizar los recursos y la performance importan.

  • Multiparadigma
  • Fuertemente tipado
  • Control, seguridad, performance
  • Open source

Por qué gusta tanto?

  • Performance similar a C, C++
  • Zero cost abstactions (no se paga un costo por ser idiomático)
  • Se puede hacer programación a bajo nivel, native modules (pero de forma más segura)
  • Código de alto nivel, performance de bajo nivel
  • No hay nulls
  • Soporte para generics, pattern matching
  • Iteradores, traits, closures
  • Mutexes amigables
  • Tooling moderno

Concurrencia

Se resuelve el data race con los conceptos de ownership y borrowing, sharing y mutation. Estos últimos dos conceptos no se pueden aplicar al mismo tiempo (evitando así el data race)

El costo de usar Rust es la compilación: se pasa tiempo de corrección de bugs a compilación (si compila, en general anda, pero cuesta hacer que el programa compile por la cantidad de restricciones que tiene)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment