
Research > Topics
- § AI
- Explaining gradient descent in machine learning with a simple analogy
- How we crafted the OGIF summarizer bot to streamline weekly knowledge-sharing
- How we created an AI powered interview system using OpenAI's ChatGPT
- Securing your remote MCP servers
- Tool-level security for remote MCP servers
- Why Hollywood and gaming struggle with AI
- § Architecture
- Automata
- Introduce the builder pattern and its use cases
- C4 diagrams
- Breaking down complexity: the role of abstractions and UML in C4 modelling
- Case study: Write-heavy scalable and reliable inventory platform
- Command pattern
- Design file-sharing system - part 1: directory structure
- Domain model in domain driven design
- Entities in domain driven design
- Event sourcing overview
- Finite state automata
- Finite state transducer
- Law of demeter
- Mealy machine
- Moore machine
- Introduce the observer pattern and its use cases
- Overview of domain driven design
- Overview on broker pattern in distributed system
- Principles of good software design
- Going through use cases of the prototype design pattern and it place among the creational patterns
- Redis streaming concurrency with master and consumers
- Redis streaming
- Reducers
- Sdk event sourcing
- Service based architecture
- A tour of Singleton design pattern with Golang
- Solid principles
- State explosion
- State pattern
- Strategy design pattern, the concept, use cases and difference with the state design pattern
- Uml state machine diagram
- Visitor design pattern, the concept, problem solution and use cases
- § Blockchain
- Assert require revert
- Blockchain bridge
- Blockchain for designers
- Blockchain oracle
- Blockchain security checklist
- Build custom AI agent with ElizaOS
- Implement a token swap from the Base chain to Bitcoin for cross-chain transactions
- Design system for layer 2 using zk rollup
- Documents
- Dollar Cost Averaging (DCA)
- External calls
- Fabric Hyperledger architecture explanation
- Federated Byzantine
- General
- Layer 2: Scaling solutions for Ethereum
- Liquidity pool
- Multisign wallet
- NFT fractionalization
- Plonky2
- Polygon zkEVM architecture
- Precautions
- StarkNet architecture
- Token
- Ton: blockchain of blockchains
- Ton's base concepts
- Using Foundry for EVM smart contract development
- Web3 development with Foundry
- zk-SNARKs
- Cognitive diversity enhances team problem solving capabilities
- economic-narratives-spread-like-diseases
- Expressing uncertainty doesn t undermine authority
- Inform rather than persuade
- metamodernism
- metaphors-create-coherent-systems-of-meaning
- metonymy-facilitates-understanding-by-focusing-our-attention
- narratives-generate-real-world-effects
- novel-metaphors-create-novel-ways-of-thinking
- objectivism-assumes-a-concrete-knowable-world
- orientational-metaphors-organize-concepts-relationally
- perspective-comprises-our-stance-our-tools-and-our-experience
- Put mental models in conversation with one another
- Salience is subjective
- sensemaking-produces-thick-data
- structural-metaphors-reveal-and-conceal-different-aspects-of-experience
- § Data Engineering
- Migration planning
- Materialized view pattern
- Multi-column index in DB
- Building a data-driven project reporting system: A lens into modern data engineering
- Acid model
- Apache Hadoop and big data
- Base model
- Behind a hive table
- Bloom filter
- Buckets on Apache Hive
- Cap theorem
- Building a local search engine for our Memo website
- Data analyst in retail trading
- Data pipeline design framework
- Data vault modelling
- Database design circular
- Database locking
- Dbt the good solution to accelerate data transformation
- Design file-sharing system - part 2: permission & password
- Designing a model with dynamic properties
- DuckDB demo and showcase
- Evolutionary database design: managing change and scaling with the system
- Full text search with postgresql
- Google data fusion
- Google dataproc
- Hadoop distributed file system hdfs
- Hive window and analytic functions
- How discord stores messages part 1 from mongodb to cassandra
- How I came up with our security standard
- Introduction to Apache Hive
- Introduction to Apache Pig
- Introduction to CRDT
- Local-first software
- Managed table vs external table
- Managing dataflow and SQL database with concurrency control
- Mapreduce components
- MapReduce
- Order by vs sort by vs distribute by vs cluster by
- Overview of bi tools
- Partitions on Apache Hive
- Quick learning vector database
- Redis leaderboard
- Self balanced bsts avl trees
- Sql and how it relates to disk reads and writes
- Sql practices orm vs plain sql
- SQL saragable queries and their impact on database performance
- Statistics in data analysis
- Utilizing cached table for binance kline api data processing
- readme
- amm
- atomicswap
- bip39
- cryptoeconomics
- defi-application
- defiapplication
- definition
- dex-market-share
- economic-limits-of-proof-of-stake-blockchains
- history-of-consensus-protocol
- history
- how-it-works
- liquidity-pool
- market-share-dex
- challenges
- community-owned-characters
- pool
- rekt
- smart-contract
- smart-contracts
- swap
- block
- chart
- dao
- note
- unstoppable-code
- § Delegation
- § Design
- Card sorting and a glimpse at experimental sorting session
- Competency mapping
- Design better mobile application
- Design resourcestools
- Design system
- Design tips tricks
- Design workflow
- Designing for forgiveness: creating error-tolerant interfaces
- Domain glossary
- Domain insight research framework
- Focus personas on tasks goals and motivations
- Focus product development on customer jobs that are important tangible unsatisfied and lucrative
- Gestalt principles in UI design
- Getting started with Webflow
- Good design understanding
- Grid and layout
- How a design system work
- human-needs
- Jtbd job interview structure
- Methods to overcome the limitations of personas
- Omit needless demographic information when creating personas
- People fill information gaps with assumptions
- Personas alone can t help teams achieve empathy
- Personas communicate research or they communicate assumptions
- Personas document shared understanding about users
- Personas lack rich context
- Personas make abstract research concrete for design teams
- Personas may create space for assumptions
- Personas start with qualitative research
- Six things I extracted from design thinking
- The correct way to build KPI
- The principle of spacing in UI design part 1
- The principle of spacing in UI design part 2
- Three clicks rule is a myth
- Three levels of design
- Ui design best practices dwarves
- Ui design fundamental
- Understanding an application design
- Understanding saving, investing, and speculating: key differences and strategies
- Use jtbd stories to foreground the context in which a solution is required
- Ux model
- What I learned on design thinking and software development
- § Devbox
- Ditch the containers: go containerless with Devbox
- Devbox.json: Your project's DNA
- Devbox shell: your dev environment, your rules
- The reason for being
- Devbox vs Nix: why we chose simplicity
- Devbox vs Nix: why we chose simplicity
- Fixed-output derivation in Nix
- Nix is faster than Docker build
- Pinning nixpkgs in Nix
- Shadow copies in Docker builds
- Unstable package installation in Docker
- The world before Docker
- Our docker adoption and its challenges
- Using Devbox to setup local development environment
- The overview into Nix & how we use Devbox @ Dwarves
- Devbox in production: our success story
- § DevOps
- About Devops
- Blue green deployment
- Deploy branch with vercel cli
- Docker microcontainers
- Feature flags
- How blue green deployment helped Mochi
- How we setup cicd
- Kubernetes Helm 101
- Kubeseal sops
- Progressive delivery
- Radio talk 60 blue green deployment
- Testing aws services locally with localstack
- § Elixir
- Acceptance test in elixir
- Erlang finite state machine
- garbage-collector-in-elixir
- Libcluster in elixir
- Pg in elixir
- § Engineering
- Forward proxy
- Behavior driven development
- Error messaging
- A and cname records in dns
- Analysis document
- Architecture decision record
- Are we really engineers
- Build an assistant on the terminal
- Burnup and burndown chart
- Cognitive load
- Cold start problem
- Conway s law
- Daemons and services programming guide
- Database designs for multilingual apps
- Dcos series part 1 quick look installation
- Dcos series part 2 deploy simple applications
- Dcos series part 3 service discovery and load balancing
- Dcos series part 4 deploy simple application with backend database
- Dcos series part 5 Gitlab
- Difference between project program portfolio manager
- Double entry accounting
- Edsger dijkstra interview
- Enabling team
- § engineering backend moc
- § engineering management moc
- Graphql in microservices unified api gateway
- How one product team works when having incident
- How to build a product sense
- How to run the backlog grooming effectively
- Infinite image gallery with R3f an approach
- Introduction to software craftsmanship
- Istio
- Lessons learned from concurrency practices in blockchain projects
- Our view on fullstack engineering
- Playaround with Clojure
- Pomodoro technique
- Quality assurance works in the product team
- Radio talk 61 monorepo
- Radix sort
- Redis rate limiter
- Remote moderated usability testing
- Reusability in software development
- Skill of software engineer
- Software development life cycle 101
- Software modeling
- Software quality assurance
- Split and reuse code in React application
- Sprint lifecycle
- Story point estimation
- Stream aligned team
- Tackling complexity
- Team first thinking
- Team toplogies
- The 10x engineer
- The removal of Apache Kafka's dependency on Zookeeper
- Update highest and lowest symbol prices in real time
- URL Redirect vs. Rewrite; What’s the difference?
- Vim repl driven development
- Well crafted software
- What is Kubernetes
- Why invest in tools
- Working on a project interview assessment at Dwarves
- § Frontend
- A quick intro to WebAssembly
- Accelerate project initiation with advanced Nextjs boilerplate React toolkit
- Adoption of pnpm
- An introduction to atomic CSS
- Applying mock service worker (MSW) for seamless web development
- Atomic design pattern
- Be careful with your code splitting setup
- Choosing the right Javascript framework a deep dive into React vs Angular vs Vue
- Concurrency in javascript
- Continuous translation
- Css container queries
- Css in JS
- Dark mode flickers a white background for a fraction of a second
- Debugging in javascript
- Deno
- Focus trap
- From markup to pixels - a look inside the DOM, CSSOM, and render tree
- From multi repo to monorepo a case study with Nghenhan Turbo monorepo
- Fundamental end to end frontend testing with Cypress
- HSL color
- HTML inert
- I18n frontend guideline
- Intro to IndexedDB
- Introducing HTMX - navigating the advantages and concerns
- JavaScript modules
- Lessons learned from being a part of corporate micro frontend implementation
- Micro frontends microservices for frontend development
- Mitigate blocking the main thread
- Mixpanel
- MPA, SPA and partial hydration
- Parallelism in JavaScript
- Parse, don't validate in TypeScript
- Prevent layout thrashing
- Pure CSS parallax
- Recursively export file pattern in Javascript ES6 application
- Remix versus Nextjs
- Remove unused CSS styles from Bootstrap using Purgecss
- Render optimization in data-fetching libraries
- Frontend report August 2024
- Frontend report February 2025
- Frontend report first half of November 2024
- Frontend report January 2025
- Frontend report July 2024
- Frontend report March 2025
- Frontend report october 2024
- Frontend report second half of November 2024
- Frontend report September 2024
- Retain scroll position in infinite scroll
- Scroll-driven animations
- Shadow DOM
- Sign-in form best practices
- Singleton design pattern in Javascript
- The best of CSS TLDR
- The fundamental of web performance
- Cameras in ThreeJS
- Typesafe client server
- URL formats for sharing via social networks
- Using correct Html element to increase website accessibility
- Validation with Zod
- Variable fonts
- ViteJS native modules
- WAI-ARIA
- Webassembly
- WebSockets
- What is PNPM compare to NPM/Yarn
- Why DOM manipulation is slow?
- Why micro frontend
- Why we chose our tech stack accelerating development with a robust frontend solution
- Window and iframe communication
- Zaplib post-mortem
- § Git
- Git commit message convention
- Git
- Gitflow pull request
- § Go
- Go JSON parser: number <-> interface
- Approaches to manage concurrent workloads like worker pools and pipelines
- Atomic package in golang
- Bunk license check
- Circuit breaker in go
- Efficient union of finite automata in Golang: a practical approach
- Connecting Vim with Golang
- Error handling patterns
- Go extension interface pattern
- Go concurrency
- Go as an enterprise standard language
- How to use Go in the enterprise
- When to use Go in the enterprise
- Who is using Go in enterprise?
- Why enterprise chose Java
- Why go?
- How does Go achieve type safety when it enables generics?
- Go import design: using git repo path
- Go in software engineering
- Package first design
- Leveraging Golang and WebRTC for high-performance video streaming
- Level up your testing game with gomock
- Message queues and streaming platforms eg Kafka Nats Rabbitmq
- Profiling in Go
- Slice and array in Golang
- A tour of Template method pattern with Golang
- Test doubles
- Testing made simple best practices for golang test
- Unexpected pitfalls and some handy patterns with concurrency in go
- Unit testing best practices in Golang
- Use Go selenium to crawl data
- Go commentary #5: Features, memory optimization, Minecraft server, code editor, and LLM tool
- Go commentary #6: GUI framework, leadership change
- Go commentary #7: Releases, websockets, and struct behavior
- Go commentary #8: Jupyter notebooks, Kubernetes tools, GopherCon talks
- Go commentary #9: TinyGo, SQLite vector search, and authorization
- Go commentary #23: Draft release notes for Go 1.24 and weak pointers in Go
- Go commentary #24: Coming in Go 1.24: testing/synctest experiment for time and concurrency testing
- Go weekly #2: Go 1.23 iterators
- Go commentary #3: Generic collections, generics constraints, AI bot
- Go commentary #4: Ethical hacking, HTTP requests, Mac app development
- Go weekly #1: mastering Go performance - eBPF and PGO optimization techniques
- Go commentary #18: Fuzz testing Go HTTP services
- Go commentary #19: Writing secure Go code
- Go commentary #20: Go turns 15
- Go commentary #21: Go sync.Once is simple
- Go commentary #22: GoMLX: ML in Go without Python
- Go commentary #14: Golang compile-time evaluation and Go bindings to SQLite using wazero
- Go commentary #15: using Go embed, and Reflect
- Go commentary #16: Understand sync.Map
- Go commentary #17: Leveraging benchstat projects in Go benchmark and Go Plan9 memo on 450% speeding up calculations
- Go commentary #10: Script, telemetry
- Go commentary #11: The gopher's LLM revolution - actors, frameworks, and the future of Go
- Go commentary #12: CLI renaissance with Kubernetes, REST, and terminal readers in the age of complexity
- Go commentary #13: Compiler quests and vector vexations
- readme
- canister-middleware
- canister
- chain-key
- internet-computer
- motoko
- network-nervous-system
- running-icp-program
- readme
- brains-have-evolved-to-minimize-surprise
- de-risk-innovation-by-making-smaller-bets
- different-kinds-of-uncertainty
- honing-intuition
- innovation-accrues-in-small-incremental-steps
- innovation-cascades
- common-innovation-anti-patterns
- common-myths-about-innovation
- corporate-innovation-means-discovering-sustainable-new-business-models
- established-organizations-tend-to-optimize-for-inertia
- integrate-innovation-functions-with-the-broader-organization
- loss-aversion-creates-tension-between-the-need-to-innovate-and-the-need-to-protect-the-status-quo-in-large-organizations
- why-enterprises-cant-innovate-like-startups
- base-strategy-on-leading-not-lagging-indicators
- build-organizations-around-a-long-term-narrative
- collecting-analytics-data-is-not-the-same-as-doing-research
- garbage-in-garbage-out
- good-strategy-simplifies-a-complex-problem-space
- organizations-have-become-primarily-focused-on-short-term-results
- organizations-that-depend-on-tolerability-are-ripe-for-disruption
- reading-about-strategy-wont-produce-a-winning-strategy
- specialization-narrows-our-perspective-on-what-is-salient-to-a-problem
- strategic-inflection-points-disrupt-the-underlying-assumptions-of-a-business-or-industry
- strategy-is-time-sensitive
- volatile-environments-motivate-us-to-avoid-uncertainty
- winning-strategies-result-from-good-sensemaking
- work-backwards-from-a-long-term-vision-of-the-future-to-define-proximate-objectives
- innovation-cascades
- inflection-points-reveal-themselves-first-at-the-edges
- our-vision-of-the-future-is-always-constrained-by-our-view-of-the-past
- tom-brady-principle
- fostering-serendipity
- ideas-are-constellations
- ideas-are-networks
- ideas-are-remixes
- innovation-thrives-in-open-environments
- optimize-to-be-wrong-not-right
- strength-of-weak-ties
- § Liquidity
- An overview of micro investment in real estate
- § LLM
- A grand unified theory of the AI hype cycle
- Adversarial prompting in prompt engineering
- Build your chatbot with open source large language models
- Streamlining internal tool development with managed LLMOps: A Dify case study
- § Building LLM system
- Evaluating caching in RAG systems
- Chunking strategies to overcome context limitation in LLM
- Storing long-term memory in ChatGPT using VectorDB
- Developing rapidly with generative AI
- Easy prompt engineering for business use and mitigating risks in LLMs
- Evaluate chatbot agent by user simulation
- Evaluation guidelines for LLM applications
- Exploring machine learning approaches for fine tuning Llama models
- Design feedback mechanism for LLM applications
- Foundation models: the latest advancement in AI
- Function calling in AI agents
- What is Generative UI?
- GraphRAG - building a knowledge graph for RAG system
- Guardrails in llm
- History of structured outputs for LLMs
- How to talk to ChatGPT effectively
- Evaluating search engine in RAG systems
- Intent classification by LLM
- Journey of thought prompting: Harnessing AI to craft better prompts
- LLM as a judge
- Query caching for large language models
- LLM's accuracy - self refinement
- LLM tracing in AI system
- Logging
- Metrics
- Intro to model context protocol
- Model selection
- Multi-agent collaboration for task completion
- Multimodal: in rag
- Observability in AI platforms
- Prevent prompt injection
- Proximal policy optimization
- Q learning
- Quantization for large language models
- RAPTOR: Tree-based retrieval for language models
- Re-ranking in RAG
- ReAct(reason + act) in LLM
- Introduction to reinforcement learning and its application with LLMs
- Reward model
- ReWOO: Reasoning without observation - a deeper look
- RLHF with Open Assistant
- Select vector database for LLM
- Story map for LLMs
- Building agent supervisors to generate insights
- Natural language to database queries: Text-to-MongoDB
- The rise of AI applications with LLM
- Thumbs up and thumbs down pattern
- Tracing
- Use cases for LLM applications
- Workaround with OpenAI's token limit with Langchain
- Working with langchain document loaders
- § Mobile
- Build a passcode view with Swift
- Create circular text using SwiftUI
- Data race and race condition
- Draw watch face using SwiftUI
- Kotlin coroutine lifecycle
- Kotlin coroutine
- Reproduce Apple Find Me bottom menu view
- Scale up application using Jetpack navigation
- Secret management on iOS
- Stateless and stateful widgets in Flutter
- Swift 5 4 resultbuilder
- Swiftui
- The structure of the command line app
- Uidynamicanimator
- UIKit builder pattern
- Xpc services on macOS app using Swift
- § Personas
- Disc personality types in team work
- Build productive team
- Extraverted Feeling (Fe)
- Introverted Feeling (Fi)
- Cognitive functions stack
- The history
- Introversion vs extraverion
- Intuition vs sensing
- Extraverted Intuition (Ne)
- Introverted Intuition (Ni)
- Note
- OCEAN model
- Perceiving vs judging
- 8 preferences
- Extraverted Sensing (Se)
- Introverted Sensing (Si)
- Strategies for accurate typing
- Extraverted Thinking (Te)
- Theory team building based on mbti
- Thinking vs feeling
- Introverted Thinking (Ti)
- § PM
- An alternative to TM
- Definition of done
- Estimation in agile
- How to deal with technical debt in Scrum
- Our daily standup format
- Project management
- § Product
- Aarrr framework in a nutshell
- aarrr-vs-hook
- build-in-public
- defining-features
- design-a-habit-forming-product
- habit-forming-product
- managing-an-agile-project
- product-roadmap
- project-goals
- risk-management
- setup-feedback-loop
- Subscription pricing models
- success-of-software-projects
- the-hook-model
- the-kano-model
- traditional-product-roadmaps-encourage-confirmation-bias
- § Productivity
- § Prompt Engineering
- Project operations copilots
- Team copilots
- § Quality
- Boundary and equivalence partitioning testing
- Qc onboarding
- Test cases breakdown structure
- § React
- A fragment colocation pattern with React & Apollo GraphQL
- Build polymorphic React components with Typescript
- Code splitting in React
- Component communication and decoupling
- Component composition patterns in React
- Design system integration in React
- Different ways to test React application
- Hoc renderprops and hook in Reactjs
- Hook architecture in React
- Invoking component functions in React
- Preserving and resetting state in React
- React 18
- React fiber
- React server components, NextJs route and data fetching
- Rendering strategies in React
- State management strategy in React
- Tackling server state complexity in frontend development
- Testing strategies in React
- UseEffect double calls in React 18
- When should we use useReducer instead of useState?
- Why Virtual DOM is fast?
- § Rust
- Error handling on Rust
- Playaround with Rust
- Rust trait
- § Security
- A holistic guide to security
- Applied security basis
- The key of security mechanisms in tackling cyber threats
- § Solana
- Anchor framework
- Dynamic liquidity market maker - a new form of concentrated liquidity AMM on Solana
- How tokens work on Solana
- Introduce to Solana token 2022 - new standard to create a token in Solana
- Metaplex NFT compression
- Solana account
- Solana core concepts
- readme
- ≈ Founder liquidity
- Abundant data makes us jump to quantitative data as the solution to every problem
- Democratize user research to scale user research
- Four theories of truth
- Good research starts with a good question
- How many users should you interview
- Landscape of ux research methods
- Lean methodologies promote velocity at the expense of understanding
- Make research insights easy to find consume and use
- Mastering ux research essential techniques for successful design
- Qualitative and quantitative research methods each have trade offs
- Qualitative and quantitative research represent different philosophies of knowledge
- Qualitative research creates mental models about the problem space
- Qualitative research excels at explanation
- Qualitative researchers care more about data saturation than sample size
- Quantitative analysis is not inherently more reliable than qualitative data
- Prototypes help test ideas that are already refined
- Research repositories should generate new knowledge
- Change happens gradually then suddenly
- Measuring behaviour changes behaviour
- Quant data is lossy
- Skeuoumorphic models limit possibilities for innovation
- Spend more time in the problem space
- Test digital experiences longitudinally
- Triple s of ux in web3
- User research teams should act as organizational multipliers
- Users perception of frequently used applications declines over time
- § ux design
- Ux research activities by product lifecycle
- § ux research
- Ux researchers should care about strength of evidence
- § Wealth Study
- Generation wealth
- § Writing
- A scene comprises large scale and small scale structures
- Core needs and psychological maneuvers give fictional characters depth
- Dialogue illustrates the nature of the character
- Elizabeth George s character prompt sheet
- euphemisms-signal-discomfort
- Five commandments of storytelling
- Give abstract concepts a human face
- brainstorming-surfaces-available-ideas-not-new-ideas
- decontextualize-ideas-to-make-them-new
- design-environments-to-facilitate-behaviours
- hierarchical-systems-limit-connections-across-their-horizontal-layers
- knowledge-is-a-compounding-investment
- knowledge-work-means-transforming-old-ideas-into-new-ones
- make-notes-in-your-own-words
- read-broadly-with-purpose
- rigid-systems-are-fragile-systems
- store-information-where-you-would-want-to-encounter-it-again
- take-notes-with-connection-in-mind
- write-from-the-bottom-up
- writing-by-hand-is-a-forcing-function
- writing-is-thinking
- writing-with-a-zettelkasten
- Lester Dent s master plot for pulp fiction
- marry-form-with-function
- metaphors-structure-our-interpretation-of-the-world
- narrative-helps-the-human-mind-make-sense-of-events
- narratives-enable-us-to-act-decisively-in-conditions-of-uncertainty
- permanent-notes-develop-new-ideas
- Place characters within a landscape
- Question tree
- Show don t tell
- State, explain, link - An all-purpose writing technique
- Talking heads avoidance device elizabeth george
- Ensure the trunk of a narrative is more substantial than the branches
- Good endings make a story memorable
- Good story leads entice and inform
- Good writing makes the familar new
- Narrative sequencing informs meaning
- Stories need action and commentary
- Use language with necessity
- The six lines of gold
- § Zettelkasten
- Build randomness into knowledge generation systems
- Different kinds of zettelkasten notes
- Fleeting notes are reminders
- Brainstorming surfaces available ideas not new ideas
- Decontextualize ideas to make them new
- Design environments to facilitate behaviours
- Knowledge is a compounding investment
- Knowledge work means transforming old ideas into new ones
- Make notes in your own words
- Read broadly with purpose
- Rigid systems are fragile systems
- Store information where you would want to encounter it again
- Take notes with connection in mind
- Write from the bottom up
- Writing by hand is a forcing function
- Writing is thinking
- Learning is enhanced by surprise
- Permanent notes are permanently useful not permanently unchanging
- Purpose of zettelkasten
- Write literature notes to inform permanent notes
- Writing with a zettelkasten
- § Zero Knowledge Proof