Álvaro Castro-Castilla, Developer in Athens, Central Athens, Greece
Álvaro is available for hire
Hire Álvaro

Álvaro Castro-Castilla

Verified Expert  in Engineering

Distributed Systems Developer

Location
Athens, Central Athens, Greece
Toptal Member Since
September 2, 2019

Álvaro has more than 13 years of experience in software development, six specializing in distributed systems, back-end architecture, and microservices. His primary language is Go, but he loves coding in Rust, Clojure, and Python. Thanks to an interdisciplinary background, including entrepreneurship, Álvaro has experience turning ideas into reality, tackling technically challenging projects and leading a small team to accomplish it, as well as effectively developing MVPs.

Portfolio

Toptal Clients
Fintech, Amazon Web Services (AWS), Project Leadership...
Off the Grid, Inc.
IPFS, Project Leadership, Blockchain, System Architecture, CTO...
Brave New Software Project SL.
IPFS, Cloud, Applications, Network Programming, Python, P2P, Serverless...

Experience

Availability

Part-time

Preferred Environment

Tmux, Terminal, Emacs, Linux

The most amazing...

...project I've developed is a protocol for secure multi-party computation with a private blockchain back end and Byzantine Fault Tolerance.

Work Experience

Distributed Systems Engineer and Architect

2019 - PRESENT
Toptal Clients
  • Built microservices for the back end of a fintech startup, designed the middleware architecture and communications patterns based on Kafka, Pulsar, and AWS SQS, and SNS.
  • Led the redesign of the back end for another fintech startup (financial exchange). The new design was event-driven, based on microservices, with a highly reliable and fully auditable architecture. Carefully designed cloud patterns for production.
  • Developed critical microservices and middleware of the financial exchange. Implemented optimizations, leading to a 100x improvement in the main exchange transactions algorithm by porting it from SQL to in-memory with a Kafka back end for events.
  • Introduced improved procedures for code review, code quality standards, and testing for the team. I helped increase the shared knowledge, systematizing the internal proposals of engineering and spikes, and coverage of the documentation.
  • Introduced system health notifications, mesh services, distributed tracing, and other techniques of monitoring in the back end for production. Improved deployment automation via Docker and Kubernetes.
  • Developed a blockchain bridging Ethereum and Polkadot, using Substrate with Rust (not on Toptal).
Technologies: Fintech, Amazon Web Services (AWS), Project Leadership, Agile Software Development, DevOps, Apache Pulsar, System Architecture, Cloud Architecture, Software Architecture, Applications, Cloud, Cloud Infrastructure, Architecture, Middleware, NoSQL, Microservices, Distributed Systems, Kubernetes, Apache Kafka, PostgreSQL, Go, Technical Architecture, Microservices Architecture, Rust, Blockchain

CTO | Co-founder

2018 - 2019
Off the Grid, Inc.
  • Served as the CTO and co-founded this company as well as leading a team of six developers.
  • Designed, architected, and led the development of the technology of the company.
  • Led the development of the core platform: a distributed system (multiple clusters of around ten servers each), with a custom protocol and client to perform the MPC cryptographic operations.
  • Designed a system to have a secure storage layer (using secret-sharing), and a capability-based security system tied to a custom blockchain consensus protocol, which would then provide secret data to a secure multi-party computation protocol.
  • Implemented the P2P/network layer of the platform. This included discovery and membership algorithms designed specifically for our platform.
  • Built a secure multi-party computation platform, in collaboration with the cryptographers in our team; also implemented an XFT algorithm for the consensus layer of the system.
  • Reviewed and integrated the code produced by the team while limiting my coding tasks to high-level and impact features, or network-specific code.
  • Co-designed the front-end iOS app based on our back-end platform service.
  • Managed the deployment and operation of the Kubernetes clusters, with four separate environments: development (local), testing, staging, and production.
  • Implemented distributed tracing, distributed operations for testing, CI/CD, stress tests, and remote debugging and diagnosis tools.
