Skip to content

Commit

Permalink
+++
Browse files Browse the repository at this point in the history
  • Loading branch information
Offirmo committed Oct 30, 2024
1 parent db91551 commit 72cc287
Show file tree
Hide file tree
Showing 11 changed files with 52 additions and 40 deletions.
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
12 factors https://12factor.net/
[ ] https://devpedia.pages.dev/
[ ] +++ https://en.wikipedia.org/wiki/List_of_software_development_philosophies
[ ] +++ https://explorer.globe.engineer/
[ ] +++ https://martinfowler.com/
Expand All @@ -12,6 +11,7 @@
[ ] http://nodeschool.io/#workshoppers
[ ] http://rethinkdb.com/blog/node-4/
[ ] http://www.letudiant.fr/palmares/palmares-des-ecoles-d-ingenieurs/ouverture-internationale-2.html
[ ] https://devpedia.pages.dev/
[ ] https://en.wikipedia.org/wiki/Hofstadter's_law
[ ] https://en.wikipedia.org/wiki/Reference_class_forecasting
[ ] https://github.com/anvaka/npmrank/blob/master/sample/dependencies.md
Expand All @@ -27,16 +27,16 @@
[ ] SWE at Google https://abseil.io/resources/swe-book/html/toc.html
[ ] technical things every software developer should know https://github.com/mtdvio/every-programmer-should-know
abstraction https://www.merrickchristensen.com/articles/abstraction/
access control
access control -- Role-Based (RBAC)
actually portable executables https://justine.lol/ape.html
allocation
annotation
anomaly detection
API (Application Programming Interface) = interface (set of subroutine definitions, protocols, and tools) for exposing a software feature, defines interactions that allows two applications to talk to each other
API -- easy to build one, hard to build the **right** one
API -- economy = the depth and breadth of APIs that are available for developers to use in the current landscape.
API -- external-facing = are where "design up front" and consideration about future use cases really matters. Changing APIs is a pain for us and for our users, and creating backwards incompatibility is horrible (although sometimes impossible to avoid). https://opensource.com/article/17/5/30-best-practices-software-development-and-testing
apply / call / bind
arguments
assembly
async -- design pattern -- reactor pattern
async -- sync = By synchronous we mean a function that calls its callback on the same tick in the javascript event loop, without doing any I/O or using any timers
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,13 +24,15 @@ application posture -- 2 transient = comes and goes, presenting a single, high-r
application posture -- 3 daemonic = background processes that require no direct user interaction.
application posture -- 4 parasitic/auxiliary = similar to transient applications in providing a limited, focused set of functionality and occupy a small space, but they are shown persistently and can be used for a long period of time.
application posture = sovereign, transient, background, auxiliary https://en.wikipedia.org/wiki/Application_posture
apply / call / bind
architecture -- islands
architecture -- JAMStack = "JavaScript, APIs, Markup" as much HTML as possible is pre-built and stored in a content delivery network (CDN). Instead of running a monolithic backend application on the server side to generate dynamic content, dynamic components of the application are based on APIs. Ideally, this results in a much faster user experience and a much simpler developer experience. https://www.cloudflare.com/learning/performance/what-is-jamstack/ https://jamstack.org/what-is-jamstack/
architecture -- JamStack = decouples the web experience layer from data and business logic, improving flexibility, scalability, performance, and maintainability
architecture -- LAMP (outdated) Linux, Apache, MySQL, PHP/Python/Perl
architecture -- MEAN "MongoDB, Express.js, Angular, Node.js"
architecture -- microservices, API-first, cloud-native SaaS, headless (MACH) https://machalliance.org/mach-technology
architecture -- SSR, ISR, CSR, PPR (see 'rendering')
arguments
ARIA "Accessible Rich Internet Applications" https://www.w3.org/WAI/ARIA/apg/
Backends For Frontends (BFF) https://samnewman.io/patterns/architectural/bff/
blocking -- css -- Stylesheets are render blocking
Expand Down Expand Up @@ -262,6 +264,8 @@ routing react-resource-router
security -- clickjacking https://portswigger.net/web-security/clickjacking
security -- cross-site leaks https://xsleaks.dev/
security -- in-app browsers https://krausefx.com/blog/ios-privacy-instagram-and-facebook-can-track-anything-you-do-on-any-website-in-their-in-app-browser
SPA https://www.matuzo.at/blog/2023/single-page-applications-criticism
SPA vs MPA
spirit -- browsing https://christianheilmann.com/2024/09/15/lets-bring-back-browsing/
spirit -- view source affordance https://htmx.org/essays/right-click-view-source/
SSR good explanation https://single-spa.js.org/docs/ssr-overview/
Expand Down Expand Up @@ -291,8 +295,6 @@ UI -- properties -- Multi-screen = take advantage of multiple displays
UI -- properties -- Natural-language = User types in a question and waits for a response. used for search engines and on webpages.
UI -- properties -- Permission-driven = show or conceal menu options or functions depending on the user's level of permissions. The system is intended to improve the user experience by removing items that are unavailable to the user. A user who sees functions that are unavailable for use may become frustrated. It also provides an enhancement to security by hiding functional items from unauthorized persons.
UI -- views
SPA vs MPA
SPA https://www.matuzo.at/blog/2023/single-page-applications-criticism
UI https://en.wikipedia.org/wiki/User_interface
User Agent Interface (UA) https://www.bram.us/2021/07/08/the-large-small-and-dynamic-viewports/#large-viewport
UX -- Above the fold = is the area of a webpage that fits in a browser window without a user having to scroll down. This is the content that is first seen by the user and often dictates whether they’ll continue reading the webpage.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

