Giter Club home page Giter Club logo

granular-hooks's Introduction

Guillaume Renard

Trusted developer with 15 years of experience building SaaS products at scale.

Enjoying frontend architecture and leading the way in adopting the highest standards of development processes.

Also frequently supporting ops with live incidents in production.

Experience

March 2023 to Present: Senior frontend developer at Altus Group

Building a micro-frontend application for the new Altus platform with React.js and AWS.

Nov. 2022 to March 2023: Senior frontend developer at PlayPlay

Worked as a frontend engineer on the broadcast of videos with Vue.js at PlayPlay (embeds, GIFs, video player), the video creation platform.

Coached junior developers and contributed to the migration to Vite and to the adoption of unit testing as per frontend community work.

2021 to Oct. 2022: Frontend lead developer at Assima

Worked on the new cloud-based Assima Systems Training Platform with React JS (NextJS, CRA and vanilla apps) to deliver user friendly and scalable tools to training authors around the world.

Implemented a modern stack with React hooks, Context, Reducer and React Query. Tested the apps with Jest and React Testing Library and encouraged good practices for accessibility. Internationalized the UI with react-i18next. Selected state of the art UI libraries such as Material UI and ReactFlow with elkjs. Containerized the apps with multi-staged Docker files running on Node Alpine or NGinx images.

Also implemented back-end micro-services to generate documentation with Aspose and .Net 5 and to take screenshots with Puppeteer and NodeJS.

2019 - 2021: Fullstack developer at Assima

Stabilised and scaled the authentication module (SAML, WS-Federation and Active Directory) of the Assima platform, supported by load tests.

Secured the frontend, supported by pen-tests and code analysis (ISO27001:2013 and ISO27701:2019 certified).

Scaled the I/O stack using MongoDB with GridFS and .Net Core.

Modernised the legacy code base by introducing Dependency Injection to break dependencies and test the legacy code.

2014 - 2019: SCRUM master and senior developer at Assima

Delivered complex web-based authoring tools using .NET, vanilla JS, Aspose, Chromium CefSharp.

Also developed the mobile application for the Assima platform using Cordova, Angular and Ionic.

2009 - 2014: Frontend developer at Assima

Developed the frontend for the Assima platform in ASP.NET (Web Forms).

Created a full-featured control library integrated with the .NET framework (more than 40 controls, including a virtualized TreeGrid, a PropertyList, a TypeAhead and an UndoRedo stack)

2007 - 2009: Junior developer at Assima

Worked on the UI of the Assima Performance Suite and Assima Training Suite desktop applications and on the generation of contents (e-Notes, Word documents, lessons). Used C, C++, Win32, COM, VBA and JavaScript.

Education

2007: Master's degree in Databases and Artificial Intelligence at Université de Bourgogne (France)

Studied all fields of Information Technology, including programming, multimedia, UNIX systems, user experience, project management, databases and artificial intelligence.

Graduated with 1st class honours ("mention Très Bien").

2006: Bachelor of Science in Informatics at University of Northumbria (United Kingdom)

Studied Java, robotics and relational databases.

Graduated with 1st class degree.

Contributions

Creator of granular-hooks, the React hooks you know, with added granularity.

About me

Father of 2, I live in Orleans in the centre of France

I regularly travel to sunny and friendly Philippines

I'm passionate about technology. I fell into web development around 20 years ago when I was in high-school and computers had 56K modems. I also loved programming on my Ti-83 calculator then.

I don't have many hobbies, but I follow Formula 1 and my football team Auxerre. I like going for a run or a bike ride too.

Links

granular-hooks's People

Contributors

gfox1984 avatar

Stargazers

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

Watchers

 avatar  avatar

Forkers

fmanseau

granular-hooks's Issues

What's the significance of `secondaryDeps`?

Hi, I've read the 2 articles written by you, nice articles. But I have some doubts about useGranularEffect:

function useGranularEffect(effect, primaryDeps, secondaryDeps){
  const ref = useRef();

  if (!ref.current || !primaryDeps.every((d, i) => Object.is(d, ref.current[i]))) {
    ref.current = [...primaryDeps, ...secondaryDeps];
  }

  return useEffect(effect, ref.current);
};

The effect will execute only when any item of primaryDeps changes. So what's the significance of secondaryDeps? I think the secondaryDeps could always be an empty array [], and even does not need to exist.

Actually, maybe the 2 code blocks are identical:

useGranularEffect(() => {
  setData(value + other);
}, [value], [other]);

with

useEffect(() => {
  setData(value + other);
}, [value]);

The only difference is that ESLint will throw a warning at the dependencies array of useEffect at the second one, but ESLint will also throw the warning at the implementation of useGranularEffect, the useEffect called by useGranularEffect.

Eslint plugin

Hi, I read both of your blog posts (1, 2) and thanks for the insights, I now understand useEffect better.

I would like to integrate granular hooks into an existing codebase because it uses only partial dependencies in many places and I would like to be explicit in showing that these are not bugs in the codebase but actually intentional.

The only thing that's now keeping me from using your granular hook, is the fact that it does not have an eslint plugin.
Because we use eslint extensively and rely on it a lot.

Are you still planning on implementing this ?

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.