ποΈΒ§ Archive
1244 pages
- π Durability is at odds with High Availability
- π Dynamo: Amazon's highly available key-value store
- π Introducing Support for Move Operations in Melda CRDT
- π Melda: a general purpose delta state JSON CRDT
- π Hybrid Logical Clock
- π Merkle Search Trees: Efficient State-Based CRDTs in Open Networks
- π Approaches to conflict-free replicated data types
- π Mechanical sympathy
- π Causal consistency is the strongest consistency model achievable while not losing availability
- π CAP theorem was proved interpreting strong consistency as linearizability
- π Content addressing forces data into DAG
- π Merkle-CRDTs: Merkle-DAGs meet CRDTs
- π How to: nix-direnv in manual mode
- π Β§ Job titles
- π Job title = role + level
- π Job roles are a good tool to quickly establish context in communication
- π Job titles are a tool to quickly establish context
- π Inconsistent/unfair job titles donβt grant assumed credibility
- π Job titles grant assumed credibility
- π Quote: having a proper job title helps underrepresented folks
- π Having appropriate job title helps save time and energy
- π Bit-flipping attack
- π Structural editors must handle invalid/broken state
- π Pretend the software is magic
- π DLT trust is dependent on majority following the rules
- π Use Distributed State Machines to handle centralized requests in CRDT
- π Linguistic relativity applies to programming and query languages as well
- π Linguistic relativity
- π Β§ Brainstorming
- π Production blocking in brainstorming
- π Sharing ideas on stickies helps to avoid production blocking
- π For best brainstorming, cycle through individual idea generation and group idea sharing
- π Notes on: βGraphs, Metagraphs, RAM, CPUβ by Linas VepΕ‘tas
- π Group brainstorming feels more productive because it is cognitively easier
- π Brainstorming individually is more efficient that brainstorming in a group
- π To avoid groupthink, start individually and then merge
- π Notes on: Group versus individual performance on tasks requiring ideational proficiency (brainstorming): a review
- π Notes on: βDecisiveβ by Chip & Dan Heath
- π Vanishing Options Test
- π Execs who weigh more options actually make decisions faster
- π All-or-nothing thinking
- π You are susceptible to confirmation bias even if you seek out more information
- π Product experiments should not be scientifically rigorous
- π Shadow is not necessarily bad aspects of ourselves
- π Notes on: βContinuous Discovery Habitsβ by Teresa Torres
- π In product discovery interview, ask customers to share stories
- π Reification fallacy
- π Golang cheatsheet
- π Thoughts subvocalization is similar to subvocalization in rapid reading
- π We verbalize/visualize thoughts to activate our brain βfrom outsideβ
- π Conducting an interview, youβre also representing your company
- π LLM chatbots could allow communicating with Zettelkasten
- π Unison might be a good language for LLM-driven programming
- π LLMs work better with static/typed programming languages
- π LLMs work better with explicit/verbose code
- π LLMs can expedite software development by offloading simple tasks
- π With advance of computing, programming becomes more and more complicated
- π Code as Craft is a marketing tool to attract talent
- π Programming used to be perceived as a second-class intellectual activity
- π The Humble Programmer
- π The Death of Code as Craft
- π The Slight Edge
- π Adult Children of Emotionally Immature Parents: How to Heal from Distant, Rejecting, or Self-Involved Parents
- π How to track UTM parameters in Google Ads
- π Work expands to fill available team
- π War metaphor in business
- π Notes on: Fried, J., & Heinemeier Hansson, D. (2018): It does't have to be crazy at work
- π Language runtime
- π Stress. Chapter 43 - Burnout
- π Humans experience loneliness because being alone used to be dangerous
- π Laziness might be a symptom of burnout
- π Excitement is the first stage of burnout
- π Technical design helps to save time on reworks
- π Useful RDF vocabularies/ontologies
- π User-programmable language parser
- π Diamond-square terrain generation
- π Β§ Noise functions
- π Perlin algorithm generates square noise
- π Fractal noise
- π Use gradient noise functions for map generation
- π A*
- π ECS makes it easy to store/load game state
- π ECS architecture allows great flexibility in defining entity types
- π ECS may provide better performance
- π (ECS) Cross-system communication via event entities
- π Entity Component System (ECS)
- π Goal-Oriented Action Planning
- π For engineering department, the goal of planning is to solve project management triangle
- π Formal planning is usually done when budget is involved
- π Estimates in project planning phase tend to become deadlines
- π Project management triangle
- π Β§ Project planning phase
- π Feedback (loop) is a requirement for improvement
- π Β§ Feedback loop
- π Log working time to improve your estimates
- π Tackle risky tasks as early as possible
- π How to involve team into design?
- π How to: disable <a> link
- π Migrating from Next.js to Astro
- π Lowering the friction may exponentially influence the usage
- π Bit.dev decouples components and packages to lower the barrier to create a new component
- π Β§ B-tree
- π Push smart components up as much as possible
- π Smart/dumb components (Container/View)
- π Injecting container implementation per container
- π Injecting smart components / containers
- π The Mirroring Hypothesis: Theory, Evidence and Exceptions
- π Software design is better done by the implementation team
- π As an architect, allow the team to get the experience and learn
- π Software architects should continue coding to get the feedback
- π Defaults matter
- π Process boundaries are harder to violate than module boundaries
- π Microservices architecture is a way to de-couple organizations (allowing them to grow)
- π Domain-driven design
- π CSRF (Cross-site request forgery)
- π Terraform
- π Data outlives code
- π Retrospective activities
- π Designing Data-Intensive Applications
- π Conflict-Free Partially Replicated Data Types
- π The log-structured merge-tree (lsm-tree)
- π CmRDT naturally allow inspecting the history
- π How-to: disable .DS_Store on macOS
- π Conflict-Free Replicated Data Types
- π Lightning Memory-Mapped Database (LMDB)
- π Key-value stores can be used as database storage engines
- π RDF vs. LPG
- π Labeled Property Graph (LPG)
- π Resource Description Framework (RDF)
- π Designers of systems tend to design ways for themselves to bypass the system
- π Database as an OS component
- π Β§ Personal computing
- π You shouldnβt be thinking that youβre using different computers
- π Lexorank
- π Every extensible system feels messy and spaghetti-like
- π Drive: the surprising truth about what motivates us
- π Being liberal in accepted input hinders backward compatibility
- π Being strict in accepted input allows finding errors
- π Postelβs Law
- π Co-effect system reifies dependencies
- π Effect systems reify effects
- π Knowledge illusion : the myth of individual thought and the power of collective wisdom
- π Radical honesty: how to transform your life by telling the truth
- π¨βπ¬ Alpha
- π¨βπ¬ Alpha #8: Let bindings and recovery from HIR refactoring
- π Β§ Intermediate Representation (IR)
- π vnmakarov/mir
- π Compiler optimization are still worth to pursue
- π CPS is better suited for later compilation stages
- π The Case for 'Developer Experience'
- π Applications as sandboxes are the result of Conwayβs law
- π LLVM IR
- π¨βπ¬ Alpha #7: HIR, High-level Intermediate Representation
- π Software design for flexibility: how to avoid programming yourself into a corner
- π Principles: life and work
- π Swift Intermediate Language (SIL)
- π 2015 LLVM Developersβ Meeting: Joseph Groff & Chris Lattner βSwift's High-Level IR: A Case Study..."
- π¨βπ¬ Alpha #6: Compiling with Continuations, continued
- π Humans are fearful and anxious because we used to be in the middle of the food chain
- π Humans are not designed for comfort
- π Science does not study you (unless youβre a lab rat)
- π Co-effects
- π Compiling with continuations, or without? whatever.
- π Compiling with continuations resources
- π Compiling without continuations
- π Compiling with continuations, continued
- π The essence of compiling with continuations
- π Rust: on-stack dynamic dispatch
- π¨βπ¬ Alpha #5: Compiling with Continuations
- π A major version bump does not imply incompatibility
- π Β§ Package management and versioning
- π Version numbers version package interface as a whole
- π Packages only use a subset of other packagesβ interfaces
- π Libraries should communicate dependenciesβ versions constraints
- π Dependenciesβ version constraints require additional maintenance work
- π Version number communicates version of the interface and of its implementation
- π Implicit interface
- π Interface is second-class for package managers
- π Packages could declare their dependenciesβ interface instead of version constraint
- π Package managers are dependency injection mechanisms
- π It is preferable to have a single version of each library
- π Libraries should not pin specific versions of dependencies
- π¨βπ¬ Alpha #4: garbage collection and golden testing
- π¨βπ¬ Alpha #3: dynamically-sized types and almost-finished garbage collection
- π (LLVM) How to: debug shadow stack gc lowering
- π Zig functions are colorless
- π Zig
- π Conservative GC can relocate objects if their pointer does not occur on stack
- π Servoβs GC types are only safe because GC is conservative
- π How to write a Rust lint?
- π Servo uses Rust lints to ensure all GC pointers are rooted
- π Resource management
- π GC only helps with memory but not other resources
- π If objects are immutable, older memory can never point to the newly-allocated memory
- π A generational GC can skip scanning an old generation if it is known to not contain references to newer generations
- π VM page protection tricks can be used in normal apps too
- π mprotect to implement a write barrier (GC)
- π Dependency injection
- π Run GC as often as possible to test it and catch bugs
- π Using mprotect none to catch GC bugs
- π Domain-driven design: tackling complexity in the heart of software
- π Rust, variable-length arrays in structs
- π Β§ Garbage collection
- π Shadow stack
- π Software is not additive
- π In Rust, mut/const references are more about exclusive/shared access
- π¨βπ¬ Alpha #2: multi-methods, type hierarchy, and dot desugaring
- π Uniform access principle
- π Dot-call desugaring to function call
- π Destructive/non-destructive move
- π Atomic ordering
- π¨βπ¬ Alpha #1: a newborn programming language for extensible systems
- π On writing well: the classic guide to writing nonfiction
- π Image-based programming systems
- π Pratt parser
- π SMART goals
- π Proebstingβs law
- π You cannot correct your course if youβre standing still
- π Racket: Parameters
- π Reader/State vs dynamic scoping
- π Karpman Drama Triangle
- π Write useful books: a modern approach to designing and refining recommendable nonfiction
- π In a dynamically-typed language, every function is parametrically polymorphic
- π Aliasing only matters if a reference is aliased with another mutable reference
- π Β§ Aliasing
- π If aliasing is possible, a function call invalidates value analysis / cached value
- π Enums are not extensible
- π Turing tarpit
- π Symmetric vs asymmetric multiple dispatch
- π Ad hoc hierarchy system
- π Multiple dispatch implementation
- π Β§ Programming language implementation
- π Constant-time βis-aβ type check with single inheritance
- π Reading code is not a goal
- π Algorithm reification
- π Example-driven development
- π Design issue vs tool issue
- π Function color
- π Mindful Self-Discipline
- π Nominal subtyping establishes a partial order
- π Glamorous Toolkit Live #5: Moldable searching with Spotter & queries
- π Glamorous Toolkit Live #4: Moldable analysis of Java systems
- π Glamorous Toolkit Live #3: Example-driven development
- π The almanack of Naval Ravikant
- π Sapiens: a brief history of humankind
- π How-to: Org-mode timers
- π Glamorous Toolkit Live #6: Lepiter
- π Erlang
- π Erlang: release handling
- π Software updates as part of the programming system
- π Guile
- π Is effect system only relevant to typed languages?
- π Β§ Effect system
- π Condition system + debugger as a simple prompt UI
- π Glamorous toolkit
- π Glamorous Toolkit Live #2: Inspector views & working with a REST API
- π Glamorous Toolkit Live #1: Moldable development & a tour
- π Common Lisp: packages and symbols
- π Β§ Programmable syntax
- π Common Lisp: readtable
- π Common Lisp: classes
- π Common Lisp: multiple values
- π Common Lisp: special operators
- π Common Lisp: condition system
- π Common Lisp: Format
- π Β§ Tacit knowledge
- π Chicken sexer as an example of tacit knowledge
- π Common Lisp: Multiple Dispatch
- π Β§ Multiple dispatch
- π Scope vs. Extent
- π In Common Lisp, global variables use star *naming* *convention* because of dynamic scoping
- π In Common Lisp, all global variables are automatically βspecialβ (use dynamic scoping)
- π Global variables to pass rarely-used dependencies
- π Dynamic scoping is a better model for global variables
- π Common Lisp is a practical lisp
- π Lisp exposes two levels of syntax (s-expressions and lisp forms)
- π Zettelkasten is bad for pre-packaged learning
- π Zettelkasten is best for research
- π Kind vs. Wicked learning environment
- π How Falling Behind Can Get You Ahead
- π Extensible system makes it easy to apply the changes
- π The logical thinking process: a systems approach to complex problem solving