Dot All 2022

News, updates, and information from Dot All 2022. Thank you for reading! This page automatically updates every 30 seconds.

I’ll keep this space updat­ed with thoughts and notes on the pre­sen­ta­tions from Dot All 2022

Day 1 #

The first day of Dot All is two full-day work­shops: There won’t be any cov­er­age here for these sessions. 

Sched­ule Day 1

Day 2 #

Sched­ule Day 2

It’s a sun­ny, chilly morn­ing here in Brook­lyn and atten­dees are gath­er­ing in a court­yard out­side the venue for cof­fee and break­fast before the con­fer­ence starts at 9 AM EDT

State of Craft

Bran­don Kel­ly will kick of the con­fer­ence with his talk on, well, the state of Craft CMS. Maybe we’ll see some­thing new?

  • Team Update
    • 17 team mem­bers at P&T
    • Bri­an Han­son, and August Miller are the newest team members
    • Iwana — start­ing soon to work on Craft CMS
  • Sales, prof­its, rev­enue con­tin­ue to grow
  • Rev­enue dri­ven by Craft CMS and Commerce
  • Craft 4, Com­merce 4
    • big releas­es, first major releas­es in 4 years
    • 60% of new installs run­ning on Craft 4
    • 46% of active­ly-updat­ed installs are run­ning Craft 4
    • 87% of most pop­u­lar plu­g­ins already avail­able for Craft 4. They are hap­py with this % con­sid­er­ing the num­ber of plu­g­ins that need­ed to be updated.
    • Fea­tures in 4 Review
      • Inac­tive users, built for Com­merce. User accounts that don’t have user and password.
      • Address­es — native address fields to sim­pli­fy the com­plex­i­ty of address fields in Commerce
      • Con­di­tion Builder — Bran­don reviewed this fea­ture and where it’s available
        • Rela­tion­al fields can also use the con­di­tion builder
        • Com­merce uses con­di­tion builder, too, in var­i­ous loca­tions like ship­ping con­di­tions etc.
      • Uni­fied Ele­ment Editor
        • gives plu­g­ins a real­ly easy way to have a ele­ment edi­tor inter­face (“the stan­dard edit­ing experience”
      • Access­bil­i­ty
        • they are on track to reach WCAG AA 2.1 compliance
        • Lupe, the acces­si­bil­i­ty engi­neer, did a com­pre­hen­sive audit and found over 500 issues that need­ed to be addressed.
        • they have made a ton of progress and are now over halfway done
        • they releas­es a Craft CMS Acces­si­b­li­ty Con­for­mance Report, which is is avail­able at craftcms​.com/​a​c​c​e​s​s​i​b​i​l​i​t​y​/​r​eport
      • Plu­g­in Store
        • they launched a new plu­g­in store before Craft 4 release
        • redesigned
        • sep­a­ra­tion between Craft 3 and 4 plugins
        • side­bar with plu­g­in vital signs
    • New plugin:Shopify plugin
      • they’re launch­ing a new first-par­ty plu­g­in soon to sup­port Shopi­fy (edi­tor: smart move! Shopi­fy is huge!)
      • syncs down all Shopi­fy prod­ucts into Craft install, read only view of those products
      • relat­ed entries to the products
      • sim­ple but they hope it’s effec­tive at con­nect­ing Craft to Shopify
Craft Cloud update
  • They announced Craft Cloud 3 years ago in Mon­tréal as head­less Craft as a Ser­vice” with a lot of lim­i­ta­tions built in. They want­ed to com­plete with SaaS head­less only options (like Con­tent­ful). They got feed­back from the com­mu­ni­ty that they were build­ing the wrong product.
  • They threw it all out and start­ed over. 
  • Tenets of Craft Cloud

    • Sim­plic­i­ty; you shouldn’t have to wor­ry about serv­er specs, CPU etc. Or oth­er devops concerns.
    • Secu­ri­ty
    • Speec & Scalability
    • Envri­on­men­tal Responsibility
  • Tech Specs

    • Hybrid server­less & con­tain­er-based architecture
    • AWS Glob­al Accelerator 
    • Cloud­flare — enter­prise-leve part­ner­ship with them

    • Fea­tures

      • auto­mat­ic Composer/​npm builds
      • built-in log­ging, image tran­sofmrs, and asset storage
      • Git branch environments
      • Sta­t­ic-page caching (cloud­flare)
      • Glob­al CDN
      • Built-in SSL
      • Fire­wall and DDoS protection

They are still work­ing on it. We’re get­ting there.” They plan to launch with­in the next year.

Craft Con­sole update
  • they announced it last year at the viru­al Dot All
  • it was just comps in Fig­ma but now it’s real
  • replace­ment for Craft ID (cus­tomer portal)
  • added Orga­ni­za­tions (work like Github orgs)
  • Orga­ni­za­tions will have Plu­g­in Store List­ings and Part­ner Profiles
  • Bran­don is giv­ing a quick walk-thru of the changes with Console

Craft Con­sole is com­ing lat­er this year.

Craft CMS update
  • they’ve been busy since Craft 4 released ear­li­er this year.
  • they’re putting the fin­ish­ing touch­es on Craft 4.3
  • Bran­don is walk­ing through some of the changes in Craft 4
    • New fil­ter­ing sup­port in the Craft Plu­g­in Store
    • Date con­di­tion rule has some pre­sets in addi­tion to the range.
  • It has been over 11 years since Bran­don and Brad start­ed work­ing on Craft CMS. At the time Expres­sio­nEngine was con­sid­ered one of the best CMSes for con­tent modeling/​content authoring.
  • June 2013 — Craft 1.0 — ele­ment type API, live pre­view, cus­tom fields, entries, glob­al sets
  • July 2013 — 1.1 
  • Sep­tem­ber 2013 — Sec­tion types and entry types
  • Novem­ber 2013 — Matrix fields — the orig­i­nal vision for Craft com­ing together
  • AFter 2.0, every­thing sine then has more focused on author­ing expe­ri­ence (AX) and devel­op­er expe­ri­ence (DX) but they have not made a sin­gle change to con­tent mod­el­ing since 2.0
Craft 5
  • the biggest leap foward in con­tent mod­el­ing fea­tures since Matrix was added in 1.3
  • Entries every­where”

    • an idea they’ve been noodling on for a few years
    • Cat­e­gories become Entries
    • Tags become Entries
    • Glob­al Sets become Entries
    • Uni­fied con­tent view
      • map out IA view of your website
      • entry” doesn’t show up, they just call it content
      • ful­ly cus­tomize the con­tent mod­el­ing and author­ing experience
      • it is slide-out dri­ven, so when you click on some­thing a slide­out opens up
    • Mul­ti­ple entry authors
    • Decou­pled Entry Types
      • entry types will be their own glob­al con­cept. when you edit a sec­tion, you choose the entry types instead of cre­at­ing them. 
      • you can reuse the entry types
    • Entry portability
      • you can move entries from one sec­tion to another
    • Sched­uled Drafts
      • mul­ti­ple drafts? cre­ate Releas­es” so the con­tent goes live together 

Nest­ed Matrix
  • Some plu­g­ins have filled the gap of sim­i­lar func­tion­al­i­ty (Neo and Supertable)
  • Chal­lenges: per­for­mance and author­ing experience
  • Per­for­mance challenges
    • Bran­don goes through the ele­ment saves required for a com­plex nest­ed matrix block and the per­for­mance chal­lenges with it
    • mul­ti-sites real­ly make it com­pli­cat­ed — could be over 2700 saves for 10 sites
    • But they’ve been work­ing on mak­ing the sav­ing more performant.
      • Delta saves inro­duced in 3.4
      • 3.7 those delta saves were made recursive
      • but that didn’t real­ly help with per­foe­mance of a poten­tial nest­ed Matrix because of revisions
      • Craft 4 has a fea­ture called shared block cus­tody” — no longer a 1:1 map­ping of the matrix block and the ele­ment that saves it.
      • the result is that sav­ing is much faster — one row of new data vs an entire ele­ment saved. The same thing applies to revi­sions, too.
  • But how do they fix the author­ing expe­ri­ence?
  • Bran­don makes fun of the wild­ly com­plex page builders that peo­ple build (edi­tor: agree)
  • they think the solu­tion for nest­ed matrix is the slide out UI but the save but­ton pat­tern doesn’t fit
  • New field type
    • INCEP­TION FIELDS
      • like address fields, but for nest­ed entries
      • Cards + Slide­outs UI pattern
      • Entry types (already decou­pled in Craft 5)
      • Entry porta­bil­i­ty
      • Releas­es

Imple­ment­ing com­po­nent-dri­ven design sys­tems with Craft + Fractal

by Dal­ton Rooney, Raygun 

  • Dal­ton gave the his­to­ry of his work and how he camet o the idea of build­ing com­po­nent-dri­ven design sys­tems and a way of work­ing togeth­er between dev and design
  • A mod­el that pro­vides dif­fer­ent lev­els of access into the project to the right peo­ple at the right time.
  • Brand guide­lines => Style Guide & Pat­tern Library => Com­po­nent Library => Pro­duc­tion Application
  • This work came out of the need to col­lab­o­rate with more team mem­bers, get feed­back ear­li­er in the design process
  • Why did they choose Fractal?
    • frame­work agnostic
    • flex­i­ble structure
    • script­able, well-doc­u­ment­ed, easy to integrate
    • Craft CMS exam­ples already exist
  • Anato­my of com­po­nent (in Fractal)
    • orga­nized into hiearchi­cal folders
    • a tem­plate (twig) and con­text (js)
    • styles and scripts
    • vari­ants (con­text-defined)
    • docs or oth­er assets
  • Frac­tal Workflow
    • a node appli­ca­tion installed as a peer dep in the repo
    • all front-end com­po­nents are devel­oped and test­ed in Fractal
    • use Hygen to scaf­fold new components
    • Lar­avel Mix to com­pile all scss and js from the Frac­tal fold­er but any build tool will work; Frac­tal doesn’t care
    • Frac­tal task that exports all com­po­nents to the Craft tem­plate fold­er and gen­er­ates a components-maps.json file.
    • Craft fractal-folder plu­g­in (pri­vate)
  • Craft’s tem­plate hooks con­nects Frac­tal to Craft CMS
    • Con­text is pareped in a cus­tom PHP mod­ule and inject­ed into the entry tem­plate with a tem­plate hook.
    • The tem­plate includes the Frac­tal template 

What they like about this setup:

  • encour­ages reusable components
  • remove log­ic fromt he templates
  • decou­ple front-end from CMS
  • get input from stake­hold­ers ear­li­er in the process
  • self-doc­u­ment­ing, can share with clients

what they don’t like about the setup:

  • every­t­ing is ren­dered with twig.js but it’s not the same as twig.php
  • no log­ic in the tem­plate, no Craft CMS fla­vored Twig func­tions allowed
  • full inte­gra­tion requires cor­rep­sond­ing PHP modules
  • Frac­tal app is in main­te­nance mode, not active­ly developed

See also:

Craft in K8s

by Matt Gray, Servd.host

  • K8s => Kubernetes
  • enter­prise adop­tion of K8s is about 75% among enter­pise companies
  • 400% increase in K8s postings
  • Why care about this for Craft CMS?
    • dozens of com­pa­nies offer­ing man­aged kuber­netes now
    • best prac­tices
    • envi­ro­ment stored config
    • exter­nal back­ing services
    • build, release, run
    • state­less processes
    • port bind­ing
    • dis­pos­abil­i­ty
    • log event streams 
  • 2019 Dock­er start­ed to become adopt­ed for pack­ag­ing and run­ning applications
  • Nitro used, DDEV uses it
  • Every­thing start­ed to get containerized
  • Why is K8s so popular?
    • it acts as an abstrac­tion over serv­er resources
      • sched­ul­ing
      • net­work­ing
      • stor­age
      • resources
      • scal­ing
      • deploy­ments
The pieces of K8s (and Craft)
  • Con­tain­ers
    • K8s orga­nizes containers.
    • Make sure we are using con­tain­ers with­in our Craft project. We export them as images” (a blue­print for a con­tain­er) so they’re avail­abel to K8s
      • PHP, nginx, Craft CMS
      • split out process­es into mul­ti­ple con­tain­ers — allow K8s to do the things it does best
  • Epher­mal File Systems
    • con­tain­ers have their own filesystems
    • Con­tain­ers restart often
    • Each time, their filesys­tem resets to tmatch teh state
    • Any­thing we write to the file sys­tem at run-time will be lost, unless we pre­pare for it.
    • plu­g­ins can be a chal­lenge — make sure they don’t write any­thing to the file sys­tem that will cause prob­lems if those writ­ten files go away.
  • cpresources
    • This is an assump­tion that Craft/​Yii does make…that both PHP and ngnix are using the same filesys­tem and can share cpresources files.
    • this is a prob­lem in K8s because there are two sep file sys­tems in two sep containers
    • wrap every­thing in a pod” — a K8s con­cept that allows every­thing to stay togeth­er and be grouped together
  • Logs
    • epher­mal fil­sys­tems means that the file sys­tems don’t last long, so log files might go away! 
    • instead of sav­ing logs as files, we can use std­out and stderr K8s will col­lect and orga­nize them
    • CRAFT_STREAM_LOG=TRUE — Craft 4 will send logs to std­out and stderr instead of writ­ing to the file sys­tem. If using Craft 3, you’ll need to imple­ment your own over­ride for this.
  • Ses­sions and Cache
    • Craft’s default cach and ses­sion han­dles use the filesystem
    • can hurt per­for­mance if cache has to be regen­er­at­ed too often
    • solu­tion: use Redis — easy to deploy to K8s, very easy to con­fig­ure in Craft
  • Image resiz­ing
    • pro­cess­ing images using ImageMag­ick or GD requires a lot of memory
    • save your­self a headache and just use an exter­nal ser­vice: Imgix, Server­less Sharp

A Prac­ti­cal Guide to HTML Over the Wire”

by John D. Wells

  • MPA — mul­ti-page application
    • what is good at?
      • SEO; serves HTML
      • not com­plex, no com­pli­cat­ed stack to deal with 
      • speed Not so good?
      • UI fideli­ty
  • SPA — Sin­gle-Page Application
    • SEO? Not so good
    • Com­plex­i­ty? Very com­plex from design; build tool required, API required, etc.
    • Speed? it can vary depend­ing on the imple­men­ta­tion — inti­ial pay­load can be very big
    • UI Fideli­ty? excellent
  • What about hav­ing the best of both worlds? 
    • Some­thing that is good with SEO out of the box wihtout trying, 
    • some­thing that is fast, 
    • not that com­plex or with­in developer’s control, 
    • and good enough UI fidelity
  • HDA — Hyper­me­dia-Dri­ven Application
    • coined by the cre­ator of HTMX
    • inter­acts with the server 
    • responds with HTML instead of JSON
    • HTMX — evo­lu­tion of Inter­cool­er (js library)
      • author is try­ing to improve the HTML spec. The­o­ry is that HTML when it was first cre­at­ed was incom­plete; no PUTs, go GETs, no way to talk to a serv­er with­out a GET request or PUT request via form and oth­er code. 
    • Unpoly
      • Hen­nig Koch
      • unob­stru­sive JS frame­work for serv­er-side web applications”
      • it is try­ing to pogre­sive­ly enhance an MPA
    • Hotwire
      • evo­lu­tion of turbolinks
      • by Basecamp/​Hey team
    • oth­er adja­cent tooling
      • Hyper­script
      • Alpine.js
      • Sprig — Ben Cro­ker, Craft CMS Plu­g­in, built on HTMX
      • Tail­wind­C­SS

Craft Com­mand Line Magic

by Michael Rog

Slides for the talk

  • Craft’s native CLI tool
    • a host of utilites for main­tain­ing and work­ing with your Craft installation
  • build­ing your own CLI commands
  • use case examples

Res­cue sit­u­a­tions when you need to use the com­mand line

  • ./craft users/set-password
  • ./craft users/create --email --password --admin

Devel­op­ment commands

  • ./craft resave/entries --set=myField --if-empty --to bulk update entries
  • check Michael’s slides and the offi­cial Craft docs for more examples

Prod­cu­tion

  • ./craft mailer/test
Build­ing your own cus­tom CLI commands

start slides here

#### Use Case Exam­ples start slides here

Man­ag­ing Craft at Scale

by Mark Huot

  • should be called Learn­ing from Mark’s Mistakes
  • what is scale? where are today -> get­ting big­ger, more traf­fic; whether small­er site or big­ger site
  • Big Site, Big­ger Risk
    • Mark’s exam­ple of a client site that gets a lot of traf­fic, this time unex­pect­ed: get­ting hit with a lot of bots
  • Small Site, Big Reward
    • brick n mor­tar sales => online dur­ing pandemic
    • scal­ing issues can hap­pen to any­one; small sites big site every­thing in between
  • it’s all about being pre­pared to scale!
Keep Craft Updated
  • the longer you put it off the hard­er the upgrade gets
  • even­tu­al­ly you’ll have update for a secu­ri­ty update or fea­ture update and the updates only get hard­er the longer you wait.
  • you also get per­for­mance updates in Crarft 3.7.x because so many were added (and, of course, in Craft 4)
  • two ways to update:
    • update in the con­trol pan­el <- scary!
    • com­mand line ver­sion through a stan­dard devel­op­ment and deploy­ment process
  • don’t for­get to keep all plu­g­ins updat­ed at the same time that you update Craft
Dis­able devMode
  • use the user-spe­cif­ic Devel­op­ment set­tings instead, so you still get to see them as a logged-in user
  • Yii Debug tool­bar — Mark’s favorite view is the Time­line view 
  • the worst thing you can do is guess­ing and check­ing” Instead start with the time­line view of Yii debug tool­bar and method­i­claly find your start­ing point
    • you can also do this via the data­base queries tab in the Yii Debug Tool­bar. Find the slow­est query and see what you can do to address that first.
  • MySQL explain view in Yi Debug Tool­bar — use the rows” col­umn to iden­ti­fy slow or inef­fi­cient queries. The more rows MySQL is look­ing through and not return­ing isn’t optimal.
Rela­tion­ships
  • one of the best fea­tures of Craft”
  • they are flex­i­ble because they’re two direc­tion­al (source, target)
  • but they can be hard to scale prop­er­ly with­out some adjust­ments. How?
  • Switch your rela­tion­ships and make it relat­ed to the tar­get element
  • {targetElement: category} <- be more explic­it about the type of rela­tion­ship since this cat­e­go­ry is only this type of rela­tion­ship. Mark does this by default to get a faster JOIN.
  • eager-load all the things using with in the ele­ment query to get around the N+1 issue
con­tent table
  • try to lim­it the num­ber of columns in the content table
    • don’t cre­ate ALL THE FIELDS — each new field is a new col­umn, is a longer search etc.
Hire a DBA for a week
  • if you’re realling hav­ing issues, hire a DBA for a week and get project-spe­cif­ic infor­ma­tion for how to improve the database.
  • Mark uses the Preparse field a lot to help save on JOINs and oth­er expen­sive queries. The data is stored in the field on-save ver­sus query­ing dynamically.
  • Preparse Field
  • mind your database”

Day 3 #

Sched­ule Day 3

Cre­at­ing Empa­thy Through Collaboration

by Sarah Carr

  • What is empathy?
  • Why does it matter?
  • How do I use it?

Impor­tant notes from Sarah:

  • don’t be some­one# you’re not
  • she doesn’t want to tell you how to do your job
  • be delib­er­ate about your inter­ac­tions with others
What is empathy?
  • The abil­i­ty to under­stand and share the feel­ings of another. 
    • read their behavior
    • imag­ine their POV
    • under­stand stres­sor or struggles
  • cog­ni­tive: know­ing how some­one is feel­ing and what tye might be thinking
  • Emo­tion­al: phuys­i­caly feel­ing a sen­sa­tion along with anoth­er person
  • com­pas­sion­ate: mov­ing beyond con­nec­tion and under­stand­ing to take action — donat­ing to charity/​helping others
  • Brené Brown quote: We need to dis­ple the myth that emapthy walk­ing in some­one elses’s show” Rather than walk­ing your shoes, I need to learn how to lis­ten to the sto­ry you tell about what it’s like to walk in your shoes and believe you even what it doesn’t may my experiences.”
Why does it matter?
  • Work­ing with peo­ple can be overwhelming
    • dif­fer­ent personalities
    • var­ied life xperiences
    • unique ways of working
    • com­munca­tions styles
    • cog­ni­itve abilities
    • remote work
    • mixed avail­abil­i­ty
    • fam­i­ly needs
    • slack and zoom eqtiutte
    • time zones
  • empahy improves team performance
    • shared under­stand­ing unites toward a shared goal
    • bet­ter equip your tema to han­dle stres­sors and unknowns
    • smoother, and more clear communication
    • increased pro­duci­tyivy
    • hap­pi­er peo­ple, hap­pi­er clients
How do we use it?
  • Take C.A.R.E.

    • C: Com­mu­ni­cate what’s important
    • A: Assume good intentions
    • R: Roll with the punches 
    • E: Every­one is human
  • Com­mu­ni­cate what’s important

    • talk often, be honest
    • don’t make deci­sions in a vac­cum. Be open and hon­est about work, con­tri­bu­tions to the project
    • Exam­ple: a team mem­ber is too wordy and/​or ver­bose when it coems to cre­at­ing tick­ets (sarah says this is her)
      • ask the team waht woudl help
      • acknowl­edge devel­op­er con­text switching
      • reword para to bullets
    • I would’ve writ­ten a shorrter let­ter, but I did not have the time” –Pas­cal
    • sep­a­rat­ing con­text from content
    • Being con­cise is hard­er than being verbose!
  • Key take­aways:
    • com­mu­ni­cate with pur­pose — be clear about what you’re ask­ing for
    • Speak up when you’re unsure
    • Learn oth­er people’s com­mu­ni­ca­tion styles

  • Assume Good intentions

    • Don’t jump to conclusions
    • Exam­ple: a team mem­ber is sud­den­ly unpro­duc­tive, out­put is dif­fer­ent than before
      • remem­ber this is unchar­ac­ter­is­tic, not like them
      • give the ben­e­fit fo the doubt
      • offer sup­port to begin a conversation
    • Exam­ple: the eager junior developer
      • added a new fea­ture into the branch with­out telling any­one, which intro­duce a lot of issues/​merge conflicts
      • We judge our­selves by our inten­tions and oth­ers by their behav­ior” –Stephen Covey
      • assume they meant well — observe before you judge, keep an open mind, check in with them
      • don’t scold, but do educate
      • encour­age them to chan­nel their ener­gy through prop­er processes
  • Roll with the Punches

    • embrace flex­i­bil­i­ty
    • Exam­ple: short notice PTO by a key team mem­ber mid-project
    • empa­thet­ic respons­es: not all vaca­tions are vaca­tions, burnout can come quick­ly, main­taing work/​life bal­ance can be tricky
    • build in flex­i­bil­i­ty from the start
    • meet peo­ple where they are — what flex­i­bil­i­ty means to you might mean some­thing total­ly dif­fer­ent to some­one else on your team.
    • take time for yourself
  • Every­one is Human

    • exam­ple: deploy­ing bro­ken code — a devel­op­er deployed bro­ken bro­ken code into a pro­duc­tion envi­ron­ment. The code passed QA, but the wrong pack­age was pulled in, and pro­duc­tion was down for an hour. The client is extreme­ly upset.
    • empa­thet­ic response
      • mis­takes hapen; this won’t be the last
      • keep your cool – blame and argu­ment won’t bring pro­duc­tion back up
      • address the imme­di­ate need, then dis­cuss prevention
    • You are not your work
    • Keep your cool
    • It’s a two-way street

Final thought: When we under­stand each oth­er bet­ter, we can cre­ate things togeth­er we nev­er could have alone.”

Bend­ing the Craft Con­trol Panel

by John Hen­ry Donovan

  • we put as much effort into the autho­ing expe­ri­ence as the front-end of your web­site” — what John Hen­ry tells clients 
  • con­tem­plate the client’s long-term solu­tion rather than the fast sell
  • Sta­t­ic mes­sage translation
    • translations/en/app.php
  • cus­tomize table columns
  • uni­code works in lay­out tabs — num­ber the tabs in the field lay­out so authors know the order of enter­ing content
  • tabs can be admin only
  • write clear field instructions
    • you can hide the field instruc­tions via mod­ule and field in user account
  • use con­di­tions where necessary

Mind the Gap – What’s left behind when we bulid for the cut­ting edge?

by Shaw­na O’Neal

  • As devel­op­ers, we always get the newest devices but the glob­al user base isn’t buy­ing into annu­al upgrade. 
  • Google Chrome User” Study
    • from Chrome instal­la­tions from a group of coun­tries around the world
    • their find­ings are from Win­dows, Android and ChromeOS
    • Android devices glob­al­ly vary widely
    • ZA devices typ­i­cal­ly have 1 GB RAM
    • US devices typ­i­cal­ly have 2 GB RAM but also high­t­est % of 10GB or more
    • not every­one is goign to be on a fast enough device to han­dle big js pay­loads and processing
    • 13 tabs uses in Chrome uses over 3 GB of memory
    • but Chrome itself only needs 128 MB to run, the rest is our web­sites need­ing a lot of resources

  • Dig­i­tal Divide
    • the grow­ing gap between peo­ple who have access to com­put­ers and inter­net and those who do not
    • 1 in 10 US house­holds don’t access access to a computer
    • mobile device access is con­sid­ered a luxury
    • inter­net was devel­oped uneven­ly across the globe 
    • geog­ra­phy lim­its infrastructure
  • JavaScript
    • client-side ren­der­ing is a bur­den on devices with less capabilities
    • rapdi­ly increas­ing down­load sizes for ini­tial JS payload
    • sec­u­lar standarizations — 

Using Entries and Rela­tion­ships as your con­tent builder system

by Justin Holt

  • the typ­i­cal apporoach­es to con­tent edit­ing in Craft are:
    • sta­t­ic fields
      • straight­for­ward and sim­ple, con­trol the con­tent to match the page
      • hard to scale, rigid, not bespoke. Requires a devel­op­er to add new con­tent flexibility
    • matrix fields or Neo
      • pre­dictabil­i­ty and flexibility
      • Per­for­mance hits hap­pen in large con­tent sets. 
    • Vizy fields
      • max­i­mizes flexibility
      • UI can get con­dus­ing to edi­tors. Large con­tent sets can be unwiedly 
  • live demo of site with a lot (i mean, A lot) of Matrix blocks
  • demo’ing holts­dogs: https://​holts​dogs​.com
    • every­thing on the site is using the schema approach
    • view only user avail­able in the Dis­cord so you can see how the site is configured
  • Plu­g­ins that can help/​improve the experience
  • Best prac­tices
    • strict com­po­nent entry naming 
    • abtract, but not too abstract

Pix­el & Ton­ic Q&A

I’m mod­er­at­ing this dis­cus­sion, so I will not be able to take notes in real-time.