Manfred Touron

Ideas

5 pages about "Ideas"

Central GraphQL for Big Organizations

There are two main ways of using GraphQL:

  1. as the core method of defining & accessing APIs
  2. as an alternative way of accessing existing APIs (a proxy)

The original idea here is not about the technical way of doing it as it is pretty standard.

I focus on a specific context where this idea may become very interesting:

  • An heterogenous system,
  • made of mixed protocols (Rest, gRPC, GraphQL, …),
  • multiple languages,
  • standalone/autonomous teams (not working in the same office),
  • legacy code,
  • third-party services,
  • mix of big monoliths and small micro-services,
  • etc.

A Central GraphQL for Big Organizations is a tool that allows to aggregate everyone on a common format while preserving the diversity of the ecosystem, with a very limited risk, and with “free documentation” as a bonus.

It may also be a solution for smaller organizations as the secret is to only involve a small team or even one person to bootstrap the project.

Important steps

  1. choose a way of defining contracts
    • You can choose to write in the GraphQL definition format directly, in protobuf and then generate the GraphQL code, probably even in swagger, etc
  2. implement (at least) two different services using this format
  3. bootstrap a PoC implementing the two services, you may have to develop some “drivers” for common feature: authentication, retry policy etc
  4. show your PoC to some other key people (architects, team leaders, etc.)
  5. motivate people to help you write missing API specifications and “drivers”
  6. profit!

Conclusion

  • you now have three options:
    • to try to make everyone fit in the same API formats and everything (your initial plan?) 😉
    • or ask them to maintain a specification file for their existing APIs
  • you can now use advanced features of GraphQL: cross-services unions, streams, validation, type safety, client code generation, etc…
  • it can be tested without risk, if this project fails, you only involed a small team, not the whole organization

Collaborative Dependencies

The idea

Create a tool that allows to colleboratively define, visualize (with graphs) and query dependencies.

a.k.a. “The perfect mix between Neo4J, Wikipedia/Wikidata, and LucidChart

Needs

  • definition/editing
    • can be done manually
    • can be done using scripts/APIs to aggregate external sources
  • should be typed yet flexible

Solution proposal

Glue together:

  • Wikibase, the engine behind https://wikidata.org, to store and manually manage the dependencies
  • An existing or a custom solution to import/synchronize existing data
  • Well-defined base entities to ensure a good overall quality
  • A custom frontend to provide useful visualizations
  • Some process/guidance to have collaboration

Collaborative Little Alchemy

The idea

Remake of Little Alchemy with collaborativity in mind.

Two collaborative modes:

  1. Administrative collaboration: people can easily propose new alchemies to the community.
    • It can easily be done thanks to open-source, basically, only a README file or a CONTRIBUTING file in an open GitHub project, and voila.
  2. Playing collaboration: being able to play in teams to share the fun.

Challenges

not so much, just taking the time to setup the engine and have a decent UI.

Interactive (& Collaborative) Layered Map

The idea

Create a tool that allows to stack multiple map layers and use filters to discover your next home’s area.

Example

Take multiple maps of the same area:

Sources: Various results from Google Images (do not hesitate to contact me in case of copyright issue)

Then, imagine a tool that allows you to:

  • toggle each layer
  • use filters or slidebars to create heatmaps

Bonuses

  • make the tool collaborative
  • share specific filters
  • export an image with your filters

Secret Santa - Online Edition

The idea

Just put the well-known Secret Santa tradition online.

By sending a small present to an unknown person, you are automatically enrolled to receive one by a future giver, etc.

Challenges

  • automate everything, including support (delivey issues)
  • ensure privacy