# Sibelius Seraphini: notes > I build payment infrastructure on Pix at Woovi, teach GraphQL and Relay, and mentor developers and founders. Whatever I learn along the way, I write down so you can skip the hard parts. # "Simple" Pages URL: https://sibelius.github.io/zettelkasten/notes/simple-pages Tags: frontend, design - https://github.com/mertJF/tailblocks A call "simple" pages: landing pages, blog posts, simple websites. These "simple" pages have a high level complexity of [CSS](./css) and animations, 2 skills that I'm not so good yet, because it needs practice and I struggle I lot. Most of this webpages will be built using [NoCode](./nocode), as you need more [Design](./design) design skills instead of code skills. How can I improve this? [Digital Garden](./digital-garden) [NoCode](./nocode) --- # 2023 Dev World Trending URL: https://sibelius.github.io/zettelkasten/notes/2023-dev-world-trending Tags: ai, developers, trends Large Language Models Copilot OpenAI ChatGPT GPT3 text to image nocode prismic AGI IDE on the cloud indie hackers micro SaaS remote work crypto ML explosion in the developer productivity using AI tools AI is the lever for developer generate code, image, audio, video, text from text summarize text explain code, image, audio, video to text edit text, image, audio, video the next big thing in 2023 for startups is to focus on free cash flow and sustainable growth the next big thing in 2023 for developers A próxima tendência no mundo de Devs na América Latina em 2023 é the next big thing in 2023 for developers is to leverage artificial intelligence in their workflows. New code, refactoring code and automated tests will be all generated by AI and just reviewed by developers. We are moving to much higher level “languages” like low-code and no-code. This new developer can be 1000x more productive than existing ones. A próxima tendência no mundo de Devs em 2023 para os desenvolvedores é alavancar a inteligência artificial em seus fluxos de trabalho. Novo código, refatoração e testes automatizados serão todos gerados pela IA e apenas revisados pelos desenvolvedores. Estamos mudando para “linguagens” de muito mais alto nível, como low-code e no-code. Esse novo desenvolvedor pode ser 1000 vezes mais produtivo do que os existentes. emanuel The next big thing in 2023 for developers is learn to use artificial intelligence to not be left behind pjonatansr AI applied to day-by-day services and helping people to do common tasks julioxavier fullstack - end to end pedro arantes learning how to use artifical inteligence to complete and create code the role of programmer will revolutionize the way humanity functions, unlike anything we have seen before ivan The next big thing in 2023 for developers is AI eduardo nocode **johannes.hoerteis** chatgpt - much better copilot - much better improve their code language developed by AI, compiled faster dialogue interface caio borghi - rentxr chatpgt merisio integrated ai device with your brain developers won't need to type the prompts anymore what if everybody have access to a good phone and a high internet connection speed would we care so much about performance? Dyme AI tools that helps us in our everyday tasks Felipe Reis The next big thing in 2023 for developers is product management Jean cto Resiliencia Fullstack holive what is good for the group may not benefit the individual --- # 5 blog posts feedback URL: https://sibelius.github.io/zettelkasten/notes/5-blog-posts-feedback Tags: writing, blog 1. Muito cru Quem lê também pode reforçar um bias towards over engineering Unicode é futureproof A partir de uma abstração que eu vejo como over engineering, mas future proof Botar uma foto do JWST, principalmente dos espelhos? Afinal, adaptar o evento para seu uso é o que eu entendo como o principal uso da arquitetura hexagonal Colocar numa abstração good enough - [ ] unsplash reference Practical backward compatibility example Se eu tô dizendo que roda as migrações primeiro, o que isso seria distinto do primeiro approach? Se remover o first ali, fica implícito que o bullet implica ordem temporal Até pq no primeiro bullet isso ficou explícito E também ao terminar com um código backward compatible parece que esse é o endgame , não que o endgame seria remover isso e tornar a usar apenas o modelo novo, após garantir que todo o código está no "futuro" --- Future Proof Muito cru Quem lê também pode reforçar um bias towards over engineering Unicode é futureproof A partir de uma abstração que eu vejo como over engineering, mas future proof Botar uma foto do JWST, principalmente dos espelhos? Afinal, adaptar o evento para seu uso é o que eu entendo como o principal uso da arquitetura hexagonal Colocar numa abstração good enough Acho que e legal falar mais sobre a parte de casos imaginarios. Dar mais contexto, um bloco so pra isso “E legal feature proof mas nao se perca tbm tentando adivinhar o que nem existe” e dar exemplos --- # A Failed Talk URL: https://sibelius.github.io/zettelkasten/notes/a-failed-talk Tags: talks, react #talk #failure #form #formik #react A talk is a good way to explain some concept. When doing a talk you need to know your audience, you can't target beginners and advanced users at once A failed talk can happen for many reason - wrong subject - bad slides/content - wrong audience targeting Substack There are no hard subjects to be cover in a presentation, there are only different ways of presenting them. I did a “bad” talk at Rancho Dev when I’ve talked about Forms and Formik (slides and code here). The problem of this talk was about my assumptions of the audience. I’m used to talking in places that most people know basic React concepts, but Rancho Dev conf was a more broad conferences with many different topics. As I did not provide more context (a basic intro of React, react hooks and so on), it was hard to explain to them how to apply this concepts to solve the forms in React land. I always ask for feedback ( give me here) after my talk, and this one I received a really bad one saying that I thought the audience won’t grasp the concepts. The truth was that I didn’t understand really well these concepts to explain like I’m 5. How would be a better talk for that audience? - More about the problem and motivation (how hard complex forms can be to get right) - basic React intro concepts - more concepts less code ## Link [Community](./community) you need to give talk to create a community [Share](./share) --- # A mock GraphQL service URL: https://sibelius.github.io/zettelkasten/notes/a-mock-graphql-service Tags: graphql, opensource #idea #opensource #graphql The idea is a simple Koa server that receives the schema.graphql in a body applies the mocks to it, and return a given query app.use(getSchemaFromBody()) app.use(graphql()) here is the demo - https://github.com/sibelius/graphql-mock it takes a schema and a mock resolvers definitions, and generate a GraphQL operation result based on this ## Links [Open Source](./open-source) --- # Abstract Node URL: https://sibelius.github.io/zettelkasten/notes/abstract-node Tags: learning, thinking You can model knowledge as a graph of nodes of concepts/ideas When you abstract 2 or more ideas in a more general concept finding the edges among those nodes This will make show up a new node with the concept that can represent both type of knowledge --- # Abstractions URL: https://sibelius.github.io/zettelkasten/notes/abstractions Tags: programming, abstraction #building\_block #abstraction An abstraction is something that helps us An abstraction can help build concrete things twitter thread React is the abstraction to build UI using components D3 is the low level abstraction to build charts/graphs, it can build any chart functional css let you build any style Declarative vs imperative The basic building block of functional programming is a function A function is a lazy reusable chunk of code. ## Links --- # Advice for Developers URL: https://sibelius.github.io/zettelkasten/advice-for-developers Tags: advice, developers ## tips to evolve as a developer developers get stuck, paralized [https://nav.al/finding-time](https://nav.al/finding-time) [https://www.oreilly.com/library/view/apprenticeship-patterns/9780596806842/ch04.html](https://www.oreilly.com/library/view/apprenticeship-patterns/9780596806842/ch04.html) Make It Stick [https://www.amazon.com.br/Make-Stick-Science-Successful-Learning/dp/0674729013](https://www.amazon.com.br/Make-Stick-Science-Successful-Learning/dp/0674729013) [https://www.swyx.io/writing/learn-in-public/](https://www.swyx.io/writing/learn-in-public/) Learn in Public is better when you fail  how to become a better developer watch repo that you wanna contribute, answer all issues, review all pull requests, try to fix bugs and improvements, improve docs [https://www.swyx.io/writing/specialize-in-the-new/](https://www.swyx.io/writing/specialize-in-the-new/) [https://www.ycombinator.com/resources/](https://www.ycombinator.com/resources/) zero to one accept reality, ray dale principles outliers 10k of practice how to get rih where good ideas come from [http://blog.samaltman.com/how-to-be-successful](http://blog.samaltman.com/how-to-be-successful) taleb books black swan antifragile skin in the game ask people advice, they can tell you where you are doing wrong. They can see what you can’t [https://pmarchive.com/](https://pmarchive.com/) keep notes in evernote/notion at least one note per day F is for finishers [https://medium.com/personal-growth/the-f-is-for-finisher-3c6936a00342](https://medium.com/personal-growth/the-f-is-for-finisher-3c6936a00342) don’t be afraid to code don’t be afraid to fail don’t be afraid to introduce a bug code fearless [http://cam.ly/blog/2010/12/code-fearlessly/](http://cam.ly/blog/2010/12/code-fearlessly/) build stuff ## References [https://gist.github.com/sibelius/a347a5a49d3731eab27bdc99b7af478e](https://gist.github.com/sibelius/a347a5a49d3731eab27bdc99b7af478e) --- # Always Share Code URL: https://sibelius.github.io/zettelkasten/always-share-code Tags: help ## Always Share Code When asking for help, always share code. Without context, like code, error message, error stack it is impossible to help you --- # Android URL: https://sibelius.github.io/zettelkasten/notes/android Tags: mobile aab new app format is a mess to work with, because you can't directly installed it you need to use bundletool to properly prepare the apk to install in your device check this - https://play.google.com/apps/publish/internalappsharing/ — Agora você pode dizer como está se sentindo direto no App Ahora puedes saber cómo te sientes en la aplicación Now you can tell how you are feeling right on the App --- # Architecture of Open Source URL: https://sibelius.github.io/zettelkasten/notes/architecture-of-open-source Tags: opensource, architecture, books - http://aosabook.org/en/index.html - https://www.amazon.com/dp/0321127420/ref=cm_sw_r_cp_api_i_dc2kFbK2N3S90 --- # Articles URL: https://sibelius.github.io/zettelkasten/articles Tags: articles, content, text, written --- --- --- # Async Mentorship URL: https://sibelius.github.io/zettelkasten/mentorship/async-mentorship Tags: advice, mentorship, questions, async Most of my mentorship is all about questions and answers. Socratic method. I will try to write it down all questions and answers to accelerate everybody. And also avoid answering the sames questions twice. --- # Asynchronous Mentorship URL: https://sibelius.github.io/zettelkasten/asynchronous-mentorship Tags: advice, mentorship Most mentees belive that they need sync mentorship to be able to explain their problems. However, I've found that doing an async mentorship using text to provide better results. Mentorship is a long term process, you can't "fix" or "improve" someone in a session, it takes time. ![image](/img/mentorship.png) ## Mentorship Cycle The mentee will pass in the 3 steps of the mentorship cycle. The first one is to be in a given situation, or having some problem or doubt. The mentor will analyse and provide some advice and ideas based on his/her experience, thus unblocking the mentee to do more work. After that, the mentee needs to work, read and reflect on ideas and advice, that will make him/her progress in his/her goals. ## Rules - be proactive and active in twitter and discord, to bring new situations and problems to the mentor - ask a lot of questions to guide you to find the answer you are looking for - read everything that was recommended, code everything that is needed, apply advices to test if they work for you ## Start here Start answering all these [questions](./mentorship-questions) --- # Atom URL: https://sibelius.github.io/zettelkasten/notes/atom Tags: thinking, learning #atom #thoughts We can use atom to describe something that is minimal and indivisible We can have an atom of state like redux recoiljs We can have an atom of thought as Roam and Zettelkästen uses We can derive state using multiple atoms We can compose thoughts ideas using many atoms A [Mental Models](./mental-models) is an atom of thought, very well defined one. We can have `atomic` [CSS](./css) , to compose our styles Atoms are the building blocks ([The era of Content Builders](./the-era-of-content-builders) , [Where good ideas come from](./where-good-ideas-come-from)) of everything In design you have colors, space, fonts are the basic atoms/blocks to mix and match content --- # Audience URL: https://sibelius.github.io/zettelkasten/notes/audience Tags: talks, startups An audience is a group of people that is listen to a talk, that will use a product. In the same way a talk can fail when targeting a wrong audience ([A Failed Talk](./a-failed-talk) ). A product/service will fail if it target the wrong audience. An audience is the market of your Product Market Fit, without it you won't go further and won't succeed ([How to be Successful](./how-to-be-successful) ) Learning in public is good to build your audience - https://www.swyx.io/writing/learn-in-public/ Your audience will learn with you You need to give a lot of good stuff for free Payed Commutities --- # backend hiring questions URL: https://sibelius.github.io/zettelkasten/mentorship/backend-hiring-questions Tags: advice, mentorship, questions, async ## backend questions "Good backend hiring question?" - how to scale backend? horizontal scaling, vertical scaling, caching, event driven, async job processing, queues - how to optimize database queries? use indexes, use the explain command, simplify queries, use materialized views, cache - what is idempotent ? a request that can be called multiple times without changing the result, a good example is a payment, if the payment is made twice, the result is the same - how to make a function, request idempotent ? use an idempotency key, use an unique database index - how to make a system fault-tolerant? use retries using async job processing, handle error properly, use error code. - what to do when a webhook that you are waiting for does not arrive? create a pooling fallback - how to document backend archicture? use diagrams, state machine, sequence diagram - when to use a state machine? when you have a complex flow, like a payment, a subscription, a user registration - how to ensure the data system is consistent? create auditing tools to validate this, use state machines - how to test backend ? prefer integration tests like test input and output of API, GraphQL, jobs, database state avoid mocking databases. - how to implement event driven ? use a message broker like kafka, rabbitmq, sqs, sns, redis, bull - how to decouple backend ? create packages/repository per domain instead of feature, avoid circular dependencies, use event-driven - how to automate ci/cd? use github actions, gitlab ci, circle ci, jenkins, travis, docker, docker-compose, kubernetes - why observability is important? to understand the system, to understand the user, to understand the business, to understand the performance - how to implement observability ? apm, prometeus, sentry, grafana, tracing, metrics and logs - how to deploy backend? pure ec2, vps, eks, k8s, aws, gcp, azure, heroku, netlify, vercel, digital ocean - how to do data modelling ? prefer simpler models over complex models, fewer models and fields are better, prefer to avoid too many relationship and joins - when to use docker and docker compose ? to automate deployment and simplify dx for development - how to do database migrations? for sql you need structural and data migrations, for nosql you need to create a new collection and migrate the data - when to use cache ? to cache expensive operations, to cache oauth token with expirations - how to deal with eventual consistency? avoid read followed by write, read from primary, improve write and read concern - how to deal with distributed systems? use idempotent, use retries, use async job processing, use queues, use event-driven, use state machines - how to deal with external APIs? decouple the external API using port adapters, have a fallback for an API - how to deal with concurrency to update a shared resource like a ledger balance? conditional put, locks, database transactions - when to use REST API or GraphQL ? prefer GraphQL for internal products, and REST API for public APIs. - how to deal with security? use oauth, use jwt, use https, use cors, use csrf, use rate limit, use waf, use security - vercel vs serverless vs k8s vs ec2 ? vercel for MVP, ec2 for simple workflows, prefer k8s for complex workflows and to be able to move from cloud providers/on-premise/bare-metal, prefer serverless for event-driven workflows --- # Being wrong URL: https://sibelius.github.io/zettelkasten/notes/being-wrong Tags: thinking, learning #wrong #fail You can be wrong in many situations Make sure to always revalidate your ideas on new information like Bayesian approach P(A \| I): your probability of something should changed based on new information I was wrong about `Flow` , `Typescript` proved themself my better in short and long term. I was wrong about `Flow` because I didn't give a real change for `Typescript` before working on a pull request for `peril/danger` What else am I missing? - [ ] nextjs - [ ] gatsby - [ ] elastic search - [ ] nocode ## Links [Bleeding edge](./bleeding-edge) --- # Bidirectional note taking URL: https://sibelius.github.io/zettelkasten/notes/bidirectional-note-taking Tags: learning, notetaking Create a note for the source (book) Create a note for each idea/concept of the source For instance, a note for Make it Stick A note for spaced learning A note for interview learning A note for memory retrieving and so on --- # Big O URL: https://sibelius.github.io/zettelkasten/notes/big-o Tags: algorithms, performance Big O is how we measure how fast an algorithm is, and how fast it grows as the input N grows O(n) means the algorithm increases at the same rate as their input o(log n) means it increases based on their log (usually the depth of the tree), used on tree algorithms to [Search](./search) data To improve performance we always try to find better algorithm with better times over number of inputs Sometimes the way to solve this is to reduce the `input`, it is to process less or "cache" some results. Like bazel or dynamic programming does --- # Bio URL: https://sibelius.github.io/zettelkasten/bio Tags: bio, myself ## Bio Sibelius is CoFounder of Woovi - Instant payments startup. Sibelius has worked in startups since 2015, provides mentoring for developers to become seniors, and also provides consultancy for Startup early stage --- # Bitcoin URL: https://sibelius.github.io/zettelkasten/notes/bitcoin Tags: crypto, economics - https://blog.keys.casa/the-dos-and-donts-of-bitcoin-key-management/ - https://www.amazon.com.br/Bitcoin-Standard-Decentralized-Alternative-Central-ebook/dp/B07BPM3GZQ Sound money sound/hard money is money that it is a good store of value, it does not suffer with inflation, and it can't be easily made proof of work is about creating a decentralised timestamp server, where you know the order of events it is about time. - https://21lessons.com/ - https://dergigi.com/2021/01/14/bitcoin-is-time/ --- A bitcoin transaction can be made of many inputs and many outputs an input is a uxto (unspendable transactions) so if you have 10btc and you wanna transfer 1btc to someone, you generate 2 outputs, as the other one will be your "pocket" change block explorer is like the index for the blockchain info about a transaction info about a transaction block (a block contains many transactions) a coinbase in the first transaction of a new block that represents the fee of the miner proof of work is just finding the correct nonce that generate the 2 sha256 hash with many 0 at first. bitcoin script let you program bitcoin multisig like 2-3 let 2 of 3 diginal signatures spend the transactions lighthing network make it possible many transactions of chain send a transaction with some value to bitcoin (multi sig), like 1 btc after the offchain transaction is settle up, you commit a new transaction with refund based on other transactions. payment channel. bitcoin is like gold gold is not good to handle payments new generation of crypto, ethereum, smart contract, dai, nano. - https://thegraph.com/ [https://getblock.io/](https://getblock.io/) --- # Black Swan URL: https://sibelius.github.io/zettelkasten/notes/black-swan Tags: risk, books Black swan is an unexpected event that causes massive consequences. One event that usually happens on the tail of the propability. The last black swan as covid19. Covid19 is a new virus that has a high rate of contagious. The dead rate is not too high (7%), but it is a new virus it can collapsible the health virus increasing the dead rate. It changed the way society works, right now we work from home. We stopped physical store opening. - https://www.amazon.com.br/Black-Swan-Improbable-Robustness-Fragility/dp/081297381X --- # Blank Canvas URL: https://sibelius.github.io/zettelkasten/notes/blank-canvas Tags: writing, creativity #design #writing #creativity A blank canvas is starting to do something out of nothing It is very hard to build something without nothing to start with The idea of Zettelkasten is to fill this canvas with your preprocessed notes, so you can just reorganized them to write the final text. You're gonna have all the sources, quotes and material to mix and match to write the final text Don't start from a Blank Canvas --- # Bleeding edge URL: https://sibelius.github.io/zettelkasten/notes/bleeding-edge Tags: career, learning #bleeding edge Bleeding edge is the state of art of something It is the new technology When you focus on bleeding edge (new), you have an advantage as everybody start in a clean slate. You are not competing with Java developers with 10 or more years of experience Everybody using React hooks has only a few months of experience, so you can compete fair with them It also show the value of niche, as most people won't try new tools until they gain traction It can have a great upside if you are right, but the downside is not big as you can transfer the learning concepts to other projects. ## Reference - https://www.swyx.io/writing/specialize-in-the-new --- # Blitzscaling URL: https://sibelius.github.io/zettelkasten/notes/blitzscaling Tags: startup, growth blitzcaling - growing faster than your competitors eXplore - find product market fit eXpand - validated, simplify, fix bottlenecks eXtract - scaling economy modelo de tuckman an elegant puzzle - quatro estágios de um time responsabilidade extrema sucesso no trabalho --- # Book List URL: https://sibelius.github.io/zettelkasten/notes/book-list Tags: books, reading This is a list of all books that I wanna/need to read I'm gonna test reading more seriously this year, less twitter more deep reading and writing - [ ] Invent and Wander: The Collected Writings of Jeff Bezos, With an Introduction by Walter Isaacson - [ ] The Everything Store: Jeff Bezos and the Age of Amazon - [ ] elon musk tesla spacex and the quest for a fantastic future - [ ] Fooled by Randomness, taleb marriage - [ ] Things I wish i knew before i got married management books - [ ] Radical Candor - [ ] Fundamentals - [ ] Self-Management/Managing-up - [ ] Expectations at different levels - [ ] How does your brain works - [ ] First, break all the rules - [ ] The Manager’s Path - [ ] The Most Human Human - [ ] Greatness - [ ] Blue Ocean Strategy: Build something novel. - [ ] The Intelligent Investor: Fundamentals are eternal. - [ ] The Effective Executive: You’re wasting most moments. - [ ] The Snowball: Warren Buffett and the Business of Life More money than god Business Adventures --- # Books URL: https://sibelius.github.io/zettelkasten/books Tags: books Grab any of these books and if you need more books, just dm me on twitter. | Name | Author(s) | | ------------------------------------------------------------------------------------------------------------- | ------------------------------------------ | | Anti fragile | Nassim Nicholas Taleb | | Make It Stick: The Science of Successful Learning | Henry L. Roediger III and Mark A. McDaniel | | O livro da psicologia | Divers | | Zero to one | Peter Thiel and Blake Masters | | Hackers and painters | Paul Graham | | Founders at work | Jessica Livingston | | Lean startup | Eric Ries | | The Black Swan | Nassim Nicholas Taleb | | Skin in the game | Nassim Nicholas Taleb | | Designing Data-Intensive Applications: The Big Ideas Behind Reliable, Scalable, and Maintainable Systems | Martin Kleppmann | | A teia da vida | Fritjof Capra | | O Homem e seus Símbolos | Divers | | Scrum. A Arte de Fazer o Trabalho na Metade do Tempo | Jeff Sutherland and J. J. Sutherland | | On Intelligence: How a New Understanding of the Brain Will Lead to the Creation of Truly Intelligent Machines | Jeff Hawkins | | Apprenticeship Patterns: Guidance for the Aspiring Software Craftsman | Hoover Dave and Adewale Oshineye | | The Principles of Product Development | Donald G Reinertsen | | O projeto fênix – Edição comemorativa: um romance sobre TI, DevOps e sobre ajudar o seu negócio a vencer | Gene Kim, Kevin Behr, and George Spafford | | Persuasive Technology: Using Computers to Change What We Think and Do | B. J. Fogg | | Só os paranoicos sobrevivem | GROVE- ANDREW S | | The Hard Thing about Hard Things: Building a Business When There Are No Easy Answers | Ben Horowitz | | What You Do Is Who You Are: How to Create Your Business Culture | Ben Horowitz | --- # Books as answers URL: https://sibelius.github.io/zettelkasten/notes/books-as-answers Tags: books, learning, mentorship #book #answer #mentorship I believe we can learn a lot in books. We can learn knowledge that author took some years to figure it out in a few hours or days. It is like compressing your learning When someone ask me a question I usually answer with a book to be read ## Links --- # Build Less URL: https://sibelius.github.io/zettelkasten/notes/build-less Tags: ci, monorepo, devops monorepo testing and build playground - https://github.com/sibelius/monorepo-101 - https://github.com/entria/entria-deploy Tooling around Git and compare\_url to decide what to build It does not matter if you have the fastest algorithm if your N is too big. Sometimes you need to reduce N to make sure you sure things does not grow with N. As your project grows, your "N" will grow together. Your dependencies sizes will grow Your codebase will grow Your tests will grow (if you care about long term) Your build process will slow down as you are building more code. Your type checking will get slower. One way to solve this is to use a directly acyclic graph (DAG) to avoid testing, type checking, rebuilding what has not changed since last time. In this article we won't use a DAG, we are going to use a much simpler strategy that can be modify to add a DAG to make it more robust. The first thing that we want to do is to only run tests that are affected by the current files. How do we know which files were changed? We are going to use some `git` commands to make this possible. **CircleCI concepts** CircleCI is a continuous integration system that let you automate common software tasks, for instance: linting, tests, type checking, build, deploy. A new pipeline is trigged when you do some work (push a new commit, for instance). A pipeline can contains many workflows. Each workflow have jobs that represents the cycle of your software process (for instance, install → test → deploy). A job contains N steps of commands to perform something, like run lint, run tests. Compare URL CircleCI had a concept of CIRCLECI\_COMPARE\_URL before v2.1, that you can recreate in v2.1 using pipeline variables, like this: environment: CIRCLE\_COMPARE\_URL: << pipeline.project.git\_url >>/compare/<< pipeline.git.base\_revision >>...<<pipeline.git.revision>> Here is a few examples of COMPARE\_URL: [https://github.com/owner/repo/compare/...a2e2709c4](https://github.com/owner/repo/compare/...a2e2709c4) The url above says that this pipeline contains code from the base branch (master or main) to the [`a2e2709c4`](https://github.com/owner/repo/compare/...a2e2709c4) commit. [https://github.com/owner/repo/compare/37ac69404a5b...69bc6e3fe337](https://github.com/owner/repo/compare/37ac69404a5b...69bc6e3fe337) The above contains code from commit `37ac69404a5b` to `69bc6e3fe337`. Test by yourself here [https://github.com/sibelius/monorepo-101/compare/master...8f8760](https://github.com/sibelius/monorepo-101/compare/master...8f8760) **Problems with CIRLCLE\_COMPARE\_URL using pipeline variables** The first problem we hit when using CIRCLE\_COMPARE\_URL using pipeline variables was that they are only bringing the range from the current commit to the last commit. We would like to always test files related to the whole changes in the pull requests. To fix this, we discard the "base revision" (the first commit in the compare url), and use the base branch instead. this [https://github.com/owner/repo/compare/37ac69404a5b...69bc6e3fe337](https://github.com/owner/repo/compare/37ac69404a5b...69bc6e3fe337) turns into [https://github.com/owner/repo/compare/master...69bc6e3fe337](https://github.com/owner/repo/compare/37ac69404a5b...69bc6e3fe337) Before getting the files using git diff (spoiler), we need to checkout the latest master. This is needed because CircleCI only do a shallow checkout to make it faster, you don't need all git history or branches in every pipeline. ```bash if [[ $(git rev-parse --abbrev-ref HEAD) != "master" ]]; then git branch -f master origin/master; fi ``` **Testing only affected test files** After all this setup we need to get a list of all affected files to make sure we are testing the right amount of tests. FILES\_CHANGED=$(yarn --silent entria-deploy changes $\{CIRCLE\_COMPARE\_URL\} --baseRef $\{BASE\_REF\}) We are using entria-deploy cli to helps us get a list of all files that changed using compare url and a base ref/branch. What we are really just doing is a git diff —name-only, like this git diff [master...8f8760](https://github.com/sibelius/monorepo-101/compare/master...8f8760) —name-only that return a list of all files that changes, like this: packages/packageB/src/index.ts After this, we are going to use jest —findRelatedTests to find which testfiles to test TESTFILES=$(yarn --silent jest --findRelatedTests --listTests $FILES\_CHANGED) The result is for this example is this: `packages/packageB/src/__tests__/packageB.spec.ts` Before testing these files we need to check if there is any testfile to test, this could happen if you are only modifying [README.md](http://readme.md) or other files ```bash if [ ! -z "$TESTFILES" ]; then JEST_JUNIT_OUTPUT="./packages/cores/test-results/jest/results.xml" yarn jest --passWithNoTests --coverage --forceExit --ci --maxWorkers=7 $TESTFILES fi ``` Splitting tests to make them blazing fast We can use `circleci tests split` to split test files to run them in parallel ```bash TESTFILES_SPLITTED=$(echo $TESTFILES | circleci tests split | xargs -n 1 echo) ``` **Build and Deploy only affected packages** After bringing down the testing time in pull requests to a mean of 3x, can we only build and deploy affected packages? sure we can. Our monorepo contains many GraphQL servers, and some REST (just one I swear), we also have many frontends and many apps (some white labels). We used to build and deploy all of them to staging on master after every commit. To solve this, we used the CIRCLE\_COMPARE\_URL (that provides the right range in master), to check if we changed any file that would affected the package to be deployed. ```bash SHOULD_BUILD=$(yarn --silent entria-deploy hasChanged $CIRCLE_COMPARE_URL packages/shared packages/api echo $SHOULD_BUILD if [ "$SHOULD_BUILD" == false ]; then circleci-agent step halt fi ``` entria-deploy hasChanged is just ```bash git diff master...8f8760 --name-only packages/shared packages/api ``` circleci-agent step halt make the job stop, so we have one of this before each step of build/deploy to make sure we are not building and deploying something that haven't changed. you also want to use less parallel testing if you need to test much less tests 5000 → 6 dockers --- # Building from Scratch? URL: https://sibelius.github.io/zettelkasten/notes/building-from-scratch Tags: writing, frontend why am I building my blog post from scratch? The idea is to learn all about the details to create great ux and dx I'd like to feel all the pain of writing everything in pure html and css Then start writing my own what you see is what you get minimal editor, the benchmark is substack and medium. They are good, but I think I can get a better version if I focus on my workflow. --- # Bundle analyze URL: https://sibelius.github.io/zettelkasten/notes/bundle-analyze Tags: frontend, performance - https://t.co/mjGYd9Iont?amp=1 Most modern apps can’t be built without dependencies, so we need to analyze the final bundle of our application to make sure we are not shipping unnecessary code We can also use this to reduce node\_modules dependencies and remove big deps [Node Modules](./node-modules) [Single Bin JavaScript](./single-bin-javascript) --- # Buying Time URL: https://sibelius.github.io/zettelkasten/buying-time Tags: time When I come back to São Paulo to make my internship at PontoTel Startup. I could live in my parents house at Guarulhs for "free" It would only take me 2 hours to go to work and 2 hours to go back home. I would lose 4 hours per day commuting, 20 hours per week and 80 hours per month. That's 960 hours per year. I knew that my time was my precious resource, so I decided to buy it. If you do basic math, I work 8 hours per day, 5 days per week, 4 weeks per month, that's 160 hours per month. I was earning R$1500.00, so my hour was R$9.35. I was losing 80 hours * R$9.35 = R$748 per month. I found a room to rent in São Paulo for R$400.00 and used these extra 4 hours to study and work a lot. All these 4 hours paid off a lot. I was able to work more, study more and learn more. I was also going to happy hours and networking events, which helped me to meet a lot of people. Additionally, I was able to create a tech community and find my co-founder for my own Startup. --- # Career Risk URL: https://sibelius.github.io/zettelkasten/notes/career-risk Tags: career, risk Most people does not optimize to take career risks. I have a lot of smart friends that are stuck on bad jobs (learning almost nothing, and without change of growth) that can't quit the job and start over --- # Career Transition URL: https://sibelius.github.io/zettelkasten/mentorship/career-transition Tags: advice, mentorship, questions, async ## Transição de Carreira Trabalho desde os 18 anos na mesma área(controle de acesso, CFTV e automação predial). Na empresa atual estou 100% home office e migrando para a área de cibersegurança(tirando certificações Fortinet) a pedido da empresa para poder dar suporte a área comercial. Não existe nenhum outro profissional de cibersegurança na empresa, não tenho a quem perguntar nada, estou sozinho desbravando esse tema. Me sinto inseguro pois a empresa é pequena e totalmente dependente de 1 única pessoa, o dono, se ele passar mal no dia do pagamento ninguém recebe. Sou MEI. > A solução aqui é documentar tudo que o seu chefe sabe em texto, imagem e até vídeo se necessário . > > Extrair o conhecimento dele e trazer para todos da empresa. > > Assim a empresa para de depender de só dele. > > Bom pra ele, bom pra você e bom para a empresa. > > Pode usar docusaurus para isso. > > Fazer artigos públicos com esse conteúdo também tem valor, só remover coisas muitos específicas. > > Isso melhora o seu SEO pessoal e te ajuda a conseguir a próxima vaga. > > Me manda que eu reviso os artigos. > > Você também pode pedir ajuda sobre cyber segurança no Twitter, discord, comunidades e ChatGPT. Quero migrar pra dev mas tenho dúvidas sobre qual roadmap estudar e como fazer essa migração sem reduzir meu nível salarial atual. > Aprender a fazer um crud fullstack e deploiar ele em diversos lugares. > > Bem difícil não reduzir o nível salarial. > > Você pode manter os dois empresas, ou ir pegando freelas até chegar num valor mínimo necessário. > > Vai ter que trabalhar dobrado até conseguir. > > Foca em JavaScript. Como meu horário comercial já está ocupado com o emprego atual, o que posso fazer a noite/final de semana pra me desenvolver e conseguir trabalhar como DEV? > Freelas. > > Trabalhar para a Austrália . > > Se não tiver trabalho focar em open source, e praticar coisas que as empresas precisam. > > Quem sabe fazer as coisas, fazer backend, fazer frontend. Já fiz alguns bootcamps, cursos de Alura, cursos no Youtube, tanto de front quanto de backend, mas me falta direção, preciso realmente de 1 roadmap. > https://sibelius.github.io/zettelkasten/category/learning-path > > Não falta direção > > Falta mudar de passivo para ativo > > De ler, assistir para fazer > > O que você já fez? > > Focar em fazer projetos frontend, backend, fullstack, DevOps, leetcode, sadserver, exercícios, side projects > > Me sinto inseguro, não tenho confiança? > > Nobody knows what they are doing > > Fake until you make it > > Let the whole decide if you are good enough > > Do not put barriers onto yourself --- # Carl Gustav Jung URL: https://sibelius.github.io/zettelkasten/notes/carl-gustav-jung Tags: psychology, books Sincronity meaninful coincidence 2 events that happens without causuality that seems related - https://www.amazon.com.br/Man-Symbols-Carl-Gustav-Jung/dp/0440351839 The Man and his Symbols is a book about dreams and archetypes Universal symbols derived from the collective unconscious Hype is that the collective unconscious want --- # certificates are worth URL: https://sibelius.github.io/zettelkasten/mentorship/certificates-are-worth Tags: advice, mentorship, questions, async ## certificates are worth "Are there specific certifications or courses you would recommend to complement hands-on learning and personal projects?" I prefer to learn from primary sources, and they are most books over courses on youtube, udemy. Textbooks are great to learn from primary source. You can learn from a variaty of sources like text, audio, video, books, courses, certificates. You should focus more on learning and knowledge. Prefer active learning methods where you need to do exercises, build something to validate that you are really learning. The real value of the "certificate" is the knowledge that it will give you. You only learn when doing, so do not focus a lot on getting the certificate badge. --- # Change URL: https://sibelius.github.io/zettelkasten/notes/change Tags: startups, behavior #change #behavior Most people only change when a change happen to them Big companies (winners) only moves when something changes Startups should change/adapt before the change come ## Links --- # Chrome history as my memory URL: https://sibelius.github.io/zettelkasten/notes/chrome-history-as-my-memory Tags: productivity, memory #chrome #hack #productivity #memory I use chrome web browser history as my archive of links/websites that I visited. Every time someone ask a question I can easily find a good link to answer that ## Links [Second Brain](./second-brain) --- # Clojure URL: https://sibelius.github.io/zettelkasten/notes/clojure Tags: clojure, programming console.log (print <variable) (require '\[taoensso.faraday :as far\]) (require '\[clojure.tools.namespace.repl :refer \[refresh\]\]) docker run -p 8888:8000 amazon/dynamodb-local -jar DynamoDBLocal.jar -inMemory -sharedDb ```txt (ns your.project.ns (:require [io.pedestal.log :as log]))(log/info "This is a test" {:key-1 "my-value}) ``` (clojure.pprint/pprint items) use let to do multiple lines (\[let ctx ()\] (println "awesome") ctx) --- # Closed loop payment systems URL: https://sibelius.github.io/zettelkasten/notes/closed-loop-payment-systems Tags: fintech, payments - https://www.mtb.xyz/notes/request-for-fintech-startups-summer-2022 Woovi Closed loop payments simplifying the point-of-sale 1 payment method - https://www.mtb.xyz/notes/the-power-of-point-of-sale-products --- # college or school of life URL: https://sibelius.github.io/zettelkasten/mentorship/college-or-school-of-life Tags: advice, mentorship, questions, async ## college or school of life Do a College in these situations: You don't have the discipline to learn by yourself You are not used to self-taught You are not getting a job You and/or your family have enough money to sustain you for 4/5 years without earning a lot Prefer to do Public College in Brazil like USP, Unicamp, they are the best. You want to validate if you want to work in business or in research You want to work in FAANG, Big Tech, or move abroad where they value and require a degree. To get networking and friends and college experience. This network can help you go higher in your carrer later on. Do not do College in these situations, or for these reasons: You just want a degree, the diploma. You need money right it way You are a self-taught You already got a job as a developer Prefer a technical course or a bootcamp if you wanna go to market fast. Everything that you can learn on College you can learn outside college. Go check the syllabus of the course and read the textbooks. Do the exercises to really learn --- # common challenges for developers in the beginning URL: https://sibelius.github.io/zettelkasten/mentorship/common-challenges-for-developers-in-the-beginning Tags: advice, mentorship, questions, async ## common challenges for developers in the beginning "What are the most common challenges faced by developers early in their career and how can I prepare myself to face them?" One common challenge is to decide what kind of developer you want to be: backend, frontend, fullstack, mobile, devops, other. My advice is to be more generalist at the beginning of your carrer, test everything until you decide what you like more to do. Another challenge is to be able to learn a lot of new things that come up every day. My advice for this is to focus more on concepts over implementations. Concepts are much more stable than implementation. HTML, CSS and JavaScript is much more stable than React. Learn to be invariant to implementations: learn React, Angular, Vue, and make it easy to learn a new framework as they show up. Learn databases, and be able to learn a new database faster. Always focus on how can you learn a new thing faster. Another challenge for juniors is to proof they are worth to hire. My advice is to do everything in public. Write articles, Open source your code. Deploy to production. You need proof of work. Get all public code challenges of companies that you want to work. Study the companies and how that you can solve their problems. You can also work for free to get experience You need experience. Use freelances or any work that show up to get experience Contribute to open source to get experience You need to master your tech tack, your IDE, terminal, automated testes, how to develop software properly with feature flags. ## References --- # common mistakes of developers URL: https://sibelius.github.io/zettelkasten/mentorship/common-mistakes-of-developers Tags: advice, mentorship, questions, async ## common mistakes of developers "What are common mistakes new developers make and how can I try to avoid them?" Not focusing on programming fundamentals Not doing a lot of logic exercises, LeetCode Not learning algorithms and data structuring Not learning programming paradigm - Object Oriented, Functional, Logic Not learnig more than one programming language Not learning more than one database Not using and learning to use terminal Not learn how to optimize their workflow, IDE Not coding against automated tests Not doing code review of everybody in their team Not leading a project/product Not leading a team Only coding Not writing RFC and POC before coding Not writing articles Not using Learning in Public Not learn how to make module code and decoupled code Not knowing system design, distributed system, and how to scale software Not instrumenting coding Not to be effective while debugging Not thinking in code as input, transformations and output. Not focusing on networking Not focusing on community Not focusing on social skills Being bad at communication and argumentation. Not making public talks. Only doing what they already know. In fact, you should avoid doing everything that you already know how to do Not getting more responsability ## References --- # Community URL: https://sibelius.github.io/zettelkasten/notes/community Tags: community, react Communities are a group of people that keep together for some reasons I've helped build the React Brasil community I've started creating a new meetup about react native sp I've didn't know much about React when creating the community, but React Native looked like the right tool to build products I've started this community to find other folks that was learning react native and then I've found Rafael This meetup turned into react sp meetup, that moved to gitter and then slack now we have more than 9k users ## Links --- # community-events URL: https://sibelius.github.io/zettelkasten/mentorship/community-events Tags: advice, mentorship, questions, async ## community-events "Are there any tech communities, events, or networks you would recommend for someone in my situation?" Tech community and events are awesome to network, learn, make friends You should join, and participate in an active matter on communities, events, meetups. Check in your city and online. Twitter is great for this Even if we have some bad actors, the upside payoffs You can get a lot of great opportunities over these. --- # Completion URL: https://sibelius.github.io/zettelkasten/notes/completion Tags: productivity, tools #code #completion #assistent As developers we are used to code completion in our IDE, where the IDE suggest how to complete what we are typing. We also have bash completion to complete our commands in terminal Google search has completion when we type our query Gmail has phrase suggestion based on what we type iPhone suggest auto fill of input fields, and also password. I wanna completion for everything in my life I'd like word completion in notion and in any text input. ## Links [Digital Assistant](./digital-assistant) --- # Complexity URL: https://sibelius.github.io/zettelkasten/notes/complexity Tags: computer-science shannon entropy information theory ascii table 2\*\*7 = 128 0000000 hoje é quinta feira a - 65 a = 1 b = 0010 tabela de compression: --- 0 → 0,1 00 → 00, 01, 10, 11 000 → 8 combinacoes [https://en.wikipedia.org/wiki/Huffman\_coding](https://en.wikipedia.org/wiki/Huffman_coding) --- # Concepts over Implementation URL: https://sibelius.github.io/zettelkasten/concepts-over-implementation Tags: concepts, implementation ## Prefer Concepts over Implementation - babel -> compilers - webpack -> bundlers - javascript -> programming logic - sql -> databases - redis -> cache - serverless, k8s, aws -> containers, linux, vm, DNS, IP - express -> HTTP/TCP/UDP - react -> html, css, js --- # Constraint are good URL: https://sibelius.github.io/zettelkasten/notes/constraint-are-good Tags: architecture, design Most people think about constraint in a bad way I think constraint is good for many reasons Constraints gives you a limited set of options to perform or use. GraphQL is better than REST because it has more constraints, you can't do everything you want in GraphQL. You can't ask any data, and you can't return any data. You need to think first in the structure of the data that you want to expose to end users. Declarative provides a limit set of operations that you can perform. When you move to imperative you can do anything, but I argue that you should avoid this to reduce complexity. K8s declarative yaml are better than CDK before you can't do everything you want in your infra. So it is easier to maintain in the long run. Avoid trying to fix all edge cases in the low level building blocks. Constraints limits complexity as you need to work with a limited set of options. Constraints limit the number of [Abstractions](./abstractions) that you can use. [Design System](./design-system) are constraints for your product UI, it does not let you do everything, as you want to keep consistency Constraints are about consistency. Habits are constraints to your daily life to make your more productive Constraints are about less choices Letting tools make decisions for you ([Defer Understand](./defer-understand) ) - https://www.jackfranklin.co.uk/blog/letting-tools-make-choices/ Building Block gives you a limited set of basic blocks to work on, if you need something that is not available in any block you have 2 options: 1. create a new block increasing complexity 2. try to rethink your current needs --- # Consulting/Professors URL: https://sibelius.github.io/zettelkasten/notes/consulting-professors Tags: career, learning If you never own the whole process of doing something, like having [Skin in the Game](./skin-in-the-game), you never will "taste" reality ([Reality has a lot of details](./reality-has-a-lot-of-details) ) I think this happens with who only works as a professor, you get so far from reality that you forget how it looks like. --- # Core API URL: https://sibelius.github.io/zettelkasten/notes/core-api Tags: opensource, architecture Building Block Core API of any package should be very tiny A tiny API is easier to reason about it A tiny API is easier to maintain A tiny API is easier to learn Add extensions points to your API to make it extensions and cover all user needs a tiny API is easier to make new releases a tiny API needs less tests What should be the core API of react-native-camera? take a picture render picture preview record a video What about filters in the photo? another package What about MLKit like face-detection and text detection? 2 new packages --- # Creating, Improving, Removing URL: https://sibelius.github.io/zettelkasten/notes/creating-improving-removing Tags: engineering, startups Most organizations only value creating new things (features) You also create value when you improve the efficienty of current systems And also when you remove complexity and bad systems. --- # Creation Process URL: https://sibelius.github.io/zettelkasten/notes/creation-process Tags: creativity, writing Any creation process is easier if you not start from a "blank canvas" When doing Writing it is better to start from writing pieces instead of pulling ideas out of your mind. If you try to start writing directly from your mind, you need first to transform your mind ideas into text, and them combine them. Mind has a process as the ideas are not so structure, and also subjectivy When starting coding, it is easier to start off from piece of code or boilerplate. It is easier to combine existing code with code that you're gonna build on the fly. Another benefit of using existing code, it the code worked before it has more changes to keep working now. When doing design start with some basic elements, or existing design. Modify to your requirements. It is much easier to combine pre-existent UI elements instead of drawing everything using a pencil. What about creating a new music? or a remix? isn't it to start with some sounds and compose them? What about video? you can have some set of images to compose in the video, some set of predefined animations, some set of short videos. start from building blocks - [Where good ideas come from](./where-good-ideas-come-from) --- # Creative Thinking URL: https://sibelius.github.io/zettelkasten/notes/creative-thinking Tags: creativity, productivity - https://adolos.substack.com/p/feeling-unproductive-maybe-you-should Creative Thinking is when you create new fresh ideas Over Thinking is to create ideas based on other ideas One way to avoid blocks in creative thinking is to always do a bit of creative thinking everyday, make creative thinking a habit. To avoid blocks try to do other types of creative thinking, instead of writing, try drawing. Instead of drawing, trying code. Instead of backend, try frontend. --- # Criar cultura do zero URL: https://sibelius.github.io/zettelkasten/notes/criar-cultura-do-zero Tags: culture, startup emanuel Como alinhar a cultura da empresa com o cliente e com o time? Como funciona o Learning in public dentro da Woovi? seria cultural? Como funciona a cultura de feedback dentro da Woovi? vitor cultura de não dar block por merge e não precisar esperar PR Existe um limite dessa cultura? (Ex tamanho de time etc) edumaciel 1. Quais são os fatores analisados para que seja criada uma cultura 2. Como implementar uma nova cultura em um time de desenvolvedores 3. Quais cuidados deve-se tomar ao escolher uma cultura, e começar a aplica-la 4. Como mensurar se a cultura implementada tem surtido efeitos positivos ou negativos 5. Uma cultura deve ser criada a partir de um senso comum das empresas, ou observando os processos internos? - https://www.raycast.com/blog/no-code-reviews-by-default Cultura precisa necessariamente ser presencial/hibrido ? Se nao, quais formas de cultivar cultura de forma remota 100% ? --- # CSS URL: https://sibelius.github.io/zettelkasten/notes/css Tags: css, frontend, design #css #style Avoid having too much CSS/styles in the product code Your [Design System](./design-system) should use functional css to make it possible to extend it Your design system should have constraints to avoid bad design The design system should be able to change theme colors, as customers usually customize the product to their brand and workflow functional css is a much better abstraction then other css approaches css in js is better because of colocation styled-components is a component + style address the naming problem convention naming naming pattern styled-system and tailwind follow naming convention to build functional css and compose styling. saas, css modules, less, BEM does not address this problems The product code should just be the use of building blocks from the design system There is no shortcut for CSS, CSS has a lot of details, you need to keep adding keys and learn how they interact with each other The build blocks for layout are flexbox and css grid, you should learn both. Learn CSS Flexbox and CSS grid can solve most of the layout problems - https://flexboxfroggy.com/ - https://cssgridgarden.com/ Prebuilt blocks - https://github.com/mertJF/tailblocks ## Links ## References - https://adamwathan.me/css-utility-classes-and-separation-of-concerns/ - https://www.amazon.com/CSS-Secrets-Solutions-Everyday-Problems/dp/1449372635 [CSS Practice](./css-practice) - https://blobs.app/?ref=producthunt --- # CSS Practice URL: https://sibelius.github.io/zettelkasten/notes/css-practice Tags: css, frontend, design I've decided to practice converting some landing page and design to code This master will help me be a better css coder - [x] Smart Home System - https://dribbble.com/shots/11099752-Smart-Home-System --- VPN landing page - https://dribbble.com/shots/11401736-FREEBIE-Landingpage-LaslesVPN - https://gumroad.com/l/ehya-landing-page Final Version - https://ehya.designspace.io/apps/desktop.html - https://convertkit.com/issues/landing-page-guide # Luan Links # Lais Links "copy", rebuild by youself this websites - https://www.awwwards.com/awwwards/collections - https://themeforest.net/category/site-templates/creative dribble videos resources: - https://www.videezy.com/about images - http://pexels.com/ - http://picjumbo.com/ search related images on internet - https://twitter.com/i/events/994601867987619840 - https://www.freecodecamp.org/news/from-zero-to-front-end-hero-part-1-7d4f7f0bff02/ - [ ] Blog Mobile Css Practice Responsive testing and development - https://github.com/manojVivek/responsively-app Remove things from image - https://theinpaint.com/ [Responsive](./responsive) - https://every-layout.dev/ We can divide css in many parts - Layout: style used to control how components/elements lay out in the screen - Components: group of reusable elements together to represent something - https://www.frontendmentor.io/ - https://seek-oss.github.io/capsize/ --- # CSS Thread URL: https://sibelius.github.io/zettelkasten/notes/css-thread Tags: css, frontend [https://twitter.com/i/events/994601867987619840](https://twitter.com/i/events/994601867987619840) [https://twitter.com/swyx/status/982786352197578752](https://twitter.com/swyx/status/982786352197578752) [https://www.freecodecamp.org/news/from-zero-to-front-end-hero-part-1-7d4f7f0bff02/](https://www.freecodecamp.org/news/from-zero-to-front-end-hero-part-1-7d4f7f0bff02/) [https://every-layout.dev/](https://every-layout.dev/) [https://flukeout.github.io/](https://flukeout.github.io/) [https://flexboxfroggy.com/](https://flexboxfroggy.com/) [https://cssgridgarden.com/](https://cssgridgarden.com/) [https://www.frontendmentor.io/](https://www.frontendmentor.io/) [https://github.com/sibelius/ui-boilerplate](https://github.com/sibelius/ui-boilerplate) [https://github.com/manojVivek/responsively-app](https://github.com/manojVivek/responsively-app) [https://1linelayouts.glitch.me/](https://1linelayouts.glitch.me/) [https://jgthms.com/web-design-in-4-minutes](https://jgthms.com/web-design-in-4-minutes) [https://csed.substack.com/p/the-best-online-interactive-learning](https://csed.substack.com/p/the-best-online-interactive-learning) [http://worrydream.com/LearnableProgramming/](http://worrydream.com/LearnableProgramming/) [https://gist.github.com/mdang/50e5fa253597f91139ac](https://gist.github.com/mdang/50e5fa253597f91139ac) [https://bradfrost.github.io/this-is-responsive/patterns.html](https://bradfrost.github.io/this-is-responsive/patterns.html) --- # Culture URL: https://sibelius.github.io/zettelkasten/culture Tags: culture, book Culture is what people do when you are not looking The culture is build based on what you do, not what you say. A good culture is build on principles, not rules. Rules are too strict, principles help people to make the right decisions. ## Reference [What You Do Is Who You Are](https://www.amazon.com.br/What-You-Do-Who-Are-ebook/dp/B07NVN4QCM/ref=sr_1_1?adgrpid=84260644714&gclid=Cj0KCQiA4OybBhCzARIsAIcfn9noqrCJZUFYA4dCgVWxa9A-lJKqy_jnWOvJ5wpuf1u0HQvIzSJCks0aAgagEALw_wcB&hvadid=425983292794&hvdev=c&hvlocphy=9102216&hvnetw=g&hvqmt=e&hvrand=14407501552658489199&hvtargid=kwd-748762558021&hydadcr=5657_11235227&keywords=what+you+do+is+who+you+are&qid=1669079533&qu=eyJxc2MiOiIxLjIwIiwicXNhIjoiMC45NyIsInFzcCI6IjAuODEifQ%3D%3D&sr=8-1&ufe=app_do%3Aamzn1.fos.db68964d-7c0e-4bb2-a95c-e5cb9e32eb12) --- # dApps eth defi URL: https://sibelius.github.io/zettelkasten/notes/dapps-eth-defi Tags: crypto, ethereum investiments charity [https://app.wault.finance/#locked-staking](https://app.wault.finance/#locked-staking) - loking staking - put some coins there [https://wault.finance/launchpad/](https://wault.finance/launchpad/) ide for smart contract [https://remix.ethereum.org/](https://remix.ethereum.org/) [https://web3js.readthedocs.io/en/v1.3.4/](https://web3js.readthedocs.io/en/v1.3.4/) [https://pancakeswap.info/](https://pancakeswap.info/) launchpad - ico - initial coin offer farming → mining memepad - [https://memepad.co/](https://memepad.co/) [https://ethereum.org/en/dao/](https://ethereum.org/en/dao/) decentralized autonomous organizations nft - non fungible tokens [https://ethereum.org/en/nft/](https://ethereum.org/en/nft/) unique asset on ethereum smart contracts [https://ethereum.org/en/defi/](https://ethereum.org/en/defi/) decentralize finance Products that let you borrow, save, invest, trade, and more. [https://github.com/dabit3/full-stack-ethereum](https://github.com/dabit3/full-stack-ethereum) [https://dev.to/dabit3/the-complete-guide-to-full-stack-ethereum-development-3j13](https://dev.to/dabit3/the-complete-guide-to-full-stack-ethereum-development-3j13) --- --- # data visualization URL: https://sibelius.github.io/zettelkasten/notes/data-visualization Tags: data-visualization, design - https://www.themarginalian.org/tag/data-visualization/ - https://www.interaction-design.org/literature/book/the-encyclopedia-of-human-computer-interaction-2nd-ed/data-visualization-for-human-perception - https://flowingdata.com/ --- # Decisions URL: https://sibelius.github.io/zettelkasten/notes/decisions Tags: productivity, decision-making We need to make many decisions in a daily basis Decisions takes our energy and time Try to reduce your decisions to have more energy and time to focus on what matters [How to Take Smart Notes](./how-to-take-smart-notes) - https://www.brex.com/journal/increasing-the-quality-of-our-decisions --- # Deep Dive URL: https://sibelius.github.io/zettelkasten/notes/deep-dive Tags: learning You can only deep dive if you know how to swim You can learn advanced stuff if you haven’t mastered the basics [Defer Understand](./defer-understand) If you try to deep dive before learning to swimming you drown and feel bad about the learning experience. When you are at the edge: [Bleeding edge](./bleeding-edge) You need to deep dive as there is not much in the surface. You need both holistic and deep dive details views of the problems to provide the best solutions to them. A holistic only will miss important details that you can only see when you zoom in If you only focus on small details you will be stuck in a local solution --- # Defer Understand URL: https://sibelius.github.io/zettelkasten/notes/defer-understand Tags: learning Defer is when you let something to do in the future When learning something you don’t need to understand everything related to it You can defer some parts to the future When learning React, focus on React using create-react-app, an opinionated tool, first. Defer Babel, webpack. - https://www.jackfranklin.co.uk/blog/letting-tools-make-choices/ It does not mean that you don’t need to learn these stuff. It means you can go back to them when you get used to that you are learning. Understanding is overrated, I don’t understand every single detail, I prefer to learn high level concepts first and then deep dive when needed A good [Zine](./zine) for this is this one --- # Derivative URL: https://sibelius.github.io/zettelkasten/notes/derivative Tags: thinking, math If you studied calculus you know the concept of a derivative of a function. I'm not a mathematician, my simple definition is that derivate of a function is the rate of change of a given point. If you take the second derivate equal zero you can find the minimum and/or maximum of a function. This is useful in machine learning where you want to optimize your loss function. Gradient descent algorithm is basically calculate the gradient, derivates of all dimensions of your function, and move a bit in that direction that will let you find the zero of the function being optimized. --- One thing that I like to do is to apply concepts of one area into another. We can use derivative term as second order effects of a given fact. What is the derivative of covid19? Derivative in this phrase is all about what these changes will affect the world in the long run. Let's derive some hypothesis: Covid19 changed our society in many ways. It changed how we worked, most of the companies moved to remote work to avoid contamination. Some companies decided to be remote work only. Some companies decided to be remote forever. What will happen in the long run? remote work will be more common, or we are going back to the office? It affected a lot small business that only had a physical location to sell their goods. Some of them broke, some of them moved to sell their good using e-commerce with delivery for short location and shipping for big ones. Will all stores have a digital experience even when everything is back to "normal"? it changed how students have to learn. As most schools moved to an online experience, most people feel that the "watching" is not enough to learn and master the subject, they were watching before inside a classroom. --- # Design URL: https://sibelius.github.io/zettelkasten/notes/design Tags: design #design Design is part of your everyday live, design is everywhere You can design Design needs a lot of practice, if you have a good taste you going to do great designs in the long run, but the first ones won't be good Design is hard if you start with in a [Blank Canvas](./blank-canvas) To make things easier I need to start with [Templates](./templates) To learn more about Design I will learn and practice using - https://refactoringui.com/ Design+Code is also a good content - https://designcode.io/ Design is everywhere - [ ] reread Design of Everyday Things - https://www.amazon.com.br/Design-Everyday-Things-Don-Norman/dp/0465050654 You need Illustrations to make your Design good - https://undraw.co/illustrations unDraw provide open source illustrations so you can mix and match - https://www.humaaans.com/ Humans has a similar idea providing building blocks to remix illustrations ## Links [CSS](./css) - https://blush.design/ - https://icons8.com/ouch - https://nodesign.dev/ - https://piggment.co/explore --- # Design for Learning URL: https://sibelius.github.io/zettelkasten/notes/design-for-learning Tags: learning, design - http://worrydream.com/LearnableProgramming/ - [ ] MindStorms - https://www.amazon.com.br/Mindstorms-Children-Computers-Powerful-Ideas/dp/0465046746 meaning of functions (label them) meaning of parameters can you follow the flow? (what happens from one step to another) can you see the state? (how the state changes over time) can you create by reacting? can you create by abstracting? (creating a variable, creating a function) visualize data, not code we need better autocompletion --- # Design Practice URL: https://sibelius.github.io/zettelkasten/notes/design-practice Tags: design, learning - https://uidesigndaily.com/ - https://csed.substack.com/p/the-best-online-interactive-learning interactive learning are almost games focused in teaching you something [CSS Practice](./css-practice) - https://jgthms.com/web-design-in-4-minutes - https://1linelayouts.glitch.me/ --- # Design System URL: https://sibelius.github.io/zettelkasten/notes/design-system Tags: design, frontend Design system contain the building blocks of UI elements/atoms to build your product UI It should allow extensions using functional [CSS](./css) Design system should define list of fonts Design system should define list of possible spacing (so everything is spaced with the same style) Design system is about constraint, you limit what you can do to avoid creating weird UI, and keep consistency --- # developer measure/output URL: https://sibelius.github.io/zettelkasten/notes/developer-measure-output Tags: productivity, engineering - https://twitter.com/sseraphini/status/1414701709687939072 - quantity: is the developer producing more? - quality: is the developer shipping with fewer bugs? - speed: is the developer shipping faster? --- # Dichotomy URL: https://sibelius.github.io/zettelkasten/notes/dichotomy Tags: thinking, programming Dichotomy is to divide the whole in 2 parts We have many dichotomies in life and in code server/client → we want to do some work on the server and some work in the client sync/async → we want to do some sync work and some async work build/runtime → we want to do some work at build time and some work at runtime static/dynamic → we want to some static and dynamic code analysis preload-prerender/defer load-defer render → we want to preload code and data before we need it, but we want to defer code and data until we need it. wip/done → we need wip to move forward, but we need to finish the wip to move forward --- # Digital Assistant URL: https://sibelius.github.io/zettelkasten/notes/digital-assistant Tags: productivity, ideas #digital #assistant #siri #alexa I'd like some help here! I'd like to be assistant when taking any decision I'd like to have word completion not only in mobile but also on desktop in any app, not only in chrome, but also in notion and everywhere I'd like to fix typos and other writing styling right now. I'd like fast code completion for life We can build a digital assistant as a chrome extension to hook in any text input and improve our writing approach (check grammarly approach) What about hook in any app to provide assistant as a whole system? We can think of a digital assistant as a [Thinking Tools](./thinking-tools) , as it would augment our capabilities of action. MVP The MVP is to build a chrome extension that hook in the text input. It should provide word completion. - https://github.com/u3u/prettier-chrome ## Links [NoCode](./nocode) [Thinking Tools](./thinking-tools) --- # Digital Garden URL: https://sibelius.github.io/zettelkasten/notes/digital-garden Tags: writing, publishing #digital #output A digital garden is a place where I can show my content but I can also change the "engine" of it. If you keep pushing all content websites you're gonna hit some "limit" It won't be able to handle all your workflow One way to make it possible to handle all your crazy ideas is to have access to the codebase, and own your publication You can start simple with simple text blocks, and keep adding more blocks are your requirements changes over time. It is a process of curate your output process ## Links [CSS](./css) [Design](./design) [The era of Content Builders](./the-era-of-content-builders) --- # Disruption URL: https://sibelius.github.io/zettelkasten/notes/disruption Tags: startups, strategy [https://subconscious.substack.com/p/why-did-the-web-take-over-desktop](https://subconscious.substack.com/p/why-did-the-web-take-over-desktop) It won by not competing Disrupt innovation does not compete with incumbents They offer something different Find an asymmetric advantage You have to build the whole vertical Incumbents won’t adapt --- # Do not answer Twice URL: https://sibelius.github.io/zettelkasten/do-not-answer-twice Tags: writing, scaling, seo I have a principles that it is called "Do not answer twice" The idea is that I don't want to answer the same question more than once. This sounds like a crazy optimization idea, but in my scale it is needed. After I've founded React community in Brazil, and start answering many questions every day. Then, I realize that most of the questions will repeat themselves once in a while, like a cycle. I decide to stop answer questions in private, and asking people to ask their questions in public on Twitter and tag me. I did a retweet of their questions, and answered them in public. So, you someone else asks the same question, I just reuse my answer. I write answers as tweets, tweet threads, blog posts, articles, and here in my zettelkasten. --- # Doing the right thing URL: https://sibelius.github.io/zettelkasten/notes/doing-the-right-thing Tags: career, engineering Sometimes someone in your organization does not wanna do the right thing (maybe your manager, maybe your boss, or CEO) they could decide not to invest in having tests in place not having storybook in place not choosing the right tool for the right job if you do belive this is the right thing to do, spend some time doing this. If this will save you time in the long run it is a good bet --- # Drawing URL: https://sibelius.github.io/zettelkasten/notes/drawing Tags: communication, tools #drawing #excalidraw Sometimes text is not enough, and an image is worth a thousands words Use excalidraw or other tool to create simple diagrams, state machines and to explain more complex things use the right medium for the right message - https://excalidraw.com/ ## Links --- # Driving SaaS Success using Key Metrics URL: https://sibelius.github.io/zettelkasten/notes/driving-saas-success-using-key-metrics Tags: saas, metrics - https://www.youtube.com/watch?v=bCBccKfG9U0 building an unicorn gross margin cac ltv sales hiring mktg spend sdr output 3 things growth prevents competitors to reach market profitability cash how you survive if cash flow is bad for one customer unit economics Can I make more profit from my customers than it costs me to acquire them ? Cost to Acquire a Customer CAC < LTV (much bigger) LTV > 3x CAC Customer Churn Dollar Churn expansion revenue from existing customers > revenue lost from churning customers if we only have one SaaS product, whawt more can we sell the customer? multiple versions of your product more feature depth of usage (transactions) more users how many months to recover cac? months to recover CAC < 12 months sales complexity more CAC use engineering/product to bring CAC down repeatable and scalable OTE < 6x Quota (benefits) On Target Earning - cost of sales person --- # Editor - React Conf URL: https://sibelius.github.io/zettelkasten/notes/editor-react-conf Tags: frontend, react Content Editable is an attribute that let any element to be editable Content Editable is usually use to build rich text editors, or markdown editors, or any kind of editors. [The era of Content Builders](./the-era-of-content-builders) - https://medium.engineering/why-contenteditable-is-terrible-122d8a40e480 **What you need for a Editor?** You need a model for the document You need a map 1-1 from document to visible screen (usually DOM or native nodes) You need to handle selections in a good way You need to handle carets You need to define edit operations based on key press and mouse clicks **How Medium editor works?** - it has sections and paragraphs - a paragraph contains text and formatting, and also a layout information - a section describes background for a sublist of paragraphs **How Notion editor works?** it has a list of basic blocks (text, page, todo list, image, kanban, calendar, database) each basic block has its own properties You edit one block per time. React Conf BR Drafjs: from RichText to Content Builders - https://www.youtube.com/watch?v=rHat0n1xBVc - https://www.youtube.com/watch?v=w-PqnpMizcQ - https://learn-draftjs-now.vercel.app/data-model --- # Effective Twitter URL: https://sibelius.github.io/zettelkasten/notes/effective-twitter Tags: twitter, writing, audience If you still have a twitter account you can use it to build and grow your audience The audience is the people that followed you based on the content you create everyday. The bigger your audience the bigger your reach. You can use the audience for many reasons, make it easy to find good people to hire to your company, to sell products or courses, spread your ideas. @jabur funis de vendas e contratação funnel top Time When you post influences how many people are wake, and how many will interact/engage with your tweet Prefer 8am to 8pm of your audience timezone. I try to overlap Brazil and US timezone. Content A Tweet with just a text provided fewer context and could not be understand well by everybody. Adding images, gifs, video could improve engagement of your tweets Links with social media preview also improve engagement Threads helps you to provide info that won’t fit in a single tweet, or a list of things you wanna share. It could also be a short blog. Tagging account could also increase reach if the people tagged has a lot of followers. Sharing Only posting on twitter could not be enough, try to post in other communities: slack, discord, Facebook groups, WhatsApp groups, telegram and so on. Also send to friends, and ask for retweets to improve reach Send it to friends, and ask for retweets to improve your reach. Remember, only posting on Twitter could not be enough, try to post in other communities: slack, discord, Facebook groups, WhatsApp groups, telegram, and so on. morry - improve Audience and consistency Tweeting about other topics not related to the audience you wanna reach could give you some unfollows, like tweeting about politics. However, I don’t care about this, as I am not only a tech content creator. --- Bio You Bio is the first thing that someone will read about you and your profile. have a good one. emojis could help you create a brand choose a good `username` as well - frequência ajuda? Postar conteúdo com [menos frequência mas com mais insights](https://twitter.com/Julian/status/1348001397015420930)? - conteúdo com menor valor agregado de conhecimento mas com uma carga emocional grande é bom? Por exemplo, postar "o JavaScript ajudou a minha família, me deu uma casa..." - como você escolhe postar em inglês ou português? joao pedro - conclusion With that in mind, twitter can be a great tool t joao Learning Twitter is the best way to learn new things with people around the world. @wellerson how to keep with all the tweets? bookmark tweets that you wanna read more deeply transform some tweets in article/zettel in your zettekasten morrys content before time [Twitter](./twitter) --- # Entropy URL: https://sibelius.github.io/zettelkasten/notes/entropy Tags: programming, code-quality Code entropy adding a new prop to your react component increases entropy adding a new parameter to your funciton increases entropy more code more entropy more parameters more entropy more customization more entropy Broken windows Slow code Half refactors Wrong abstraction will make it hard to do simple and common things --- # essential tools URL: https://sibelius.github.io/zettelkasten/mentorship/essential-tools Tags: advice, mentorship, questions, async ## essential tools "Are there specific tools, frameworks, or resources that you consider essential for a modern developer?" - IDE - WebStorm, VSCode - ChatGPT - Copilot - Terminal - OpenLens - Slack - Markdown - GitHub - Twitter - Git - Activity Monitor - Docker - React - Node - Bash - Automated Tests - CI/CD - Deploy automation - k8s, serverless, terraform, ansible - issues - pull requests - code review - RFC - POC - feature flag - thunk development --- # ETH URL: https://sibelius.github.io/zettelkasten/notes/eth Tags: crypto, blockchain Ethereum is like Bitcoin but with turing complete smart contracts ECR-20 token tokens only exist inside a contract 0eth to transfer token + gas fee ecr-20 complaint - fungible (same value for each token, like money) totalSupply, balanceOf, transfer, transferFrom, approve, and allowance. In addition, you can specify optional functions, such as name, symbol, and decimal liquidity pool - unisawp - x \* y = k (k constant, total liquidity) eth ↔ erc-20 token erc-20 ↔ erc-20 token ERC-721 non fungible token - each token has a different value - property erc-721 + erc-165 interface erc - ethereum request for comment proof of work - more energy wins proof of stake - you stake (put some eth money), you someone is randomly assign to validate the block, if you cheat you loose your stack Practical - https://cyprianaarons.hashnode.dev/how-to-create-an-nft-on-ethereum-blockchain-ckp8r1wzy077104s184ungppu - https://dev.to/dabit3/the-complete-guide-to-full-stack-ethereum-development-3j13 — nft opensea rinkeby address test [https://twitter.com/sseraphini/status/1434625022845403141](https://twitter.com/sseraphini/status/1434625022845403141) [https://rinkeby.etherscan.io/tx/0xd6dd93fb90eedf953d2b11a93b4c42a3917739d34bb27d9e8f0ca8124129a31c](https://rinkeby.etherscan.io/tx/0xd6dd93fb90eedf953d2b11a93b4c42a3917739d34bb27d9e8f0ca8124129a31c) --- # Evergreen 🌲 URL: https://sibelius.github.io/zettelkasten/notes/evergreen Tags: software - https://github.com/shellscape/webpack-plugin-serve/blob/master/.github/FAQ.md#what-does-evergreen-mean - https://www.w3.org/2001/tag/doc/evergreen-web/ Evergreen is a project that only current the latest active LTS of technology to make it simpler, and faster. it is similar to [Bleeding edge](./bleeding-edge) but removing the legacy part. --- # Excel URL: https://sibelius.github.io/zettelkasten/notes/excel Tags: tools, productivity Excel is a software to process spreadsheet/tabular data Excel can be think as one of the first [Thinking Tools](./thinking-tools). You put a lot of number, and start building thinks on top of it, using formulas per cell or Visual Basic Scripts. The basic building block ([Where good ideas come from](./where-good-ideas-come-from) , [The era of Content Builders](./the-era-of-content-builders) ) is the cell. A cell can contain a basic type (string, number, currency, date) A cell can contain formatting (background color, color, font-size and more) You can span a cell to contain more than one column You can use Excel to import ([Importing data using csv / xlsx](./importing-data-using-csv-xlsx) ) or export data. Airtable is the new "Excel". Acts likes a spreadsheet but gives you the power of a database You can see the same data in different ways in Airtable: Calendar, Grid, Kanban, Gallery, Form --- # Feature Flag URL: https://sibelius.github.io/zettelkasten/notes/feature-flag Tags: software, development #code #development Feature flag enable you modify software in runtime Temp feature flag - it is used while development a big feature to make sure we won't break current behavior, so we can merge fast and test in production without affecting all users it can be used to release features to a few beta users or handle deploy rollouts \## Links --- # Feedback Loop URL: https://sibelius.github.io/zettelkasten/notes/feedback-loop Tags: mental-models, systems It is another great [Mental Models](./mental-models) We can have a Positive Feedback Loop where we reinforce some, A influences B that influence A. It results in growth or declines, it is based on reaction We also have a negative feedback loop that would will make the system stable --- # Finantial Risk URL: https://sibelius.github.io/zettelkasten/notes/finantial-risk Tags: finance, risk - https://uspdigital.usp.br/jupiterweb/obterDisciplina?sgldis=EAC0329&codcur=12042&codhab=4 ```txt JORION, P. Value at Risk: The New Benchmark for Managing Financial Risk. McGraw-Hill, 3 ed., 2006. PANJER, H.H.. Operational Risk: Modeling Analytics. Wiley-Interscience, 2006. BOHN, J. R., STEIN, R. M. Active Credit Portfolio Management in Ptactice. Wiley, 2009. JORION, Philippe. Financial risk manager handbook. New Jersey: Wiley, 2003. Fabozzi, F. J. et al. Operational Risk: A Guide to Basel II Capital Requirements, Models and Analysis. John Wiley, 2007. SAUNDERS, A., ALLEN, L. Credit Risk Measurement: New Approaches to Value at Risk and Other Paradigms. John Wiley, 2002. ``` - https://uspdigital.usp.br/jupiterweb/obterDisciplina?sgldis=EAC0554&codcur=12042&codhab=4 ```txt Bjork, T. (2004) Arbitrage theory in continuous time. Oxford University Press. Bühlmann, H. (1970) Mathematical models in risk theory. Springer. Klugman, S. A.; Panjer, H. H.; Willmot, G. E. (2004) Loss models: from data to decisions. 2nd ed. Merton, R. C. (1992) Continuous-time finance. Revised ed. Oxford: Blackwell. 732 pages. ISBN: 0631185089. Panjer, H.H. and Willmot, G.E. (1992) Insurance risk models. Society of Actuaries. Bibliografia Complementar Ross, S.M. (2003) An elementary introduction to mathematical finance. Cambridge Shreve, S. (2004) Stochastic calculus for Finance (vol I and II). Springer. ``` **12042 Bacharelado em Ciências Atuariais** --- # Finisher URL: https://sibelius.github.io/zettelkasten/notes/finisher Tags: productivity - https://medium.com/personal-growth/the-f-is-for-finisher-3c6936a00342 --- # fintech legacy overhead URL: https://sibelius.github.io/zettelkasten/notes/fintech-legacy-overhead Tags: fintech fintech and legacy overhead kyc med statement withdraw sanity check - ledger plugin js security partner login and app.openpix.com.br sms (zenvia, twilio) articles/documentation multiaccount giftback cashback shopper --- # First Impression URL: https://sibelius.github.io/zettelkasten/notes/first-impression Tags: writing, newsletter First impression is when you first interact with something or someone. First impressions can be good or bad It is hard to change the first impression, so you need to focus to improve it Newsletter My [Newsletters](./newsletters) first impression is not good right now. How can I get it better? Explain more about my newsletters topic More about me My social links --- # Fixing Stuff URL: https://sibelius.github.io/zettelkasten/fixing-stuff Tags: fixing, debugging, contributing Most people find a problem or a bug and let them go unfixed. I'm not like that. I'm a fixer. I fix things. I fix bugs. I fix problems. I fix stuff. When I find a problem, I try to see if this is an easy fix. If this is an easy fix, I fixed it right all way. Otherwise, if the fix is not so easy, I try to ask for help on twitter, discord, github, stackoverflow. If the problem is not solved after sometime, I try to fix it myself again. --- # Flight URL: https://sibelius.github.io/zettelkasten/notes/flight Tags: management, culture if you never feel any discomfort about your level of transparency, **you probably aren’t transparent enough**. **You can’t trust someone’s ‘yes’ until you hear their ‘no** As employees, they have a **right to know** about the business they are part of **ADULTS DON’T LIKE BEING TOLD WHAT TO DO** People _want_ to be challenged. They _want_ you to ask them to step up and take responsibility for something hard. They want to be needed, and they want to have agency in the doing of it. --- # focus on english URL: https://sibelius.github.io/zettelkasten/mentorship/focus-on-english Tags: advice, mentorship, questions, async ## focus on english "Should English be my focus?" If being a developer is easy for you, focus on English. Learning English will open new horizons for you, providing access to a wealth of study materials, additional forums for discussion, and a vast amount of information. --- # Founding vs Inheriting URL: https://sibelius.github.io/zettelkasten/notes/founding-vs-inheriting Tags: politics, innovation [https://1729.com/founding-vs-inheriting/](https://1729.com/founding-vs-inheriting/) political institutions favor inheriting inherited people don't know how to do things from first principles, so they can't innovate Era na substack; falava sobre organizações e políticas que faliram porque as pessoas atualmente não sabem como fazer porque elas não criam mais; "George Washington" acho que tinha por causa da constituição; "99% read-only" --- # frontend hiring questions URL: https://sibelius.github.io/zettelkasten/mentorship/frontend-hiring-questions Tags: advice, mentorship, questions, async ## frontend questions "Good backend hiring question?" - how to scale frontend? a good answer is to use a design system - how to scale css? use design system - What do you test on the frontend? integration test, test the behavior, using testing library, test that when filling out a form and clicking the submit button, the api is called with the correct data - how do you create a new page? does it start with a component and then break it down (top down), or does it start with base components and then compose them? a good answer would be to use top-down, because segmenting (componentizing) is very difficult if you don't know how it will be structured, another good answer is to use only the components that already exist in the design system - if a component doesn't exist in the design system for a page you need to do what do you do? A good answer would be to discuss with the designer whether to use an existing component or add the new component to the design system. - what is the tradeoff of adding a new component to a design system? the more components, the more complexity and work to maintain, the fewer simpler components - how to organize a design system? A good answer is to have documentation, using docusuarus and/or storybook - how do you deal with data fetching? The best answer would be relay, but it only works if you have graphql, another answer would be something more level and declarative like react-query, data fetching by hand is always an error - create a new component or a new prop? prefer a prop if the "new behavior" converges with the existing component, otherwise create a new component - how to start a new design system? decide the initial basic components, typography, scaping, buttons - what is important is a design system? consistency, maintainability, scalability, typography, basic components, storybook, documentation - when to use SSR? when you need perf and SEO, SSR is to render the frontend in the server and hydrate - what is hydration? it is the process of conciliating the server rendered html with the client rendered html - how to improve SEO? use SSR, use meta tags, use structured data, use sitemap, use robots.txt, make site fast - how to improve frontend performance? lazy loading, RSC, SSR, tree shaking, remove big packages - when to virtualize a list? when we are handling big number of items - when to memo a component? when you need to render a lot of number of this components - how to manage state? prefer local state using useState, only when needed use useContext, move data fetching to something else like relay, react-query - how to build complex forms with validations ? prefer use packages like formik and yup - how to deploy frontend ? you can deploy on s3 and expose then using nginx, cloudfront or cloudflare pages, any CDN works. --- # Functional Programming URL: https://sibelius.github.io/zettelkasten/notes/functional-programming Tags: programming The building block of functional programming is a function A function is an abstraction that receives an input and produces an output f(x) ⇒ y A pure function is a function that returns the same return for the same input. Pure functions are easy to test as you don’t have to mock external parts and there is no side effects. You can functional programs composing functions. Types define which values are valid for a given variables or function argument or return. We can only compose functions that one --- # Future Proof URL: https://sibelius.github.io/zettelkasten/notes/future-proof Tags: software, productivity Something is future proof if it will work in long run When you use a platform to build your content, this platform can be discontinued the platform can change their terms of service the platform can censure you the platform won't be anonymous the platform can remove your data Future Proof Code Future Proof code will work well even if the requirements changes over time \## Link [Productivity](./productivity) --- # Game Theory URL: https://sibelius.github.io/zettelkasten/notes/game-theory Tags: economics, mental-models - https://www.amazon.com.br/Joy-Game-Theory-Introduction-Strategic-ebook/dp/B00H69CQ4Q Game Theory is the study of games with agents that perform the best action. The classic game is the Prisoner's Dilemma where 2 agents that can't communicate with each other don't cooperate and loose instead of gain if they cooperate with each other. --- # Gap URL: https://sibelius.github.io/zettelkasten/notes/gap Tags: creativity, learning - https://vimeo.com/85040589 When you go to creativity work, you get to it because of Taste But there is a GAP, where you have the taste, but you produce bad things You need to do a lot of work, in a lot of time to improve and pass the GAP phase [CSS Practice](./css-practice) You should feel the GAP A book/article/software and everything that you build or create needs to feels the gap --- # Generalist URL: https://sibelius.github.io/zettelkasten/notes/generalist Tags: career, learning - https://ashfurrow.com/blog/specializing-in-being-a-generalist/ generalist are robust to automation automation will automate a specific task, it can't be easily generalized generalist are better for long term solutions for holistic solutions - https://t.co/x92g4Y1iEF?amp=1 [https://25iq.com/2016/03/12/richard-feynman-and-charlie-munger-expert-generalists/](https://25iq.com/2016/03/12/richard-feynman-and-charlie-munger-expert-generalists/) smart generalist [https://helenmin.com/blog/smart-generalists](https://helenmin.com/blog/smart-generalists) --- # Getting Things Done URL: https://sibelius.github.io/zettelkasten/notes/getting-things-done Tags: productivity, books - https://www.amazon.com.br/Getting-Things-Done-Stress-Free-Productivity/dp/0142000280 > “The principle of GTD is to collect everything that needs to be taken care of in one place and process it in a standardised way. ” > Excerpt From: Sönke Ahrens. “How to Take Smart Notes: One Simple Technique to Boost Writing, Learning and Thinking – for Students, Academics and Nonfiction Book Writers.” Apple Books. it creates a structure for our work, as we can have distraction from the outside world but also from our mind you need to have a holistic view, an unimportant task becomes urgent. your brain will only let go if your system taken care of it - [ ] read --- # Git branching URL: https://sibelius.github.io/zettelkasten/notes/git-branching Tags: git, development People usually stick with the first solution or approach they find to solve their problem. Best practice is think as the silver bullet for a problem without even thinking about it. When you pick a best practice without thinking you are outsourcing all the decisions and choices to the own who created the best practice. It could be the wrong tradeoffs for your problem. Why do we use git for software development? We need a way to distribute/decentralize the development of the software without one developer causing issues to another one. After the code was made in isolation, we need to integrate it in the main repository. This is usually made using pull requests. Pull requests enable you request reviews/feedbacks of your code before adding in the main branch. It also let you discover if your approach break any existing behavior or tests the size of pull requests matters a lot. Small pull requests are easy and faster to review and have less risky of introductions bugs or regressions. What is wrong about git flow? What is wrong about develop branch? [https://www.atlassian.com/continuous-delivery/continuous-integration/trunk-based-development](https://www.atlassian.com/continuous-delivery/continuous-integration/trunk-based-development) --- # Give me an example URL: https://sibelius.github.io/zettelkasten/notes/give-me-an-example Tags: communication - https://twitter.com/darrengrimes_/status/1646115621032325122 --- # Global State URL: https://sibelius.github.io/zettelkasten/notes/global-state Tags: react, frontend, relay #react #global #state Redux single immutable atom for the whole UI hard to code split hard to optimize Selector: useSelector Recoiljs multiple immutable atoms for the UI it works with sync and async data it has support to derived data optimized to avoid re-rendering parts that don't consume an atom getters vs setters Selector: useRecoilValue Context React context can only has one single value, so you need to use subscribe pattern to avoid re-rendering all components that consume them Selector: useContext Relay Single store Selector: GraphQL fragments Mobx Observables Semi Global Formik: form field state should be able to be validated together one form field change should not re-render all other fields, so it has good perf \## Links --- # Govern vs Business URL: https://sibelius.github.io/zettelkasten/notes/govern-vs-business Tags: politics, startups - https://1729.com/voluntary-governments/ Why we don’t have disrupt in government? Because we can only do 1 experiment at a time It takes us 4 years to experiment again Startups and competition let us test many variations to find a better solution Govern is slow and stable Business is fast and it changes --- # Great content URL: https://sibelius.github.io/zettelkasten/notes/great-content Tags: content, reading stratechery - https://stratechery.com/2022/meta-myths/ --- # Growth Loops URL: https://sibelius.github.io/zettelkasten/notes/growth-loops Tags: growth, startups #growth - https://andrewchen.co/investor-metrics-deck/ You can divide growth in 2 parts - Acquisition loop where you get more users to your platform, and let current users spread your product using sharing strategy or word of moutn - Engagement loop where you keep the current users engaged using notifications based on user interaction with the platform A loop is better than a funnel, as the end of the loop will be used to increase the beginner of the strategy - https://kwokchain.com/2020/06/19/why-figma-wins/ --- # Hability to handle uncertainty URL: https://sibelius.github.io/zettelkasten/notes/hability-to-handle-uncertainty Tags: mentoring, learning The best people to work with are people that can handle uncertainty. You provide tiny pieces of information and they are able to figure it out the rest. When I'm working with my mentee they struggle a lot of it. I prefer to provide the less possible information and let them fill the gaps. As they are still learning some basics they struggle a lot. They keep me asking "simple" questions. I try to teach them to solve the "simple" questions by themselves using google,github,stackoverflow And only come up to me after some struggle. Struggle help them to learn better and to improve their understanding of what they are learning. --- # Habit URL: https://sibelius.github.io/zettelkasten/notes/habit Tags: habits, productivity #habits Habits is something that you do frequently (every day) Habits is the way to succeed in the long run Good habits will make your life better Bad habits will kill you \## Links Long Term --- # hard skill worth URL: https://sibelius.github.io/zettelkasten/mentorship/hard-skill-worth Tags: advice, mentorship, questions, async ## hard skill worth "What are the most valued technical skills currently in the technology market, especially in the development area?" Everything that you can do by your own Lead a team Lead a product Being able to go from a user/stakeholder requirements to a real product. From archicture, RFC, POC, to backend, frontend, deploy in production and monitoring. Making sure the feature/product is a success. Design system that scales both on backend, frontend, fullstack, devops. Reduce cost of development Be able to optimize backend, frontend, fullstack, devops Be able to instrument/monitoring production product. Be able to debug bugs faster. Be able to communicate well with everybody, other teams, other developers, non-tech people Be able to use automated tests Be able to deploy to production without bugs and zero downtime Be able to explain complex things in a simple way Be able to control complexity Be able to reduce scope --- # Henry Ford URL: https://sibelius.github.io/zettelkasten/notes/henry-ford Tags: productivity, history > “What difference does it make to let the cars move from worker to worker instead of letting the workers walk from car to car?” > Excerpt From: Sönke Ahrens. “How to Take Smart Notes: One Simple Technique to Boost Writing, Learning and Thinking – for Students, Academics and Nonfiction Book Writers.” Apple Books. He changed the production way, making each employee more specialized and better in his/her tasks [How to Take Smart Notes](./how-to-take-smart-notes) --- # Hot Cold Media URL: https://sibelius.github.io/zettelkasten/notes/hot-cold-media Tags: media, communication - https://alexdanco.com/2019/10/17/the-audio-revolution/ text is cold, low resolution, more uncertainty, it needs more context video/audio is hot, high resolution, less uncertainty, more rich, it needs less context realtime is even hotter --- # How to be Successful URL: https://sibelius.github.io/zettelkasten/notes/how-to-be-successful Tags: career, success #longterm ### Compound yourself Choose a carrer that has compound effects Focus on long term ### Self belief Belief in yourself too much ### **Learn to think independently** What to do in situation that have no solutions Relay is better even though most people choose apollo. ### Get good at sales You need to convince people about your ideas ### Make it easy to take risks You just need to the right once It is easier to take long risk early in career as you not have much too lose but has a lot to gain. Avoid being comfortable in your job ### Focus Right in the right thing, instead of many hours. ### Work hard You need both smart and hard work Extreme people get extreme results Don't be used to the median Focus on being number #1 in your field ### Be Bold Choose hard problems, and ambitious ones. ### Be Willful You can bend the world for your will. ### Be hard to compete with Build a strong personal brand (sibelius at react community, relay, twitter, slack) Join multiple different fields Be original ### Build a network Help people as much as you can Your network of talented people is the limit of what you are trying to build Build a reputation to build a network push people hard enough so they can grow, but not as hard so they will burn discover undiscovered talent > is this person a force of nature? Bet on people ### You get rich by owing things You don't get rich with high salaries you get rich with things that grow fast in value time only scales linearly ### Be internally driven Do things to impress yourself Codemod impressed myself Workshop impressed myself I need to start doing videos and audio to let me from comfort zone \## Links Long Term \## References - https://blog.samaltman.com/how-to-be-successful --- # how to contribute to open source URL: https://sibelius.github.io/zettelkasten/mentorship/how-to-contribute-to-open-source Tags: advice, mentorship, questions, async ## how to contribute to open source? "Are there specific projects or types of open source contributions that you would recommend to someone in my current career (internship)?" You can contribute to any open source project. If you say you can't, it is a barrier that you created. I would recommend contribute and be comfortable with open source. First, watch the repo that you want to contribute. Start contributing answers all open issues. Also do code review of all open pull requests. Read all the code and documentation to see if you can contribute with some easy stuff first. As you go, you can contribute. You only be able to contribute meaninfully for packages/libraries/projects that you use. If you don't use a project you can't contribute, because you don't know what is good or bad, or what is missing. You need to use the project and feel the pain. After that it will be easy to see what is missing, and you can have some idea of how to contribute. --- # How to deal with customers in a SH URL: https://sibelius.github.io/zettelkasten/notes/how-to-deal-with-customers-in-a-sh Tags: software-house, customers A software house build customized software for other companies. Most software house do everything that a customer ask them for, this sounds like the only way to do business as you are paying for that. What if I told you that you don't need to do everything your customer ask your for? The idea is that if you accept every single feature or request from your customer you will make things hard and harder for you in the long term. Customer usually don't know what they really want, when you receive a new feature request for them. Ask to yourself what is the real problem that he/she is trying to solve? Can we solve in a simpler way? Can we avoid this? --- # How to find stuff? URL: https://sibelius.github.io/zettelkasten/notes/how-to-find-stuff Tags: zettelkasten, search #blog #search If you keep forgetting about where you saw something, you need to improve your index to make this easy I always forget how to find the author of zines, then I linked her twitter account inside a Zettel of my Zettelkasten, and then I can easily find her typing `zine` I've also have some `favorite` zines that was hard to find, so I started linking them in related `zettles` to make them easier to find. if you have something that is hard to find, it needs more connection in your web of knowledge to make retrieval process faster. Make them searchable in different ways: tags, key words, questions, answers. Tweak your search machine. - https://sibelius.substack.com/p/human-search-engine \## Links [Search](./search) [Index](./index-note) --- # How to find the best solution? URL: https://sibelius.github.io/zettelkasten/notes/how-to-find-the-best-solution Tags: problem-solving, software Your first solution for a problem won’t be the best one. The first thing you need to do when trying to solve a problem is to research for existing solutions for the given problem. Most of the time someone else already solved your problem or a similar one. After having a list of possible solutions you should evaluate them using some criteria. A problem always has more than one solution. Finding the best solution is an optimization problem where you use some criteria to evaluate the score of your solution. You can have some requirements that you should meet eliminating a few possible solutions. After finding the minimal set of possible solutions you need to try all of them in small proof of concepts to understanding their tradeoffs in practice. The simplest solution should be preferred. If you want to use this solution in a production system with a team, you have some more steps to follow. You need to ensure you can deliver this solution incrementally without breaking anything. You also need to write a RFC and demo your solution to your team, to make sure everybody is onboard. Other people can find problems in your proposed solution and edge cases that you have not thought about it, making you need to reevaluate your approach. Summary Finding the best solution for a given problem takes sometime as you need to evaluate many options before deciding. Picking the first one or the “best practice” or most used solution could not be the best solution for your problem and requirements. Team members can invalidate your proposed solution and help you reach a better solution. Adding a solution for a production running system can be more challenge and require tweaks --- Feedbacks Quasar - Your first solution for a problem \[probably\] won’t be the best one, it happens, rarely but happens - You can also use a provisional solution depending on your context/time/urgency as long as there is the possibility of an incremental update - Talk about different solutions in the same testing system and bold the importance of a good test set - actual good tests can cover actions regardless of your internal methods, if your solution is clear it will have a pattern that can be resolved by any change 1. Can you explain your solution clearly? 2. Can your solution be tested? 3. Will small changes in your solution break the tests? 4. Can you upgrade your solution? Pedro Carolis I think the sentences citing "criteria" are a little repetitive, mainly because they are very close in the text structure --- # How to increase Quality? URL: https://sibelius.github.io/zettelkasten/notes/how-to-increase-quality Tags: quality, engineering Raise the bar - [ ] you should plan more - [ ] you should do more code review - [ ] you should test more - [ ] you should get more context to provide the best solution - [ ] you should really know what you are doing - [ ] punctuality - [ ] não seguir o design --- how to improve issues how to improve issue detail? how to replicate the bug? who is responsible for the issue detail? iterative --- # how to maintain consistency in studying? URL: https://sibelius.github.io/zettelkasten/mentorship/how-to-maintain-consistency-in-studying Tags: advice, mentorship, questions, async ## how to maintain consistency in studying? - study everyday - focus on learn in demand - try to solve problems instead of passive learning - prefer active learning and sharing knowledge in public --- # how to prioritize learning URL: https://sibelius.github.io/zettelkasten/mentorship/how-to-prioritize-learning Tags: advice, mentorship, questions, async ## how to prioritize learning "How can I identify and prioritize which technologies or programming languages to learn given long-term career goals?" Learn what will help you achieve your goals first. If you want to get your first job, learn the tech stack that most companies are loooking for. If they are looking for Go, you learn Go. You learn Go and show that you can build using Go what they are needing. That you can build a CRUD API with Go, that you can implement event driven with Go. That you can create automation using Go. Study the company, the products, the problems they are facing. And how can you solve it using the tech stack that they use. You need to balance with topics that you need right now. For instance, we need to improve a lot our DevOps workflow, so I spend a lot of time studying and testing a lot of DevOps workflows. I also studied things that I won't use on DevOps right now, but can be useful in the future. --- # How to reduce decisions? URL: https://sibelius.github.io/zettelkasten/notes/how-to-reduce-decisions Tags: productivity, decisions Decisions slow you down How to reduce the number of decisions that you need to take? --- # how to stand out URL: https://sibelius.github.io/zettelkasten/mentorship/how-to-stand-out Tags: advice, mentorship, questions, async ## how to stand out "How do I stand out in an already structured company?" "How do I stand out in a team?" Who current stand out? Why they stand out? The ones that deliver code and product with quality stands out. The ones that you can trust stands out. The ones that lead the team/product/team stands out The ones that needs few supervision stands out The ones that makes few mistakes stands out The ones with more responsibilities stands out The ones that can solve bugs faster and production incidentes faster stands out The ones that make things cheaper, faster stands out The ones that work in the hardest and more complex projects stands out The ones that create new things stands out The ones that make the company make more money, bring more customers stands out --- # How to Take Smart Notes URL: https://sibelius.github.io/zettelkasten/notes/how-to-take-smart-notes Tags: zettelkasten, writing, books #note #organization Successful writing comes from good note taking - https://www.amazon.co.uk/How-Take-Smart-Notes-Nonfiction-ebook/dp/B06WVYW33Y/ref=as_li_ss_tl?ie=UTF8&linkCode=sl1&tag=brykam-21&linkId=1b678d6bc3d383a145517578e8abb559&language=en_GB > “Getting something that is already written into another written piece is incomparably easier than assembling everything in your mind and then trying to retrieve it from there.” You need the [Habit](./habit) of note taking to write well > “Having a meaningful and well-defined task beats willpower every time.” > “Routines require simple, repeatable tasks that can become automatic and fit together seamlessly” the new routine will feel artificial at first, much like an habit change This method is similar to [Getting Things Done](./getting-things-done) 1. fleeting notes: capture everything that come up in your mind 2. literature notes: notes about something that you read 3. permanent notes: bring notes from 1/2 and add more metadata, links them, improve them. You invert the process of writing. You first read a lot of content that you are interested in. Then when you have many content about some ideas/concepts, you can organized the pieces and write about it you need serendipity to find new ideas In which context do you want to find this note? > “Making something public always means to write it down so it can be read.” Go in public to gather feedback of your thoughts/ideas An expert acts on intuition because all the rules and knowledge are internalized. They don't need conscious to act properly. An expert can see patterns that begineers can't Things we understand are connected, it is easier to remember interconnected things, like the slip-box \## Links Zettelkasten [Habit](./habit) --- # how to teach programming URL: https://sibelius.github.io/zettelkasten/notes/how-to-teach-programming Tags: programming, teaching a DSL for finance excel spreadsheets are code the best part of programming is finding mistakes - https://www.youtube.com/watch?v=g1ib43q3uXQ --- # Human Computation URL: https://sibelius.github.io/zettelkasten/notes/human-computation Tags: computing, crowdsourcing Human Computation is when you use Humans to perform tasks that humans are better can machine. It is like humans helping computers. Luis Von Ahn made a lot of programs and games to use human base computation to solve problems where machine is not so goof. Duolingo knows that the best translators are humans. It sends real text to advanced learners train that are piece of websites, they translated buzzfeed using this strategy. Google images first version was a game where 2 users without communicate needs to say what is inside an image. After discovering some things inside the image these words become taboo to find more objects and things. The second version of this game was used to segment images, given a word one user would show part of the image to the other player show tell what you as it. It also made ReCaptcha where users tell the numbers inside images to handle ocr/ digits recognization. --- # Human Search Engine URL: https://sibelius.github.io/zettelkasten/notes/human-search-engine Tags: search, zettelkasten, writing #substack This is the preparation for Search Engine blogpost on [Substack](./substack) it will be built on top of [Search](./search) , [Index](./index-note) and Zettelkasten ideas --- Outline - What is search? - Why we need search? - Why bookmark, tags are not enough? - How can we build our own search index - How to incrementally tweak and improve your search index - Practical index building After using Google for many years we think search is a synonymous of Google. Google is really good to help us find information, websites, places, content, news, products, flights and many more information. **What is search?** Search is how we find information. We use google in a daily basis to find websites, places, products, flights. To perform search we provide a text query usually a question, some keywords, and hope we find the information we needed. Mac Spotlight let us find "anything" in our desktop. It can find documents, applications and more. Some apps has a spotlight search approach, in notion you can find pages and more. Webstorm let you search for filenames, variables, functions, classes, components and more. **Why we need search?** Our minds are powerful but limited, we can't retrieve most of information from our minds. **How can we build our own search index?** Have you ever forget about something: a book, a movie, a link, a github repo? This happen for a number of reasons We haven't written down about the book We haven't add some metadata or text to help us find this books later one We haven't linked this book to other books we had read **Why bookmarks does not work?** If you keep a list of bookmarks in your browser you can't add metadata to them You can't easily search them, you need to open them to figure it out what it was about You can't link one link to another. **Why folders does not work?** Categories and subcategories will overlap somewhere, and you're gonna have the paradox of where to put the things you wanna remember. **How to incrementally build and improve index?** Every time you hit a miss (try to find something but it won't get it easy). Add a new note (zettel) to your note taking (zetteltask). I'm using notion for my note taking. Add the link/idea/book/website/movie/podcast in the note Add text that would make you find it later in an easy way. What were the keywords that you used to find it this time? Add labels/tags to add them to some categories Link this note to other related notes, so you can find it following a web of connections. Let's see how I index some common things Book When reading a book, I create a new entry for it. A write down with my own words core ideas of the book. I create 1 new entry for each core idea, so I can link them to other books and sources. I quote some passages of it (very few ones) A link the book to other related books and sources. Person I write down a short description to identify the person I can have a small picture to make remembering easier I write down some ideas that person has The job of this person contact information link this person to books, and other people Make your search [Future Proof](./future-proof) always testing them - https://www.swyx.io/writing/keyboard-first Find everything just typing. We can use [Human Computation](./human-computation) to improve our search engine You need to provide the right cues to remember An index is A systematically way to provide cues You usually search by prefix postfix You usualy search by keywords You usualy search by related notes/ideas You usually search by synonymous how do index videos/podcasts? When watching a video/podcast I write down some draft/raw notes based on concepts of it. Then when the video/podcast is over, I reread then and compile them with only the essential parts. Feedback A única parte que precisei reler mais foi "A note will be the building block for our index." porque não foi tão claro o conceito de building blocks pra mim. Não ficaria melhor colocar "A note will be the documento for our index"? Porque na figura acima você usou "Documents" na segunda coluna --- # i really want to grow in my career but have no experience, what should I do? URL: https://sibelius.github.io/zettelkasten/mentorship/career-growth-without-experience Tags: advice, mentorship, questions, async ## i really want to grow in my career but have no experience, what should I do? - practive more - apply more - fake until you make it - work for free --- # IDE URL: https://sibelius.github.io/zettelkasten/notes/ide Tags: productivity, development #ide #webstorm IDE is at the top of productive for developers If you wanna be productive as a developer you need to master your IDE Make sure your IDE provide good and fast code completion Also make sure your IDE make all your workflows fast \## Links [Productivity](./productivity) --- # Ideas URL: https://sibelius.github.io/zettelkasten/ideas Tags: ideas Grab any of these ideas and buidl - [ ] gumroad pix - [ ] patreon pix - [ ] openai/stable diffusion to generate memes - [ ] a meme generator language - [ ] nocode using storybook components - [ ] slack/discord CI/CD bot --- # Image Thumbnail URL: https://sibelius.github.io/zettelkasten/notes/image-thumbnail Tags: frontend, performance We need to resize images to different formats and devices to provide the best user experience Right now we use thumbor docker from Globo, that uses python to provide their tool. I think moving to lambda would be cheaper, and maybe faster. - https://read.acloud.guru/serverless-image-optimization-and-delivery-510b6c311fe5 - https://github.com/andreasonny83/serverless-image-rendering - https://web.dev/serve-responsive-images/ - https://www.gatsbyjs.org/docs/gatsby-image/ --- # Importing data using csv / xlsx URL: https://sibelius.github.io/zettelkasten/notes/importing-data-using-csv-xlsx Tags: software, data #blog #substack #twitter What can go wrong when importing data using .csv or .xlsx files? **Dates/Times** csv/xlsx files does not ensure the user will use the data formatting that you asked them for. You can use the date format in xlsx, but user can modify the column to remove this formatting, or pasting the wrong date format altogether. You can also handle dates as string or let your xlsx parser to try to parse to you. The most common problem is that some countries using dd/mm/yyyy and other uses mm/dd/yyyy. You can use some Heuristic to try to correct parse them, as some dates only works in a given format. You could also use the date format of the locale of the user, but it won't tell much about the language of the file the user used to edit the import data. You also need to handle timezone possible issues as always. **Header/Columns** Users can modify the header of your import file, so your importing strategy will fail. You could enforce the column number, but users will change this order You could enforce the column header label, but users will change them You could try to match them using a Heuristic that this will also fail You can let user tells you what is inside each column **Booleans** You can predefined a set of strings to represent truth and false values It can be in english and also in the language of your users. You should also lowercase them to make comparison more stable, as users can behave and act differently. **Conditional Fields** One column/field can affect other field. One field can make another field required One field can be exclusive against other (you can't have both) **Validations** Each column can have a data type (string, number, date, ID, boolean and more). Your validations can be global or local If you are importing users, you need a global validation to make sure they does not have conflicts primary keys. You need local validation per row, to make sure all required columns are defined. You also need to make sure all columns have the proper type. If you have an ID reference to some database data, you need to make sure the ID is valid, and it is stored in the database. **Error Handling** Instead of a stack trace, we need to provide a file trace of error that happened during the processing. We can have 3 types of errors: global, per row, or per column. Global: it happens when 2 or more rows conflicts Per row: it happens when all columns are valid individually but an error happen when they are used together. Per column: it happens when a given column is wrong, and break the processing of a given row. **Space** We can have space before and after data because user typed spaced without noticing. We should trim any data before processing it. **Showing Results** You need to show what rows were imported successfully. You also need to who which rows were not processed correctly and why. --- # Improve English Writting URL: https://sibelius.github.io/zettelkasten/notes/improve-english-writting Tags: writing, english seagul - http://languagelearningbase.com/87017/the-most-popular-connective-words - https://www.grammarly.com/blog/how-to-write-a-conclusion/ - https://www.smart-words.org/linking-words/transition-words.html --- # improve technical skills URL: https://sibelius.github.io/zettelkasten/mentorship/improve-technical-skills Tags: advice, mentorship, questions, async ## improve technical skills "How can I improve my technical skill in specific technologies?" The only way of improving in something is to do something You need 10k hours to start getting good at something. Try to solve classic problems in your field Try to reinvent the wheel of what you use to improve your mental model of how things works the more your get real practice experience the better you will get --- # Improvement URL: https://sibelius.github.io/zettelkasten/notes/improvement Tags: learning, habits Improvement is a battle that must be fought anew each day. Your next workout doesn't care how strong your last one was. Your next essay doesn't care how popular your last one was. Your next investment doesn't care how smart your last one was. Your best effort, again. --- # In Conclusion URL: https://sibelius.github.io/zettelkasten/notes/in-conclusion Tags: writing 1. **To Summarize**: Succinctly recap the main points discussed throughout the article. 2. **In Summary**: Provide a brief and concise recap of the article's content. 3. **To Conclude**: Offer a closing thought or statement summarizing the key ideas. 4. **Wrapping Up**: Signal that the article is concluding and summarize the main takeaways. 5. **Final Thoughts**: Share your final reflections, insights, or opinions on the topic. 6. **Closing Remarks**: Add some concluding comments, impressions, or opinions. 7. **To Wrap It Up**: Summarize the article's main points and bring the discussion to a close. 8. **Last Words**: Offer some final insights or thoughts on the subject matter. 9. **The Takeaway**: Highlight the central message or primary lessons for the reader. 10. **In Closing**: Provide a concise summary and any last considerations. 11. **To End**: Convey that the article is nearing its conclusion and offer a summary. 12. **To Sum Up**: Recap the article's key points in a clear and concise manner. 13. **In Summary of All This**: Summarize the article's main points and tie them together. 14. **To Recap**: Offer a brief overview of the main discussion points. 15. **To Close**: Signal the article's conclusion and summarize the essential content. --- # Index URL: https://sibelius.github.io/zettelkasten/notes/index-note Tags: search, zettelkasten #index #retrieving Indexing is the art of making retrieving data faster Elastic Search (lucene) uses an inverted index to retrieve all documents fast. An inverted index is like this: doc1 - Awesome doc2: Alert doc3: Beta doc4: Crud doc4: Create A - doc1, doc2 B - doc3 C - doc4, doc5 It search based on prefix/suffix to reduce the search time Zettelkasten is like an index for our brain, as we can find ideas/thoughts faster than using another method we can search using tags, full text search and links among notes \## Links Zettelkasten [Human Search Engine](./human-search-engine) --- # Indistractable URL: https://sibelius.github.io/zettelkasten/notes/indistractable Tags: productivity, focus [https://sovereign-individual.xyz/posts/becoming-indistractable/](https://sovereign-individual.xyz/posts/becoming-indistractable/) Distraction is an unhealthy escape from reality Spend time in what you value Optimize your input, your knowledge diet Make time for yourself, for what matters for yourself --- # Inflexion point URL: https://sibelius.github.io/zettelkasten/notes/inflexion-point Tags: career, life - first computer at home - first internet access - get into on technical course of programming and development system - get into OBMEP - get into USP - doing study abroad in US (science without borders) - summer startup job inside an accelerator - founding Entria - first open source contributions - creating my first meetup and community react-sp → react brasil --- # Information URL: https://sibelius.github.io/zettelkasten/notes/information Tags: information, media Claude Shannon defines entropy and information concept - https://alexdanco.com/2019/10/17/the-audio-revolution/ Marshall McLuhan Cool media: less information, low resolution, users need to fill the gap ( you need to have a previous knowledge to understand a Tweet) Hot media: video/podcast more information, little uncertainties. If you are a beginner you need to use hot media’s to grasp the first concepts [Human Search Engine](./human-search-engine) [How to Take Smart Notes](./how-to-take-smart-notes) Notes should be low resolution --- # Instant Payment URL: https://sibelius.github.io/zettelkasten/notes/instant-payment Tags: payments, fintech Instance Payment is to send/receive money 24/7/365 within seconds (10 seconds) there are some hard limit of how much money you can transfer (15k eur on europe, 25k US, 1500 reais) RTP - real-time payments processed payments are irrevocable (you need to another payment transaction) request for payment flow cross board payments SWIFT 5 minutes 95% within a day instant payment reduces costs - https://www.federalreserve.gov/newsevents/pressreleases/other20200806a.htm pix US 2023, 2024 --- # Intern to CTO URL: https://sibelius.github.io/zettelkasten/notes/intern-to-cto Tags: career, leadership, talks How to go from a junior developer to CTO, C-Level go from individual contributor to leader/manager go from code to architecture/business go from operational work to strategic work - https://www.devstacksummit.com/ --- feedbacks akiin how did we decide to migrate to woovi? looking for the new oxygen thenicolau couldn't the right hand be something like a COO? right hand → similar to COO jgcmarins add GA to presentations merision Slide 4 - integrate culture Slide 5 - propagate culture leonardo furtado staff engineer they are → there are why only text? - https://www.youtube.com/watch?v=9Ql6dgEV9mg&ab_channel=SocialGoodBrasil pedro post this for free you are connected to top-tier software people? bruno Só adicionaria uma coisa... Acho que pra junior/estag algum nivel de incerteza é necessário pra que ele se desenvolva, só que tem um limite... thayto first impression: doesn’t work properly on mobile where is the mid level? faltou datas kindJotario faltou datas 1. pq tu fala primeiro sobre a parte tecnica e depois sobre vc - nao é o padrao ser o contrario? samuel ambiguo tech lead vs manager tgmarinho - vc geralmente diz que vc tem q trabalhar com pessoas q sabem mais que vc para aprender mais, sendo o CTO como que vc aprende mais sobre ser CTO se vc não tem outros CTOs na empresa. - alguns produtos não precisam tanto ser dev especialista, em termos de frontend, ainda mais se for telas mais simples de CRUD, quando que vale a pena ser especilista em vez de generalista? No roadmap da sua carreira parece que generalista foi melhor pq vc codou, liderou, definiu arquitetura, lidou com cliente e agora gerencia em alto nível as tecnologias. - quais conhecimentos foram mais relevantes para chegar onde chegou e quais foram seus maiores acertos e erros em cada path intern to CTO. kuringa proatividade é o que gira a chave 8553 contacts Paulo otavio Adicionaria um slide com por prioridade. from intern to CTO Soft Skill Core - comunicação ( explicar problemas complexos de forma que o povo entenda ou explicar o problema da forma correta) Mta vezes o telefone sem fio quebra a mensagem principal. Liderença / Quero ser esse cara um dia. Muitos caras com quem trabalhei proximo tinha esse digamos charme de inspirar vc a ser melhor seja pq eram agressivos com entregas e resultados ou pq realmente dominvam o assunto mas o mais importante NÃO TINHAM MEDO de remar para aguas desconhecidas e isso inspira mto as pessoas que estão na zona de conforto a sair delas pelo exemplo. OPEN Principles Ja trabalhei com mto dev senior fechado para evoluir e acho que por isso não atingiram potenciais maiores, mas nunca trabalhei com um CTO que não fosse aberto a sugestoes e opinioes. Seria algo como mate seu ego todo dia para aprender um pouco mais hoje. --- # Investing URL: https://sibelius.github.io/zettelkasten/notes/investing Tags: investing, economics Martin Shkreli buy bonds and stocks as assets to grow in value ads on a website, mobile app, or YouTube channel, courses, ebooks, teach what you know to others, affiliated marketing, amazon --- # Investing Pyramid URL: https://sibelius.github.io/zettelkasten/notes/investing-pyramid Tags: investing, startups - https://www.navalmanack.com/investing You first need VC to have angels to have incubators mature less risky company are invested first you need to know that your investiment company will be able to get more money before running out of money --- # is it bad to copy and paste code? URL: https://sibelius.github.io/zettelkasten/mentorship/is-it-bad-to-copy-and-paste-code Tags: advice, mentorship, questions, async ## is it bad to copy and paste code? - copy and paste is the best way to develop software - you copy a working code, the code will keep working - you should also learn what each line of the code you are copying is doing --- # Issue URL: https://sibelius.github.io/zettelkasten/notes/issue Tags: project-management, development #issue #project #management Issue is an [Atom](./atom) task. It represent a chunk of work to produce something It can represent a new feature that needs to be implemented It can represent a bug that needs to be solved It can represent an improvement It can represent a technical debt that needs to be solved You can add labels to issues (metadata) to making them easier to find, and also group them You can also link other issues, pull requests, commits to add more context to the issue. You can attach an issue to a temporal context using a milestone A milestone represent a list of issues that should be worked in a given space of time --- # junior vs senior URL: https://sibelius.github.io/zettelkasten/mentorship/junior-vs-senior Tags: advice, mentorship, questions, async ## junior vs senior "Pra você o que diferencia um pleno de um senior?" Depth and Breath of knowledge Depth and Breath of Experience Emotional maturity They won't lose themselves in big tasks They can handle uncertainity They can design, archicture systems that scale with few technical debt. They understand tradeoffs They can structure process, automation, and systems to make everybody more productive They know more about the whole codebase, product, holistic view They deliver better quality code, with fewer bugs and problems. --- # keep up to date URL: https://sibelius.github.io/zettelkasten/mentorship/keep-up-to-date Tags: advice, mentorship, questions, async ## keep up to date "How can I stay up to date with trends and changes in technology given the rapid development of the field?" You can't You need to prioritize You can reduce your learning curve, adding more nodes and edges to your knowledge graph If you think about it, the "new things" are just the existing building blocks recombined. So you need to focus on learn these building blocks and learning a new thing it will be easy You could also be the one creating the new thing. --- # Keyboard URL: https://sibelius.github.io/zettelkasten/notes/keyboard Tags: productivity, tools - https://www.swyx.io/writing/keyboard-first/ We can be much more [Productivity](./productivity) when using Keyboard then mouse Mouse needs to traverse the whole screen to find and click in something we have an Omnibox/Spotlight to easily find actions and things inside applications you can do any action from the tip of your keyboard Open the omnibox and [Search](./search) for any action it is like a genie lamp with infinite options, you can have any wish in the tip of your fingers To make this possible we need good [Index](./index-note) to make sure we easily find what we want we can improve our search using context (current state and also past states), and recent actions/pages/code [Tips and Tricks](./tips-and-tricks) --- # Keynes URL: https://sibelius.github.io/zettelkasten/notes/keynes Tags: economics Economics For Keynes, economics mattered because it would ensure people need not organize their lives around the empty chase of money. It would free them, instead, “to live wisely, agreeably and well.” --- # knowledge value URL: https://sibelius.github.io/zettelkasten/mentorship/knowledge-value Tags: advice, mentorship, questions, async ## knowledge value "How I can calculate values of my knowlege? Example: My cost about work far away from home is R$2.866,80/month. But I learning a lot that put in balance is worth. Exists a away to calculate this?" Knowledge does not have an intrisic value. The value of knowledge is related to their scarcity and demand. If you know something that a lot of people and companies need, and a few people know it, you can charge a lot for it. If you think you are not earning as much as you should, you should try to ask for a raise, or switch jobs. Let the market decide how much your knowledge is worth. The more worth the easier is to get a raise or switch jobs. --- # Layers URL: https://sibelius.github.io/zettelkasten/notes/layers Tags: computer-science, learning After Tobi talking about there is not such thing as frontend engineer and that you need to know more layers I'd like to talk about all the layers that I've learning in college Some people think that college is a waste of money and time for computer science. I think if you can afford it, you should do it. It will give you all the base that you gonna need to solve any kind of problem that come up to you. I think we can go from electrons to no-code to cover all layers and abstractions that you need to know, not master, to understand what it is really going on. The basic building blocks of a CPU is the transistor. A transistor let electric current pass given a following configuration. So we have 0 and 1, binary. 0 is no current and 1 is current. And everything is built on top of this concept. Then we have boolean logic, that let us sum, subtract and to most math using binary code. We use logic ports to create basic arithmetic. If you add PC (program counter), a clock, you have a basic CPU. If you can load data from memory and write to memory, you can do anything your modern computer does. You can build your own assembly, then you decode each instructions and execute simple programs. After that you could keep using assembly, or build a higher level language to compile to assembly to make your life easier, like C. --- # leadership migration URL: https://sibelius.github.io/zettelkasten/mentorship/leadership-migration Tags: advice, mentorship, questions, async ## leadership migration "What strategies do you recommend for effectively transitioning into technology leadership roles?" The most effective strategy is to start leading right now in your current role. YOu also need to be in an organization that needs more leadership You should be leading your team, your product, your feature before even being assigned to this role. Performing the activities of the leader before being a leader is the best way to be promoted to it. You also need to study a lot about leadership, not only in tech but the social part. Read a lot of content about it. Deliver results with high quality will give you trust to be promoted to a leader Also make it clear that you want to be a leader --- # Leaking Abstraction Framework URL: https://sibelius.github.io/zettelkasten/notes/leaking-abstraction-framework Tags: frontend, abstractions nextjs gatsby expo apollo can I use <leak framework> <thing> outside <leak framewok>? can I use expo video outside expo? can I use next <> outside next? can I use gatsby image outside gatsby? can I use apollo cache outside apollo server? Some framework make very [Opinionated](./opinionated) solutions and make it harder to use their solutions outside their ecosystem [Abstractions](./abstractions) --- # Learn in Public URL: https://sibelius.github.io/zettelkasten/notes/learn-in-public Tags: learning, writing #learn #public Learn in Public was explicit written by swyx. It is about to learn and share your journey in public, share what worked and what don't It can be used to fail fast and learn from your mistakes. It can be used to validate your ideas It helps to create a footprint of yourself \## Links [Community](./community) [Share](./share) Advice to Developers \## References [https://www.swyx.io/writing/learn-in-public/](https://www.swyx.io/writing/learn-in-public/) --- # Learning a new language URL: https://sibelius.github.io/zettelkasten/notes/learning-a-new-language Tags: learning, language #learning #language When I'm learning a new language I try to immerse myself with the language. I've change my computer, mobile phone, browser and everything to the related language. I'm using duolingo to learn spanish, I'm not spending many time per day learning spanish, but I'm learning some everyday. I think consistency is better in the long run. Learning a new language needs time, as learning everything else I always try to think in the new language, and if I don't know how to say something in it, I use google translate to help me out. I also to some dumb stuff as mixing my talk and writing with the new language, so you gonna see me trying to use the new language in my life with my wife and kid when thought they don't understand much about it. Spanish is "harder" because it is to close to Portuguese, so most people think they don't need to learn it, but it has a lot of nuances. Languages has also a lot of details that you learn as you use more and more. We have false cognates that are words that you write in a similar way but means something completely different, so you need to unlearn and let your brain relearn again \## Links [Make it stick](./make-it-stick) --- # Learning Approaches URL: https://sibelius.github.io/zettelkasten/notes/learning-approaches Tags: learning Learning in depth (learn a lot about one thing) Learning in breadth (learn a lot about many things) Learn why before how learn one thing at a time you gonna fail to code a new thing in a different programming language learn is about time frequency how much time are you investing on this? learn is about playing with it, active learning --- # Learning by Practice URL: https://sibelius.github.io/zettelkasten/notes/learning-by-practice Tags: learning You can't teach everything just saying things to people riding a bicycle is one of the things you can't really teach, you can give advice of how to get stable but your body should feel and adjust. --- # learning depth or breadth URL: https://sibelius.github.io/zettelkasten/mentorship/learning-depth-or-breadth Tags: advice, mentorship, questions, async ## learning depth or breadth ? "How can I effectively balance the desire to learn new technologies with the need to deepen my knowledge of the ones I am already studying?" My advice here is to focus more on solving problems. And solving a new problem usually is a combination of solving some existing problem that you already solved, some problems that you don't know how to solve, and some knowledge and experience that you have and some that you are missing. Most of the time you should focus on breadth if you want to solve more kind of problems. You focus in learning few about a lot of things. If you want to solve better a kind of problem you need to go in depth. You focus in learning a lot about a few things. You need to balance these approaches. I usually only go deep when my current knowldge/experience is not enough to solve the problem that I have to solve. --- # Learning Path AWS Lambda URL: https://sibelius.github.io/zettelkasten/learning-path/learning-path-aws-lambda Tags: learning-path, aws, lambda, backend - [ ] learn how to bundle backend using webpack in a single bundle (check this https://gist.github.com/jgcmarins/2860f547f5d785dce24ca0eadbe3abdd) - [ ] learn how to automate lamdba deploys using serveless or aws cdk (github actions) - [ ] learn how to configure and automate api gateway - [ ] learn how to automate tests lambdas using jest - [ ] learn how to configure, automate and use RDS Proxy to fast database workflow in lamdbas (also cache database connections) - [ ] how the performance gain using RDS Proxy over normal database usage - [ ] learn about cold start and lambda statefull (https://www.swyx.io/stateful-serverless/) - [ ] expose a CRUD api in lamdba - [ ] put everything on open source (github) - [ ] write a blog post about each of the topics above - [ ] deploy in your AWS account --- # Learning Path Backend URL: https://sibelius.github.io/zettelkasten/learning-path/learning-path-backend Tags: learning-path, back-end - [ ] learn about basic database modelling, use [excalidraw](https://excalidraw.com/) - [ ] learn about database concepts. Read [Database Internals](https://www.databass.dev/) - [ ] learn to answer [these questions](https://gist.github.com/sibelius/35eb01209c61ecaa76fc3f28d2f73467) - [ ] learn how to connect to a database and performe queries - [ ] learn how to expose a CRUD API REST and/or GraphQL - [ ] learn how to document the API using Swagger, [swagger-jsdoc](https://github.com/Surnet/swagger-jsdoc) is the best for it - [ ] learn how to test your API using Postman, and also automated using jest and supertest - [ ] learn how to consume other APIs using fetch --- # Learning Path DevOps URL: https://sibelius.github.io/zettelkasten/learning-path/learning-path-devops Tags: learning-path, devops - [ ] learn about [docker](https://docs.docker.com/get-started/) - [ ] learn about [kubernetes](https://kubernetes.io/docs/setup/) - [ ] practice with [minikube](https://kubernetes.io/docs/tutorials/hello-minikube/) - [ ] learn about CI/CD - [ ] practice with github actions - [ ] practice with [sadservers](https://github.com/fduran/sadservers) - [ ] practice with [labs.iximiuz](http://labs.iximiuz.com) - [ ] practice with [Killercoda](https://killercoda.com/) --- # Learning Path Docker URL: https://sibelius.github.io/zettelkasten/learning-path/learning-path-docker Tags: learning-path, docker, backend - [ ] learn why we need docker - [ ] learn how to define a Dockerfile - [ ] learn how to build a docker - [ ] learn how to list images - [ ] learn how to run docker with port forward - [ ] learn how to go inside docker to debug, running /bin/bash - [ ] learn docker compose - [ ] learn how to send a docker image to a reqistry (dockerhub or aws ecr) - [ ] learn how to deploy a docker to kubernetes, aws ecs or another platform - [ ] learn how to use docker volumes - [ ] learn how to use docker network --- # Learning Path Java URL: https://sibelius.github.io/zettelkasten/learning-path/learning-path-java Tags: learning-path, java, backend ### Java Core - [ ] Data types - [ ] Loops and conditions - [ ] Methods and functions ### Build a Java CLI - [ ] Command line interface basics - [ ] Parsing command line arguments ### Make a CRUD with Java - [ ] Connect with a database - [ ] Creating, reading, updating and deleting data from a database - [ ] Mapping database tables to Java objects with ORMs, use [Hibernate](https://hibernate.org/orm/) or [Spring Data](https://docs.spring.io/spring-boot/docs/current/reference/html/data.html#:~:text=Spring%20Data%20includes%20repository%20support,dependencies%20are%20on%20the%20classpath.) ### Build a Java package - [ ] Organizing code into packages - [ ] Creating and using your own custom packages ### How to consume Java package - [ ] Introduction to [Maven](https://maven.apache.org) and [Gradle](https://gradle.org) - [ ] Using external libraries ### How to set up and update packages - [ ] Upgrading and downgrading dependencies - [ ] Dealing with conflicts and versioning issues ### How to deploy Java - [ ] Introduction to web servers and servlet containers - [ ] Packaging a Java application for deployment - [ ] Deploying a Java application to a web server or a cloud provider ### How to consume requests using Java - [ ] Making HTTP requests - [ ] Handling exceptions and errors ### How to use databases in Java - [ ] Connecting to databases using JDBC or JPA - [ ] Using ORMs like Hibernate or Spring Data to simplify database interactions ### How to deal with files in Java - [ ] Reading and writing files - [ ] Creating, deleting and renaming files and directories ### How to do async in Java - [ ] Introduction to concurrency and parallelism in Java - [ ] Working with asynchronous I/O ### Websockets in Java - [ ] Introduction to WebSockets and real-time communication - [ ] Handling WebSocket events and messages ### Threads - [ ] Introduction to concurrency in Java - [ ] Creating and managing threads - [ ] Synchronization and locks - [ ] Dealing with thread safety issues ### Java Concurrency - [ ] Advanced concurrency concepts like Executors, Futures and Promises - [ ] Concurrent collections and data structures ### Techniques to improve performance - [ ] Using caching and in-memory databases - [ ] Designing for scalability and performance ### JSON in Java - [ ] Introduction to JSON format and parsing - [ ] Serializing Java objects to JSON and vice versa ### Java applets - [ ] Overview of Java applets and their uses - [ ] Building, deploying and running Java applets ### Security - [ ] Introduction to security concerns in Java - [ ] Best practices for authentication and authorization - [ ] Secure coding practices to prevent common vulnerabilities ### Java in Docker - [ ] Introduction to Docker containers and their advantages - [ ] Building and deploying Java applications in Docker containers ### Java serverless - [ ] Introduction to serverless computing and its benefits - [ ] Building and deploying Java applications on serverless platforms --- # Learning Path React URL: https://sibelius.github.io/zettelkasten/learning-path/learning-path-react Tags: learning-path, react - [ ] What is React props? - [ ] What is React state? - [ ] unidirectional data flow - [ ] how to create a React component - [ ] React hooks (useState, useEffect, and other basics ones) - [ ] Effects - [ ] How to handle event handlers (onClick) - [ ] React Context - share state for a subtree - [ ] Recoiljs - [ ] How to refactor a class component to hooks - [ ] Create React App - [ ] Learn what is a bundler, and how to use webpack, rollback and new solutions like vite. - [ ] Learn how to do data fetching using pure fetch with useEffect, using react-query, using relay - [ ] Learn how to do forms using formik - [ ] Learn how to handle navigation using react-router - [ ] Learn how to test using testing-library and jest - [ ] Learn how to code split - [ ] Learn Suspense - [ ] Learn ErrorBoundary - [ ] Learn about virtual dom and optimization - [ ] Learn how to type components using Typescript - [ ] Learn how to sync state to some external data like localStorage, cookies, querystring --- # Learning Path Web3 URL: https://sibelius.github.io/zettelkasten/learning-path/learning-path-web3 Tags: learning-path, web3 - [ ] learn blockchain concepts - [ ] learn ethereum - [ ] learn how to use metamask - [ ] learn how to use hardhat (https://hardhat.org/) - [ ] learn how to deploy and interact with a smart contract - [ ] learn common smart contract standards like ERC20 (token), ERC721 (nft), ERC1155 (opensea) - [ ] learn ipfs - [ ] learn how to read blockchain explorers like https://etherscan.io/ - [ ] learn how to use web3 and etherjs - [ ] learn solidity - [ ] learn ABI - [ ] learn about subgraphs and The Graph - [ ] learn how to send a tx - [ ] learn about eth RPC Methods - [ ] learn how to call a contract method - [ ] learn solana - [ ] damn vulnerable crypto wallet https://gitlab.com/badbounty/dvcw - [ ] damn vulnerable defi https://www.damnvulnerabledefi.xyz/index.html - [ ] smart contract hacking https://ethernaut.openzeppelin.com/ - [ ] best practices smart contracts https://consensys.github.io/smart-contract-best-practices/ - [ ] general blockchain patterns https://research.csiro.au/blockchainpatterns/general-patterns/ --- # learning structure URL: https://sibelius.github.io/zettelkasten/mentorship/learning-structure Tags: advice, mentorship, questions, async ## learning structure "How can I structure my learning to cover both the fundamental bases and emerging technologies in programming?" Focus on concepts Structure as a roadmap - things that you need to learn, and things that you need to build Check my [Learning Paths](https://sibelius.github.io/zettelkasten/category/learning-path) You need to learn the theory, but you need to build to get the practice, and understand how really works the new tech is just an implementation detail of existing concepts ## References - [Make it Stick](https://www.amazon.com/Make-Stick-Science-Successful-Learning/dp/0674729013) --- # Ledger URL: https://sibelius.github.io/zettelkasten/notes/ledger Tags: fintech, database - https://decimals.substack.com/p/things-i-wish-i-knew-before-building - https://docs.aws.amazon.com/amazondynamodb/latest/developerguide/WorkingWithItems.html#WorkingWithItems.ConditionalUpdate OpenPix - https://github.com/LedgerHQ/ledgerjs - https://github.com/digitalbazaar/bedrock-ledger-storage-mongodb HashChain Merkle Trees integrity double account - plain text - https://plaintextaccounting.org/ - https://www.youtube.com/watch?v=iN6mhI5hFt4&feature=youtu.be&ab_channel=AWSEvents intent to register a transaction --- # Links URL: https://sibelius.github.io/zettelkasten/notes/links Tags: zettelkasten, web <a/> href Links are how we link one content/idea to another Links are the base of internet/web Links are the base for Zettelkasten You can link another website, you can “link” a channel, you can link a Person, you can link a page Links representa references Links are the evolution of references, as you just need to click to know more Link more You link collections using joins or lookups The web of life good shows that isolated parts does not contains the properties of the whole The links bring second order effects to the web We use graphs and edges/links among nodes to represent relationship, like follow unfollow or friendship We can have unidirectional links or bidirectional links As we see in PageRank every node is connected even by a small probability We can use links to show a list of related things Related projects on github Related books --- # Looking for the First Job URL: https://sibelius.github.io/zettelkasten/looking-for-the-first-job Tags: job, hiring, hack [Versão em Português](https://gist.github.com/sermoud/b30a36058cdad95d4a048740307b8e71) This is a very common state for people in college, people before/after a bootcamp, or people from another area. The first job will be the hardest one to get, but it will get easier over time. The interview will be harder than the job itself After knowing a bit of programming, you need to practice a lot (like many hours, 10k hours) to get really good at it. read the book outliers about it (10k rule). gap I do recommend building open source projects with the stack you want to learn and improve. I recommend fullstack javascript If you get stuck you can ask for help on twitter/slack/discord communities and tag me. asking questions (even "dumb" ones) will help you process ask in public ([https://www.swyx.io/learn-in-public/](https://www.swyx.io/learn-in-public/)) so more people can learn from the same questions, and you can break your fear of showing that you don't know something I don't know a lot of stuff, the first thing is learning that you don't know something, and trying to figure it out how to learn that after all. You should apply to as many job posting as possible. Do all the code challenges to learn what the companies want you to know, you gonna learn a lot coding them. Do as many interviews so you can get good at interviews. All this practice will get you a job soon or later. it can take some time, you just need to persist. Always ask for feedback for the code challenges and interview, listening to feedback is the only way to improve and learn. There are many ways to learn something, so consume content in a variety of medium (text, video, audio, code), but also make sure that you are not passive learning. You need to be active and build stuff using something that you are reading/watching about it. [Advice for developers](./advice-for-developers) tweets about it [https://github.com/alinebastos/fullstack-challenges](https://github.com/alinebastos/fullstack-challenges) [https://github.com/felipefialho/frontend-challenges](https://github.com/felipefialho/frontend-challenges) [https://akinncar.substack.com/p/how-to-get-better-job-opportunities?s=w](https://akinncar.substack.com/p/how-to-get-better-job-opportunities?s=w) ## References [https://gist.github.com/sibelius/d8cf0d8b4a68bc36952a37006bb84109](https://gist.github.com/sibelius/d8cf0d8b4a68bc36952a37006bb84109) --- # Make it stick URL: https://sibelius.github.io/zettelkasten/notes/make-it-stick Tags: learning, books #book #learning Read multiple books in parallel to make them stick more Apply concepts in real life to make them stick Exercise/tests can help you Tests yourself knowledge to stop forgetting To learn more stop forgetting interleave content learning learning that takes effort stay deeper in your mind Learn and practice in a multitude of ways, variation is important to learn and be robust to transfer learn to other situations machine learning apply a lot of them it separates training from tests it learns from many different types of examples to learn similarities and divergences **substack** You can learn anything. I’m a self-learning since very early in my life (12 years old), not everyone try to optimize their learning process. Make it stick is a man awesome book with practical tips on how to improve your learning and memory process. \## Links Advice to Developers \## References [https://www.amazon.com.br/Make-Stick-Science-Successful-Learning/dp/0674729013](https://www.amazon.com.br/Make-Stick-Science-Successful-Learning/dp/0674729013) A [Workshop](./workshop) can be good to learn new things in a fast way, as you can watch an expert solve some problems. --- # Mappers vs Packers URL: https://sibelius.github.io/zettelkasten/notes/mappers-vs-packers Tags: learning, mental-models - https://www.reciprocality.org/Reciprocality/r0/index.html - https://www.datapacrat.com/Opinion/Reciprocality/r0/Day1.html - https://datapacrat.com/Opinion/Reciprocality/r0/index.html “knowledge packets” - little bits of truth (or errors) that we possess. most learning are almost entirely on the acquisition of knowledge packets things that one should or should not do. data to be retained and later recovered on demand we don't just stack up knowledge packets to gain each new knowledge packet we ask “why” a mental map gives us understanding of cause and effect within a situation. this understanding allow us to derive a solution to any problem within the situation, instead of attempting to select a rote-learned response. mathematicians call “isomorphism”, machine learning calls “invariance”, where you can reapply knowledge we rearrange our mental maps to product simpler expressions, we find it hard when the topic seemed complicated abstract pattern recognition without reflections, there can be no mental maps, only knowledge packets. reflection is daydreaming packing is when you stop youself asking “why” rote-learned memory - memória aprendida rote-learned response - resposta memorizada you try to find a knowledge packet that fits your situation. without a big map means that you often don't understand what is happening packers are overly concerned about certainty. they don't want to fix their mental model, they wanna validate that their mental model is correct. people are unwilling to think about something unless they are “certain” you fear of being found to be in the wrong they cannot believe that anything can be achieved unless someone else spells out in exact detail how to do absolutely everything --- # maximize impact in large organizations URL: https://sibelius.github.io/zettelkasten/mentorship/maximize-impact-in-large-organizations Tags: advice, mentorship, questions, async ## maximize impact in large organizations "How can I maximize the impact of my projects in large organizations?" Find team/products/features/projects that will maximize the impact inside your large organization if you are not in the best team, working in the hardest problems of your large organization. Your effort will be limited to your team impact. After finding the hardest problems of your organization and joining the team/squad that work on it. You should show that you can deliver the solutions for these problems with quality. You need to earn trust, and bring your ideas over RFC and win the team. You need to deeply understand the company business, products to understand what needs to be done to make your company succeed. --- # Memory Leak URL: https://sibelius.github.io/zettelkasten/notes/memory-leak Tags: nodejs, testing ``` node --expose-gc ./node_modules/jest/bin/jest.js --runInBand --logHeapUsage packages/main/src/modules/auth/admin/mutations/__tests__ ``` ``` node --inspect-brk --expose-gc ./node_modules/.bin/jest --runInBand --logHeapUsage packages/main/src/modules/auth/admin/mutations/__tests__ ``` - https://chanind.github.io/javascript/2019/10/12/jest-tests-memory-leak.html Memory leak when you allocated some memory and didn't dispose it. --- # Mental Models URL: https://sibelius.github.io/zettelkasten/notes/mental-models Tags: thinking, learning #mental #models A mental model is an [Abstractions](./abstractions) that let you think more clearly it is packages for our mind. - https://fs.blog/mental-models/ for instance: Occam’s Razor: prefer simpler models as they have less assumptions. simpler is better than complex The great mental models --- incentives shape behavior Incentives chance behavior Examples of short term incentives? How to align incentives? How to be motivated by uncertainty? A possible payoff is more compelling than a sure thing Winning is fun. Guaranteed winning is not. What is the least effort principles? Laziness is built deep into our nature --- # Mentions URL: https://sibelius.github.io/zettelkasten/mention Tags: content, mention --- # Mentorship Questions URL: https://sibelius.github.io/zettelkasten/mentorship-questions Tags: advice, mentorship, questions - [ ] tell me about yourself - [ ] send me your GitHub - [ ] send me your LinkedIn - [ ] what are your short-term goals? - [ ] what are your long-term goals? - [ ] what are you right now? only backend, only frontend, fullstack? - [ ] what stack do you use today? - [ ] what stack do you wanna learn? - [ ] what is your current company (if any)? do you have space to grow there? - [ ] how can I help you? - [ ] send me a list of questions that you wanna me to answer/help ## BackLink [asynchronous-mentorship](./asynchronous-mentorship.md) --- # Meta Creator URL: https://sibelius.github.io/zettelkasten/notes/meta-creator Tags: creators, writing - https://www.swyx.io/meta-creator-ceiling/ --- # Meta programming URL: https://sibelius.github.io/zettelkasten/notes/meta-programming Tags: programming - https://frantic.im/meta-language spectrum of abstraction - https://gist.github.com/markerikson/02d5846040a1bf4a02147990df3c3599 --- # mid level developer URL: https://sibelius.github.io/zettelkasten/mentorship/mid-level-developer Tags: advice, mentorship, questions, async ## mid level developer "What do I have to do to become a mid-level developer?" Always ask for more responsibilities and tasks. Always challenge yourself. To increase the amount of weight you lift in the gym, you need to progressively lift heavier weights. --- # Mongodb URL: https://sibelius.github.io/zettelkasten/notes/mongodb Tags: database, mongodb Mongodb is a nosql database that bring a lot of innovation in the javascript ecosystem Mongo let us do complex queries using aggregation framework We can use $lookup to join 2 collections, or many other operations as we need Mongo is great because it is close to javascript to do queries and updates. compound indexes - https://emptysqua.re/blog/optimizing-mongodb-compound-indexes/ - http://www.askasya.com/ To speed up your queries move most of index filtering processing to the top - https://amyportela.github.io/posts/mongodb_index_explain.html --- # MVP URL: https://sibelius.github.io/zettelkasten/notes/mvp Tags: startups, product Minimum Viable Product needs to deliver value to the user. It should feels a [Gap](./gap) of user needs. MVP does not have all the features the users wants, but it has/solves to core user workflow --- # My RSS Feed URL: https://sibelius.github.io/zettelkasten/notes/my-rss-feed Tags: reading, learning The idea of this note is to contain a list of blog posts, sites and other news resources that I can search This will evolve as I change my interests over time. - [x] Steve - https://sites.google.com/site/steveyegge2/blog-rants - http://steve-yegge.blogspot.com/ related to [RSS](./rss) --- # Naval URL: https://sibelius.github.io/zettelkasten/notes/naval Tags: twitter, people #naval #twitter https://twitter.com/naval Naval is the founder of Angel List, and provide great advices on twitter in form of twitter threads It also has a blog post, runs a newsletters and do podcasts https://nav.al/finding-time ## Links [Twitter](./twitter) Advice to Developers --- # Newsletters URL: https://sibelius.github.io/zettelkasten/notes/newsletters Tags: writing, newsletter #newsletter #writing Newsletters have a different incentive than normal blog posts When you do a blog post, one post is not related to another. The likes from one blog post won't affect another one. When you are building a newsletters, the incentive is to keep producing content in a regular basis to grow your audience (subscribers) Improve [First Impression](./first-impression) ## Links --- # NoCode URL: https://sibelius.github.io/zettelkasten/notes/nocode Tags: nocode, programming NoCode is building software using "code" (pure text). It is a higher level way to build software. You can build software using pre built building blocks ([The era of Content Builders](./the-era-of-content-builders) ). You can drag and drop blocks and see they running They follow WYSIWYG (what you see is what you get). We have a variety of nocode to build websites: WebFlow, Wix, Canva For backend the options are more limited: DarkLang - https://darklang.com/ One benefit if that you don't have the deploy flow anymore, everything will do is deploied already. You just need to move from dev to staging to production. The feedback loop is much faster. One drawback is that people without coding background will build back data layers, making the nocode application not scale well. We can think of nocode as another [Thinking Tools](./thinking-tools), as we can build fast prototipes, and then just join the pieces to build it up. What is missing to NoCode catch up? Usually you can't compose nocode? Can you build a design system in nocode? How do we share nocode ? Do we need a package manager for nocode? Incremental approach for you nocode --- # Node Modules URL: https://sibelius.github.io/zettelkasten/notes/node-modules Tags: nodejs, npm #node #npm #packages node\_modules is where node keeps all their dependencies one good thing of node\_modules is that you can easily modify an external package code inside node\_modules and test your fix before sending a pull request node\_modules also applies the colocation pattern, where the dependencies are close to the project If you check C,C++,python,ruby, GO and other, the deps are not close to where there are used. So it is much harder to modify deps and contribute back if you use monorepo with yarn workspaces you gonna have many node\_modules. One at the root and one at each package level. Yarn will hoist same package version range to the node\_modules in the root. Hoist caused many problems as most tool have the wrong assumptions that node\_modules is besides the package, and also the package if your node\_modules is big it is be slow to load packages, as node tranverse the node\_modules to find it reduce node modules techniques - https://tsh.io/blog/reduce-node-modules-for-better-performance/ - use `-production` flag - node-prune / modclean https://gist.github.com/greim/e8e1bd3b1ed08a7505ce - move deps to devDepencies - improve .npmignore only pick select fields on package.json - https://github.com/n1ru4l/use-async-effect/blob/7da6f9915832d63abcf6c93775e8dcbdd70f0cb6/scripts/prepare-deploy-package-json.js ```javascript const pickFields = [ 'name', 'version', 'license', 'author', 'homepage', 'repository', 'bugs', 'keywords', 'module', 'main', 'typings', 'dependencies', 'peerDependencies', 'files', ]; ``` ## Links Colocation --- # O(1) - Constant Time URL: https://sibelius.github.io/zettelkasten/notes/o-1-constant-time Tags: productivity, learning How can you solve anything fast? At a constant time? Everything that you solved before becomes 0(1) to solve again It basically says that any solution that you come up before should make it straight forward to implement again. To be [Productivity](./productivity) , you need to be unproductive for many hours. --- # Open Source URL: https://sibelius.github.io/zettelkasten/notes/open-source Tags: opensource, community #community #opensource #code Open Source is when you share you code in the public to be consumed to somebody else My history with open source started when I was working in an android app to track sensors information to build a machine learning model my contribution was inside an issue instead of a pull request At that time I didn't understand much about git, git workflows, branches and so on and so forth When I started working on PontoTel I contribute to some angular packages in a more mainstream way. When starting working in react native (very early, lots of stuff to build), I contribute much more as I just needed to change some code inside node\_modules and send a pull request based on my forks. I've opened a lot of issues in many repos showing all the "bugs", "problems" and "limitations" that I've found when development Brand Lovers. We did revamp the react-native-camera based on expo-camera because we needed to do facial recognition on Gol app and rctcamera couldn't handle it. We decided to copy and paste the code (giving attribution to expo), because back them expo-camera was too tight to "expo framework". After all this the RNCamera diverged a lot from expo-camera. I hope someday they will be joined again. ## Links [Community](./community) --- # Opinionated URL: https://sibelius.github.io/zettelkasten/notes/opinionated Tags: programming #opinionated One thing is said to be `opinionated` when it has made some assumptions, and require you to follow some predefined conventions Opinionated tools make easier to beginners Defer your opinions to opinionated tools so you can focus on what matters ## Links [Relay](./relay) --- # Outliers URL: https://sibelius.github.io/zettelkasten/notes/outliers Tags: books, learning - https://www.amazon.com.br/Outliers-Story-Success-Malcolm-Gladwell/dp/0316017930 Outliers is a book that tells the history of success of people The basic concept is that it takes 10k hours of deliberate practice to have great success. Bill Gates had 10k hours when he started Microsoft, he had access to a computer in their school that he hacked to stay coding many hours. **Math Concept** An outlier can be a dot outside a line/curve An outlier can be anomaly from the rest of points. You want to be an outlier Advice to Developers --- # Outsourcing the blame URL: https://sibelius.github.io/zettelkasten/notes/outsourcing-the-blame Tags: behavior People like to outsource their own blames When something goes wrong with these people, they try to finding something to blame The fault is never their own --- # Package Size URL: https://sibelius.github.io/zettelkasten/notes/package-size Tags: nodejs, performance #performance #node #node\_modules #size npm package sizes matters if you reduce your project dependencies your node\_modules will be small and it will be fast to run `yarn install` and also to cache and restore cache Feedback-server has \~2GB of node\_modules Feedback-admin has \~2GB of node\_modules - https://github.com/PlayMa256/node-modules-analyzer ## Links [Productivity](./productivity) --- # Page based pagination with Connections URL: https://sibelius.github.io/zettelkasten/notes/page-based-pagination-with-connections Tags: relay, graphql There are no public examples of doing paged based pagination with Connection in [Relay](./relay) . Page based is a very common pattern in business apps, so it should be easy in Relay. Artsy made some prior work - https://artsy.github.io/blog/2020/01/21/graphql-relay-windowed-pagination/ but it feels not good to me - https://andrewingram.net/posts/demystifying-graphql-connections/ We can augment connection arguments to also include limit and offset to enable page based pagination. We also need to modify Connection Handler (https://github.com/facebook/relay/blob/master/packages/relay-runtime/handlers/RelayDefaultHandlerProvider.js#L25), to make sure the edges are properly added to the right connection - https://github.com/sibelius/relay-workshop/blob/master/solutions/07-useRefetchableFragment/src/comment/PostComments.tsx#L65 --- # Paid Consulting for Startups URL: https://sibelius.github.io/zettelkasten/paid-consulting-startups Tags: consulting, paid, startup ## Paid Consulting for Startups 1 sync call per month Async chat with me everyday Things I can help you with: - Structure your development team processes: daily, product management, code review, automation, ci/cd - Validate your team, idea, product and market - Reduce scope for your Minimal Viable Product (MVP, and define the MVP, what to focus on, and how to validate it - Make you reach Product Market Fit (PMF), using cohort to identify problems in your onboarding and product - Scale your process and team ## Price US$ 120 per month ## How to pay Pix --- Paypal: sibeliusseraphini@gmail.com Patreon: [https://www.patreon.com/sibelius](https://www.patreon.com/sibelius) Github Sponsors: [https://github.com/sponsors/sibelius](https://github.com/sponsors/sibelius) --- # Paid Mentorship for Developers URL: https://sibelius.github.io/zettelkasten/paid-mentorship-developers Tags: advice, mentorship, paid, developer ## Paid Mentorship for Developers 1 sync call per month Async chat with me everyday Things I can help you with: - I can help you get your first job - I can help you get a better job - I can help you get to a more Senior Level - I can help you transition from IC to management - I can help you manage your team - I can help you manage your product - I can help you fix technical debt, improve your archicture and data modeling skills ## Price US$ 120 per month ## How to pay Pix --- Paypal: sibeliusseraphini@gmail.com Patreon: [https://www.patreon.com/sibelius](https://www.patreon.com/sibelius) Github Sponsors: [https://github.com/sponsors/sibelius](https://github.com/sponsors/sibelius) --- # Pain Minimization URL: https://sibelius.github.io/zettelkasten/notes/pain-minimization Tags: behavior, programming - https://sites.google.com/site/steveyegge2/nonesuch-beast We avoid switching from products/languages and more to before of pain minimization. We only change when we identify the new product is way better and worth the change. --- # Parsers URL: https://sibelius.github.io/zettelkasten/notes/parsers Tags: programming, compilers - https://medium.com/@gajus/parsing-absolutely-anything-in-javascript-using-earley-algorithm-886edcc31e5e Early algorithm - https://nikic.github.io/2012/06/15/The-true-power-of-regular-expressions.html --- # Paypal mafia URL: https://sibelius.github.io/zettelkasten/notes/paypal-mafia Tags: startups, culture http://paulgraham.com/paypal.html Recognize young people with extraordinary ability Extreme Focus - everyone should only have #1 initiative Dedication to individual accomplishment - each innovation were driven by a single person Refusal to accept constraints, external or internal - if you can't solve a problem, someone else will solve this for you. Driven problem solvers: smart, driven problem solvers, you just need to be able to solve any problem that appeared Self-sufficiency: figure it out how to achieve your goals Extreme bias towards action: you should ship to production Willingness to try: try new directions often Data-driven decision making: do your homework, bring your data to support your decisions. Radical transparency on metrics: share your metrics and let the team extract info Vigorous debate, often via email: every critical issue needs a champion and critics Extreme Pressure: be able to work on extreme pressure --- # People Recommendation URL: https://sibelius.github.io/zettelkasten/notes/people-recommendation Tags: career, reputation Young people does not realize how they are killing their social proof Why I can't recommend you anymore I can't recommend you anymore because you lie You lie that you are going to commit to that company, project, but you just disappear I can't recommend you because you do not take responsibility for your actions, you blame others instead of saying that you did something wrong. I can't recommend you because you don't care. You don't care about my friends. People came to me for recommendations because they know my reputation. They know I know a lot of good developers because I keep mentoring a lot of them. They know that I won't recommend a bad developers (not only bad code), but bad matters. A good reputation can open a lot of good opportunities for you A bad reputation will close many of them. --- # Perishable URL: https://sibelius.github.io/zettelkasten/notes/perishable Tags: management, startups We have perishable problems and opportunities A perishable problem is one that is small at first and can get big fast, so you need to handle it quickly Example: fire, it is easier to handle small fires. A perishable opportunity will only be available to the one that grab it first. Example.: the first company with a covid tracking solution will win the market. The first vaccine will earn a lot of money with roalties Decentralization can help you solve these perishable problems and to use the opportunities quickly Escalation can help find important problems We a mission to align decentralized resources A mission is a declarative way of the final state It does not matter what steps or how to achieve this final state Make intent clear “If you are going to worry about it, I won’t” What is our main effort? Main effort of your product? Core features that differentiate from another --- # Personal CRM URL: https://sibelius.github.io/zettelkasten/notes/personal-crm Tags: productivity, networking CRM is a Customer Relationship Managment CRM is usually used in business to track interaction with potential customers We think in a Personal CRM as a tool to track interaction with people from our life. If you wanna remember somebody, we need to make them findable Adding them to our zettelkasten could be a good idea. Add info about the person Add people related to this person The company they are working on or worked for where they live what are they interesting in what books they recommend their ideas - https://www.monicahq.com/ [Search](./search) [Human Search Engine](./human-search-engine) --- # Personal Website URL: https://sibelius.github.io/zettelkasten/notes/personal-website Tags: writing, career #digitalgarden #blog #site #personal #identity I want to design a blog post for me. I didn't do it because I'm too perfectionist. This should be my output digital garden What are the use cases of my website? It should show my contacts and social network it can contains a list of blog posts (written content) it can contains my proof of work (work projects, open source projects, talks) it should contains my talks and slides it can also contains some videos or podcasts it should accept feedback it should be able to hire me to do code review What is missing? - [ ] I need a design - [ ] I need a domain - [ ] I need to ship a very bad first version of it ## Links [CSS](./css) [Design](./design) - https://utteranc.es/ Enable comments using github issues Buy me a coffee using gumroad api --- # Playground URL: https://sibelius.github.io/zettelkasten/notes/playground Tags: javascript, tools Playground Repl iPython Run javascript code in the browser, multi line - it should work locally - it should work with md(x) - it should works with react components - it should work with node code - each to add more blocks of commands - see result of each block `node-playground myfile.mdx` - https://github.com/lidangzzz/hedgehog-lab - https://starboard.gg/ - https://github.com/googlecodelabs/tools - https://github.com/fonsp/Pluto.jl - https://medium.com/better-programming/creating-a-simple-live-react-editor-a6cc17e77beb - https://2ality.com/2014/01/eval.html eval vs new Function - https://irian.to/blogs/bundle-your-javascript-code-from-scratch/ --- # Podcasts URL: https://sibelius.github.io/zettelkasten/podcast Tags: podcast, content, audio --- ---