CategoryHyperlinks

🔖 On Emergent Centralization (archive)

There is a principle of Defensive Decentralization: when besieged, a well constructed decentralized system will further decentralize.

The corollary of which is: A well constructed decentralized system will identify & attack emergent centralization.

There has been a tendency for some decentralized systems to move towards centralization, even in non-adversarial conditions — most email going through Google servers, or a few Mastadon servers hosting a bulk of the users. The centralization isn’t always in-protocol, sometimes it can be political, in code, or in design — as seen in many blockchain projects. Designing systems that defend against this is an open problem.

🔖 Federation is the Worst of all Worlds (archive)

The threat model and economics of federated systems devolve to concentrating trust in the hands of a few, while missing out on the scale advantages of purely centralized solutions.

Since privacy isn’t always built into the protocol the user has to trust the federated server. The problem can be partly solved by building a privacy preserving data persistence layer, and an application layer on top of it.

ITCSS is a way of planning and structuring CSS for large and long-running project.

Selectors move from generic to specific, this means lower specificity selectors (those that affect a lot of DOM) appear towards the top, and the specificity increases as the project progresses. Ordering things this way takes advantage of the way CSS actually works.

ITCSS defines seven layers:

ITCSS structure

Settings: Global project settings like font sizes and color palettes.

Tools: Globally used mixins and functions.

Generic: Things like CSS resets and box-sizing rules.

Elements: Bare, unclassed HTML elements. Should bind directly to tags (h1 {}).

Objects: Layout systems and containers.

Components: Recognizable pieces of the UI. Should bind to classes only (.post-title {}).

Trumps: Inelegant and heavy-handed helper classes, hacks and overrides.

The CSS files should be broken down and kept as granular as possible. The recommended naming convention is _<layer>.<partial>.scss (for example: _settings.colors.scss, _elements.headings.scss, _components.tabs.scss). These can then be imported in the above order in the final stylesheet.

🔖 Manage large CSS projects with ITCSS

OOCSS is a way to create stylesheets that are reusable, scalable and easier to maintain. It has two main principles:

Skin & Structure: Structure is how things are laid out, and skin is the styling. These should be separated.

Container & Content: Content refers to images and paragraphs, and containers are the divs in which content lives. Containers should have their own classes, and the contents should not be scoped to their containers.

🔖 OOCSS – The Future of Writing CSS

BEM is a CSS naming convention where everything is a class and nothing is nested.

Block is a top level abstraction of a component.

.btn {}

Elements inside the block are denoted by two underscores. These shouldn’t exist outside of blocks.

.btn__price {}
.btn__text {}

Modifiers manipulate the block to add states, themes and styles. This is denoted by two dashes.

.btn--orange {}
.btn--big {}

While this makes the markup a bit verbose you get the advantage of understanding the CSS and component structure by looking at the HTML:

<a class="btn btn--big btn--orange" href="https://css-tricks.com">
  <span class="btn__price">$9.99</span>
  <span class="btn__text">Subscribe</span>
</a>

🔖 BEM 101 | CSS Tricks

Are.na: Puts all your ideas in context.

  • Blocks are used to collect pieces of information
  • Channels are used to organize and contextualize them
  • Channels can be shared with multiple members

❤️ Are.na

TiddlyWiki: A non-linear personal web notebook.

  • Index cards that are linked to each other using [[]] this creates a relationship
  • Tags can be added to index cards and offer easy navigation to other cards with the same tag
  • Transclusion lets you copy an index card’s content into another’s
  • Lists can be created with queries

❤️ TiddlyWiki

Roam Research: A note taking tool for networked thought.

  • Documents can be created on the fly by # tagging or [[]] linking to them.
  • Documents have an indented list structure
  • Tagging and linking creates relationships, the documents are classified by being linked to other documents.
  • Templates for todos, date pickers and other things
  • Daily notes that are created automatically.
  • Graph overview of all the documents and their relationships

❤️ Roam Research

During a pandemic, it is important to correct falsehoods with evidence-based information, but facts against misinformation can sometimes be ineffective. Rumours and myths are an opportunity to understand and respond to anxieties of the people spreading them, and then adjusting messaging to respond to those.

