{"id":16862131,"url":"https://github.com/maelvls/maelvls","last_synced_at":"2025-03-18T15:56:22.303Z","repository":{"id":79937886,"uuid":"307168095","full_name":"maelvls/maelvls","owner":"maelvls","description":"My GitHub README.md available at https://github.com/maelvls","archived":false,"fork":false,"pushed_at":"2024-10-01T14:42:45.000Z","size":181,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-01-24T19:44:19.037Z","etag":null,"topics":["engineer","go","kubernetes","ocaml","readme-profile"],"latest_commit_sha":null,"homepage":"https://github.com/maelvls","language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/maelvls.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-10-25T18:44:36.000Z","updated_at":"2024-10-01T14:43:15.000Z","dependencies_parsed_at":null,"dependency_job_id":"c4ae4a25-deca-4774-a219-631c86250e0d","html_url":"https://github.com/maelvls/maelvls","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maelvls%2Fmaelvls","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maelvls%2Fmaelvls/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maelvls%2Fmaelvls/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maelvls%2Fmaelvls/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maelvls","download_url":"https://codeload.github.com/maelvls/maelvls/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":244257256,"owners_count":20424127,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["engineer","go","kubernetes","ocaml","readme-profile"],"created_at":"2024-10-13T14:34:38.171Z","updated_at":"2025-03-18T15:56:22.275Z","avatar_url":"https://github.com/maelvls.png","language":null,"readme":"Hi! My name is Maël ([prononciation](https://maelvls.dev/media/mael-pronounciation.mp4)). I am a software engineer living in Toulouse (France). I like to promote psychological safety through transparency, empathy and kindness. I do infrastructure software around networking and containers. After multiple technically successful projects and the realization that no user was using them, I started shifting from building software to helping out figure whether building or not building, and I discovered that \"product management\" is the role that fits this description.\n\nYou may read about me digging into networking, Go development, and Kubernetes [on my blog](https://maelvls.dev/).\n\nSome of my contributions: [cert-manager][] (Go), [gitlab][] (Ruby), [boost-graph][] (C++), [auto-multiple-choice][] (C++, Perl), [kubernetes-sigs/kind](https://github.com/kubernetes-sigs/kind/pulls?q=author%3Amaelvls) and [kubernetes-sigs/cluster-api](https://github.com/kubernetes-sigs/cluster-api/pulls?q=author%3Amaelvls+) (Go), [ocaml-minisat][], [ocaml-qbf][], [ocamlyices2][], [opam][] (OCaml). I authored [homebrew-amc][], [touist][] (OCaml) and a couple of [vscode-extensions][].\n\n[ocamlyices2]: https://github.com/polazarus/ocamlyices2/issues?q=involves%3Amaelvls\n[ocaml-minisat]: https://github.com/c-cube/ocaml-minisat/issues?q=involves%3Amaelvls\n[ocaml-qbf]: https://github.com/c-cube/ocaml-qbf/issues?q=involves%3Amaelvls\n[opam]: https://github.com/ocaml/opam-repository/issues?q=involves%3Amaelvls\n[gitlab]: https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/1150\n[boost-graph]: https://github.com/boostorg/graph/issues?q=involves%3Amaelvls\n[homebrew-amc]: https://github.com/maelvls/homebrew-amc\n[auto-multiple-choice]: https://gitlab.com/jojo_boulix/auto-multiple-choice/-/merge_requests?scope=all\u0026utf8=%E2%9C%93\u0026state=all\u0026author_username=maelvls\n[touist]: https://github.com/touist/touist\n[maelvls/awx-gke-terraform]: https://github.com/maelvls/awx-gke-terraform\n[maelvls/terraform-touist]: https://github.com/maelvls/terraform-touist\n[masters-thesis]: https://drive.google.com/file/d/0B5mz8k-t6PT0N2lINEZYX2duOFU/view\n[vehicule-routing-report]: http://homepages.laas.fr/sungueve/Docs/Etu/rapport-ter-aide-humanitaire.pdf\n[homebrew-tap-auto-bottles]: https://gist.github.com/maelvls/068af21911c7debc4655cdaa41bbf092\n[maelvls/users-grpc]: https://github.com/maelvls/users-grpc\n[rust-chat]: https://github.com/maelvls/rust-chat\n[touist-server]: https://github.com/maelvls/touist-editor/blob/master/touist-server/src/main.rs\n[maelvls.github.io]: https://maelvls.github.io/\n[mael.valais@gmail.com]: mailto:mael.valais@gmail.com\n[vscode-extensions-github]: https://github.com/maelvls?utf8=%E2%9C%93\u0026tab=repositories\u0026q=vscode\u0026type=\u0026language=\n[vscode-extensions]: https://marketplace.visualstudio.com/search?term=maelvalais\u0026target=VSCode\u0026category=All%20categories\u0026sortBy=Relevance\n[linus-fuck-kay]: http://lkml.iu.edu/hypermail/linux/kernel/1404.0/01331.html\n[cert-manager]: https://github.com/jetstack/cert-manager/issues?q=involves%3Amaelvls\n\n\u003cdetails\u003e\n  \n\u003csummary\u003e🔰 Curriculum \u0026 contact information\u003c/summary\u003e\n\n### System Software Engineer at CyberArk _(2021–present)_\n\nI joined the [cert-manager](https://github.com/jetstack/cert-manager) team at [Jetstack](https://jetstack.io/about). Jetstack was acquired by Venafi in 2021, which was acquired by CyberArk in 2024.\n\nAs part of the cert-manager core team, I mentored new contributors into merging their first pull request. During my mandate as a release lead of cert-manager, I worked on moving away from Bazel in order to reduce the friction new contributors were feeling when getting started. I worked with sig-network on the Gateway API integration in cert-manager, as well as on making the ingress resource documentation clearer for ingress controller implementors and ingress users alike.\n\nAlong with the open-source work, I contributed to Jetstack's enterprise offering, and led an effort towards customer success via lean product practices.\n  \n### System Software Engineer at Ori Industries _(2019–2020)_\n\nAs a Software Engineer at Ori Industries, my main focus was to develop an edge-aware version of Cloud Foundry. Telcos would use this infrastructure platform to leverage its low-latency last-mile 5G network. With this platform, they can sell compute time to developers with a network latency of 1-2 ms, acting as a public cloud provider of their own.\n\nAs an individual contributor, I helped shape the Kubernetes components that would make up the Ori infrastructure platform. Among others, my team built a Kubernetes native API for spinning up VMs on AWS, GCP, and OpenStack and bootstrap them into Kubernetes clusters. I also worked on a custom control plane for Envoy (our platform’s data plane) inspired by Istio. I contributed to the company’s initial REST API built-in Go that used a CQRS approach and NATS for the event persistence. My main achievement as an individual contributor has been to become the go-to person anyone would come to regarding Kubernetes controllers as well as for debugging Kubernetes and network-related issues.\n\nAfter a few months, I stepped up as tech lead in a team of four people. I would run the daily standups, make sure the backlog is in good shape, work with the Product Manager to flesh out stories, point the stories with the team, run a biweekly retro meeting (we ended up working in an uninterrupted sprint). Notable achievements are the “project office hours” I started; the meeting increased the cross-team communication through demos and open discussions about anything more or less related to my team’s project.\n\nBeyond my primary assignment, I also worked with the rest of the company on topics such as\n\n*   Helped grow the remote-first culture thought experiments such as the “wormhole” and by pushing for better video call quality (more than 70% of the company now equipped with proper standalone mics such as the Blue Yeti). A blog post about my experience of remote work is published [here](https://medium.com/@bryony.snelling_26575/mr-remote-working-2c953c121968).\n*   I initiated a movement towards transparency across the company that led to a rewrite of the “values” page. We started recording meetings and creating, for each meeting, a shared document with an agenda and collaboratively-written minutes.\n*   Contributed to the company knowledge base on various topics such as “the git guide,” “slack etiquette,” and “recording and sharing meetings.”\n*   Attended all weekly meetings of [sig-cluster-lifecycle](https://docs.google.com/document/d/1fQNlqsDkvEggWFi51GVxOglL2P1Bvo2JhZlMhm2d-Co/edit#) to keep the company up to date with upstream developments as well as advocate for our solution; contributions: [kubernetes\\-sigs/kind](https://github.com/kubernetes-sigs/kind/pulls?q=author%3Amaelvls), [kubernetes\\-sigs/cluster-api](https://github.com/kubernetes-sigs/cluster-api/pulls?q=author%3Amaelvls+)\n*   I helped develop a self-learning program where each engineer spends 20% of their time training on various topics. I authored a couple of [blog posts](https://maelvls.dev/) and proposed learning topics engineers would pick during their training (mainly around Kubernetes controllers, networking, and Linux-y things).\n*   I authored the technical test given to applicants and was part of the technical interviews.\n*   I wrote multiple internal kubectl plugins for interacting with our custom resources and a tool for monitoring and removing unused VMs on OpenStack, AWS, and GCP.\n*   I authored [ngroker](https://github.com/maelvls/ngroker), a tool we used at Ori for running a shared ssh session without the hassle of exchanging ssh keys (using Github usernames).\n*   I wrote an interactive [ChatOps bot](https://github.com/maelvls/gh-actions-chatops) using Github Actions for applying Terraform changes through PRs.\n\n**Tools used**: Go, Kubernetes, Github Actions, Helm, Terraform, AWS, GCP, OpenStack, Agile.\n\n### Fullstack Software Engineer contracted to La Banque Postale _(2019)_\n\nAs part of a network operations team, I built a web application meant to become a self-updating repository of IP assignments (as opposed to using Excel sheets), which helps the operations team plan and execute fail-overs.\n\n**Tools used:** Java, Spring Boot, Typescript, Angular 2+, NgRx.\n\n### Systems Software Engineer contracted to Orange _(2018)_\n\nAs part of an operations team, I built a Terraform plugin in Go for a private cloud used within Orange (mainly interacting with VMWare vRA 7 APIs). I also worked on the continuous testing and delivery of Docker images used by application teams across the company.\n\n**Tools used:** Go, Terraform, Gitlab CI, Bash, VMWare vRA 7.\n\n## Education\n\n### Ph.D. in Computer Science _(2016–2018)_\n\nI developed [touist](https://github.com/touist/touist), a compiler written in OCaml for a new logic language meant to formalize and solve problems expressed as SAT expressions. The tool is now used to teach logic to first-year students at Université Paul Sabatier in Toulouse and is used by researchers to explore new SAT encodings; see [the thesis](http://thesesups.ups-tlse.fr/4328/1/2019TOU30079.pdf) (in French).\n\nAs part of my PhD, I also helped develop a web application serving as a frontend to the compiler written in VueJS and Rust; we deployed it through Docker images built by Travis CI and run using AWS ECS.\n\n**Tools used:** OCaml, Rust, Typescript, AWS ECS, Travis CI.\n\n## Contact details\n\n- mael@vls.dev (GSuite-enabled)\n- +33 786484391\n- _Maël Valais_ on [Kubernetes Slack](https://slack.k8s.io/) and [Gopher Slack](https://gophersinvite.herokuapp.com/)\n- [LinkedIn](https://www.linkedin.com/in/maelvalais/)\n- [Blog](https://maelvls.dev)\n- Toulouse, France\n\n\u003c/details\u003e\n","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaelvls%2Fmaelvls","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaelvls%2Fmaelvls","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaelvls%2Fmaelvls/lists"}