Code Monkey home page Code Monkey logo

clockidup's Introduction

Hi! My name is Maël (prononciation). 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.

You may read about me digging into networking, Go development, and Kubernetes on my blog.

Some of my contributions: cert-manager (Go), gitlab (Ruby), boost-graph (C++), auto-multiple-choice (C++, Perl), kubernetes-sigs/kind and kubernetes-sigs/cluster-api (Go), ocaml-minisatocaml-qbf, ocamlyices2opam (OCaml). I authored homebrew-amctouist (OCaml) and a couple of vscode-extensions.

🔰 Curriculum & contact information

System Software Engineer at Jetstack (2021–present)

I joined the cert-manager team at Jetstack.

As 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.

Along with the open-source work, I contributed to Jetstack's enterprise offering, and led an effort towards customer success via lean product practices.

System Software Engineer at Ori Industries (2019–2020)

As 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.

As 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.

After 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.

Beyond my primary assignment, I also worked with the rest of the company on topics such as

  • 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.
  • 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.
  • Contributed to the company knowledge base on various topics such as “the git guide,” “slack etiquette,” and “recording and sharing meetings.”
  • Attended all weekly meetings of sig-cluster-lifecycle to keep the company up to date with upstream developments as well as advocate for our solution; contributions: kubernetes-sigs/kind, kubernetes-sigs/cluster-api
  • 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 and proposed learning topics engineers would pick during their training (mainly around Kubernetes controllers, networking, and Linux-y things).
  • I authored the technical test given to applicants and was part of the technical interviews.
  • 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.
  • I authored ngroker, a tool we used at Ori for running a shared ssh session without the hassle of exchanging ssh keys (using Github usernames).
  • I wrote an interactive ChatOps bot using Github Actions for applying Terraform changes through PRs.

Tools used: Go, Kubernetes, Github Actions, Helm, Terraform, AWS, GCP, OpenStack, Agile.

Fullstack Software Engineer contracted to La Banque Postale (2019)

As 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.

Tools used: Java, Spring Boot, Typescript, Angular 2+, NgRx.

Systems Software Engineer contracted to Orange (2018)

As 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.

Tools used: Go, Terraform, Gitlab CI, Bash, VMWare vRA 7.

Education

Ph.D. in Computer Science (2016–2018)

I developed 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 (in French).

As 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.

Tools used: OCaml, Rust, Typescript, AWS ECS, Travis CI.

Contact details

clockidup's People

Contributors

davidcollom avatar maelvls avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

Forkers

davidcollom

clockidup's Issues

Ability to add projects

Would it be of interest to add, adding of projects from within the CLI also? or do you think this would exceed the scope of this tool?

Something like:

clockidup project add XXXXXXXX

Ability to use a custom/different workspace

I use different workspaces to separate personal/work projects etc.

It would be great if I could use / switch workspaces in which I use, via config file or via command line.

Currently looking at:

clockidup/main.go

Lines 237 to 248 in 058ae20

workspaces, err := clockify.Workspaces()
if err != nil {
return fmt.Errorf("%s", err)
}
if len(workspaces) == 0 {
return fmt.Errorf("no workspace found")
}
workspace := workspaces[0]
userID := workspace.Memberships[0].UserID
timeEntries, err := clockify.TimeEntries(workspaces[0].ID, userID, start, end)

It uses the first workspace provided from the API?

Login command is broken

I think the login process flow may be slightly broken:

info: the API token is available at https://clockify.me/user/settings
debug: curl -v -X GET  --header 'X-Api-Key: ' --header 'host: api.clockify.me'   https://api.clockify.me/api/v1/workspaces
? Clockify API token [REDACTED]
debug: token: [REDACTED]
debug: curl -v -X GET  --header 'X-Api-Key: [REDACTED]' --header 'host: api.clockify.me'   https://api.clockify.me/api/v1/workspaces
debug: curl -v -X GET  --header 'X-Api-Key: ' --header 'host: api.clockify.me'   https://api.clockify.me/api/v1/workspaces
error: login failed: token seems to be invalid

It looks as though, the configfile is either not written or not re-read in on the second api call?

If I create the file manually: ${HOME}/.config/standup.yaml all is well and things start working as expected.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.