“Epidemics often become an opportunity for people to express deeper worries,” says Melissa Leach, the director of the U.K.-based Institute of Development Studies (IDS). In fact, Leach balks at the term rumours, which she finds dismissive. Call them “anxieties,” she says. Leach and other social scientists have come to see those anxieties as legitimate reactions that can be mined for useful insight — insight that can help public health officials tailor their messaging.

Rumors spread for political or sinister reasons should simply be debunked though.

🔖 Don’t Just Debunk Covid-19 Myths. Learn From Them (archive)

Are.na organizes information in Blocks (of content, kind of like articles, notes or bookmarks) and Channels (kind of like tags). They’ve made it easy move around, play, and explore content within their system. This encourages empathy towards other perspectives and the ability to recognize contextual patterns. By doing so they want to create a version of the Internet where…

We have (most of) the world’s information at our fingertips, so what do we want to do with all that? How do we make that information our own? How can we start to break all these facts down and re-shape them into something new?

🔖 Are.na Blog / Information System

A person who doesn’t usually play games played Breath of the Wild. Here are the learnings from their playthrough:

  • Controls
    • Had trouble getting used to them, especially in high-pressure situations
    • Button prompts showing where the buttons are in relation to each other was helpful
  • Camera
    • Was hard to control
    • The lock-on button that centres the camera to Link was helpful
    • Instinct was for inverted axes, possibly because of interactions on touch screens
  • Open spaces
    • Were helpful in providing breathing spaces
    • Being able to run away was helpful, gave a break between action
    • Beautiful landscapes were calming
  • Objectives
    • Didn’t pay attention to the HUD
    • Was focussed on the objectives and didn’t feel the need to explore
    • Uncluttered map was helpful, as it only had the main objectives
  • Solution space
    • Problems having multiple solutions and no one right answer was helpful
    • Leads to discovery and excitement
    • The number of options aided player expression
    • Experienced players can experiment with multiple strategies, and less experiences players are able to find at least one way

Challenging yet approachable design helps build confidence in the player

🔖 What Breath Of The Wild Is Like For Someone Who Doesn’t Play Games

Uncapped look-ahead

Chess is a look-ahead contest and that makes it annoying to play:

what will happen if I make move X? Once move X is made, what will happen if the opponent makes moves A, B or C? If he should make move A, then I can make moves D, E or F… and so on. It’s literally scanning through every possible (or reasonably valid-seeming) move that you can. 

Since the amount you can look-ahead is uncapped the entire state is available to calculate, this could undermine strategic thinking and create pressure.

Hidden information

Deterministic games should give just enough information so that the problem ahead isn’t solvable and the future potentially holds interesting alternatives.

Too small an information horizon makes the game random, and too large makes it a look-ahead contest. A balance is required to allow for rich, interesting, and creative gameplay.

🔖 Uncapped Look-Ahead and the Information Horizon

Randomness

Provides variety, diversity and quantity. It is needed for generating large worlds, levels for roguelikes, and balancing multiplayer games (when randomness favors newer players). It is also useful when players make plans and strategies based on information that is randomly generated.

Humans are bad at understanding odds because of cognitive biases. So game developers lie about numbers to match the broken understanding of probability in our heads. We are better at understanding analog things like dice (independent probability) and cards (dependent probability) and the randomness they bring.

Input randomness

Occurs before the player gets to make a decision — levels in a roguelike, drawing a card of hands. Unpredictable starting conditions might dictate the outcome, so, games should find clever ways to present good ones.

Output randomness

You make a decision and then luck takes over and tells you what happened — bullets hitting target based on probability, random encounters, or loot boxes. These can take away control from the player.

Information Horizon & Flow

Complete information transparency gives players too much information and may lead to analysis paralysis. Disrupting players’ plans with new information is exciting though.

Spikes in new information disrupts your plan and forces you to regroup and rethink. Spikes of high value information should happen at regular intervals with a slow regular flow of information between spikes.

🔖 The Two Types of Random

Continue reading “”