diff --git a/content/cv/_index.md b/content/cv/_index.md index e0a0467..4eafa91 100644 --- a/content/cv/_index.md +++ b/content/cv/_index.md @@ -1,9 +1,128 @@ +++ -title = "CV" +title = "Łukasz Niemier" [extra] no_comments = true sitemap = false +++ -{{ cv() }} +**Email:** +**Website:** + +**GitHub**: +**Tangled**: +**StackOverflow**: + +## Technical Skills + +**Languages & Frameworks**: Elixir, Erlang (OTP), Rust, PostgreSQL, Ruby on Rails, Bash, Nix/NixOS +**Tools & Technologies**: Git, Terraform, Consul, Nomad, Docker, GNU/Linux + +## Notable contributions + +- Elixir - logger reimplementation on top of Erlang's `logger` module, `mix test + --cover` CLI output, Support for `NO_COLOR` environment variable, add + `is_struct/1` guard, fix module inspection on case-insensitive file systems, + support for parsing extra arguments via `mix eval` and `eval` command in + release +- Erlang OTP - add support broader set of protocols in `socket` module, support + for custom devices in `logger_std_h`, support for global metadata in `logger`, + support for reconfiguration of `logger` (needed for better Mix and Rebar3 + integration) +- Ecto - support aggregations over `*`, better error on duplicated `schema` block + +## Professional Experience + +{% section() %} +### DockYard - Consultant + +2025 + +Architectural analysis of client product codebase with preparation of security +analysis with detailed report with proposed solutions +{% end %} + +{% section() %} +### Supabase Supavisor - Lead Elixir Developer + +2023–2025 + +- Optimised metrics gathering system that resulted in an order of + magnitude performance boost +- Updated used OTP and Elixir versions from OTP 24 to OTP 27 and Elixir + from 1.14 to 1.18 +- Reduced usage of mocking in tests to improve tests performance and + volatility, resulting in reduced CI usage and improved developer + experience +- Implemented e2e tests against existing Node.js PostgreSQL clients to + improve production issues +- Implemented multi-region deployment system to provide blue/green + deployments +- Replaced usage of `ct_slave` with newer `peer` module in OTP +{% end %} + +{% section() %} +### Supabase Logflare - Senior Elixir Developer + +2023 + +- Implemented on-the-fly decompression of incoming data that improved + ingestion possibilities and reduced transfer usage +- Implemented DataDog-compatible ingestion endpoint for seamless + transition from DataDog provider to Logflare +- Improved BigQuery pipeline workflow to reduce congestion on database + connections +- Added support for AWS Cloud Events metadata extraction +- Improved CI usage by splitting different actions to separate steps ran + in parallel +- Replaced dynamic generation of connection modules for PostgreSQL + storage system with Ecto's dynamic repositories to avoid atom exhaustion +{% end %} + +{% section() %} +### Eiger - Consultant + +2022–2023 + +- **Forte.io** - implemented Interledger protocol for cross-chain transactions +- **Aleo Blockchain** - implemented GraphQL API for the on-chain data; created + syntax colouring library for Aleo assembly-like language for smart contracts +{% end %} + +{% section() %} +### Erlang Solutions/Kloeckner GmbH - Consultant + +2021 + +Optimised DB query performance by providing PostgreSQL structure analysis and +improving indices usage +{% end %} + +{% section() %} +### Remote Inc. - Consultant + +2020–2021 +{% end %} + +{% section() %} +### Kobil GmbH - Erlang/Elixir Consultant + +2019–2020 + +Implementation of transactions in MongoDB driver for Elixir +{% end %} + +{% section() %} +### AppUnite - Full-stack Developer/DevOps + +2016–2019 + +- **JaFolders/AlleFolders** - 2× performance improvement by optimising + PostgreSQL usage by reducing geo-queries using PostGIS thanks to better + indices and materialised views; implemented UI and brochure viewer in Vue and + SVG +- **OneMedical/Helium Health** - architectural redesign and reimplementation of + application from Rails/MongoDB to Phoenix/PostgreSQL; prepared hybrid + deployment with on-premise/in-cloud system; migrated of the existing + deployments from MongoDB to PostgreSQL +{% end %} diff --git a/flake.lock b/flake.lock index 1804afa..9e3218f 100644 --- a/flake.lock +++ b/flake.lock @@ -21,8 +21,8 @@ "nixpkgs": { "locked": { "lastModified": 0, - "narHash": "sha256-hpXH0z3K9xv0fHaje136KY872VT2T5uwxtezlAskQgY=", - "path": "/nix/store/qks97vilhp92dxjn79670hl6hk5vrgwb-source", + "narHash": "sha256-2FWWY1rr/+pGUJK1npcVcsWNEblzmKs6VxD3VEvwJSs=", + "path": "/nix/store/9ass1d6jic7yjb9nvhvvlm5k7bgqpkd0-source", "type": "path" }, "original": { diff --git a/sass/_footer.scss b/sass/_footer.scss index fb36379..fe0be66 100644 --- a/sass/_footer.scss +++ b/sass/_footer.scss @@ -1,9 +1,7 @@ @import "variables"; .footer { - @media print { - display: none; - } + @media print { display: none; } padding: 40px 0; flex-grow: 0; diff --git a/sass/_header.scss b/sass/_header.scss index cad2d28..2543c58 100644 --- a/sass/_header.scss +++ b/sass/_header.scss @@ -1,9 +1,7 @@ @import "variables"; .header { - @media print { - display: none; - } + @media print { display: none; } display: flex; flex-direction: column; diff --git a/sass/_main.scss b/sass/_main.scss index 43d7f2c..f8d77ae 100644 --- a/sass/_main.scss +++ b/sass/_main.scss @@ -4,12 +4,6 @@ font-size: calc(1rem + 0.05vw); line-height: 1.54; color: var(--color); - - @media print { - color: #000; - line-height: 1.2; - font-size: 10pt; - } } html { @@ -72,13 +66,28 @@ h2 { } h3 { - font-size: 1.2rem; + font-size: 1.1rem; } h4, h5, h6 { - font-size: 1.15rem; + font-size: 1.05rem; } +:is(h1, h2, h3, h4, h5, h6) { + color: var(--accent); + + &:has(+ p > small) { + margin-bottom: .5rem; + } + + & + p:has(> small) { + margin-top: 0; + } + + & + p > small { + color: var(--accent-alpha-70); + } +} a { color: inherit; @@ -179,7 +188,6 @@ blockquote { } table { - table-layout: fixed; border-collapse: collapse; width: 100%; margin: 40px 0; @@ -191,6 +199,7 @@ table, th, td { } th { + font-size: .9rem; color: var(--accent); } diff --git a/sass/_pagination.scss b/sass/_pagination.scss index b59e245..a75507c 100644 --- a/sass/_pagination.scss +++ b/sass/_pagination.scss @@ -1,6 +1,8 @@ @import 'variables'; .pagination { + @media print { display: none; } + margin-top: 50px; &__title { diff --git a/sass/_post.scss b/sass/_post.scss index f402ed7..2367de8 100644 --- a/sass/_post.scss +++ b/sass/_post.scss @@ -82,7 +82,7 @@ } ul { - list-style: "\29bf"; + list-style: "\25a3"; ul { list-style: "\25a0"; diff --git a/sass/_print.scss b/sass/_print.scss new file mode 100644 index 0000000..22d93fd --- /dev/null +++ b/sass/_print.scss @@ -0,0 +1,40 @@ +:root { + color: #000; + line-height: 1.2; + font-size: 10pt !important; +} + +body { + background-color: white; +} + +.container { + padding-top: 0; + padding-bottom: 0; +} + +code { + background: none; + padding: 0; + margin: 0; +} + +h1, h2, h3, h4, h5, h6 { + page-break-after: avoid; + + &:not(:first-child) { + margin-top: 1.2em; + } +} + +ul { + list-style: square !important; +} + +section { + page-break-inside: avoid; +} + +.post { + margin-bottom: 0; +} diff --git a/sass/style.scss b/sass/style.scss index a8d07fd..b2e0093 100644 --- a/sass/style.scss +++ b/sass/style.scss @@ -8,6 +8,10 @@ @import 'footer'; @import 'rings'; +@media print { + @import 'print'; +} + :root { --phoneWidth: (max-width: #{$phone-max-width + 1px}); --tabletWidth: (max-width: #{$tablet-max-width + 1px}); diff --git a/templates/shortcodes/cv.md b/templates/shortcodes/cv.md deleted file mode 100644 index f3df6cd..0000000 --- a/templates/shortcodes/cv.md +++ /dev/null @@ -1,186 +0,0 @@ -# Łukasz Jan Niemier - -## Personal information - -Email: - <~@hauleth.dev> - -Website: - - -Twitter: - [@hauleth](https://twitter.com/hauleth) - -## Education - -- Poznań University of Technology: Computer Science - no degree - 2012-2015 - + Secretary of AKAI - Students' Association of Web Developers - -## Experience - -- Hauleth.dev - Consultant - 2021+ - + DockYard/Karambit.ai - 2025 - * Architectural analysis of Karambit product - * Prepared security analysis with detailed report with fixes - + Eiger - 2022-2023 - * Forte.io - - Implemented Interledger protocol for cross-chain transactions - * Aleo Blockchain - - Implemented GraphQL API for the on-chain data - - Created syntax colouring library for Aleo assembly-like language - for smart contracts - + Erlang Solutions/Kloeckner GmbH - 2021 - Consultant for Elixir, Ruby, - and SQL (PostgreSQL) - * Optimised DB query performance by providing PostgreSQL structure - analysis and improving indices usage - + Remote Inc. - Senior Backend Engineer - 2020-2021 - * Architectural analysis of existing codebase - + Kobil GmbH - Erlang/Elixir Developer - 2019-2020 - * Maintained MongoDB driver for Elixir - * Implemented transactions for MongoDB driver in Elixir -- Supabase - 2023-2025 - + Logflare - logs aggregation service: - * Implemented on-the-fly decompression of incoming data that improved - ingestion possibilities and reduced transfer usage (created library - [`plug_caisson`][] for that purpose) - * Implemented DataDog-compatible ingestion endpoint for seamless - transition from DataDog provider to Logflare - * Improved BigQuery pipeline workflow to reduce congestion on database - connections - * Added support for AWS Cloud Events metadata extraction - * Improved CI usage by splitting different actions to separate steps ran - in parallel - * Replaced dynamic generation of connection modules for PostgreSQL - storage system with Ecto's dynamic repositories to avoid atom exhaustion - + Supavisor - a cloud-native, multi-tenant Postgres connection pooler - * Deployment management - * Optimised metrics gathering system that resulted in an order of - magnitude performance boost - * Updated used OTP and Elixir versions from OTP 24 to OTP 27 and Elixir - from 1.14 to 1.18 - * Reduced usage of mocking in tests to improve tests performance and - volatility, resulting in reduced CI usage and improved developer - experience - * Implemented e2e tests against existing Node.js PostgreSQL clients to - improve production issues - * Implemented multi-region deployment system to provide blue/green - deployments - * Improved system observability features by making it more resilient and - performant - * Replaced usage of `ct_slave` with newer `peer` module in OTP -- AppUnite - Full-stack Developer/DevOps - 2016-2019: - + JaFolders/AlleFolders - * 2x performance improvement by optimising PostgreSQL usage - * Reduced geo-queries using PostGIS thanks to better indices and - materialised views usage - * Implemented UI and brochure viewer in Vue and SVG - + OneMedical/Helium Health - * Architectural redesign of application from Rails/MongoDB to - Phoenix/PostgreSQL - * Prepared hybrid deployment with on-premise/in-cloud system - * Migrated of the existing deployments from MongoDB to PostgreSQL -- Nukomeet - Full-stack Developer - 2015-2016 -- Prograils - Junior Developer - 2013 - -### Organisations - -- Erlang Ecosystem Foundation - member of the Observability WG -- OpenTelemetry Project - member of the Erlang WG - -### Other fields - -- Volunteer: - + Pyrkon Fan Convention - * Helper - 2011, 2012, 2013, 2014, 2016 - * Organizer - 2015 - + UEFA Championship 2012 - Poland-Ukraine - * ICT Accreditation support -- Times Person of the Year - 2006 - -### Languages - -- Polish - mother tongue -- English - fluent - -### Showcase - -- GitHub: -- GitLab: -- SourceHut: -- StackOverflow: - -### Notable contributions - -- Elixir language: - + Logger reimplementation on top of Erlang's `logger` module - + `mix test --cover` CLI output - + Support for `NO_COLOR` environment variable - + `is_struct/1` - + Fixing module inspection on case-insensitive file systems - + Support for parsing extra arguments via `mix eval` and `eval` command in - release -- Erlang OTP: - + Support for custom devices in `logger_std_h` - + Fixing `socket` module to support broader set of protocols (for example - ICMP) - + Support for global metadata in `logger` - + Support for reconfiguration of `logger` (needed for better Mix and Rebar3 - integration) - + Several fixes to `logger` and `socket` modules - + Add support for τ constant in `math` -- Git: - + Add support for Elixir in diff -- Ecto: - + Support aggregations over `*` - + Better error on duplicated `schema` block -- Elixir MongoDB driver - + Support for transactions - -### Notable projects - -- - systemd integration for Erlang - projects -- - Mix compiler for detecting unused - code -- - maintainer of - the Erlang's OpenTelemetry implementation -- Vim plugins: - + - simple asynchronous task runner - + - search and replace text - faster - + - display signs next to QF matches - -### Languages and Frameworks - -- Elixir - + Phoenix - + Ecto -- Erlang - + OpenTelemetry collaborator - + EEF Member - + OTP contributor -- Nix/NixOS -- Rust -- PostgreSQL -- sh/Bash -- Ruby - + Ruby on Rails - -### Technologies - -- Git -- Vim -- HashiStack - + Terraform - + Consul - + Nomad -- GNU/Linux and other UNIX-like systems -- TDD/BDD methodologies -- Property testing - -## Other - -- Viking reenactor -- Keyboard fan -- Sci-fi/Fantasy fan and Poznań's Sci-fi/Fantasy club member - -[`plug_caisson`]: https://github.com/supabase/plug_caisson diff --git a/templates/shortcodes/section.html b/templates/shortcodes/section.html new file mode 100644 index 0000000..1e7a6c1 --- /dev/null +++ b/templates/shortcodes/section.html @@ -0,0 +1,3 @@ +
+ {{ body | markdown(inline=true) | safe }} +