Giter Club home page Giter Club logo

etcaetera's Introduction

You've found ThΓ©o! πŸ‘‹

I'm a polymath software engineer passionate about product development and user experience, backed by 13 years of diverse experience in remote and multicultural environments (working and living). My journey spans industries including press, data analytics, music, and observability.

My main focus revolves around delivering user value, and I enjoy taking a holistic, breadth-first, hacker-style approach to engineering.

πŸ† Proud Open-Source Contributions

I maintain the k6 load testing tool and have contributed to various open-source projects, such as Lane and Reflections. My commitment to open-source reflects my belief in giving back to the community.

I am a maintainer of the popular k6 load testing tool. Some of my proud open-source contributions include:

  • Lane, a Go library providing generic PriorityQueues, Queues, Stacks, and Deque data structures
  • Reflections: A Go library simplifying reflection-based tasks
  • Various system tools such as trousseau, motus or mymy.
  • And more...

πŸ’Ό Work Experience

I thrive as a Staff Software Engineer at Grafana Labs, building tools that empower developers worldwide. Prior roles at Ableton, Botify, and LibΓ©ration have equipped me with invaluable insights into major projects running or operating at scale, with sometimes uncommon requirements, scope, and workflows.

πŸ”§ Skills

Strategic thinking and decision-making complement my strong focus on product and user experience. I have excellent communication and soft skills and am proficient in driving software design and consensus building. I am experienced in Go, Python, Rust, and C++ and take a holistic, breadth-first, and hacker-style approach to engineering. Furthermore, working in remote and multicultural companies for the last ten years gave me the soft skills to navigate heterogeneous communication and working practices.

πŸŽ“ Education

After studying Literature and Philosophy, I transitioned to Computer Science and graduated from Epitech, France's leading computer science school.

🌍 Around the web

I demystify technology one article at a time on my blog, https://theocrevon.com. You can also find me showcasing my skills and achievements on LinkedIn and answering your Go, Python, Rust, and Systems questions on StackOverflow.

🎨 Personal Interests

Beyond coding, I'm passionate about literature, video games, philosophy, and photography. I've played the piano for a decade, have a healthy obsession with Japanese culture and food, and have been living in Berlin for the past decade.

πŸ’‘ Neurodiversity

Initially, it might not seem like it, but I'm rather shy and introverted. The Myers and Briggs personality test classifies me as an INTP, and in my experience, it fits how I perceive myself and what others reflect on me.

A constitutive aspect of my personality I prefer to share is that I have a high IQ (for some reason, I always feel guilty, ashamed, and scared of saying it) and identify as neurodiverse. I'm not Einstein, but in my experience and according to modern psychology research, my brain can work somewhat differently than the "typical" person's.

For instance, although it tends to be less well accepted in the world of technology, I rely on intuition quite heavily (as opposed to complex argument reasoning, although I'm also capable of that). Much of my awoken time is spent learning things; my brain somehow smothers all that in dark and tiny corners and fetches them out of the blue without necessarily providing me context when it judges it necessary.

I can also have trouble reasoning sequentially. My brain prefers a more tree-like reasoning structure where ideas are nodes, and it constantly tries to connect them with edges in ways that can sometimes look completely irrelevant. Thus, I also sometimes have a hard time expressing what I mean because it's tough to make what in my brain is some mind map into a sequence of words.

⚑ Fun facts

  • I use the fish shell. Some people seem to find it funny.
  • Most of my infrastructure runs on FreeBSD β€”yes, even the web services I run. Sure, it doesn't have all the fancy stuff the cool kids expect nowadays, but it's small, self-contained, well-documented, stable and easy to master.
  • I use the MonoLisa font for everything related to code, and people have been calling me "so French πŸ‡«πŸ‡·" for it.
  • I have an obsession with hardcore management and simulation games. If both the pilots of an Airbus A320 I was onboard were to become incapacitated, I'd probably be the passengers' best chance at landing it safely.

πŸ“« Contact

Regardless of the reason for it, please feel free to contact me directly. Be kind πŸ™‡β€β™‚οΈ

etcaetera's People

Contributors

alixz avatar bitdeli-chef avatar bitprophet avatar ramnes avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

etcaetera's Issues

Specify config [sub]destination in Env adapter

Given a c = Config({'abc': {'123': 'easy as'}) config object, it would be cool to be able to update the c['abc']['123'] value using the env adapter destination selector.

Using a given separator like '.' should make it.

Example:

c = Config({'abc': {'123': 'easy as'}})
env = Env(**{
    'abc.123': 'MY_ENV_VAR'
})

Defaults/Overrides auto-loading - necessary?

I'm trying to use etcaetera in a "case sensitive" manner where the incoming config sources (files etc) are not forced into upper- or lowercase but simply retain the literal values.

(There's no hard requirement for this on my end [yet], but it feels like the sane default to me. If a user decided they wanted a SillyCapsName key in their config file, my tool automatically changing it to SILLYCAPSNAME or sillycapsname feels like a nasty surprise :()

I tried to do Config(formatter=noop) (where: def noop(s): return s) to implement this, and found that the Defaults and Overrides adapters gum it up by calling self.load() in their __init__ - so their default uppercase formatters execute before the central one defined on Config gets a chance to (by which time the "real" key data has been lost).

End result is that I presently need to override formatter= in multiple places instead of just Config. Not a deal killer, but inelegant and not DRY :)

This brings me to my actual questions:

  • Why do these classes auto-load? I don't see the use case off hand, but it's apparently intentional as the tests fail with those lines removed.
  • What's the rationale behind the default to uppercase? It's not really mentioned in the documentation (besides the Python-module angle which is understandable).
  • Would you consider either change I alluded to above - changing the default adapter to a noop (preferable), or having Defaults and Overrides cease auto-loading? I'm willing to make a PR if necessary.

Fix internal error throw when Env adapter constructor is misused

Env adapter constructor is not obvious enough. When you'd like to supply a src->dest pair, **kwargs should be used. If you provide a dict directly it fails with an internal error.

Two things should be done:

  • Enhance the documentation
  • Throw a specifc error when a {} is passed to the Env adapter as first argument, and provide instructions for better usage.

Allow "Overrides" to patch only certain parts of a dictionary structure.

i have a json files (comes from an external API so i don't have the option of changing it) that looks like this :

(contents of /tmp/test.json)

{ "level1": { "level2": { "content1": { "one": 1 }, "content2": { "two": 2 } } } }

which i load through

f = File('/tmp/test.json')

Is there a way i can register an Override which would allow me to set
level1.level2.content2.two = 3
and keep the rest of the structure with its original #values?

Adapters should keep a cache the keys they have fetched already

For example:

env = Env(**{
    'namespace': 'MY_NAMESPACE' , # First destination of the value stored at MY_NAMESPACE in env
    'nested.namespace': 'MY_NAMESPACE',  # Second destination of the value stored at MY_NAMESPACE in env
})

As of today env key will be fetched twice even though env adapter should already be aware of its value.

Config object keys format should be selectable

As of today, keys are automatically upercased and joined using underscores. This is the desired behavior as it mimics the unix environment keys system.

Some users might want to apply a given transformation closure to these keys automatically.

Add an "internals" section to the documentation

Internals should be explained in a Documentation section:

  • How config stores adapters (defaults first, overrides last, ...)
  • How config loads adapters and following which policy
  • Explain the AdapterSet api
  • Explain the Adapter api

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.