# 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.

## 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
---
---
---
---
# Practical Benefits of an Event Driven Approach
URL: https://sibelius.github.io/zettelkasten/notes/practical-benefits-of-an-event-driven-approach
Tags: event-driven, architecture, writing
feedback
Reviewer 1
we can't easily just reprocess `newPayment` without reprocessing the whole `transactionSync`
example of this
if `newPayment` had a bug it won't affect `transactionSync`
you can save events to reprocess then
example of monitoring, apm
---
Reviewer 2
Very good article with interesting content.
Woovi's approach is very like the approach that we are using at another company for payments notifications.
1\. “Three successive sentences begin with the same word”:
> To code newPayment you need to understand how transactionSync works, more cognitive load
> To test newPayment, you need to test transactionSync together, as a consequence you have a more complex test with more complex fixtures and test scenarios.
> To refactor newPayment, you could break transactionSync, these codes are highly coupled.
2\. “This sentence does not start with an uppercase letter”:
To the following phrases:
> we can't easily just reprocess newPayment without reprocessing the whole transactionSync
> we can easily reprocess newPayment without reprocessing the whole transactionSync
---
Reviewer 3
um pequeno typo no texto:
To code newPayment you DON’T need to understand how transactionSync works, fewer cognitive load
---
Reviewer 4
"This article aims to give a real world example and it this clear." -> "This article aims to give a real and clear example."
"The bank sends a new transaction webhook for Woovi backend" -> replace "webhook to Woovi's backend"
---
coproduto
To code newPayment you do need to understand how transactionSync works, fewer cognitive load
acho que era "you do NOT need to understand"
E nesse caso é "less", não "fewer"
Fewer só se usa com coisas contáveis
Tipo, você pode falar "fewer potatoes" mas não "fewer water" (porque batatas são contáveis, mas água não é)
eu consideraria "cognitive load" incontável
Fewer também só se usa em comparações
Você pode considerar que tem uma comparação implícita aí, mas ainda tem o problema da contabilidade
De resto eu curti a ideia do post
Mas eu acho que não ficou muito claro como que isso funcionaria sem usar microsserviços
Eu imagino que você esteja usando um job queue ou algo do tipo?
Talvez fosse bom explicitar como é que esses eventos vão ser processados sem usar serviços
pq do jeito que está parece que você só está jogando um evento pro vácuo e de alguma forma o processamento acontece
Outra coisa também é que não ficou muito claro por que é que as coisas seriam desacopladas
Afinal, você pode escrever a função newPayment de forma desacoplada sem usar eventos também, só tem um ponto de acoplamento necessário entre os dois que é o payload que essa função vai receber
E esse continua, n
né \*
os dois lados têm que concordar com o formato do evento
Então talvez fosse bom explicitar de que tipo de acoplamento você tá falando
---
# Practical Investing
URL: https://sibelius.github.io/zettelkasten/notes/practical-investing
Tags: investing, economics
- https://statusinvest.com.br/
[Investing](./investing)
pesquisar ações e fundo imobiliarios com yield grande de dividendos
mensais
bancos, eletricas, seguradoras
operadora `Clear`
Toro investimento
---
# Principles of Product Development Flow
URL: https://sibelius.github.io/zettelkasten/notes/principles-of-product-development-flow
Tags: books, product, productivity
#book #product #development #flow
- https://www.amazon.com.br/Principles-Product-Development-Flow-Generation-ebook/dp/B00K7OWG7O/ref=sr_1_1?__mk_pt_BR=%C3%85M%C3%85%C5%BD%C3%95%C3%91&dchild=1&keywords=principles+of+development+flow&qid=1590602126&s=books&sr=1-1
This book is about techniques to improve your product development flow
In manufacturing you generate value creating the same product
In product development you only generate value modifying your existing product
Fullstack handles better variable demand
you can model backend and frontend engineer as processors of queues
If you have variable demands
Sometimes you gonna have much work on backend and sometime more work on frontends
In both scenario you gonna delay your tasks product development
Fullstack acts as a single poll of resources that can handle any item in the queue, causing less delays
Fast refresh is about iteration speed
Integration speed reduces defects
human version of this book
- https://www.amazon.com.br/Phoenix-Project-DevOps-Helping-Business/dp/0988262592?tag=lomadee0850009731-20&ascsubtag=226536112767z176z1590421503440&lmdsid=034436112767-176-1590421503440
## Links
[Productivity](./productivity)
[Small Batches Sizes](./small-batches-sizes)
---
# Private Community
URL: https://sibelius.github.io/zettelkasten/private-community
Tags: private, paid, community, developer, startup
## Private Community
A discord community to discuss with me and high-minded people about your startup, product, and software development.
High-level discussions with Builders.
## Price
US$ 10 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)
---
# Product Development
URL: https://sibelius.github.io/zettelkasten/notes/product-development
Tags: product, startups
- https://www.defmacro.org/2013/09/26/products.html
3 buckets
- a gamechanger: people buy because of this feature
- a showstopper: people won't buy without it, but adding it won't generate demand
- a distraction: feature with no value added
some gamechangers features are an aggregate of features
avoid ad-hoc decisions
use missing as a function to make decisions
---
# Product Vision
URL: https://sibelius.github.io/zettelkasten/notes/product-vision
Tags: product, strategy
- https://www.svpg.com/vision-vs-strategy/
Vision
Strategy
Tactics
---
# Productivity
URL: https://sibelius.github.io/zettelkasten/notes/productivity
Tags: productivity
#productivity #fast
To be productivity we need our workflows to be fast
We also need our workflows to be easy to use
creating a new pull request should be fast
creating a new test should be run
run a test should be fast
iterations should be fast
fast refresh, hot reload enable a fast feedback loop
a fast laptop and mobile phone makes you more productivity
## Links
[Second Brain](./second-brain)
https://pmarchive.com/
---
# Programing Bottom Up
URL: https://sibelius.github.io/zettelkasten/notes/programing-bottom-up
Tags: programming, abstractions
Programing Bottom Up is about creating the low level building blocks improving the language to create your product.
With the correct building blocks you have a smaller code, as they solve more of your problems
building blocks makes it easy to reuse code
it had a Typo ( not really)
Building Block
[The Nonesuch Beast](./the-nonesuch-beast) related to this, as if you work with simple low level blocks you avoid crazy requirements and make your product easy to use, and let the user create their own workflows.
A low level building block is an [Abstractions](./abstractions) in the right place
---
# Programming Fundamentals
URL: https://sibelius.github.io/zettelkasten/programming-fundamentals
Tags: concepts, implementation
## Programming fundamentals
- variables
- data structures
- function
- type theory
- control flow (conditionals, loops)
- paradigms (functional, objected oriented)
- tests
- debugging
- algorithm
- Software Development Life Cycle (SDLC)
---
# project transitions
URL: https://sibelius.github.io/zettelkasten/mentorship/project-transitions
Tags: advice, mentorship, questions, async
## project transitions
"How can I transition from personal projects to more complex or commercial technology projects?"
The only way is to go to production.
You can't learn using only personal projects that do not have outside users/customers.
You need real users to provide feedback to see if your product is good or bad, and if your code is good or bad.
You need a side project with real users, or you need to get freelancers or a real job
At Woovi we are learning a lot everyday because we have more and more users using our product at scale.
---
# Proof of Work for Developers
URL: https://sibelius.github.io/zettelkasten/notes/proof-of-work-for-developers
Tags: career, learning
As a developer you can have many types of proof of work
You can have a portfolio website that shows all your past projects (a few dots of your path)
You can have some contributions to open source projects (more dots of your path)
You can use learn in public strategy to have as many dots as possible about what went right and what went wrong in your learning path
People that can create new things are rare
You can have a CV or Linkedin (worse proof of work), as anybody can say anything on it.
---
# Q&A College
URL: https://sibelius.github.io/zettelkasten/qa-college
Tags: qa, college
> As perguntas são muito mais relacionadas à graduação.
> Você acha que o fato de possuir uma graduação na USP te ajudou? Em quais aspectos?
Todo conhecimento acaba te ajudando. Toda a minha base teórica me permite aprender coisas novas mais rapidamente.
> Se você escolhesse não ir para a faculdade, você acha que estaria como?
Minha família é não é rica, acredito que a faculdade me deu confiança e que o diploma da USP me ajudou a conseguir o primeiro emprego.
A faculdade não é só conhecimento. Você faz amigos, você curte as festas, morar sozinho te faz crescer como pessoa, você aprende com a diversidade das pessoas, eu morei na república 7 eh Poko te me ajudou nas minhas social skills. Eu consegui fazer iniciação científica que melhorou meu modo de pensar, eu tive artigos aceitos em conferências e apresente 2 vezes internacionalmente, França e Polônia, tudo pago pela USP. Eu também consegui fazer o ciências sem fronteiras, 1 ano nos USA, que me tornou fluente em inglês e abriu minha cabeca para o mundo.
Se eu tivesse otimizado minha vida no começo para ganhar mais eu saberia menos hoje.
> A experiência de mercado acaba sendo equivalente à uma graduação, ou até melhor?
Conhecimentos distintos, ambos são importantes.
> O que você de hoje falaria para o seu eu de 18 anos, quando estava entrando na faculdade?
Eu tentaria ler mais sobre startups, sobre empreendedorismo. Eu caí no mundo das startups por acaso. Eu comecei a fazer trilha graduação mestrado, fiz 1 semestre fãs matérias de mestrado, meio orientador foi para outro país e eu resolvi aplicar para um estágio de verão na PontoTel. No final eu descobri que as pessoas mais inteligentes do mundo trabalham com negócios e startups.
> Por que optar por fazer uma faculdade e não somente ser autodidata e estudar somente as coisas que o mercado pede?
Nem tudo é trabalho ou dinheiro. Se você tiver condições de se manter na faculdade eu faria e focaria em aprender o máximo possível.
As coisas que o mercado pede sempre vai mudando, você precisa estudar os conceitos que são timeless. Os conceitos não mudam. A base.
Partindo da teoria que a gente aprende muito mais em startups ou empresas, por que não ficar 4 anos em empresas invés ficar 4 anos ou mais em uma graduação?
Ao optar por não cursar uma faculdade, você tem que mostrar para o mundo que você é muito bom. Isso é o caminho mais difícil, mas escala melhor ao longo prazo. É antifragil.
> Você utiliza ainda a parte de exatas da graduação na sua carreira?
Matemática, grafos, algoritmos ainda utilizo diretamente e indiretamente.
Todo conhecimento te ajuda para resolver algum problema novo.
Você tem que focar em coisas que te permitam resolver o maior número de problemas
---
# Reading experience
URL: https://sibelius.github.io/zettelkasten/notes/reading-experience
Tags: frontend, design, writing
#digitalgarden #digital #reading #blog
When designing a blog post with text content you need to think about the line length and the correct css unit to handle it
Good defaults
`70ch`
`35-40em`
## Links
[CSS](./css)
[Design](./design)
## References
https://www.swyx.io/writing/line-lengths/
---
# Reality has a lot of details
URL: https://sibelius.github.io/zettelkasten/notes/reality-has-a-lot-of-details
Tags: learning
- https://johnsalvatier.org/blog/2017/reality-has-a-surprising-amount-of-detail
It is related to being Realistic of Principles Ray Dalio
Being realistic is to listen to reality, and learn all details of it.
It does not matter all your knowledge of your backend if you want to be productive in [CSS](./css)
CSS has a lot of details, so you need to learn, practice and learn all of them to be productive
Cooking has a lot of details, just reading the recipe won't make your a good meal
Books can't tell all the details
> Reading all blog posts about Server Side Rendering (SSR) is not enough to properly implement it in a production app. The same is valid for most of the development tasks, like setting up a react native project, fixing a webpack weird bug and so on. You need to get your hands dirty with "reality" to understand what tiny details that matter.
- https://dev.to/sibelius/adding-server-side-rendering-to-a-relay-production-app-30oc
---
# Relay
URL: https://sibelius.github.io/zettelkasten/notes/relay
Tags: relay, graphql, opensource
I'm known in open source mostly by my Relay contributions
I'm also know because of react-native contributions
Relay is a data fetching that scales, it let you declare which data each components needs, and it will get the data for you
Relay only works with GraphQL server, it has this hard requirements to make it possible to achieve their goals
Relay is made by Facebook and they work close to React team
I'm generating content about Relay since the beginning as the docs are "hard" to follow
My first contributions was most blog posts in medium, then I've made a bigger relay modern course that was more a set of slides.
React Europe invited me to give a workshop about new Relay apis, so relay workshop is a set of 12 exercises that teach most of the Relay concepts in a practical way building a social network.
I also gave a lighting talk about Relay concepts in less then 10 minutes
https://github.com/sibelius/relay-modern-course
https://github.com/sibelius/relay-workshop
Relay Concepts React Europe - https://www.youtube.com/watch?v=FszbrKybdOY
## Links
[Community](./community)
Colocation : Relay colocate data besides component
---
# Release every time
URL: https://sibelius.github.io/zettelkasten/notes/release-every-time
Tags: devops, deploy
avoid git flow
ci/cd automated
automated tests
staging environment
rollout
lint
apm
error
monitoring
alertas
decoupled services - release only parts that changed
- https://www.honeycomb.io/blog/deploys-wrong-way-change-user-experience
---
# Remote Cache
URL: https://sibelius.github.io/zettelkasten/notes/remote-cache
Tags: tooling, ci
- https://github.com/DylanVann/beezel
We want to build less
The basic idea of incremental build is to check the timestamp of each file, and check which files has changed from the last build, and only rebuild them.
A remote cache would help us achieve this in our local and remote machines
It would also make our CI faster.
what is the missing POC of what needs to be build or tested?
- http://neugierig.org/software/blog/2020/05/ninja.html
The article above explain how a bazel like system works.
---
# Repeat yourself
URL: https://sibelius.github.io/zettelkasten/notes/repeat-yourself
Tags: learning, teaching
If you wanna teach someone something you need to repeat yourself
If you wanna something to stick ([Make it stick](./make-it-stick)), this thing should show up more then once.
When doing UX try to show the same action in different places and context, so you can have more chances of the user using it.
When [Learning a new language](./learning-a-new-language), you need to see the same words and structure more than once to remember then. You also need to see them in different context, in a variety ways.
When learning to solve a problem or coding, you need to solve variety of problems with the same concepts to master it
We pass many different training data to machine learning algorithms so they can learn and learn all the variantions. So you can become invariant to changes, much like SIFT algorithm.
SIFT can detect the same image in different orientation, scale,
You want to be `invariant` to be able to transfer the knowledge to other context.
I can only sum apples.
- https://www.sicara.ai/blog/2019-07-16-image-registration-deep-learning
---
# Research
URL: https://sibelius.github.io/zettelkasten/notes/research
Tags: learning, research
#research
Research is when you look for a lot of related of something that you wanna understand more. (a topic, a problem, a solution, a book, a person).
When you are looking to solving a problem (a coding one), you first search for the existing solutions. As prebuilt packages that you can just install and keep using.
You also check books, blog posts to check how it works with pros/cons
Research happens before Writing.
You research to find prior art, and not reinvent something that already exist.
---
# Resolution
URL: https://sibelius.github.io/zettelkasten/notes/resolution
Tags: writing, productivity
We can separate medias in low and high resolution.
Low resolution gives you less detail and you need to fill what is missing with your own context.
High resolution gives you much more detail, so you don't have any misunderstanding
When production content, you can produce using low or high resolution.
I think the first draft of anything should be low resolution
When doing the first version of the code you should not care about all the tiny details, keep the high resolution to the end.
When doing the first design, do the first draft with "low" quality, with less details, maybe even without colors, prefer a wireframe.
When building a house you build first the structure and you finish the house wall paint color in the end
If you try to product both low and high resolution at the same time you going to struggle.
You can think of it as building your content/code/house in layers.
Each layer will have more details, and more resolution than the last one.
[Information](./information)
---
# Responsive
URL: https://sibelius.github.io/zettelkasten/notes/responsive
Tags: frontend, css
Responsive Read
There are many things that you need to consider to make a website responsive
layout
images
video
- https://gist.github.com/mdang/50e5fa253597f91139ac
[CSS](./css)
Book
- https://abookapart.com/products/responsible-responsive-design
Responsive patterns
- https://bradfrost.github.io/this-is-responsive/patterns.html
---
# Reverse study
URL: https://sibelius.github.io/zettelkasten/notes/reverse-study
Tags: learning
The problem was to identifier the speaker for a given audio
My first approach was the research about state of art of speaker recognition
Then I implemented and tested a few, and choose the best one
The implementation also included the data cleaning and preprocessing part.
After that I need to expose this in a API
Then I read how to build an API in Python and choose flask to it
The api would accept new training data and will score new voices
---
# Risk
URL: https://sibelius.github.io/zettelkasten/notes/risk
Tags: decision-making, productivity
You can't avoid risk in your life.
Every decision will take has an inherent risk on it
You need to risk to get more upside
Design your life to be able to take more and more risks overtime, so you can get more upside
To be more [Productivity](./productivity) , you need to bet in other models and techniques that could make you less productive in the short term but it will better in Long Term
---
# Root Cause Analysis
URL: https://sibelius.github.io/zettelkasten/notes/root-cause-analysis
Tags: debugging, typescript
Most developers don't know how to find the root cause of a bug.
The root cause is the "real" cause of a problem.
Let's see any example with typescript, let's see this code:
```ts
const user = await User.findOne();
```
For some reason typescript is inferring user having type any instead of IUser.
If you don't go find the root cause of this, you gonna fix this like this:
```ts
const user: IUser = await User.findOne();
```
now, user has the right type, but if you another developer uses findOne it will be the type any again.
You solved your problem, but you didn't solved the real cause of the problem
The right way to solve this is to ask "why findOne is inferring the wrong type?".
Then you go over mongoose typedefs, and realize that someone made a regression and cause this trouble
So you send a fix to mongoose types, apply a patch-package in your repo, and this is fixed to everybody in your team.
If you don't do this, you gonna propagate the error in the whole codebase
---
# RSS
URL: https://sibelius.github.io/zettelkasten/notes/rss
Tags: reading, content
#newsletters #content
RSS let websites publishes new content notifying who subscribes to the channel
When you build/curate your `input` , things that you want to read, you have a much better experience
People usually consume data from twitter/reddit/medium and other websites, they are not curated to your workflow and has a lot of noise and unworth information
the cons part of curate your `input` is that it takes much more time to refine it
pros: much better content with less bad ones
## Links
[Newsletters](./newsletters)
---
# SaaS
URL: https://sibelius.github.io/zettelkasten/notes/saas
Tags: startups, business
#business
SaaS is Software as a Service.
Instead of customer paying an unique time for a software in a box, it pays for a service and the deliver of the software in a daily/monthly basis.
Opposite to [Software House](./software-house) that deliver the software once and that's it.
it is hard to sell a digital good, as the sound industry discovered.
Users will pirate their mp3 to listen to music.
The subscription means that you're going to deliver value over time.
A subscription only makes sense if you keep delivering value over time.
A SaaS uses a subscription as a two way incentive to deliver value over time.
At Entria we started as a [Software House](./software-house) development software for big companies like Natura and Gol.
Then we transitioned to Feedback House, our SaaS product.
SaaS has a Long Term incentive, as we need to keep improving our product to sales to more users and keep current users happy without churning.
- https://divinations.substack.com/p/the-open-podcast-ecosystem-is-dying
---
# Sapiens
URL: https://sibelius.github.io/zettelkasten/notes/sapiens
Tags: books, history
the history of Homo sapiens
What made Homo sapiens unique?
Thinking capabilities
Believing in invented orders
Gossip → trust
collective consciousness is when everybody believes in an imaginary order
Big animal was extinct because it needs a lot of food and they reproduction cycle was slow.
Homo sapiens used tools to hunt
Agriculture was a luxury trap
A worse life but it made humans to reproduce more
Males always dominated, but not sure why
Strong, motherhood.
money changes values for heartless supply demand rule
---
# Saving a project on fire
URL: https://sibelius.github.io/zettelkasten/notes/saving-a-project-on-fire
Tags: engineering, testing, management
Have you ever been in a project that was on 🔥?
A project is on 🔥when it passed the deadline. When the developer team are put on a "war room" to make sure there is no distractions to finish the project.
The project is on 🔥when there are a lot of basics bugs, like when you click a button it just blow off your application.
The project is on 🔥when new code of a bug fix causes more harm them good, you fix 1 thing to discover you break 2.
It just feel you won't leave this project anymore \\o/.
---
**How to save a project like this?**
To fix a project like this we need 3 things: automation; types and tests;
The first thing to setup is automation: CI/CD.
CI/CD will make sure we always run some tests in an automated way.
it should make sure our dependencies are working well (running yarn install, for instance)
it should make sure our lint is all set.
it should make sure we don't have wrong types.
it should make sure our tests pass.
You also need to setup lint-staged to run pre checks before commiting new code.
Lint-staged will run some checks based on commited files, so you make sure each least these files follow the new code pattern.
Everything should be incremental
You should add more types and tests based on the bugs report.
For each bug you need to improve types and add regression tests to make sure you won't get the same bug again.
To make sure you are moving forward without going backwards.
---
# Search
URL: https://sibelius.github.io/zettelkasten/notes/search
Tags: productivity, search
#search #productivity
Search is the way we find information
We use google in a daily basis to find websites, places, products, flights and more using a query
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.
What if you could have an universal search for everything in the world, and for our personal information?
Google is good to find information about the world but it isn't good enough to find information based on our context.
To make search fast we need to index the data, Zettelkästen is the system to make sure our knowledge is easy to find later on.
## Links
[Productivity](./productivity)
[Index](./index-note)
Tray App
[Human Search Engine](./human-search-engine)
- https://blog.webb.page/2019-12-02-a-personal-api.txt
---
# Second Brain
URL: https://sibelius.github.io/zettelkasten/notes/second-brain
Tags: zettelkasten, productivity
#secondbrain #zettelkasten
The idea of second brain is to build a process to help us think better and clearer
It will also help us find ideas and information when writing, building a project or argument
You can think of second brain as a conversation pattern that will help you think clearly and keep everything that you should remember when processing new information
## Links
Zettelkasten
---
# Second Order Effect
URL: https://sibelius.github.io/zettelkasten/notes/second-order-effect
Tags: thinking, mental-models
Not sure if we can list this as a [Mental Models](./mental-models), but second order effect are everywhere
The benefits of containers for shipping goods was only shoed as a second order effect, when all the infrastructure has adapt to it.
Code test can catch second order effect that you even haven't think of.
Second order effect are not easily thought, as it needs the first order to happen first, and they have a delayed time to run.
Second order effects can cause a [Feedback Loop](./feedback-loop)
---
# Serendipity
URL: https://sibelius.github.io/zettelkasten/notes/serendipity
Tags: zettelkasten, learning
[How to Take Smart Notes](./how-to-take-smart-notes)
Serendipity is when something happen by chance
Serendipity of books happened when we were browsing/searching books in libraries
We were looking for a book and find another good one.
This does not happen anymore as we don’t go to libraries anymore.
Can we make serendipity happen?
Zettelkasten note linking enable insights (serendipity thoughts) when revisiting the notes
---
# Share
URL: https://sibelius.github.io/zettelkasten/notes/share
Tags: community, learning
#share #community
Why do I share?
I share my knowledge so more people can learn fast
I share to check if my "knowledge" is correct
Sharing stuff people will share more stuff with you
Open source is about sharing your codes so people can reuse them, spending less time to build
Share good stuff when you are going to be rewarded
## Links
[Community](./community) : you can create a community sharing good stuff
---
# should i be a specialist
URL: https://sibelius.github.io/zettelkasten/mentorship/should-i-be-a-specialist
Tags: advice, mentorship, questions, async
## should i be a specialist
"Be a fullstack learning the basics about front-end and specializing in back would
be the best?"
You should focus on solve problems
---
# Show work progress
URL: https://sibelius.github.io/zettelkasten/notes/show-work-progress
Tags: communication, career
Instead of awaiting someone to ask for your work progress
you need to show work progress
keep stackholders in loop so you can converge fast to the right solution
---
# Sibelius Feedback
URL: https://sibelius.github.io/zettelkasten/notes/sibelius-feedback
Tags: feedback, engineering
- [ ] hire more developers seniors
- [ ] how to increase number of features?
- [ ] how to increase quality?
- [ ] you need to give me fewer work
---
Daily
How to get ready for daily meeting?
How to prepare for a meeting?
Planning
Write down what is missing to be done
Write down the next steps
visibility
Discussion
Ask a lot of questions, until you don't have any uncertainty
propose your solution and ask for feedback
treat you like an adult
more responsibility
basics
- code review
- write and discuss issue
- ask for feedback, qa
- o que eles tem que começar a fazer
perguntar mais
mais discussoes em publico, #dev e discord/twitter
testar muito mais
entender a dor do cliente
se planejar melhor
melhorar a visibilidade do seu trabalho
melhorar o show & tell da daily (mostrar o que está sendo feito, e o que falta)
melhorar code review
- o que eles tem que parar de fazer
não codar testes, failing tests
não fazer uma issue porque achou legal
- o que eles tem que continuar fazendo
---
elabora a issue
quando voce está desenvolvendo a issue
divide in 2 parts?
- first write the draft of the issue, problems
how we gonna develop the issue?
- do not know everything about the code
- what problems we gonna face
- how to organize the tasks, and subtasks
how to solve missing knowledge?
plateau of knowledge
how to manage context?
more dev-docs
---
quebrar issues grandes em issues menores
não está claro o que tem que ser feito
test plan
test scenarios
mais docs,
---
# Side Project
URL: https://sibelius.github.io/zettelkasten/notes/side-project
Tags: learning, programming
Side Project is a project that you do for fun or because you like or you want to learn something
Here is my list of Side project ides
[Playground](./playground) - mdx based playground similar to iPython
- [ ] Word suggestion chrome extension
---
# Sigmund Freud
URL: https://sibelius.github.io/zettelkasten/notes/sigmund-freud
Tags: psychology
Id
Uncoordinated instituals desires
Ego
seeks to pleases Id
People get upsets to make Ego feels well.
Superego
Critical and moralizing
related to [Carl Gustav Jung](./carl-gustav-jung)
---
# Simply
URL: https://sibelius.github.io/zettelkasten/simply
Tags: simply
Why most people don't try to come up with the simplest design?
Why most people don't try to use the simplest solution to solve a problem?
Why not use the solution with fewer parameters?
Why not use the smallest code?
Why most people do not try to simplify existing products?
It is easy to sell complexity.
It is easy to sell more features.
It is easy to appear smart to propose a complex solution.
It is easy to write a far-fetched article.
I love mathematics, physics, and science.
They are always trying to explain everything with fewer axioms, with the smallest formulas.
They want to unify many theories into fewer ones.
It is interesting how "simple" things can generate complex systems.
Mandelbrot formula is so simple but generates amazing fractals.
Einstein's Mass-energy Equation is just 3 letters and it is so profound.
When designing something new, always try to come up with the simplest design possible.
When modifying an existing system, try to simplify and reduce entropy before adding new features.
Artificial Inteligence is our best signal-noise filter.
AI will help us simplify everything.
Complexity is entropy and noise.
---
# Single Bin JavaScript
URL: https://sibelius.github.io/zettelkasten/notes/single-bin-javascript
Tags: javascript, nodejs
- https://github.com/staltz/noderify
node\_modules is too big and usually it has many things that you don’t need to use
- It has Readme.md
- It has examples
- It has tests and other unrelated code
It would be could to generate a single bin that uses tree shaking to make docker small and run better in lambda envs
It will also make node run faster as it has to process less files
We can remove the need for node\_modules
[Node Modules](./node-modules)
---
# Skin in the Game
URL: https://sibelius.github.io/zettelkasten/notes/skin-in-the-game
Tags: books, economics
- https://www.amazon.com.br/Skin-Game-Hidden-Asymmetries-English-ebook/dp/B075HYVP7C
Skin in the game is when you risk yourself to gain the upside, but also I aware of the downside.
Everytime you have more upside then downside (asymmetry), it causes troubles in the society.
One good example of bad asymmetry is politics, where the ruler does not feel the pain of their actions
Employee vs employer
Employee loose most of the skin in the game in the long run.
The employee does not feel that his acts influences a lot the company.
Bad employees will focus more on themselves, harming the company whole result
You only see the 3D picture when you do something, when you own the result and the implementation
---
# Skin in the Games for Developers
URL: https://sibelius.github.io/zettelkasten/notes/skin-in-the-games-for-developers
Tags: career
benefits of skin in the game for yourself (as a developer and as a professional)
eu me tornei um desenvolvedor muito melhor por ter mais skin in the game
ownership e responsabilidade em diferentes áreas, me ajudaram a desenvolver diversas soft skills e hard skills de outras áreas e de computação
eu senti o peso da responsabilidade de um deploy com bugs
senti a pressão de um cliente frustrado
todas essas experiências me transformaram em um dev e em um profissional melhor
esse é meu relato sobre benefícios próprios quando se tem skin in the game
pode ser que tenham mais outros benefícios
---
# Small Batches Sizes
URL: https://sibelius.github.io/zettelkasten/notes/small-batches-sizes
Tags: productivity, product-development
Batch is a way to group some actions/things in a group
Prefer to work in small batches.
Prefer to release to production a small batch of issues, and small batch of code to avoid creating a lot of regressions or problems.
Small batch are easier to review.
Prefer work in small batch when writing, write a bit and get early feedback to make sure you are going in the right direction
Machine learning algorithm use a small rate of learning (batch), to make sure it converge to the right solution, if the rate is too big it will go in the wrong direction
Small batches generate a fast [Feedback Loop](./feedback-loop) .
[How to Take Smart Notes](./how-to-take-smart-notes)
WIP Written
[Principles of Product Development Flow](./principles-of-product-development-flow)
---
The benefits of small batch sizes
Reducing your batch size you reduce the cycle time.
Cycle time is the time you take from an issue/task/feature ideation to go to production/live.
The small the batch size the small is your cycle time, and fast you improve your product/service.
The faster you ship new features
The faster you fix bugs.
The faster you add improvement
Reducing your batch size reduces variability of flow.
If one of your sprint has a batch size of 10 issues and the next one has a batch size 60 issues, which one will you deliver faster? If you keep your batch size small you always keep the same flow of delivering.
Reducing batch size accelerates feedbacks
If you have a small batch size you deliver fast and get feedback faster. This will make sure you are building the right thing or find bugs or errors faster. Your errors/failure will also be smaller.
Reducing batch size reduces risk
It is much safe to deliver a few new items/changes then many of them.
Instead of doing one off release of a new feature, try to release it incrementally.
Incrementally you can adjust to changes in requirements, you can adjust to errors during the releases, and you can adjust to feedback.
Reducing batch size reduces overhead
Large batches sizes increases the average number of bugs. If you have 300 open bugs, when you find bug number 301, we need to recheck the other 300 for duplications. For small batch sizes it would have many less number of test to retest if a new bug was found.
Large batches reduces efficiency
You can think of large chunk of work by an individual is more efficiency, but this is only local as reduce the feedback loops and overall efficiency. The individual could put some wrong assumptions and have to redo most of the work done.
Large batches lower motivation and urgency
Large batches dilutes responsibility, as if I'm responsible to deliver 1 modules from 100 modules, I feel much less urgency. It also make more probable of someone delaying one of those modules. It takes to much time to see your work in production and get the feedback from user.
Large batch size increases cost and schedule growth
It is hard to estimate schedule and cost for large batch sizes.
The batch size is limited by its worst element
the batch size will take as long as its worst element, 1 item will delay and make all other cost more.
Good infrastructure enables small batches
If you have CI/CD with tests and deploys all automated, it makes it easier to handle small batches and do many releases on a daily basis
Feature flags can reduce batch size
Feature flags let you deliver new feature faster for a few customer, reducing risks, accelerating feedback loops.
To reduce batch size reduce scope.
Decide to deliver less to deliver faster and in time.
To do wait 100% of the requirement to start designing and coding. these requirement will always change a long the way.
Converging fast to Solutions
Reducing your Batch Sizes
---
# Smart Person
URL: https://sibelius.github.io/zettelkasten/notes/smart-person
Tags: life
What is a smart Person?
A smart person will master everything in life.
From coding, tech, to social skills
a smart person will get fit, as this is the best thing you should be doing
a smart person will master the mind, using meditation and yoga
a smart person will get the best partner and the most attractive one
---
# Social
URL: https://sibelius.github.io/zettelkasten/notes/social
Tags: zettelkasten, social
#social
What would be a social Zettelkasten ?
We are social human being, we need to talk to each other for fun and to discuss our ideas
As most of our ideas are inside our [Zettelkasten Notion](./zettelkasten-notion) , if we [Open Source](./open-source) them, we could let other leverage our knowledge to build their own.
It would be an open knowledge base
---
# Social Capital
URL: https://sibelius.github.io/zettelkasten/notes/social-capital
Tags: social, crypto
- https://blog.leonardofederico.com/2020/08/how-humans-unlock-social-capital.html
Social capital is scarce on good social network
Humans are status seeker monkeys
Breaking changes can unlock new social capital
Cubism at Arts
12 tones in music
What other social capital do we have?
social + crypto
---
# Software House
URL: https://sibelius.github.io/zettelkasten/notes/software-house
Tags: startups, business
Software House is a business model where you develop solutions for our companies.
The solutions are tailored per customer needs.
The problem with Software Houses is that you always need to do the same work to earn the same money, there are no compound effects.
It is also a business that does not scale, as you can't sell the same solution to another customer.
One way to reduce the cost of software house is to use Monorepo to try to extract common code in packages and reuse them in new projects, reducing the total cost of the new software.
One good point of Software House is that it generates more money upfront, so it can be good to bootstrap without a VC.
When working in a SH you can starting looking for a good idea to build your SaaS product.
To find good ideas you should read [Where good ideas come from](./where-good-ideas-come-from) .
SH is like a freelance in a group of people.
The incentive of your customer is to reduce the payment for you, and your incentive is to charge more as the project grows.
It usually does not have any tests, as soon as you deliver the project you move to the next one.
There are no long term incentives.
For a better business model check [SaaS](./saas)
---
# Software House and the Prisoner's Dilemma
URL: https://sibelius.github.io/zettelkasten/notes/software-house-and-the-prisoner-s-dilemma
Tags: startups, game-theory
Prisoner's dilemma is a classic game theory example where 2 "individuals" might not cooperate.
The 2 "individuals" in the case of this article will be the Software House (SH) and the Customer.
This can also be applied to a freelancer and a customer.
The cooperation action of the SH will be to deliver software with high quality
The betrayal action of the SH will be to deliver software with poor quality
The customer cooperation action will be to keep re-contracting the same SH
The customer betrayal action will be to contract another SH to reduce the service price of another SH.
- https://en.wikipedia.org/wiki/Prisoner%27s_dilemma
- https://ncase.me/trust/
---
# Some Sibelius Food for Thought
URL: https://sibelius.github.io/zettelkasten/food-for-thought
Tags: sibelius
I will share some Food for Thought here
- [Articles](./articles.mdx)
- [Youtube](./youtube.mdx)
- [Podcast](./podcast.mdx)
- [Talks](./talks)
## Paid Mentorship/Consulting
- [Consulting Startups](./paid-consulting-startups.mdx)
- [Mentorship Developers](./paid-mentorship-developers.mdx)
## Private Community
- [Private Community](./private-community.mdx)
---
For adhoc discussions with me just ping me on twitter [https://twitter.com/sseraphini](https://twitter.com/sseraphini)
---
# Stalled
URL: https://sibelius.github.io/zettelkasten/notes/stalled
Tags: observability, jobs
transaction.name : "OPENPIX:CHARGE\_UNIQUE\_POLLING"
transaction.name : "UPDATE\_CHARGE\_STATUS\_EXPIRED"
transaction.name : "OPENPIX:COMPANYBANKACCOUNT\_AUTO\_WITHDRAW"
---
# Standing Ovation
URL: https://sibelius.github.io/zettelkasten/notes/standing-ovation
Tags: mental-models
- https://www.coursera.org/lecture/model-thinking/the-standing-ovation-model-IdA4x
The standing ovation model represents how people behaves based on other people
for instance:
if there is a new fashion item in the market, only a few people will start using before everybody else
Other people needs to see 1 or N people using it before start using it.
The same goes to clap, you only start clapping after N people are clapping
what is your N? your N should be 0; try to start things
[Thinking Tools](./thinking-tools)
[Mental Models](./mental-models)
---
# Startup Mentorship
URL: https://sibelius.github.io/zettelkasten/notes/startup-mentorship
Tags: startup, mentorship
Founding Year
Market/Industry/Area/Niche
Pain Resolved/Pain Solved
Solution/Value Offer
Annual Revenue
Team and Team Size
Describe your Startup
Currently, what difficulties and help do you need to build your startup?
1. Teria algum direcionamento pras mentorias? Eu tenho um template que costumo seguir e senti falta de:
- funded ou bootstrap
- stack de tecnologia
- tem CTO? dev interno ou outsourcing?
- quantos clientes?
- quantos produtos?
.. +
- Tem backlog ?
- estrutura da infra?
- tamanho do time?
How do you see your startup in 10 years?
nome da startup
linkedin dos sócios
---
# StartupOps - Building Woovi
URL: https://sibelius.github.io/zettelkasten/notes/startupops-building-woovi
Tags: startup, operations
PreRegistration
Opening a Virtual Account
Checking who is active
what was reused from old codebases?
what process that we automated along the way
esteira de contratação
---
## Merged from "Startup Ops" (2022-11-14)
- [ ] marketing
- [ ] zero marketing expenses
- [ ] make it clear that it is slides
- [ ] what is not operational work ?
- [ ] hiring
- [ ] vision
- [ ] strategic
- [ ] backoffice stuff
- [ ] tests
- [ ] software development
- [ ] segurança ?
- [ ] product development
- [ ] methodology: scrum, cascata, extreme programming
- [ ] feature flag
---
# State Machine
URL: https://sibelius.github.io/zettelkasten/notes/state-machine
Tags: programming, thinking
#state #thinking #code
A state machine describes all possibly states for a given business logic or situation
They are very useful to model business logic, like ecommerce order status, UI transitions, manager transfer and more.
## Links
[Global State](./global-state)
---
# Storytelling
URL: https://sibelius.github.io/zettelkasten/notes/storytelling
Tags: writing
- https://jrsinclair.com/articles/2020/how-to-write-things-people-want-to-read/
The Main in the hole
Someone gets in trouble and gets out
Pain, dream and fix model
Show an audience pain, show the dream without the pain; provide a solution to it
---
- https://review.firstround.com/The-Seven-Deadly-Sins-of-Startup-Storytelling
- https://review.firstround.com/This-Advice-From-IDEOs-Nicole-Kahn-Will-Transform-the-Way-You-Give-Presentations
- https://review.firstround.com/Tell-Stories-Like-This-to-Take-Your-Fundraising-Pitch-from-Mediocre-to-Memorable
- https://review.firstround.com/speed-as-a-habit
---
# Structure
URL: https://sibelius.github.io/zettelkasten/structure/structure/structure/structure/structure
Tags: structure
You are probably wondering why the Structure note is inside so many structure.
"The paradox of structure is that, whatever its nature, any structure is both enabling and limiting at the same time"
You need to find the right balance of chaos and structure.
You should add more structure as you grow, as your company grows.
Try to avoid too much structure when it is not needed.
A few examples of too much structure
You decided to use all design patterns that you learned for an application of 1 endpoint.
You created 50 files instead of just 2.
You require 2 approvals for a pull request, even if it is a small change.
---
The more structure you add, the slower you move, more bureaucratic you become.
Do not create a new file if you have too few lines.
Do not create a new folder if you have a few files.
Do not create a complex review process if you have a small team.
Entropy will keep trying to add more and more structure, so you need to fight it.
## References
- [Systems, man, and the paradox of structure](https://ieeexplore.ieee.org/document/1244239)
---
# Struggle
URL: https://sibelius.github.io/zettelkasten/notes/struggle
Tags: learning
#struggle #learning
People try to avoid struggle, but you only learn when you struggle.
You need to be uncomfortable to learn something new, you won't get all the detail upfront, so you need some time to figure it out, usually takes more time than you wanna
## Links
[Make it stick](./make-it-stick)
---
# Struggle after studying
URL: https://sibelius.github.io/zettelkasten/notes/struggle-after-studying
Tags: learning
I got a new topic to learn.
I read 30 articles based on that topic.
I've skim reading 2/3 books on that subject.
I've watched a few videos on that.
Then, I start a new project to test everything that I've "learned".
I've felt a struggle, like if everything that I thought that I know disappeared.
---
# study after work
URL: https://sibelius.github.io/zettelkasten/mentorship/study-after-work
Tags: advice, mentorship, questions, async
## study after work
"How long should I study after work hours?"
Study during work, focus in a work that you can learn new things
---
# study regardless your level
URL: https://sibelius.github.io/zettelkasten/mentorship/study-regardless-your-level
Tags: advice, mentorship, questions, async
## study regardless your level
"What topics should a developer study regardless of their level?"
Concepts, Team Management, Product Management, Devops, Distributed Systems, Decouple Code, Domain-Driven Design, Automated Tests, Programming Logic and Fundamentals, Programming Paradigms, Commit Protocols, CAP Theorem.
---
# Study/Work Backwards
URL: https://sibelius.github.io/zettelkasten/notes/study-work-backwards
Tags: learning, product
Steve Jobs said do work backwards
Instead of starting with a technology and see how to sell to customers
Start with customers and see what they need, and what technology fits their needs.
That's way that people struggle with learning by theory.
We can think of theory as the same as technology
We need to work backwards when learning, start with the problem you want to solve.
Them find the right theory that you need to learn to solve the problem.
instead of learning parsers by no reason, wait until the problem shows up for you.
I need to move one package to another, the first thing we need is to understading the imports and exports to make sure we refactor them to the right place.
We need a "parser" to understand raw text.
We also need a subgraph "graph" of dependencies to make sure we move the file and all their dependencies together
---
# Substack
URL: https://sibelius.github.io/zettelkasten/notes/substack
Tags: writing, newsletter
#substack #newsletter #platform #win-win
[https://sibelius.substack.com/](https://sibelius.substack.com/)
My plan is to have at least one per weekly based
I wanna cover startups, productivity and development code tips, ideas and thoughts
Substack is a platform for writers to build a newsletters
It is better than medium as it gives the email list of the subscribers so you don't have lock in
It is also better as they only earn money when you earn money (win-win relationship)
## Links
[Newsletters](./newsletters)
---
# Talks
URL: https://sibelius.github.io/zettelkasten/talks
Tags: talks
This list many talks that I did at conferences and meetups.
Check my talks at [SpeakerDeck](https://speakerdeck.com/sibelius)
## Intern to CTO
- Slides - [https://sibelius.github.io/intern-to-cto/#0](https://sibelius.github.io/intern-to-cto/#0)
- Watch here - [https://app.eventplay.com/media/dia-2-10h-estagiario-a-cto](https://app.eventplay.com/media/dia-2-10h-estagiario-a-cto)
- DevStackSummit event - [https://www.devstacksummit.com/](https://www.devstacksummit.com/)
---
# Tax
URL: https://sibelius.github.io/zettelkasten/notes/tax
Tags: economics
Amazon Tax
Tax is something that you need to pay, that it does not mean that brings values to you
You pay taxes to government because it will use this money to improve society.
You can think of other thinks as taxes.
Amazon taxes the internet to be their infra, 1/2% per service.
Poor pay rent (tax) to rich.
universe tax: entropy. It tends to get messy over time
processing money companies: visa, mastercard, strip
logistic is the tax to bring one product from one place to another
vicious to control people
- sugar
- non-health food
- porn
- culto ao corpo
- incentivo a medicamento quimicos
Imagine a tax free society
[Keynes](./keynes)
---
# Tech lead
URL: https://sibelius.github.io/zettelkasten/notes/tech-lead
Tags: career, books
- [ ] Peopleware: Productive Projects and Teams
- [ ] Driving technical change: Why People on Your Team Don’t Act on Good Ideas, and How to Convince Them They Should
- [ ] The Mythical Man-Month: Essays on Software Engineering
---
# Templates
URL: https://sibelius.github.io/zettelkasten/notes/templates
Tags: design, productivity
#design #code #art
To make things easier to newcomers, and to avoid repeated workflows.
We can provide prebuilt templates or let user create their own templates to make their life simpler.
Template also help you make design and code more uniform
Template generalize a pattern
Useful when doing [Design](./design) and to avoid the [Blank Canvas](./blank-canvas) fallacy
---
# Testing Concept Frontend
URL: https://sibelius.github.io/zettelkasten/testing-concept-frontend
Tags: testing, concept, frontend
You first need to undestand the concept of frontend tests.
You should not test the implementation but the behavior
You test like the end user
For instance, imagine a login screen with email and password inputs and a submit button
The test should input the email and the password, then click in the submit button.
You should assert the API was called with the inputted data.
When using testing library you test against DOM
code:
```jsx
const emailInput = getByTestId(emailTestId);
fireEvent.onChange(emailInput, { target: { value: 'email@email.com.br' } });
const passwordInput = getByTestId(passwordTestId);
fireEvent.onChange(passwordInput, { target: { value: 'pwd' } });
const submitButton = getByText('Login').closest('button');
fireEvent.click(submitButton);
// assert api was called properly
```
---
# Text Formats
URL: https://sibelius.github.io/zettelkasten/notes/text-formats
Tags: content, frontend
#content
**Plain Text**
We have a plain text when we don't have any formatting, all text are the same
**Rich Text**
Rich text is when we have formatting for part of the text.
When you enable formatting per part of the text, you need to store text as blocks, and each block has it is own styling.
**Markdown**
Markdown is another text format, with it is own peculiarities.
It has some has predefined "tags" where the user applies format based on text
`## my title` represent a heading 2 text
Markdown is more known by programmers
**How to store rich text data?**
- draft-js uses an json with blocks information
- GraphQL
- Web
- React Native
- Rendered?
**How to present data?**
- You need to process blocks information and output result in html
**Why we need them?**
We need them because users want a rich medium to communicate with other ([Thinking Tools](./thinking-tools) )
It can contains: text, image, video, links, mentions, emojis, gifs and more
## Links
- https://www.draft-js-plugins.com/
- https://reactrocket.com/post/draft-js-persisting-content/
- https://medium.com/@wonderboymusic/using-draftjs-with-graphql-ec2ea55a7f8b
[The era of Content Builders](./the-era-of-content-builders)
[NoCode](./nocode)
---
# Text vs Video vs Audio
URL: https://sibelius.github.io/zettelkasten/notes/text-vs-video-vs-audio
Tags: learning, content
[Information](./information)
Text is low resolution, it let some uncertainty to participants to feel in, it brings more engagement
Audio/Video are more high resolution, it has less uncertainty.
If you are a beginner video/audio is easier to you to follow because they will have more “complete” information.
Text are better to store gists, tl;dr;
It is easier to skim and to compose.
To make read productive you need to be able to control low and high resolution reading, with and without details.
---
What is better to learn?
If you have no knowledge about this subject, try to go for videos/audio first, high resolution to fill most of your basic questions.
Then move to a low res medium to gather more knowledge faster, and fill yourself the uncertainty to [Make it stick](./make-it-stick) better.
[Workshop](./workshop) is a mix of high and low res.
Explanation and introduction to concepts uses high res videos, and exercises are low res to make your mind feel the gaps of [Reality has a lot of details](./reality-has-a-lot-of-details)
---
# The best way to leave a job for a developer
URL: https://sibelius.github.io/zettelkasten/notes/the-best-way-to-leave-a-job-for-a-developer
Tags: career
There are a lot of reasons to leave a job, I won't focus on the reasons in this article.
I will focus on the best way to handle the transition from the old job to the new job.
There are not much written content about this topic out there.
I think the transition should be fair to both sides: the old and the new company.
Fair is a simple concept that is hard to describe.
How to be fair with the old company?
For the old company you need to give enough time to let them hire someone else to be in your place. I think 15 days is a good time frame.
You should also transfer your knowledge of the codebase to the ones that you maintain the code.
Write down all the implicit knowledge that you have about the codebase and
---
# The era of Content Builders
URL: https://sibelius.github.io/zettelkasten/notes/the-era-of-content-builders
Tags: content, nocode
#content #builder
## What is Content?
Content is information organized to an audience
## What is a Content Builder?
A content builder is a software that you let organize your content in different ways.
You can present information in different forms, using text with many formatting (bold), using images, using audio (podcasts), using video, using gif, using tables, using text formatting, you can embed content from other websites like twitter, youtube and so on.
Content builder goes from "simple" text editor, to note taking app to mobile site nocode solutions.
## Before content builder?
We have different types of "documents" to present information.
We have Word/Google Docs to present text information.
We have Excel/Google Sheets to present table information
We have Powerpoint/Google Slides to do slides.
What if I want to add some text/paragraph to my sheet?
What if I want to add some slide form to my text document?
## Blocks
We can have basic blocks like simple text and paragraphs
We can have links to other pages, blog posts or people
we can have media (image, embeds, audio, video)
## Working with Blocks
You can copy and paste text, single blocks or multiple blocks
You can reorder blocks, you can edit and duplicate them
You can transform one block into another
## Layouts
Layout are blocks that arrange blocks inside a screen
They are useful when building a website
Most website can be built with predefined layout patterns
## Interactive Blocks
ObservableHQ let you have interactive blocks to document and play with data visualization
You could embed some code playground in your content to make them more interessant
## Examples of Content Builders?
Fluid Framework
Notion
Dropbox Paper
Mdx
Airtable
Observable HQ - https://observablehq.com/
NoCode in general
WebFlow
Canva https://www.canva.com/pt\_br/
Wix
Building Blocks of Content Builder
Similar to building blocks for SaaS (https://sibelius.substack.com/p/where-good-saas-come-from). We can have many building blocks when creating content.
WYSIWYG
what you see is what you get
A [Digital Garden](./digital-garden) is an example of a content builder where you build and modify the blocks.
You decide which blocks to implement based on what your needs. It is the curation of your content and output. If you need to show some code you need a block to handle it properly.
Using the right blocks can make your Writing more interesting to read
This blocks can be thought as tools for thinking
## Links
[Abstractions](./abstractions)
Writing
- https://observablehq.com/
---
# The Instant Payment Stack
URL: https://sibelius.github.io/zettelkasten/notes/the-instant-payment-stack
Tags: fintech, payments, pix
Credit cards are the way to go for payment
Imagine if you could recreate the credit card with a new stack
stop limiting yourself
use the product
conta
subconta
marketplace
split
parcelamento
antecipacao
a vista
paypal
---
# The Journey / The Process
URL: https://sibelius.github.io/zettelkasten/notes/the-journey-the-process
Tags: audience, startups
The journey / the process is also a product
You can share your process over your network to build your audience that will buy the final process or even courses of how to do it
---
# The Nonesuch Beast
URL: https://sibelius.github.io/zettelkasten/notes/the-nonesuch-beast
Tags: product, software
- https://sites.google.com/site/steveyegge2/nonesuch-beast
Non-coders will provide many requirements that are simple by itself, but in combination they can't exist.
Instead of trying to solve all the problems with specific features
We should provide low level building blocks ([Where good ideas come from](./where-good-ideas-come-from) , Building Block ) that let user compose to build more complex features.
Simple building blocks make it easy to learn and to use tools.
Irreducible complexity is when you can't reduce complexity of all requirements, you need to understand that you need to live with tradeoffs, and choose them based on your current requirements.
[What should you Build Next?](./what-should-you-build-next)
---
# Thinking Tools
URL: https://sibelius.github.io/zettelkasten/notes/thinking-tools
Tags: thinking, learning
- https://untools.co/
We need more tools to make our thinking better
[Mental Models](./mental-models) is one of the tool in our toolbox
Note Taking ([Bidirectional note taking](./bidirectional-note-taking)) is another tool.
- https://numinous.productions/ttft/
Can we make people remember more?
Exponential scheduling testing of knowledge using flag cards or simple questions
Spaced repetition
Providing few short questions a long the away of vídeo to increase retention
Similar to micro learning
Simple question show the user is not paying enough attention
Adobe → Sketch → Figma
Expensive to develop new mediums for thought but easy to copy
Adobe/Sketch/Figma provides a "blank" canvas, where you can interact using basic building blocks like artboards, basic shapes.
We are now thinking in blocks [The era of Content Builders](./the-era-of-content-builders)
Instead of just using writing or image, we think using blocks. Blocks are our new medium of thought.
We have iPython notebooks that can be think as executable notebooks
Mdx is also essays + code
Reader can modify parameters to test, to learn, and to improve their understanding
Dynamic is better than static to learn
Good tools is a byproduct or working on serious problems
Camomila média is when someone expands the “ideas” of what you can do with the medium
Instead of a simple essay we can have dynamic/interactive essays
Who are the one pushing the médiums?
How can we push writing, how can we push music? How can we push software? How can we push digital garden? How can we push hardware?
Simple things like flash cards can have profound benefits in long term
[NoCode](./nocode) could be a new medium for thinking thoughts.
NoCode let you build powerful things with easy of drag and drop interface
[Excel](./excel) as a thinking tool, as you can put some number there and let some insights happen there
Instead of notebooks, why not nocodebooks?
Google is a thinking tools, as it helps us find new information based on our queries.
- https://github.com/athensresearch/athens
- https://jvns.ca/blog/2020/06/14/questions-to-help-you-learn/
---
# Time Preference
URL: https://sibelius.github.io/zettelkasten/notes/time-preference
Tags: economics, bitcoin
- https://www.amazon.com/dp/B07BPM3GZQ/ref=dp-kindle-redirect?_encoding=UTF8&btkr=1
[Bitcoin](./bitcoin)
Time preference tldr:
If you have 8 hours to catch fishes,
do you use the 8 hours to catch fish or do you use only 6 hours and create a net to catch more fish?
If you do the latter you have a low time preference, it means you value your future more than your present
For developers this would be like, do you use part of your development hours to refactor and improve your code?
If you do freelance you value for the present than the future
If you work in a company/product/SaaS over a long period of time you prefer future over present
A high time preference values present and immediate future
A low time preference values futher future over present
---
**What's your time preference?**
Time preference (long-term orientation) is an economy concept that measure how an individual values the present over future.
A high time preference means that you value more the present then the future.
And a low time preference means that you value more the future over the present.
**A simple example**
If you have 8 hours to catch fishes, do you use the 8 hours to catch fish or do you use only 6 hours and create a net to catch more fish with the rest of 2 hours?
If you do the latter you have a low time preference, it means you value your future more than your present
**Money**
A sound money turns more people to have a low time preference, as the value of the money increases over time, you would prefer to save money instead of spending. Deferred consumptions.
Our current money model based on inflation make people spend more as the money devalues overtime.
**Fitness**
The process to get fit takes a "long" time. You only get fit if your time preference for this is low enough.
You choose to spend your time doing exercises that feel hard to you, but you only get the benefits in the long run.
**Health**
We can apply the same concepts to health, you avoid consuming junk food to have a better life in the future.
**Sofware House vs SaaS**
Software House usually has a high time preference as it prefer to deliver bad/medium quality code to the customer, deliver the product and get a large chunk of money, and move to the next project.
The problem with this model is that SH always need to do the same work to get the same amount of money.
SaaS product charges a much small subscription per customers, but it earns this amount for long periods of time. This also make sure the SaaS company will keep delivering value to current and new customers to keep them paying for the product, the incentives are aligned, it is a win-win relationship.
**Marriage**
Marriage is a long term. If you don't want to spend the rest of your life if the person you are married, you should get a divorce. Marriage gets better in the long run as you get used to each other and trust more each other.
**Habits**
Habits is what you do in a daily basis
atomic habits, exponential, long run, time preference
---
# tipping points
URL: https://sibelius.github.io/zettelkasten/notes/tipping-points
Tags: career, life
first computer at home
first internet access
first programming
enrolled in development and programming system technical course
mathematics olympcisc (Brazil OBMEP)
seen the first USP people
passing in the USP entrance exam
doing ciencies without border program (study abroad on US)
doing cientific initiation
presenting paper in national and international conference
first international travel
doing master
dropping master
summer startup job
trying to creating own startup
founding entria
first open source contributions
creating react sp meetup/community
doing learning in public
first startup from zero to one
first software house project
first saas project
first product market fit
first unicorn
---
# Tips and Tricks
URL: https://sibelius.github.io/zettelkasten/notes/tips-and-tricks
Tags: productivity
#tips #tricks
Small tips and tricks can leverage your productive when using tools.
Try to learn tips to master your IDE, your Terminal, your text editor, your note taking app, your operational system
it sounds silly, but this is all about tiny details that matters
Most people know Undo and Redo.
A few people know how to go back and forward in navigation inside app
Notion and Webstorm uses ctrl+\[ and ctrl+\] to be able to go back and forth so you can move around and avoid losing context
Learn keyboard shortcut to move fast
Mouse is good, but it is slow as you need to navigate the "whole" screen
the keyboard goes directly to where you wanna go
## Links
[Index](./index-note)
## References
- https://code.visualstudio.com/docs/getstarted/tips-and-tricks
- https://jetbrains.com/webstorm/guide/tips
---
# Today - 1 august
URL: https://sibelius.github.io/zettelkasten/notes/today-1-august
Tags: programming, testing
**How have you been preparing for the code You are about to write?**
Smaller changes leads to higher productivity
What constraints have you chosen?
Why can’t we use 4G in flights?
**Common sense is not so common, Fixing a bug is aligning the code with the facts.**
A bug happens when you take an assumption for a fact
Guessing is a waste of time, **A test must change only if the behaviour it verifies changed**
Test behavior not implementation
---
# Trust
URL: https://sibelius.github.io/zettelkasten/notes/trust
Tags: game-theory, economics
- https://ncase.me/trust/
Trust is when one person trust another person.
We can use [Game Theory](./game-theory) to model trust behavior among agents.
When we trust we can avoid some transactions costs.
Uber/AirBnb only works because they made trust works in the scenarios.
Uber makes safe and possible to you get inside a car of a "strange" and reach your destiny without trouble.
AirBnb let you stay in a house of a "strange" in a safe way.
---
# Tweet drafts
URL: https://sibelius.github.io/zettelkasten/notes/tweet-drafts
Tags: twitter, programming
a programmer has a relationship with the machine
The better you get as a programmer the closer you get to the machine
Programming is about frustration and allure
Programming is the art of learning from failure
_homo faber,_
the tool-makers; _homo sapiens_
, the knowing ones; and two additions I would coin as _homo sociales_
, the social ones; and _homo affectus_
, the ones who feel
Watch out what you wish for
What would please a bot?
High tolerance for failures
---
# Tweet Engagement
URL: https://sibelius.github.io/zettelkasten/notes/tweet-engagement
Tags: twitter, audience
[Growth Loops](./growth-loops)
[Standing Ovation](./standing-ovation)
How to make your audience engage?
**Use a question**
When you use a question in your tweet, you are basically asking people (your audience) to answer it
People care about their name, their opinions and everything that they think are their own.
Most people don't start a discussion or tweet because of the [Standing Ovation](./standing-ovation) model, so when tweeting give voice to them to engage and show their opinions.
**Use an image/video/gif or audio**
text is low resolution cold medium ([Hot Cold Media](./hot-cold-media))
sometimes text is not enough to conceive the information because it needs more context to make it sense of it.
**Use buzz word**
buzz word (hashtags) are a great way to find your content
bots can retweet you based on some hashtags
you tweet will show up when people search this hashtag
**Tag some people**
when you tag some people (not in the begin of the tweet - because it will restrict the tweet to only people that follow you and the other people)
your tweet will also reach their audience
Do not tag too many people, and not always the same people, avoid spamming, use with caution.
**External Links**
Make sure external links produces a good social image (og) to improve engagement.
**Share**
Make sure to share your tweet in many places (slack, discord, facebook and other)
Improve your reach
**Relink and Retweet**
When doing a new tweet, try to find related tweets of yours, and relink them in threads
**Threads**
A good thread can improve the value of individual tweets
A group of tweets has more values of all individual tweets
Funny
People like funny things
Meme
Bring image, and gifs to get a hot funny medium
---
# Twitter
URL: https://sibelius.github.io/zettelkasten/notes/twitter
Tags: twitter, social
#social #network #mind
Twitter is the social network for your mind, where your share your ideas/projects and thoughts.
The basic block of twitter is a tweet that has a very short limit so you need to be #tldr;
twitter also has thread where you can use to explain a train of thought
## Links
[Community](./community) d
[Share](./share)
---
# Understanding
URL: https://sibelius.github.io/zettelkasten/notes/understanding
Tags: learning
- https://nabeelqu.co/understanding
Instead of stop when you find the first answer, try to solve in different ways
Do not fool yourself, if you can’t implement you don’t know
If you can’t explain or demonstrate to someone else you don’t know
Nothing beat real experience
See the reality, play with reality
Summary are cached thoughts
Understanding is not binary, levels of understanding
Focus, go closer to understand
---
# Undo
URL: https://sibelius.github.io/zettelkasten/notes/undo
Tags: productivity
#undo
When going back and forth in files, the undo equivalent is the way to go back to the last file you visited
In notion you can use ctrl+\[ to go back and ctrl+\] to move forward
same in webstorm
## Links
[Productivity](./productivity)
---
# value over internship
URL: https://sibelius.github.io/zettelkasten/mentorship/value-over-internship
Tags: advice, mentorship, questions, async
## value over internship
"How can I effectively demonstrate my value and skills during the internship to maximize the chances of a job offer at the end of it?"
Work as hard as you can
Work more hours
Do more than they asked you
Understand your company, your company's products and the business.
How they make money.
How can you contribute to the company, to make more money, to reduce costs, to grow faster, to bring more users, to reduce churn, to make onboarding easy.
Learn everything that you can
Do not reduce yourself as an intern, try to solve harder problems
Ask for challenges
Do not limit yourself to your job title, only frontend, only backend.
Learn it all.
Contribute it all.
Bring new ideias with RFC, POCs.
Reduce the work of your Boss
Deliver everything with high quality.
---
# Waiting somebody
URL: https://sibelius.github.io/zettelkasten/waiting-somebody
Tags: advice
Most people keep waiting somebody else to figure something out.
Developers wait the product manager to tell them what to do.
You are waiting someone in your team to discuss something.
You think you are "blocked", however you are not.
You are blocking yourself because it is easier.
You don't want to take responsiblity.
You don't want to make a mistake or be wrong.
Here my advice for you, stop waiting and start doing.
The world is for the ones who take action.
Nobody will fix your problems for you.
---
# Wasted Potential
URL: https://sibelius.github.io/zettelkasten/notes/wasted-potential
Tags: career
most devs are working on easy projects without even reaching their full potential
if you have an "easy" job you are probably not using your full potential, you are just wasting your time.
Bright people not working in hard enough problems
bright people with high time preference
---
# what are the biggest pitfalls in the field of development?
URL: https://sibelius.github.io/zettelkasten/mentorship/what-are-the-biggest-pitfalls-in-the-field-of-development
Tags: advice, mentorship, questions, async
## what are the biggest pitfalls in the field of development?
- not understand what you are doing
---
# what makes a good developer?
URL: https://sibelius.github.io/zettelkasten/mentorship/what-makes-a-good-developer
Tags: advice, mentorship, questions, async
## what makes a good developer?
- knowledge + experience
---
# What people get wrong about Relay
URL: https://sibelius.github.io/zettelkasten/notes/what-people-get-wrong-about-relay
Tags: relay, graphql
- [ ] Node interface
- [ ] Connections
- [ ] Data components
- [ ] fragments vs queries
- [ ] where the data is stored (not in graphql operation, but in relay store)
- [ ] how to understand store
---
# what should i focus on per role
URL: https://sibelius.github.io/zettelkasten/mentorship/what-should-i-focus-on-per-role
Tags: advice, mentorship, questions, async
## what should i focus on per role
"What should i focus on per role? for example, in front i have to focus only in one framework?"
No, you should learn concepts instead of implementations/frameworks.
Learning the concepts and studying topics in differents languages helps you with the knowledge invariance.
## References
- [Learn Concepts](https://twitter.com/sseraphini/status/1760262122129207442)
---
# What should you Build Next?
URL: https://sibelius.github.io/zettelkasten/notes/what-should-you-build-next
Tags: product, startups
bug/feature/refactor
A feature is a new capability to the software
You add features when your software can’t handle some users use case
Improvement: improvements are interactions to make an existing feature better. It can make the feature easier to use. It can make the feature faster to use.
Bug: a bug happens when a feature is implemented and not tested properly, or when some edge cases were not considered.
Refactor: it is when we improve the code structure without changing their behavior
---
First principles first
Instead of build a new feature for each user wish, try to understand the core problem they have in their workflows.
Prefer build low level building blocks features that can be reused in many workflows
Try to solve a set of problems instead just one use case.
Prefer a more generic/extensible feature than a much more specific
Do not build for a single user, build for a group of them
---
Basecamp Shape Up
- https://basecamp.com/shapeup
[Principles of Product Development Flow](./principles-of-product-development-flow)
---
You should decide on what to work on based on the cost of delaying it.
How is the cost of delaying fixing this bugs?
How many users are affected by this bug?
Is this bug generating inconsistent data?
Is this bug part of core user workflows?
Can user use the product even with this bug?
How many customer supports ticket will be open because of this bug?
How is the cost of delaying this refactor?
How many more hours developers Will spend before this refactor?
How long will take this refactor?
How this refactor affects the other devs?
What is the risks of this refactor?
Can this refactor be done incrementally?
How is the cost of delaying this improvement?
How many users will perceive this improvement?
How this improvement will affect users?
How many users uses the feature that wil be improved?
How is the cost of delaying this feature?
How many users are waiting this feature?
How this feature helps sales team to sale more?
Is this feature for any user or high usage users?
Will this feature improve usage and engagement?
[The Nonesuch Beast](./the-nonesuch-beast)
---
# what to do after receiving many rejections in job interviews?
URL: https://sibelius.github.io/zettelkasten/mentorship/what-to-do-after-receiving-many-rejections-in-job-interviews
Tags: advice, mentorship, questions, async
## what to do after receiving many rejections in job interviews?
- improve github
- improve open source
- improve code challenge
- write blog posts, articles
- go to events
- network (go to meetups, talk to people)
- listen feedback, ask for feedback
---
# what to expect from a tech leader
URL: https://sibelius.github.io/zettelkasten/mentorship/what-to-expect-from-a-tech-leader
Tags: advice, mentorship, questions, async
## what to expect from a tech leader
"What are the main behaviors that you evaluate for a tech leader?"
Be able to lead a team
Be able to lead a product
Excel in hard skill
Great in soft skills, communication
Good in system design, RFC, POC, software development process
Ensure Quality
Owner and Operations of a product
Provide resume and updates to team and upper management
## References
- [What is expected from a Tech Lead?](https://sibelius.substack.com/p/what-is-expected-from-a-tech-lead)
---
# what to expect from seniors
URL: https://sibelius.github.io/zettelkasten/mentorship/what-to-expect-from-seniors
Tags: advice, mentorship, questions, async
## what to expect from seniors
Autonomy
Agency
Being able to go from product/user requirements to production
Excel in hard skills
Excel in soft skills, communication, RFC
Good in system design, RFC, POC, software development process
High Quality
Be able to trust they
Experience in a variaty of topics
Know how to solve a lot of different problems
Explain clear the tradeoffs of solutions
They can design system to scale without a lot of technical debt
They can reduce scope and control complexity
They can mentor and manage juniors
They do code review to ensure codebase quality and patterns
They build tooling to make coding easier
They can work in long tasks
They can handle uncertainity
They can interact with other teams or other companies and consume APIs with few documentation.
---
# What you do is who you are
URL: https://sibelius.github.io/zettelkasten/notes/what-you-do-is-who-you-are
Tags: culture, books
The culture is what you do
“I must believe there will be a bigger payoff from the relationship in the future than whatever I can get by betraying you now”
Long term is about not betraying, it is about believing in something
“In any human interaction, the required amount of communication is inversely proportional to the level of trust”
Dress code can change behavior
This is why kids are required to use uniform at schools
“Cultures are shaped more by invisible than the visible
What you measure is what you value
Netlifx ceo removed all DVD guys from meeting to focus on streaming services
The way you treat outsiders will leak back into your organization
Heisenberg uncertainty Principle of Management
The act of trying to measure your culture changes the result
---
# when to change jobs
URL: https://sibelius.github.io/zettelkasten/mentorship/when-to-change-jobs
Tags: advice, mentorship, questions, async
## when to change jobs
"How I can decide when is the correct time to change my job? I think that is when I dont learning more at my actual job..."
You should change jobs when you are not learning anymore, or when you are not earning as much as you should.
You should also change jobs when you don't believe in your company mission.
You should also change job if your job is too easy.
You should change jobs when you can't grow.
---
# Where good ideas come from
URL: https://sibelius.github.io/zettelkasten/notes/where-good-ideas-come-from
Tags: books, ideas
#book #blocks
Where good ideas come from is a book of how to come up with good ideas.
Good ideas is based on other ideas.
You can think of an idea is a building block for your next ideas.
Some ideas are good, but no ready yet. There are some missing pieces to make it work.
For Uber work well, we need a good mobile phone hardware with GPS, we also need a good broad brand connection.
For youtube we need the digital camera and some internet connection.
Some ideas/projects fail because there are some building blocks that are not mature anymore
- https://www.amazon.com.br/Where-Good-Ideas-Steven-Johnson/dp/1594485380
[The Nonesuch Beast](./the-nonesuch-beast) is about combination of simple requirements and low level building blocks.
---
# Why am I learning CSS?
URL: https://sibelius.github.io/zettelkasten/notes/why-am-i-learning-css
Tags: frontend, learning
If you are used to what I share on my blog posts, newsletter and twitter you would be surprised that I "go back" to learn the basics of CSS
man, you can do AST codemods stuff, why learn CSS?
you can train machine learning algorithms to perform well on testing data, why learn CSS?
The thing is, all my other knowledges does not matter for my CSS skills \\o/
I'm learning CSS to master a piece of knowledge that I don't have yet.
I'm not afraid to go back as a beginner and start learning from the basics one.
I'm also learning design at the same time, so I can mix and match my skills.
[CSS](./css)
[CSS Practice](./css-practice)
---
# Why do people stay poor?
URL: https://sibelius.github.io/zettelkasten/notes/why-do-people-stay-poor
Tags: economics
[http://sticerd.lse.ac.uk/dps/eopp/eopp67.pdf](http://sticerd.lse.ac.uk/dps/eopp/eopp67.pdf)
people stay poor because you "choose" low paying jobs
people stay poor because they don't have or buy assets that increase in value over time, or generate value over time while you are sleeping
there are a threshold of poverty, people stay people because of lack of opportunities
---
# Win your team
URL: https://sibelius.github.io/zettelkasten/notes/win-your-team
Tags: leadership, career
If does not matter you implemented the best improvement in your infrastructure if nobody is using it \\o/
You need to win your team
You need to educate your team
You need to teach your team
You need to spread the knowledge
You need to make it easy
You need to make it fast
---
# Woovi summit talk
URL: https://sibelius.github.io/zettelkasten/notes/woovi-summit-talk
Tags: talks, startup
growth
integration
link afiliado
partners
hiring
scaling
test plan
dog fooding
---
# work study life balance
URL: https://sibelius.github.io/zettelkasten/mentorship/work-study-life-balance
Tags: advice, mentorship, questions, async
## work study life balance
"What strategies do you suggest for balancing ongoing technology learning with the demands of work and personal life?"
The best way is to align your work with what you want to learn.
For instance, if you want to study more React, the best way is to get a job that uses React every day.
You will get paid to study and learn what you are looking for.
If you can't do that in your current job, you have some options.
You can introduce this new technology in your work if this makes sense.
Write an RFC (Request For Comments) showing all the benefits of this new technology for the company current tech stack.
Do a simple POC (Proof of Concept).
You can get another job that uses this new tech.
You can get a freelancer to learn more this new tech.
You just need to be able to learn fast until they figure it out that you don't have everything figure it out.
To balance your work with your life, you need to work in something that you believe.
You need to optimize and automate the work, so you can be able to be very productive and work for 6/8 hours.
Working extra time can be useful in the beginning of the carrer so you can grow faster.
Always work hard for yourself.
Every time you are working on something more hours, and you are learning a lot, it is good for your carrer and for your company.
## References
- [Scaling Engineering Teams via RFCs: Writing Things Down](https://blog.pragmaticengineer.com/scaling-engineering-teams-via-writing-things-down-rfcs/)
---
# work visibility
URL: https://sibelius.github.io/zettelkasten/mentorship/work-visibility
Tags: advice, mentorship, questions, async
## work visibility
"Are there specific strategies to increase the visibility and recognition of my work within the company where I will be interning?"
It is the same way that you get your work visible outside your company.
You use Learn in public.
You share all the work you are doing in public, in public channels, in articles, at open source.
You write down everything you are contributing to the company, brag document.
Your manage can forget what you did, but you should not. You should let know how you are contributing to the company.
You need to prove that your work contributions are moving the metrics that matters.
Does your work reduces costs? increase revenue? simplify onboarding? reduces CACs ? make team ship faster?
"It's better to appear honest than to be honest"
You need to market your work. Only work or coding is not enough, you need to demo, present to other areas.
## References
- [Learn in Public](https://www.swyx.io/learn-in-public)
- [Brag Documents](https://jvns.ca/blog/brag-documents/)
- [Becoming a Go To person gets you](https://careercutler.substack.com/p/becoming-a-go-to-person-gets-you)
---
# Workshop
URL: https://sibelius.github.io/zettelkasten/notes/workshop
Tags: learning, teaching
- https://www.youtube.com/watch?v=4RjXHY3w0Jg&feature=emb_title
- https://egghead.io/lessons/egghead-use-zoom-for-kcd-workshops
- https://github.com/kentcdodds/react-fundamentals
Workshop is a set of practical exercises so users really "taste" how to solve something
They need to struggle to solve at first to improve learning retaintion
Zoom has a breakout room divides the people of a workshop in many rooms so they can discuss in smaller groups while solving exercises
Kent has 3 types of workshops
- set of exercises
- fill parts of a complete app
- build an app incrementally
Each exercise can have an extra credit for advanced students
You need to cap to 30/40 people per workshop so you can have time to help all students, more active learning instead of passing learning of a webinar
Course Platform
---
# Writing
URL: https://sibelius.github.io/zettelkasten/writing
Tags: writing
I use writing to scale myself.
Writing let me structure my thoughts and ideas.
Writing is how I communicate with the world.
Writing transforms the implicit into explicit.
Writing in public improves your personal SEO.
Writing is essential in the async communication workplace if you want to avoid being 24/7 in meetings.
Everybody has something to write about it.
Everybody has something to share with the world.
---
# Writing Hacking
URL: https://sibelius.github.io/zettelkasten/notes/writing-hacking
Tags: writing
Hacking is usually associated with software.
Where someone, aka hacker, get into a system without authorization.
However we can use the term `hacking` in a lot of other situations.
And I think we can hack most of the things and situations out there.
---
# Writing study
URL: https://sibelius.github.io/zettelkasten/notes/writing-study
Tags: writing
“I think I did pretty well, considering
I started out with nothing but a bunch
of blank paper.”, Steve Martin
Whatever our topic, we have a purpose, a certain audience, a particular stance, a genre, and a medium to consider — and often as not, a design.
- https://medium.com/signal-v-noise/the-writing-class-id-like-to-teach-11b259f44a5d
jason fried
It would be a writing course. Every assignment would be delivered in five versions: A three page version, a one page version, a three paragraph version, a one paragraph version, and a one sentence version.
---
# Wrong Hiring Strategy
URL: https://sibelius.github.io/zettelkasten/notes/wrong-hiring-strategy
Tags: hiring, startups
Let's define P(x) as the probability of find a candidate that knows the `X` technology.
P(React) is the probability of a candidate to know React
P(Node) is the probability of a candidate to know Node
We can use the sum/product rule to understand how more and more items in the job posting affect the search
[https://sites.google.com/site/steveyegge2/google-secret-weapon](https://sites.google.com/site/steveyegge2/google-secret-weapon)
---
# you can do anything, but you can't do everything
URL: https://sibelius.github.io/zettelkasten/notes/you-can-do-anything-but-you-can-t-do-everything
Tags: focus, startup, writing
review
ou reduce the scope, of what are you working on, -> You reduce the scope of what are you working on,
This is the Bayes’ Theorem. You should change your prior knowledge based on new information. -> boa analogia ao bayes
---
1. Achei estranha uma construção frasal:
Para mim ler com `with` fez mais sentido:
> You focus on customer-requested features that aligned if your vision.
> You focus on customer-requested features that aligns with your vision.
De resto muito bom o artigo
---
1. bom artigo
acho que seria legal aprofundar um pouco no bayes' theorem, mostrando o pq que tem a ver e etc, mas talvez tiraria o foco do artigo
link para bayes' theorem
---
1. `You reduce the scope, of what are you working on, until you can deliver some value to your customer.`
"You reduce the scope that you are working on"
`You focus on customer-requested features that aligned if your vision.`
"...that are aligned _with_ your vision"
gostei do story telling
---
"We decided to build 10 features at the same time, instead of focusing on just one and iterating and making it perfect. In the end, we have 10 features not so good.
We decided to do very specific features for a few customers instead of building what most customers wanted. We were focusing more on customers that complained a lot in customer support, instead of customers that brought more revenue."
Isso aqui ficou muito bom!
1. “pequenas empresas perdem muito tempo arrumando bugs que só 0.001% das pessoas acharam enquanto as big tech ignoram bugs grandes enquanto desenvolvem grandes feature”
"You can do anything, but you can't do everything" remete tbm à questão da prioridade de tempo, onde o que é mais importante pra você e o que pode esperar. David Allen, com Getting Things Done, tá no meu to read list.
---
1. Muito bom o artigo
Fez bastante sentido pra mim
`You can do anything, but you can't do everything`
Precisava ouvir essa frase
---
Acabei de ler, eu acho que a parte do teorema de Bayes tá meio desnecessária - Bayes não é só sobre mudar crenças com evidência nova, é sobre como e quanto fazer isso
Acho que tem formas mais intuitivas e menos "místicas" pra quem não já conhece de explicar o conceito
Eu também acho que o seu exemplo de foco pode ficar um pouco confuso
Aprender sobre startups é um espaço bem grande! Dá pra perder foco bem facilmente aí no meio
Eu acho que você na real tá perdendo uma boa oportunidade aí de explicar que foco não precisa ser sobre fazer ou estudar uma coisa só, mas sim sobre estudar com coerência e clareza de objetivo
---
`Building software for others is easy, as you just need to deliver what they say to you. You don't need to think about product development.`
---
sugestão: colocar mais hiperlinks
Bayes’ Theorem
Minimum Viable Product.
---
- https://medium.com/astella-investimentos/di%C3%A1rio-de-um-vc-rumo-%C3%A0-conquista-do-universo-68aabe360c90
Esse texto fala sobre a importância do foco tb
A verdade é que focar não é algo fácil de se fazer. Primeiro porque cognitivamente somos feitos para _hedgear_ nossas apostas e assim aumentar nossas chances de sobrevivência. Segundo porque muitos desconhecem a história das empresas que realmente escalam. Terceiro porque tendemos a temer os competidores e achar que é melhor conquistar tudo de uma vez. Quarto, porque mesmo que eu acredite no foco, eu preciso convencer todo o meu time e as vezes investidores também. E por fim, muitas vezes não temos tempo nem dinheiro suficiente para sobreviver, e aí a única saída é vender para qualquer um que aparecer.
---
May talk about Planning and goals, I understand the example and context, but the focus needs to be aggregated to some other things. If you are focused in wrong things you don´t get much success. Maybe mentoring be interesting at this point.
Think about the utility and needs – Prospect theory and expected utility hypothesis
The expected utility hypothesis serves as a reference guide for decisions when the return is uncertain. The theory recommends which option rational individuals should choose in a complex situation, based on their risk appetite and preferences.
So, you got some risk e take some decision with some racional thinking. In another way, general people have the decision affected by the perspective, for example:
Prospect theory suggests that; When faced with a risky choice leading to gains agents are risk averse, preferring the certain outcome with a lower expected utility.
People are loss averse and prefer to remain in an inert state, this works as an internal risk policy and a reactive mental defense state. Changing mental focus requires rational, deliberative, and logical decision making. With human evolution, our body was shaped to pulp energy. Although often a person is guided with advice or suggestion about their activities and focus, change needs a prior non-intuitive rational deliberation that requires discipline, flexibility and willingness to change. Every change has a risk
Risk diversification and regression toward the mean
Defining strategy and efficient thinking, only diversifying the approaches will make you similar to the others in the market. It is important to diversify while maintaining a balance between efficiency and scale. Although it is necessary to make a quick mistake to understand the market and customers, it takes agility, knowledge, focus and competence to equate the company's progress and flow in the opportunities generated with scale.
It should have a dynamic pricing model, where the salesforce man is part of the business strategy from the beginning. As it is a disruption of the sales model, the professional's work model must be differentiated.
Prioritization; Efficiency; Time is limited; Prospect theory; Utility; Risk; Decision making; Planning; Goals; Business; Market; Product; Development; Strategy
---
# You may not need to buy this course?
URL: https://sibelius.github.io/zettelkasten/notes/you-may-not-need-to-buy-this-course
Tags: learning
Buying a course make your feel that you made a real commitment to learn something.
Watching the videos also make you feel you are making progress.
The problem start happening when you try to apply everything that you "learned" in a side project, or real life.
Usually what happens is that things are not so easy as it sounds in a video lesson, you try to setup Webpack and get weird error that didn't show in the video.
Reality has many more details that you can see in video.
All courses are about happy case. The happy case is when everything goes well.
The problem is that not everything goes well at first in real life. As your computer could be a bit difference. The version of the package you are working on is different.
So if courses are not the best way to learn something, what is the best one?
**Better ways to learn something**
Learning and cognitive process has being studied many and many years, and we still do not an answer of how we learn.
One book that has many insights about it is Make it Stick.
- https://www.amazon.com.br/Make-Stick-Science-Successful-Learning/dp/0674729013
You learn better if you connect new concepts to old ones that you know already.
You learn more practicing
[Make it stick](./make-it-stick)
---
# Youtube
URL: https://sibelius.github.io/zettelkasten/youtube
Tags: youtube, content, video
---
---
---
---
---
---
---
---
---
---
---
---
---
--
---
---
---
---
---
---
---
---
---
---
---
# Zettelkasten for Design
URL: https://sibelius.github.io/zettelkasten/notes/zettelkasten-for-design
Tags: zettelkasten, design
#organization #design
Zettelkasten is a way to organize ideas in atoms that can be joined and combined.
What would be like a zettelkasten for design?
We should be able to link one design to another
We should be able to compose designs using other design atoms.
---
# Zettelkasten Notion
URL: https://sibelius.github.io/zettelkasten/notes/zettelkasten-notion
Tags: zettelkasten, notion
#zettelkasten #notion #implementation
How to implement zettelkasten process in notion?
- use a database
- use a template for a new zettle
- add backlinks
Zettelkasten in notion: [https://www.youtube.com/watch?v=e2tttUPGlB8](https://www.youtube.com/watch?v=e2tttUPGlB8)
My Zettelkasten in Notion
I have a list of notes inside a knowledge base note
All notes are flat, I keep external links and links to other notes inside each note
I create a note with some concepts and then one note per concept
For instance, reading a blog/book I create a note for the book and N notes per each concept
I also have notes about practice.
Practice is the only way to learn about the details of reality [Reality has a lot of details](./reality-has-a-lot-of-details) .
## Links
Zettelkästen Knowledge base
## Backlinks
---
# Zine
URL: https://sibelius.github.io/zettelkasten/notes/zine
Tags: content
#content #image #text
Zine is a type of content used a lot by Julia Evans where she puts some tips and content in a single image with text.
It is a tl;dr; based on image + text, a cartoon based approach to convey information.
## Links
## References
- https://twitter.com/b0rk
- https://wizardzines.com/