Technologies: IPFS, Project Leadership, Blockchain, System Architecture, CTO, Secure Multi-party Computation, Cloud Architecture, Software Architecture, Applications, Cloud, People Management, Architecture, Network Programming, Innovation, Agile Software Development, Microservices, Full-stack, Go, Distributed Systems, Kubernetes, Technical Architecture, Microservices Architecture

Senior Back-end Developer

2015 - 2018
Brave New Software Project SL.
  • Developed and deployed a custom HTTP/S proxy, in production across 10,000+ servers, with multiple instrumentations and customizations, including stats reporting, dynamic instant reconfiguration, selective throttling, and pseudo-authentication among others.
  • Participated in the design of distributed systems architecture, such as server assignation to a highly dynamic pool of users, and other very specific and ad-hoc cloud operations.
  • Created internal APIs and full-stack applications for monitoring and managing accounts and servers (back-end, mobile, and desktop).
  • Developed microservices for user management, authentication, pubsub, and geolocation.
  • Integrated multiple APIs, most notably payments (including legacy Java code that needed rewriting), Twilio, and push/pull notifications.
  • Created instrumentation and data visualization for the server fleet. The data was generated from services created in Go, stored in a time-series database optimized for a large amount of dimensions, and consumed by a Clojure/script full-stack application that performed processing and visualizations of the data.
  • Performed remote debugging, profiling, optimization, fault tolerance, and disaster recovery for the services in production.
  • Created support libraries in Go (Golang) and Clojure/Clojurescript languages. Examples of these are a network dynamic throttling mechanism based on real-time data, payment libraries for Clojure (Stripe, Gate2pay, and other payment gateways).
  • Maintained full-stack internal projects, APIs, Microservices (other technologies of the stack: Python, React (with Clojurescript), SaltStack, PostgreSQL, and Redis).
Technologies: IPFS, Applications, Cloud, Network Programming, Python, P2P, Serverless, Full-stack, Go, Distributed Systems, Datomic, Redis, Clojure

Lead Developer | Co-founder

2016 - 2017
iKidz English SL
  • Architected and implemented the entire platform, involving a back end (Clojure and PostgreSQL), a Java Android app as a container web view with specific extensions, and a web front end in ClojureScript, which is embedded in the app.
  • Hired and managed freelancers that developed the small mini apps that were embedded in the front-end app. This was implemented by the freelancers following our guidelines and provided API, which I created.
  • Designed and implemented the user interface for the four different frontends (students, parents, managers, and admins).
  • Designed the wireframes and worked with a freelancer for the graphic design of the mini-apps.
Technologies: System Architecture, CTO, Architecture, Full-stack, PostgreSQL, ClojureScript, Clojure, Technical Architecture, Project Leadership

Full-stack Software Developer

2012 - 2015
Fourthbit
  • Architected, implemented, and deployed a prototype for a P2P Bitcoin exchange based on a social network (Clojure/Clourescript, PostgreSQL).
  • Architected and implemented an MVP for a simplified version control system with web UI tailored to graphic designers (Clojure/Clojurescript, Git, PostgreSQL).
  • Built SchemeSpheres, a multi-year open-source project comprised of a set of rapid multiplatform development libraries for the Scheme language. It includes many general-purpose libraries, a task runner, project templates, support for iOS, Android, OSX, Windows and Linux, remote and live coding facilities, among others.
  • Created other side projects including a gossip protocol (SWIM) and a distributed K/V store prototype.
  • Created a small C command-line tool for managing an SQLite-backed database of tagged files.
  • Gained experience with Hadoop, Spark, Cassandra, and AWS MapReduce.
Technologies: Functional Programming, C, Full-stack, PostgreSQL, ClojureScript, Clojure

Associate Lecturer

2011 - 2015
U-tad (Universidad de Arte y Tecnología Digital)
  • Held a software development workshop, using JavaScript (for first-year students of digital content and software engineering).
  • Taught programming in C (for first-year students of digital content and software engineering).
  • Held and lectured a course called Programming for Art and Design, (for second-year students of visual and digital design).
  • Taught an innovation workshop (for third-year students of digital content and software engineering).
