Skip to content

Instantly share code, notes, and snippets.

View samueljoli's full-sized avatar
🔒
lalilulelo

Samuel Joli samueljoli

🔒
lalilulelo
View GitHub Profile
@samueljoli
samueljoli / README.markdown
Created August 3, 2020 13:51
Rob Pike - "Concurrency is not Parallelism"

Rob Pike - "Concurrency is not Parallelism"

Rob Pike - "Concurrency is not Parallelism"

source: https://www.youtube.com/watch?v=cN_DpYBzKso

Notes

  • the world is not object oriented, is actually parallel
  • concurrency is dealing with a lot of things at once, parallel is doing a lot of things at once, one is about structure,
@samueljoli
samueljoli / index.md
Last active May 7, 2020 18:27
Recipes/Useful libs

Node

Recipes

Libs

Name Use Case
@devinivy/clowncar Stream array items out of incoming JSON

Go

@samueljoli
samueljoli / index.md
Last active April 8, 2023 14:40
Toolbox

Developer checklist

Development

Me 👨🏾‍💻

Starting a ticket

  • Can you articulate what problem you are trying to solve and the relevance of it needing to be solved ( how does this roll up to our OKRs and overarching goals for this sprint ? )
  • Can you articulate your proposed solution before coding it?
@samueljoli
samueljoli / array_iteration_thoughts.md
Created December 14, 2018 15:52 — forked from ljharb/array_iteration_thoughts.md
Array iteration methods summarized

While attempting to explain JavaScript's reduce method on arrays, conceptually, I came up with the following - hopefully it's helpful; happy to tweak it if anyone has suggestions.

Intro

JavaScript Arrays have lots of built in methods on their prototype. Some of them mutate - ie, they change the underlying array in-place. Luckily, most of them do not - they instead return an entirely distinct array. Since arrays are conceptually a contiguous list of items, it helps code clarity and maintainability a lot to be able to operate on them in a "functional" way. (I'll also insist on referring to an array as a "list" - although in some languages, List is a native data type, in JS and this post, I'm referring to the concept. Everywhere I use the word "list" you can assume I'm talking about a JS Array) This means, to perform a single operation on the list as a whole ("atomically"), and to return a new list - thus making it much simpler to think about both the old list and the new one, what they contain, and

@samueljoli
samueljoli / gist:28a0c81be2bfeb24be5e13b25ff3922a
Created August 15, 2018 15:39
Simple node.js code style tips to improve code quality

Whether you use 2 spaces or 4 spaces, there are a few simple things that can make your node.js code easier to read. We've been using them in all the hapi modules for over 4 years now to great results. This list is by no means complete but it highlights the most useful elements that will give you immediate value in reducing bugs.

Required modules

JavaScript makes it harder than most languages to know where variables are coming from. Variables assigned required modules are particularly important because they represent a singleton object shared with the entire application. There are also globals and module globals, along with function variables and arguments.

Traditionally, variables starting with an uppercase letter represent a class that must be instantiated using new. This was an important semantic in the early days of JavaScript but at this point, if you don't know Date requires new Date() you are probably very new. We have adopted Upper Camel Case variable names for all module global variables

Trivia Trivia!!

@samueljoli
samueljoli / recursivequery.js
Created October 15, 2017 00:12
Query for recursive property
query {
somequerytype() {
arrayWithRecursiveObjects {
prop1
prop2
...recursiveProperty
}
}
}
const Response = new graphql.GraphQLObjectType({
name: 'Response',
fields: {
prop1: { type: graphql.GraphQLID },
prop2: { type: graphql.GraphQLString },
prop3: { type: graphql.GraphQLInt },
prop4: { type: graphql.GraphQLFloat },
prop5: {
type: new graphql.GraphQLObjectType({
name: 'SubField',
@samueljoli
samueljoli / transmuteSchema.js
Created October 5, 2017 00:34
Joi2GQL example 2
const Film = Joi2GQL.transmuteType(joiSchema, config);
const graphqlSchema = {
query: {
film: Film
},
mutation: {
update: Film,
delete: Film
},