Lucas San Román

I'm a Software Engineer currently working at Packlane. I'm very interested in the Elixir programming language and functional programming in general. I'm self taught, have good adaptability and problem solving abilities, and I'm always keen to learn more about computer science and programming languages.

I volunteer as a moderator for the Elixir Discord server, where we provide assistance to other members of the Elixir community ranging from beginners to experts working on large scale projects. I'm the author of the Sourceror library for AST-based Elixir source code manipulation, which helps to solve the long lasting issue of the lack of refactoring tools in the Elixir ecosystem.

Open Source work

Sourceror

Sourceror is a toolkit to work with the Elixir source code. It's the first library in the Elixir ecosystem that empowers Elixirists and tool authors to build refactoring tools and migration scripts, similar to what jscodeshift has to offer for the JavaScript world. It provides an annotated Abstract Syntax Tree for the Elixir language, and a fork of the Elixir parser to backport features I contributed to Elixir 1.13 to older Elixir versions.

Contributions to the Elixir language

I contributed a series of pull requests to core Elixir to enable programmatic manipulation of the source code. Through PRs #10990 and #10988 I helped solve the lack of the primitives required to build refactoring tools, an issue that was affecting the whole community since the early days of the language, in an incremental an backwards compatible way.

The Embers Social Network project

Embers was an exploratory project to build a social network platform built from the ground up with Elixir and the Phoenix Framework, where users could share a variety of multimedia content with their followers. Some of its features included a personal feed updated in real time, a private messaging system, real-time notifications, and asymmetric tracking of online presences.

Technical skills

Elixir

I have been using the Elixir language since 2018, and I volunteer teaching and helping solve problems to other members of the Elixir community. I have a solid understanding of Elixir's sequential features like protocols, behaviours, releases and standard library. I have a very solid understanding of the AST representation of the Elixir code and how to use it to build macros and tools, which is the area I'm currently working on in the Open Source space. I understand the fundamentals of the OTP like GenServers, supervision trees and single node concurrency, which are the features of the language that I leveraged to keep my projects stack simple and manageable.

JavaScript

I have been using JavaScript for 5+ years for personal projects. I have good understanding of ES6+ features, Promises, and event loop macro/micro tasks. I have experience with Parcel and Snowpack build tools, Vue 2 and Svelte frameworks, React hooks inspired libraries, and state management patterns like Meiosis, which I used to build my personal library untitled.

HTML, CSS and web accessibility

I have experience working with modern CSS features like flexbox, grid and custom properties, pre-processors like SASS and post-css as well. I have experience creating responsive and accessible web experiences, and I prefer to use progressive enhancement techniques whenever possible. The present resume is built with these technologies and with accessibility in mind.

PostgreSQL

I've been using PostgreSQL since 2018, when I migrated away from MySQL. I have experience setting up indexes to speed up queries, on setting up constraints at the database level instead of relying on application level validations, and I have basic knowledge of EXPLAIN queries to find inefficiencies in query plans.

Docker

I have basic understanding of Docker, which I used to build Elixir releases, and also to set up development environments with docker-compose.

PHP

I used PHP for my web projects until I discovered Elixir in 2018. The previous version of the Embers project was built using the Laravel framework v5.6.