Technologies: Processing, JavaScript, Scheme, C

Academic Director

2010 - 2012
U-tad (Universidad de Arte y Tecnología Digital)
  • Spearheaded the design and definition of the academic model and directed the creation of studies curricula for 5 B.A./B.Sc. programs and a M.Sc. in Graphic Programming and Simulation.
  • Conducted meetings with specialists and coordinated and developed the studies curricula. My main assignation was on creating a multidisciplinary approach in U-tad's education model that would differentiate it from other universities in similar niches.
  • Interviewed candidate professors, technical evaluation of the lecturer candidates.
  • Participated in the executive meetings as part of the core initial team during the foundation of the university.
Technologies: Curriculum Design, People Management, Management

Assistant Lecturer (Ministry of Education Scholarship)

2010 - 2011
Universidad Politécnica de Madrid
  • Assisted during automated architectural design (CAAD) lectures in the M.Arch. of Advanced Architecture.
  • Taught C# and Rhino/Grasshopper graphics programming and geometry algorithms.
  • Reviewed and built geometry algorithms for the students, for Civil Eng. (construction) and Architecture purposes.
Technologies: C#

Software/Conceptual Art Independent Creator

2006 - 2010
Independent
  • Developed software and software-as-research as a digital artist. I worked with scientists, artists, and engineers.
  • Created and explored new possibilities of visual, haptic, and artistic expression and information visualization throughout the means of computation. These explorations were about the topics of complex processes, self-organization, evolutionary algorithms, AI, endosymbiosis, and epigenetics.
  • Participated in digital art exhibitions in Ars Electronica (Linz, Austria), Zentrum für Kunst und Medientechnologie (Karlsruhe, Germany), LABoral (Gijón, Spain), Medialab Madrid (Madrid, Spain), Puertas de Castilla (Murcia, Spain), and CAB (Burgos, Spain).
Technologies: Innovation, C, OpenGL, C++

Research Program (Freelance)

2008 - 2008
DORLET
  • Participated in a research program for Dorlet Seguridad y Domótica (Home Automation). The program consisted of a team of three digital artists that would research new uses for Dorlet's technology.
  • Developed social decision algorithms for driving the control of their home devices and built simple 3D visualizations for these.
  • Built experimental touch interface prototypes (back in 2008) for controlling home automation devices.
Technologies: Innovation, OpenGL, C++

Research Intern

2007 - 2008
Next Limit Technologies SL
  • Conducted research for geometry representation and geometry optimization methods. For this, I used primarily OpenCASCADE and TCL.
  • Ported the code of the RealFlow product to the Linux OS. This project had over 100,000 lines of C++ code, with heavy templating.
  • Ported and simplified the build system to CMake, turning it into a multiplatform build system with a common codebase.
Technologies: Innovation, Open Cascade Technology (OCCT), Qt, OpenGL, C++

Murmur (Decentralized Secure Storage and MPC Protocol)

Murmur is a platform for Secure Data Storage and Secure Multi-Party Computation. It is backed by an untamperable distributed log (with strong similarities to a blockchain). It employs Shamir Secret Sharing for information-theoretical security while leveraging the power of MPC operating on that data without ever decrypting it. Thus, the data remains secure even at the time of its usage, so it doesn't require to be decrypted (under a certain set of constraints).

It's built using Go and implements interesting features such as:
- A custom consensus algorithm (first a custom implementation of XFT was used, then migrated to an in-house variation of HotStuff).
- Tracing end-to-end, based on Opentracing.
- Network bootstrapping, both based in UDP broadcasting discovery and a central service registry.
- In order to accelerate development, we created centralized versions of algorithms that we knew could be fully distributed, effectively rendering the design fully decentralized, but moving in stages towards that objective.

My role in this project was as the team leader (as CTO/cofounder of the company).

Cointrust (Web App)

