This commit is contained in:
counterweight 2025-06-15 20:22:58 +02:00
parent 0ebf0ad8b5
commit a0bf9fa515
Signed by: counterweight
GPG key ID: 883EDBAA726BD96C
3 changed files with 133 additions and 0 deletions

View file

@ -0,0 +1,89 @@
# 2025-06-02 Galoy interview
On 2025-06-02 I interview briefly with Nicolas Burtey (https://x.com/nicolasburtey), CEO of Galoy (https://www.galoy.io/), for this vacancy (https://web.archive.org/web/20250602172751/https://bitcoinerjobs.com/job/1741056-data-scientist-core-banking-bitcoin-platform-galoy) that I found on bitcoinerjobs.com.
## Prep notes
### About me
My cover letter
```
Hi! I've seen your vacancy and it felt like it was written for me! I'll share a few bullets to go along with my CV hoping you find my profile was also made for this vacancy :) - I fell through the rabbit hole years ago. I can explain why there is no second best, why I only have one chair and how I came for the money and stayed for the revolution. For the past 3 years, I've been organizing my local Bitcoin meetup with a few fellow plebs. I've lost enough sats fiddling around with lightning to make me cry. I've used Blink to charge thousands of € in services provided to others. I have multiple copies of The Bitcoin Standard with the only goal of lending them out to eager minds. I daydream about the Sovereign Individual future playing out. In summary, I'm a Bitcoiner. - I've spent my whole career working in Data. I've worn multiple hats and I'm familiar with many tools, types of challenge, org settings. I've worked in large and boring (but professional) suit and tie corps. I've been in small, guerrilla startups. I think it's all relevant for what you look for in the vacancy. You can check more on my CV. - I like finance, I like accounting. I do my personal accounting with double-entry accounting since many years ago. I track and measure the performance of my investments properly. I'm excited about the way Bitcoin and a more modern financial industry can make finance great again for the common folk. I think that, thanks to Bitcoin, we have a shot at making finance a blooming, entrepreneurial and innovative industry like history has never seen, instead of bearing with the corrupt, parasitic oligarchies that have dragged us down for decades. - I've been tracking what you guys are doing for years time and I think it's great stuff. Blink has been a great wallet. Your open-source backends stimulate my daydreaming on a world with thousands of minibanks operating on ecash. I hope that piqued your interest. Looking forward to chatting with you.
```
My selling points:
* Savvy with the domain (even though no professional banking exp)
* I won't shy away from going down deep technical Bitcoin rabbitholes
* Happy to lead myself and to lead others. Can work with goals, no need to be handheld
* Have contributed to Open Source in the past (like Bisq)
* Used to run lightning.
* Familiar with ERPs. I can see corporate needs easily:
+ Bitcoin-native accounting
+ Permission management, approval chains
+ Order vs Settlement impedance, optimizing fees, timelyness
+ Special accounting needs (lost bitcoin, non-refunded funds, etc).
* I get Lana. I'm currently looking into Firefish to avoid capital gains tax.****
* Tech:
+ Familiar with dbt
+ Familiar with Postgres
+ Like to fuck around with Javascript apps
+ Haven't worked with meltano but I'm well familiar with similar EL tools
+ Haven't worked with Bigquery but yes with redshift, generally i'm used to the DWH life
What I want:
* Full-time contractor?
+ Happy with that
+ If so, compensation somewhere around 80-100K USD. Would need to brush details.
+ Would want to discuss holidays, sick leave and stuff, but I would focus on whether we fit. I'm sure we can brush those details out.
* I can start in two weeks, would be happy if we could make it four though.
* I have an interest in El Salvador and multiple jurisdictions. I can't tell you I'm willing to relocate, but i'm very much eager to explore.
* Timezone overlap
### My questions
General:
* You guys started with Blink, left that behind. Then Cala, Bria, now Lana. Stablesats along the way. Could you shed some light on what is a true priority right now?
* Are you making money? How does your portfolio of customers and your sales pipeline look like?
* Your attitude and values seem extremly cypherpunk, yet you're building something very corporate. Are you planning on also cattering black markets somehow, or have you decided to simply focus on the big banks for now.
* Are you aware of any organization that has grabbed Cala/Bria/Lana and ran it without any support or guidance from you guys?
* I really liked your article on preventing you being milked on Blink as a swap provider
Funding:
* You guys had a seed round ages ago. What do you live off right now?
* What does the ownership of the company look like right now?
* What part of your treasury you hold your treasury in Bitcoin?
* What is your current runway?
People:
* It's you, Justin, Andrew. Anyone else in leadership? Chris Hunter?
* You're an extremely distributed team, right? Where's everyone?
Tech:
Vacancy:
* What's the story around it? What are the needs?
* Replacing Sebastien or José? Or expanding the team?
* Data Scientist vs Data Engineer?
* What bits of my profile do you see fitting/not fitting.
Things I've deduced:
* You've scored Lana with one of the big banks in El Salvador (Agrícola, Cuscatlán, Credomatic, Davivienda, Hipotecario) and are now rushing to catter them? You're also integrating with the government supervisor (SSF).
* You use Metlano and dbt in Lana to make reports based of the backend, which you hold in BigQuery.
* You have a big focus on Lana right now.
* You're very excited about regulatory changes in the US
Crazy ideas from me:
* lightning is very stocastic and will need a lot of data driven mgmt
+ Peer selection and channel mgmt
+ fee setting
+ participation in liquidity markets
* million ecash banks
* wallets as trust intermediaries, always looking for the right custodian
* ecash exchanges, trust markets
* automated mint discoverability
### Interview notes
...
Thought Machine - Core Banking

View file

@ -0,0 +1,122 @@
# 2025-06-09 Galoy interview
On 2025-06-02 I interview briefly with Justin Carter (https://x.com/bodymindarts), CTO of Galoy (https://www.galoy.io/), for this vacancy (https://web.archive.org/web/20250602172751/https://bitcoinerjobs.com/job/1741056-data-scientist-core-banking-bitcoin-platform-galoy) that I found on bitcoinerjobs.com.
## Prep notes
### About me
My cover letter
```
Hi! I've seen your vacancy and it felt like it was written for me! I'll share a few bullets to go along with my CV hoping you find my profile was also made for this vacancy :) - I fell through the rabbit hole years ago. I can explain why there is no second best, why I only have one chair and how I came for the money and stayed for the revolution. For the past 3 years, I've been organizing my local Bitcoin meetup with a few fellow plebs. I've lost enough sats fiddling around with lightning to make me cry. I've used Blink to charge thousands of € in services provided to others. I have multiple copies of The Bitcoin Standard with the only goal of lending them out to eager minds. I daydream about the Sovereign Individual future playing out. In summary, I'm a Bitcoiner. - I've spent my whole career working in Data. I've worn multiple hats and I'm familiar with many tools, types of challenge, org settings. I've worked in large and boring (but professional) suit and tie corps. I've been in small, guerrilla startups. I think it's all relevant for what you look for in the vacancy. You can check more on my CV. - I like finance, I like accounting. I do my personal accounting with double-entry accounting since many years ago. I track and measure the performance of my investments properly. I'm excited about the way Bitcoin and a more modern financial industry can make finance great again for the common folk. I think that, thanks to Bitcoin, we have a shot at making finance a blooming, entrepreneurial and innovative industry like history has never seen, instead of bearing with the corrupt, parasitic oligarchies that have dragged us down for decades. - I've been tracking what you guys are doing for years time and I think it's great stuff. Blink has been a great wallet. Your open-source backends stimulate my daydreaming on a world with thousands of minibanks operating on ecash. I hope that piqued your interest. Looking forward to chatting with you.
```
My selling points:
* Savvy with the domain (even though no professional banking exp)
* I won't shy away from going down deep technical Bitcoin rabbitholes
* Happy to lead myself and to lead others. Can work with goals, no need to be handheld
* Have contributed to Open Source in the past (like Bisq)
* Used to run lightning.
* Familiar with ERPs. I can see corporate needs easily:
+ Bitcoin-native accounting
+ Permission management, approval chains
+ Order vs Settlement impedance, optimizing fees, timelyness
+ Special accounting needs (lost bitcoin, non-refunded funds, etc).
* I get Lana. I'm currently looking into Firefish to avoid capital gains tax.****
* Tech:
+ Familiar with dbt
+ Familiar with Postgres, Bigquery
+ Understand the relevance of event sourcing for financial apps, your challenges around transactions and consistency, needs to reproduce history and have auditing
+ Like to fuck around with Javascript apps
+ Haven't worked with meltano but I'm well familiar with similar EL tools
+ Haven't worked with Bigquery but yes with redshift, generally i'm used to the DWH life
What I think are your biggest challenges in your domain:
* Perfect auditability
+ Need to use immutability everywhere
+ Actions must be motivated ("money movement X was caused by command Y initiatied by actor Z with grant I")
* Impedance mismatch between accounting books and bitcoin/lightning state
+ Transactions to make inconsistencies impossible
+ Automated alerts to detect inconsistencies?
* Integrating with fiat core banking solutions
* Lightning
+ LSPs, balancing, liquidity
+ Routing and cost saving
* Ecash is probably very interesting and a foundational change to your domain, but perhaps you're just ignoring it because it doesn't fit with your current ideal customer profile? Or perhaps you're more dreamy than I think?
Your stack:
* Rust
* GraphQL for presentation
* PG for backend persistence
* BitcoinD
* LND
* React
* Kubernetes+Helm to manage services deployment and scaling, Terraform for infra
*
### My questions
General:
* What is your story within Galoy?
* You guys started with Blink, left that behind. Then Cala, Bria, now Lana. Stablesats along the way. Could you shed some light on what is a true priority right now?
People/Team:
* I am familiar with you, Andrew, Nicolas, Sebastien and Jose. Who's in the core app team.
* You're an extremely distributed team, right? Where's everyone?
* How do you work?
+ Who envisions product? How do you prioritise?
+ What are your rituals, comms strategies, documentation, etc.
+ Are you currently operating this stack for anyone? If so, do you have a dedicated ops team? Would you offer that service?
* How do you relate with the "data area"? How close or separate are those?
* Any recent fuckups/successess
Data stack:
* Why meltano and why dbt?
* How do you guys build and maintain data contracts?
* Your testing in the core app seems dramatically strong. Are you following something similar in the data side?
* Besides reporting for the current salvadorian bank, what scopes do you have in the roadmap for the data area?
* What are your expectations for this vacancy?
Stuff I've seen in the repos:
* Cala
+ Cala's code has USD and BTC as currency units. I'm surprised you didn't use Sats, and perhaps also Cents a-la Stripe.
+ eventually_consistent field in the `cala_accounts` table. Wut?
+ Event sourcing, cool
* Bria
+ Cala vs SQLX, I don't get it. Is Bria also storing accounting primitives?
* Lana
+ I found this very cute python scripts to "export" reports. That's where you realised you needed dbt?
* How much money have you lost in production?
* Do you (Galoy team) run a production instance for your own usage?
Tech:
Vacancy:
* What's the story around it? What are the needs?
* Replacing Sebastien or José? Or expanding the team?
* Data Scientist vs Data Engineer?
* What bits of my profile do you see fitting/not fitting.
Things I've deduced:
* You've scored Lana with one of the big banks in El Salvador (Agrícola, Cuscatlán, Credomatic, Davivienda, Hipotecario) and are now rushing to catter them? You're also integrating with the government supervisor (SSF).
* You use Metlano and dbt in Lana to make reports based of the backend, which you hold in BigQuery.
* You have a big focus on Lana right now.
* You're very excited about regulatory changes in the US
Crazy ideas from me:
* lightning is very stocastic and will need a lot of data driven mgmt
+ Peer selection and channel mgmt
+ fee setting
+ participation in liquidity markets
* million ecash banks
* wallets as trust intermediaries, always looking for the right custodian
* ecash exchanges, trust markets
* automated mint discoverability
### Interview notes
...

View file

@ -0,0 +1,133 @@
# Challenge Scratch
My notes for the technical challenge.
## Original request from Justin
Link to the gist: https://gist.github.com/bodymindarts/9919abc26a1dbbcd71d426030000df62
> # Write a trigger function that 'rolls up' the customer events in PG
>
> We would like to ask you to work on a POC for a solution to the 'event sourced entities' issue I explained in the interview.
>
> The approach we would like you to explore is to write a postgres trigger function that creates / updates a rollup of the entity events and gets committed atomically.
>
> In this task we will focus only on the 'user' entities.
>
> Anytime an event gets added to `core_user_events` table the PG function should atomically write to the rollup table with the data representing the current snapshot of a user.
>
> Please commit a working example to a fork of our lana repository and send us a link to it when you are ready.
>
> In a follow up interview we will dive into the approach you took and what thoughts you have around topics such as maintainability and extendability.
>
> The following are instructions on how to get the system into a usefull state for experimenting:
>
> ## Dependencies
>
> Nix:
> - Recommended install method using https://github.com/DeterminateSystems/nix-installer
>
```
> curl --proto '=https' --tlsv1.2 -sSf -L https://install.determinate.systems/nix | sh -s -- install
> ```
>
> docker
>
> ## Dev shell
>
> Clone the repo: `git clone git@github.com:GaloyMoney/lana-bank.git && cd lana-bank`
>
> Use `nix develop` to enter the dev shell or `direnv allow` if you have direnv installed - this will install all the dev dependencies you should need.
>
>
> ## Run tests
>
> start dependencies:
>
```
> make reset-deps run-server
> ```
>
> Compilation can take a while but eventually you should see the following logs:
>
```
> Starting customer server on port 5254
> Starting admin server on port 5253
> ```
>
> Run the 'superuser' end to end tests in another shell:
>
>
```
> bats -t bats/superuser.bats
> ```
>
> This will seed the database with some user events.
> You can see the result via:
>
>
```
> $ psql postgres://user:password@localhost:5433/pg -c 'select count(*) from core_user_events;'
> count
> -------
> 6
> (1 row)
> ```
>
> ## Solution
>
> Create a new migration file via:
>
```
> cd lana/app
> cargo sqlx migrate add
> ```
>
> you can add / remove the migration via
>
```
> cd lana/app
> cargo sqlx migrate run
> cargo sqlx migrate revert
```
>
> rerun `make reset-deps run-server` to wipe the database state.
>
>
> We are looking forward to your ideas - happy coding!
## My notes
### Understanding the request
* We need to modify the project so that we materialize the state of users on each user event.
* This needs to be done with a postgres trigger.
* Our changes in Postgres must be delivered with a new migration.
Interesting bits:
* How to ensure atomicity of rollup state (no way for an event to be added without the )
* How to possible create the rollup in a lana instance that is already rolling and has events? (I consider this to be out of scope in terms of implementing, but I should have an opinion)
* How to do something that's not hardcoded to the user events, but rather is extensible to other events? Potentially leverage some schema definitions to dynamically generate Postgres triggers? Maybe we need some artifact where we declare which events must be rolled up and add some config needed to do so? I'll probably begin with a naive, hardcoded approach to users and then reflect on how that can be extended to other aggregates.
* I'll try to understand the testing of the project to see where can I add tests to ensure that my rollup works fine.
First bits I'll explore before moving on:
* Getting the environment working.
* Run the tests.
* Get more familiar with the user events and how schemas are defined and used in the repo.
* Get more familair with how the tests are written.
I'll clear those first and then take it from there.