1% rule -- 90-9-1 = 90% consume, 9% edit, 1% add
1% rule -- lurk, lurker
1% rule = only 1% participants add content https://en.wikipedia.org/wiki/1%25_rule
Expand Down Expand Up @@ -30,17 +31,26 @@
[ ] real case https://deno.com/blog/how-we-built-jsr
[ ] research papers: https://medium.com/@rohitverma_87831/my-interview-experience-at-google-afc1080df175
[ ] Software Engineering Advice from Building Large-Scale Distributed Systems
access control
ACID -- 1 Atomicity = transactions are "all or nothing"
ACID -- 2 Consistency = integrity constraints: "valid state" before AND after a transaction
ACID -- 3 Isolation = "independent transactions"
ACID -- 4 Durability = transaction resistance to system failures "once committed, always committed"
ACID = a set of properties of database transactions intended to guarantee data validity despite errors, power failures, and other mishaps https://en.wikipedia.org/wiki/ACID
API -- best practices -- 1 DO - help client's "render-as-you-fetch" by co-loading critical data. Do not defer too much logic on the front-end.
API -- best practices -- 1 DON’T - Build overly ‘flexible’ APIs that require client side logic and input manipulation (in the context of relay EntryPoints))
API -- best practices -- 2 Be pragmatic - if there are many types, consider using frontend renderers instead of an interface
API -- best practices -- 2 DO - polymorphic types, ex. multiple "cards/calendar items/tasks" If possible, use a GraphQL interface to bridge over multiple types
API -- best practices -- 2 DON’T Create new concrete types that represent existing objects. It kills Relay
API -- best practices -- 3 DO - Use GraphQL interfaces to make scenario created objects and business objects ‘look’ the same to the frontend
API -- best practices -- 3 DON’T - Try and coerce objects that are different into the same GraphQL concrete type
API -- constraints -- Relay EntryPoints = a loading mechanism that makes implementing the parallel loading pattern render-as-you-fetch simple, as it encapsulates information about an experience’s UI assets and its required GraphQL data into a single loadable resource. https://github.com/relay-tools/typescript-relayjs-examples/issues/1
API -- contracts
API -- Diogo Lucas classification = far-team, near-team and inner-team. inner team = used within a team or between partner teams, near team = "Conway APIs" between teams that don't always communicate with each other, Far-team API = between teams that have low-bandwidth communications
API -- Don’t -- Build overly ‘flexible’ APIs that require client side logic and input manipulation (in the context of relay EntryPoints))
API -- hybrids = reconcile the need for a stable public API that will not constantly disrupt your carefully tended ecosystem with your team’s ability to move fast and (eventually) break stuff? cater for different requirements regarding security and SLAs or to radically different client natures? https://www.youtube.com/watch?v=eqy609JleoE
API -- REST -- POST https://www.tbray.org/ongoing/When/200x/2009/03/20/Rest-Casuistry
API -- view -- scope -- types = "raw / user defined scope" ex. a user-entered filter, "natural object scope" = when the object is a natural container, "persisted scope" = saved filter / board / custom view
API -- view -- scope = the limit of where to conduct a search for domain objects for display on a view
API -- view = an API is a view on the resources, or is a certain resource mapping over the business objects
API -- visibility = public/external > internal > team > private beta. Guidelines: Consider a public-by-default approach, even if you are starting at a lower level of access (helps dogfooding, new use cases. Treat your internal APIs as candidates for Public level access (bc happens quickly, sometimes for merging with a public one)
API gateway
API-First = Built with APIs from the ground up. All functionality is exposed through an API
Expand Down Expand Up @@ -87,6 +97,7 @@ auto-scaling
autocorrection https://www.canva.dev/blog/engineering/building-a-data-driven-autocorrection-system/
availability
availability zone
AWS -- accounts -- limitations https://www.atlassian.com/blog/atlassian-engineering/multi-account-strategy
AWS Shield
AWS WAF
back of the envelope
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ demand curves slope down: The harder something is to do, the fewer people will d
democracy -- education https://politics.stackexchange.com/questions/84583/is-democracy-possible-in-a-country-with-a-relatively-low-educated-population
democracy -- types https://en.wikipedia.org/wiki/Guided_democracy
dependability https://posthog.com/founders/first-ops-hire
deterrence
differences: introvert/extrovert
discernement -- technique de pile ou face
disrespect = lack of consideration or regard for others’ privacy, physical or emotional space, viewpoints, or belongings. Intimidation, aggressive behavior, “the silent treatment”. Thoughtless or arrogant behavior, like using profanity when someone objects to it.
Expand Down Expand Up @@ -262,6 +263,7 @@ minorities -- silent majority = unspecified large group of people in a country o
minorities -- vocal minority
monkey ladder experiment https://factschology.com/factschology-articles-podcast/monkey-ladder-experiment-truth
Monty Hall problem https://en.wikipedia.org/wiki/Monty_Hall_problem
mutual assured destruction https://en.wikipedia.org/wiki/Mutual_assured_destruction
Mutually Exclusive, Collectively Exhaustive (MECE) https://strategyu.co/wtf-is-mece-mutually-exclusive-collectively-exhaustive/
naiveté: abus sexuels, mafia
needs / wants https://en.wikipedia.org/wiki/Need
Expand Down Expand Up @@ -428,6 +430,7 @@ via Negativa = When we have a problem, our natural instinct is to add a new habi
voleur volé
volume hiring
wabi-sabi https://en.wikipedia.org/wiki/Wabi-sabi
war https://en.wikipedia.org/wiki/War
wartime/peacetime https://newsletter.pragmaticengineer.com/p/wartime-vs-peacetime
We must remember that entire societies can and often do follow the wrong path for a very long time https://news.vanderbilt.edu/2011/04/13/michael-burry-transcript/
what vs how = OPPOSITE of school +++ https://strategyu.co/consulting-mindset-shifting-from-the-what-to-the-how/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,9 @@ https://developer.mozilla.org/en-US/docs/Web/HTML/Microdata
https://developer.mozilla.org/en-US/docs/Web/HTML/microformats


https://github.com/mozilla/pdf.js


https://www.awsgeek.com/KubeCon-Virtual-2020/Managing-2-5-Million-Lines-of-YAML/

https://developers.google.com/search/docs/appearance/structured-data/article
Expand Down
1 change: 1 addition & 0 deletions stack--current/9-rpg/xx-notes/common/notes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
https://rpg.stackexchange.com/questions/213637/what-traits-can-i-combine-to-make-a-long-lived-race-that-matures-at-the-human-no
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@ export { VERSION, NUMERIC_VERSION } from './build.js'

export const LIB = '@tbrpg/state'

export const SCHEMA_VERSION: number = 16
export const SCHEMA_VERSION: number = 17
// 17: new Engagement state
Original file line number Diff line number Diff line change
@@ -1,20 +1,25 @@
import { Enum } from 'typescript-string-enums'

const EngagementKey = Enum(
'just-some-text',
'hello_world--flow',
'hello_world--aside',
'hello_world--warning',
'tip--first_play',
// TODO suggest changing name
// TODO suggest changing class
'code_redemption--failed',
'code_redemption--succeeded',
'achievement-unlocked',

// TODO tips? Should they be here?- 'tip--first_play',
// TODO suggest changing name
// TODO suggest changing class

// TODO inventory full
// TODO suggest optimizing equipment

const EngagementTemplateKey = Enum(

'code_redemptionⵧfailed',
'code_redemptionⵧsucceeded',

'achievement_unlocked',

// meta
'reborn',
)
type EngagementKey = Enum<typeof EngagementKey> // eslint-disable-line no-redeclare
type EngagementTemplateKey = Enum<typeof EngagementTemplateKey> // eslint-disable-line no-redeclare

export {
EngagementKey,
EngagementTemplateKey,
}
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ import {
change_avatar_class,
_autoplay,
} from '../reducers/index.js'
import { EngagementKey } from '../data/engagement/index.js'
import { getꓽengagement_template, EngagementTemplateKey } from '../data/engagement/index.js'

/////////////////////

Expand Down Expand Up @@ -117,10 +117,7 @@ function reset_and_salvage(legacy_state: Immutable<any>): Immutable<State> {
...state,
u_state: {
...state.u_state,
engagement: EngagementState.enqueue(state.u_state.engagement, {
type: EngagementState.EngagementType.warning,
key: EngagementKey['reborn'],
}),
engagement: EngagementState.enqueue(state.u_state.engagement, getꓽengagement_template(EngagementTemplateKey.reborn)),
},
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,12 @@ import {
} from '@tbrpg/state--achievements'
import {
enqueue as enqueueEngagement,
EngagementType,
} from '@oh-my-rpg/state--engagement'

import { type State, UState } from '../../types.js'

import ACHIEVEMENT_DEFINITIONS from '../../data/achievements.js'
import {EngagementKey} from '../../data/engagement/index.js'
import { EngagementTemplateKey, getꓽengagement_template } from '../../data/engagement/index.js'

/////////////////////

Expand All @@ -37,17 +36,7 @@ function _refresh_achievements(state: Immutable<State>): Immutable<State> {

if (current_status === AchievementStatus.unlocked) {
// tell the user
engagement = enqueueEngagement(engagement,
{
type: EngagementType.aside,
key: EngagementKey['achievement-unlocked'],
},
{
semantic_level: 'success',
auto_dismiss_delay_ms: 7_000, // TODO magic number!!
icon,
name,
})
engagement = enqueueEngagement(engagement, getꓽengagement_template(EngagementTemplateKey.achievement_unlocked))
}
})

Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
export * from './autoplay.js'
export * from './base.js'
export * from './codes.js'
export * from './codes/index.js'
export * from './create.js'
export * from './play/index.js'

0 comments on commit 72cc287

Please sign in to comment.