https://github.com/alvatar/cointrust
Cointrust is a prototype P2P Bitcoin marketplace built on top of Facebook. A user puts a bid or sell request, and the system matches users based on the social graph. Once this match is performed, a legally-binding process is initiated to secure a transaction between the two parties. The system handles the Bitcoin payment itself (by tracking the payment as being performed to the given address), finalizing the transaction.

The project is a full-stack application built in Clojure/Clojurescript, using PostgreSQL and custom Java code bindings for the Bitcoin network interop. Frontend-backend communication is handled via WebSockets.

iKidz (Web App)

I designed (UI/UX and technical), architected and implemented the web app and infrastructure for iKidz English, which aims at providing its early-age English as foreign language academies with comprehensive software. It provides 4 different interfaces:
- A web interface for kids to use during classroom time. It offers a very simple interface based on a single search field that will filter tasks/activities to be selected by the students. They will then work in the class together in that activity. The progress will be monitored and screenshots will be taken at preset times.
- A web interface for parents, for payments and to track their children's progress.
- A web interface for academy owners (managers), that will manage payments, parents, classrooms (groups) and students. It offers also a form of communication with parents, and a way to control the class live (like simultaneously starting the same activity in all the students' tablet).
- An admin interface to tag and edit activities and managers, as well as monitor payments.

The technology stack consisted of Clojure/Clojurescript and PostgreSQL. front end-back end communication was handled via WebSockets.

High-performance HTTP(s) Proxy with Custom Extensions

I built the first version in Go of this proxy, that was intended as a substitute of the old Java-based used within the company. It was later deployed in a fleet of over 10k at its peak times. Some of the extensions to the regular HTTP forwarding and TLS tunneling performed by the proxy involved:
- Selective throttling
- Custom protocol for traffic shaping
- Data monitoring and traffic sampling (anonymized)
- A pseudo-authentication system to allow for a certain degree of limitation (used for separating the free from the paid versions of the system).

It was implemented in pure Go and used Redis as a back end for metrics storage.

SchemeSpheres (Open-source Scheme Framework)

https://github.com/alvatar/spheres
SchemeSpheres is a set of libraries and development tools for making multiplatform applications in Scheme feasible. It provides many libraries commonly seen in standard libraries of other languages, tailored for the Scheme Gambit compiler. It's a multi-year solo project intended to give the Gambit Scheme community the most comprehensive attempt to unify a fragmented landscape of real-world tools and projects.

Some of its highlights are:
- +150 libraries, including data structures, algorithms, basic web libraries, and graphics (OpenGL and Cairo).
- Easy-to-use multiplatform and flexible build tasks runner (supporting Linux, OSX, Windows, Android, and iOS).
- Tools for interactive and remote development in all these platforms, mixing optimized compiled code with interpreted and live coding.

Gambit Scheme Compiler (Open-source Contribution, C, and Scheme)

https://github.com/gambit/gambit/commits/master?after=ff5b4195c7d9115190d5f6be3b21ad3568bec748+1259
I contributed to the open-source Gambit Scheme implementation by providing it with TLS support in the runtime. This allowed full control of the TCP connections to be upgraded to TLS, in an easy and idiomatic way for the Scheme implementation users.

This was a very interesting learning experience that required diving into the internals of the OS and network parts of the runtime. The code was a combination of C (runtime) and Scheme (exposed functionality).

Created and Exhibited Digital/Electronic Art in International Venues

http://castrocastilla.com/
As a digital artist, I worked with scientists, artists, and engineers to develop software and software-as-research, in several cases for national and international exhibitions. I created and explored new possibilities of visual, haptic and artistic expression and information visualization throughout the means of computation. These explorations were about the topics of complex processes, self-organization, evolutionary algorithms, AI, endosymbiosis, and epigenetics.

My work was exhibited in Ars Electronica (Linz, Austria), Zentrum für Kunst und Medientechnologie (Karlsruhe, Germany), LABoral (Gijón, Spain), Medialab Madrid (Madrid, Spain), Puertas de Castilla (Murcia, Spain), and CAB (Burgos, Spain).

Created the Curriculum for a Private University Specialized in Art and Technology

https://www.u-tad.com/en/
I was a key component of the core initial team involved in the university creation and definition process. I spearheaded the design and definition of the academic model and directed the creation of studies curricula for 5 B.A./B.Sc. programs and a M.Sc. in Graphic Programming and Simulation. I conducted meetings with specialists and developed curriculum structures. My focus was on developing the multidisciplinary approach in U-tad's education model. During this period, I helped in interviewing candidate professors, and my role was key during the selection process of the first batch for the university.

Languages

Clojure, Go, Python, Rust, Scheme, Processing, C++, HTML, Lisp, C, JavaScript

Other

Distributed Systems, Cloud Architecture, Software Architecture, System Architecture, Technical Architecture, Network Programming, P2P, Secure Multi-party Computation, Full-stack, Innovation, Architecture, Architectural Modeling, Certified Scrum Product Owner (CSPO), Logistic Regression, Artificial Neural Networks (ANN), Machine Learning, Machine Learning Algorithms, Datomic, Linear Algebra, Multivariate Calculus, Principal Component Analysis (PCA), Convolutional Neural Networks (CNN), Deep Learning, Recurrent Neural Networks (RNNs), Deep Neural Networks, Neural Networks, People Management, Curriculum Design, Big Data, Big Data Architecture, Cloud Computing, Cloud Infrastructure, Applications, Computational Neuroscience, Reinforcement Learning, Deep Reinforcement Learning, Markov Chain Monte Carlo (MCMC) Algorithms, Monte Carlo Simulations, Artificial Intelligence (AI), Markov Model, CTO, Algorithms, Data Structures, NP-complete Problems, Computational Geometry, Differential Equations, Calculus, Computer Graphics, Apache Pulsar, IPFS, Fintech, Project Leadership, Serverless, Middleware, Cloud

Frameworks

ClojureScript, Qt

Paradigms

Microservices Architecture, Functional Programming, Distributed Computing, Microservices, Management, Software-defined Networking (SDN), Dynamic Programming, Agile Software Development, DevOps

Platforms

Blockchain, Apache Kafka, Linux, MacOS, Open Cascade Technology (OCCT), Amazon Web Services (AWS), Kubernetes

Storage

PostgreSQL, Redis, NoSQL

Libraries/APIs

OpenGL, TensorFlow, Keras

Tools

Emacs, Terminal, Vim Text Editor, Tmux

2001 - 2011

Master of Science Degree Equivalent in Architecture and Civil Engineering

Universidad Politécnica de Madrid/Tampere University of Technology - Madrid, Spain and Tampere, Finland

DECEMBER 2020 - PRESENT

Algorithms Specialization (Four Courses)

Stanford University | via Coursera

NOVEMBER 2020 - PRESENT

Reinforcement Learning Specialization (Four Courses)

University of Alberta | via Coursera

OCTOBER 2020 - PRESENT

Computational Neuroscience

University of Washington | via Coursera

OCTOBER 2020 - PRESENT

Deep Learning Specialization (Five Courses)

DeepLearning.ai | via Coursera

SEPTEMBER 2020 - PRESENT

Mathematics for Machine Learning Specialization (Three Courses)

Imperial College London | via Coursera

SEPTEMBER 2020 - PRESENT

Machine Learning

Stanford University | via Coursera

JULY 2020 - PRESENT

Professional Scrum Product Owner I (PSPO I)

Scrum.org

JANUARY 2015 - PRESENT

Cloud Computing and Networks (Five Courses)

University of Illinois at Urbana-Champaign | via Coursera

Collaboration That Works

How to Work with Toptal

Toptal matches you directly with global industry experts from our network in hours—not weeks or months.

1

Share your needs

Discuss your requirements and refine your scope in a call with a Toptal domain expert.
2

Choose your talent

Get a short list of expertly matched talent within 24 hours to review, interview, and choose from.
3

Start your risk-free talent trial

Work with your chosen talent on a trial basis for up to two weeks. Pay only if you decide to hire them.

Top talent is in high demand.

Start hiring