2026 Community Survey results are here! See how the Craft CMS community works. results are live!

Dot All 2023

News, updates, and information from Dot All 2023. Thank you for reading!

Conference Schedule

Schedule coming soon

Event Complete Last updated Sep 17, 2025 2:22 PM

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

Day 1: Craft 5 Work­shop #

Today’s agen­da:

  • go over fea­ture tour of Craft 5
  • Q&A
  • Local set­up
  • Break
  • Group activ­i­ty
  • Lunch
  • Show & Tell
  • Plu­g­in Lab

Craft 5

  • plan­ning for sev­en years
  • the team has been work­ing towards this day for a long time; excit­ed they’re here
  • require­ments
    • PHP 8.2
    • allows access to enums, read­on­ly prop­er­ties, read­on­ly class­es, never return type, null, true and false types
    • con­stants in traits
    • dynam­ic prop­er­ties in class­es deprecated
  • Lazy Eager-Load­ing
    • .eagerly() — how you do lazy eager loading
    • entry.featuredImage.eagerly()
    • field types will need to do some work to sup­port — only if they’re sup­port­ing eager-load­ing and extend­ing the base rela­tion field.
  • Vol­ume subpaths
    • allows reusable file sys­tems across the volumes
    • since Craft 4 launch they got feed­back to repur­pose file sys­tems in dif­fer­ent volumes
    • No two vol­umes can over­lap with­in the same file system”
  • Ele­ments chips and cards
    • Cp::elementChipHtml($entry) — gen­er­ates the chip
    • Cp::elementCardHtml($entry) — gen­er­ate the card html
    • sup­port­ed auto­mat­i­cal­ly by all fields that imple­ment PreviewableFieldInterface
    • intro­duc­ing ThumbableFieldInterface — any fields that want to pro­vide thumb­nails — any­thing where an ele­ment thumb­nail would make sense. 
  • Inline Ele­ment Editing 
    • Edit ele­ments in the ele­ment list­ing view
    • InlineEditableFieldInterface — any field can imple­ment to get sup­port for this — can be cus­tomized but most sim­ple fields shouldn’t need much work to get support.
  • Con­tent Storage
    • same basic struc­ture and data­base schema since 1.0
    • two prob­lems:
      • row size lim­its on larg­er sites where there are too many fields
      • too rigid
      • No con­tent table in Craft 5
        • replac­ing it with the content col­umn in the elements_sites table; it stores JSON
        • why JSON?
          • stored on disk like a text col­umn, so it doesn’t affect row size
          • only stores the val­ues actu­al­ly need­ed for each element
          • JSON is flexible
          • per­for­mant
          • fetch­ing the JSON val­ues requires three dif­fer­ent ways 
            • they cre­at­ed helper func­tions that make this easier
              • Field::getValueSQL() — get that fields spe­cif­ic val­ue with­in the JSON column
              • field.getValueSql()
              • real­ly only applic­a­ble for advanced imple­men­ta­tion where you need to look up a col­umn name
      • BaseContentRefactorMigration — any plu­g­ins that define a cus­tom ele­ment type will need to include this class
        • used in a migration
        • becuase of JSON usage, can now sup­port utf8mb4 by default (allows emo­jis, etc)
  • Field Instances (reusable fields)
    • because of JSON usage, can now sup­port Field Instances
    • sup­port­ed by default for field types that man­age their own data storage
    • field types can opt out via isMultiInstance()
    • field lay­out can over­ride field handles
    • Fields’ JSON val­ues are indexed by the field lay­out element’s UUID.
    • Planned: fields/merge command
    • Field groups removed in Craft 5
  • Field Type changes
    • valueType() => phpType()
    • getContentColumnType() and hasContentColumn() => fdbType()
    • modifyElementsQuery() => queryCondition()
  • Decou­pled Entry Types
    • new Entry Types set­tings, no Entry set­ting in Sec­tion settings
    • choose one or more entry types from a list assign them to the section
    • they will intro a new com­mand to clean up all of the entry types
  • Entri­fi­ca­tion
    • remov­ing categories
    • remov­ing tags
      • tags UI will be brought to entry fields
    • Glob­al sets => Singles
      • plan was to dep­re­cate in Craft 5 and remove in 6 — howver, they are con­sid­er­ing remov­ing it ear­li­er because of the con­tent table changes
    • matrix blocks are entri­fied in Craft 5
      • block types become entry types
      • block type filds become glob­al fields
      • con­flict­ing entry type and fild han­dles get renamed automatically. 
      • orig­i­nal field han­dles are retained with the field out
      • entries are no longer required to have titles
      • entries can now belong to either a sec­tion for ele­ment + field
      • craft\services\Sections -> craft\servicesEntries — sec­tion ser­vice no longer exists; Rec­tor takes care of this for you
  • new view mode in field set­tings => Ele­ment Index view
    • you can also inline edit in the ele­ment index view in a field
    • you can also use ele­ment index view in user fields, too
  • Address Field Type
    • new field type in Craft 5
  • More to come…
    • SSO
    • 2FA and passkeys
    • Cross-site field copying
    • trans­lat­able alt text
    • Entry porta­bil­i­ty
    • Con­tent releas­es — Cre­ate a release and asso­ciate mul­ti­ple drafts with that release. Tech­ni­cal­ly sim­ple but a UI challenge,
    • Uni­fied con­tent view — still con­sid­er­ing the cor­rect approach for this
  • Craft 5 dev pre­view avail­able today

When will Craft 5 be released? Q1 2024

Day 2: Dual-Track Talks #

Reac­tive Front-ends with Sprig

by Ben Croker

This talk has a lot of code and cod­ing, so I won’t be able to cap­ture everything!

  • Demo of tick­ets sell­ing for an event
  • Ben wants to make just part of a page reac­tive with­out destroy­ing the rest of the DOM on the page
  • sprigi­fy­ing” a tem­plate — con­vert­ing the tem­plate from a nor­mal tem­plate to a Sprig/​reactive tem­plate or component
  • Ben walks through some exam­ples of how Sprig can be used: mul­ti-step form, con­di­tion­al fields, faceted fil­ters. Very easy to get a lot of stuff done” in Sprig
  • htmx — HTML Extended
    • small JavaScript library
    • the only depen­den­cy that Sprig has
  • Lis­ten -> Fetch -> Swap
    • lis­ten­ing for an event, Ajax requests fetch­es data from serv­er, swaps out element/​content in DOM
  • Ben shows Github send­ing HTML over the wire to swap out con­tent in the DOM
  • What JavaScript library should I use along with Sprig?”
    • Ben: don’t use any­thing extra
    • htmx can han­dle this; it expos­es APIs that make a lot of event han­dling possible
    • <button s-on:click="html.toggleClass('#more', 'hidden')">Show/hide</button>
    • what about for roundtrip to the serv­er? Sprig real­ly shines here
  • Let’s Build Something”
    • sim­ple com­po­nent, results page with entries, nav­i­gat­ing the pages of results
    • Ben is demon­strat­ing how to code this com­po­nent using Sprig
  • Com­po­nent Layouts
    • what Ben just showed is one com­po­nent on the page but you may have mul­ti­ple com­po­nents on a page.
    • Ben is show­ing a demo of a shop­ping cart page that is cur­rent­ly set as one large com­po­nent. Updat­ing the num­ber of prod­ucts, it updates the entire sin­gle component. 
    • That’s the eas­i­est way to use Sprig and the way Ben rec­om­mends to get started.
    • Show­ing an indi­ca­tor to cre­ate a spin­ner via s-indicator
    • Refresh on load
      • sprig.isInclude — is the Sprig com­po­nent part of the ini­tial page render
      • <div sprig s-trigger="load"></div>
    • There are rea­sons you want to split your com­po­nents up — if you need to only update parts of a page at a time
  • Lis­ten for a refresh
  • Out-of-bounds swaps
    • s-swap-oob="true"
  • Sprig in the Wild
    • release over 3 years ago
    • 11k active instal­la­tions accord­ing to plu­g­in store
  • Ben’s entire pre­sen­ta­tion was pow­ered by Sprig and Craft

Craft CMS and DDEV Together

Randy Fay

  • main­tain­er of DDEV for about 7 years
  • DDEV mot­to is Make Devel­op­ers Happy”
  • Agen­da:
    • why local development?
    • DDEV and Dock­er basics
    • Fun­damne­tal tasks with DDEV
    • and more I missed
  • Why local development?
    • we need to work on our copy in the local development
  • There are sev­er­al ways to run Docker:

  • ddev export-db --file=filenameandpathhere
  • ddev snapshot — save entire full state of the database
    • ddev snapshot --name=demo — not a text export, but a full snap­shot export of the database
    • a great fea­ture for doing migra­tions or iter­a­tive work
    • ddev snapshot restore
  • ddev list
  • ddev describe — great way to see the ser­vices and soft­ware ver­sions running 
  • ddev config
  • Check in the .ddev direc­to­ry so it’s shared with your team. You should ver­sion con­trol the entire .ddev. DDEV han­dles git­ig­nor­ing the files that don’t need ver­sion control.
  • ddev share shares your local project via ngrok so any­one can view it at a pub­lic URL

Prac­ti­cal Tips for Mak­ing Your Web­site Accessibility

Kait­lyn Mar­tinez and Lupe Camacho

  • 1 in 6 peo­ple have a sig­nif­i­cant disability
  • becom­ing an access­bil­i­ty is not expect­ed overnight
  • Web Con­tent Acces­si­bil­i­ty Guidelines

    • WCAG
    • a glob­al stan­dard that helps us gauge whether our con­tent is accessible
    • Suc­cess Criteria
      • POUR
        • per­ceiv­able
          • text alt for images, cap­tions for videos
        • oper­a­ble
          • user can oper­ate the interface
        • under­stand­able
          • infor­ma­tion and UI must be under­stand­able; help­ful instruc­tions, nav­i­ga­tion consistent
        • robust
          • con­tent can be inter­pret­ed by browsers and assis­tant tech
      • 3 con­for­mance levels
        • Lev­el A — basic, meets all A criteria
        • Lev­el AA — strong, meets A and AA
        • Lev­el AAA — excel­lent, meets all levels 
  • Work­ing with Designers

    • Don’t solve prob­lems in devel­op­ment that should be solved in design
    • rel­a­tive cost of rework gets high­er the far­ther along you get into a project
    • >80% of WCAG suc­cess cri­te­ria are affect­ed by design
  • Col­or Contrast
    • 4.5:1
      • con­trast ratio for para­graph text
    • 3:1
      • large text over 18.66px bold­ed or 24px nor­mal weight
    • WebAIM con­trast col­or checker
  • UI Com­po­nents
    • Keep track of the dif­fer­ent states of UI com­po­nents, like form fields. This should be han­dled in design.
  • Col­or as an enhance­ment, not the only indicator. 
    • use pat­tern, shape, or text
    • Exam­ple of Spo­ti­fy adding a dot below the shuf­fle icon when it is enabled
  • CMS Ux
    • what we can do when build­ing out sites in Craft CMS
    • Alt text
      • in Craft 4, there’s a native alter­na­tive text field in the field lay­out set­tings per field
      • don’t use text in images, should be used on the page instead
      • native alt text field also pulls up in the video pre­view modal
    • Rich Text Edi­tor set up
      • very sim­pli­fied tool­bar to help pre­vent con­tent author from cre­at­ing too many acces­si­bil­i­ty issues
    • Links
      • show clients how to cre­ate links (i.e. not click here”)
    • Video
      • Add CC to video
      • add tran­script via a cus­tom field
    • Doc­u­ment Language
      • when you add a doc­u­ment lan­guage to your HTML ele­ment, it sig­nals to the screen­read­er what lan­guage it should be speak­ing when it reads the doucment.
      • imple­ment­ed using a lan­guage attribute on the html ele­ment: lang="en-US"
      • update lan­guage attribute when chang­ing lan­guages using a switch­er for mul­ti-lang sites
    • Live Regions
      • relates to load­ing spin­ners or visu­al sta­tus changes
      • comm­ni­cates with the acces­si­bil­i­ty tree to tell the screen read­er to out­put a mes­sage that shares what is hap­pen­ing on the page e.g. Load­ing search results”
      • <span id="loading-live-region" class="sr-only" role="status"></span>
      • <span id="loading-live-region" class="sr-only" role="status">Loading</span>
        • this inser­tion of text trig­gers the screen read­er to read this text
      • <span id="loading-live-region" class="sr-only" role="status">Content Loaded</span>
    • Dis­clo­sure Widgets
      • some­thing that shows/​hides something
        • Accor­dions
        • search icon that expands the search box
        • ham­burg­er nav­i­ga­tion on mobile
  • WCAG-EM
    • Define scope
    • Explore site
    • Select a rep­re­sen­ta­tive sample
    • Evaulate a sample
    • Report find­ings

Buy vs Build: How Craft Com­merce Agen­cies Win an E‑commerce SaaS World

Matt Riopelle

  • Pain in my SaaS => Shopify
  • Bou­tique web shops can­not sup­port with the resources of Shopify
  • but there are some things we can extract from Shopi­fy and oth­er play­ers in that space that helps us reach our cus­tomers better.
  • what is Shopi­fy doing bet­ter than what we can do in Craft Commerce?
    • prod­uct-mar­ket fit

  • busi­ness model
    • cre­ate the most val­ue for the peo­ple who’ll val­ue it the most
  • Mer­chants don’t want cus­tom com­merce soft­ware. They want a reli­able way to sell their prod­ucts online.”
  • Rela­tion­ships, not transactions”
    • the goal isn’t to build an e‑commerce store but to help our clients build their business
  • All prof­it is derived from risk”

Per­for­mance, Per­son­al­iza­tion and Perfection

Zoltan Vara­day

  • What does it mean to be fast?
    • 273ms medi­an human reac­tion time 
  • 0.1s lim­it for user to feel like they’re inter­act­ing with something
  • 1s lim­it for user feel­ing that they are freey lynav­i­gat­ing with­out hav­ing to undu­ly wait for the com­put­er - 10s anythign slow­er than 10 sec­onds need a progress indi­ca­tor as as a clear­ly sign­post­ed way for the user to inter­rupt the opeation
  • Web Met­rics: TTFBCLS
  • Astro and Next.js
    • Zoltan look at per­for­mance opt­miza­tions for each framework
  • Web Perf plu­g­in by NyStudio107
  • Light­house in the Chrome devel­op­er tools
  • Issue with TTFB? Look at data­base queries first
  • For con­tent-heavy sites use some com­bo of caching and inter­ac­tive islands + js sprin­kles to help make it dynamic

Pri­va­cy, Please

Shaw­na O’Neal

  • Rules, reg­u­la­tions, lat­est news
  • Glob­al attitudes
  • Data and track­ing relevancy
  • con­sent
  • tips & tricks
  • July 2020 Pri­va­cy Shield was over­tuned — EU data could not be on US servers
  • new pri­va­cy frame­work as July 2023; you can use GA with­out the US data stor­age problem

  • Is GA4 GDPR compliant?
    • It depends… you need to do some addi­tion­al steps
      • make sure GA fires scripts only after the user’s consent
      • keep non-com­pli­ant fea­tures turned off
      • Enter a data pro­cess­ing agree­ment with Google, and dis­close with­in a pri­va­cy policy
      • Do not send PII through Google
  • GDPR fines are applied to the under­tak­ings” and not one com­pa­ny. Any enti­ty involved in the vio­la­tion is part of the undertaking.
  • Is it worth the cost to get the data?
    • don’t col­lect more data and fig­ure out how to use it lat­er — it can cause brand damage
    • Track­ing scripts are the lead­ing cause of web­site slowness
    • Prod­ucts like GTM put devel­op­ers and mar­keters at odds
    • Mar­ket­ing suc­cess” can over­ly focus on data points, not results
    • Once con­sumer trust is lost, it’s near­ly impos­si­ble to get back
  • Con­sent
    • silence is not con­tent — x’ing out of a cook­ie con­sent ban­ner does not mean con­sent, it’s a non-action. Only track data when you get actu­al resent
  • min­i­mize the data requested
  • con­text mat­ters — don’t ask a new vis­i­tor for a bunch of data right off the bat
  • be trans­par­ent and human cen­tric in how we request it
  • treat user data with care and respect
  • reward qual­i­ty of data, not quantity 
  • build client relationships
  • If you wouldn’t ask on the first date, don’t ask the new web­site visitor”
  • Google Ana­lyt­ics alts that are GDPR compliant:
    • Fath­om
    • Mouse­flow
    • Plau­si­ble
    • Mato­mo
    • PostHog
    • Uma­mi

Day 3: Sin­gle-Track Talks #

State of Craft

Bran­don Kelly

  • Recap:
    • This year P&T cel­e­brat­ed 10 years since Craft 1.0.
    • Craft has 75k licensed unique domain names (not includ­ing subdomains)
    • 8k peo­ple in Discord
    • 645 Craft 4 plu­g­ins in the store, up from 511 one year ago
    • $7M paid out to plu­g­in developers 
    • Sales steadi­ly upward trend
    • Craft Con­sole launched (update to Craft ID)
    • Craft Gen­er­a­tor — CLI tool for scaf­fold­ing plu­g­ins, mod­ules and components
    • Updat­ed CKEditor
    • Shopi­fy plu­g­in launched
    • com­merce-stripe updat­ed for lat­est Stripe inte­gra­tions, Com­merce 4.0.0
    • Craft 4.3, 4.4, 4.5
      • asset vol­ume navigation
      • activ­i­ty monitoring
      • val­i­da­tion summaries
      • work­ing toward WCAG AA com­pli­ance — We will get there”
  • Craft Cloud
    • it has been almost six years since they start­ed think­ing about Craft Cloud
    • excit­ing news
    • Brad Bell on the stage
    • A scale host­ing plat­form from the team behind Craft”
    • Why are we doing this?
      • Gives them a chance to con­trol the user expe­ri­ence from the appli­ca­tion all the way to the infrastructure. 
      • No more ven­dor blam­ing because they con­trol they entire stack — soft­ware and infra
    • Sus­tain­abil­i­ty
      • P&T wants to try their best to not have a neg­a­tive impact on the environment
      • Server­less, on-demand infrastructure
    • Craft Cloud demo
      • Github source con­trol integration
      • US, EU, APAC regions
      • Brad cre­at­ed a new project in Cloud and is deploy­ing it 
    • auto-scal­able, high­ly avail­able infra
    • glob­al CDN, pow­ered by Cloudflare
    • MySQL, Post­gres
    • CICD build pipeline
    • Auto­mat­ed backups
    • Enter­prise-grade WAF
    • Auto SSL
    • Craft CLI commands
    • mul­ti­ple environments
    • on-deman queue workers
    • on-deman image transforms
    • ful­ly supported
    • Craft Pro license included
    • $260/​mo USD
    • annu­al: $240/​mo if annual
    • pri­vate invites at the end of this month
    • Read more about Craft Cloud
    • lunch n learn today with Jason and Tim to talk about plu­g­ins with Craft Cloud
  • Com­merce 5
    • A major focus for Com­merce 5 has been mul­ti-store, mul­ti-cur­ren­cy sup­port — the most request­ed fea­ture they’ve had 
    • mul­ti-store
      • each store gets its own base currency
      • in the com­merce set­tings you’ll be able to add an addi­tion­al store
    • Cat­a­log pricing
      • gen­er­at­ed and stored prices in the system
      • Cat­a­log pric­ing rules: sim­i­lar to Sales sys­tems that exists in Com­merce at the moment
      • pro­mo­tion price field — no need to cre­ate a discount
      • they updat­ed the Spoke & Chain demo to use Com­merce 5 to demo the mul­ti-store functionality
      • launch­ing Q1 2024
  • Craft CMS 5
    • Craft has always been about AX and con­tent modeling 
    • con­tent mod­el­ing improvements
      • con­tent stor­age refac­tor (see my notes from the Craft 5 work­shop)
        • con­tent col­umn replaces the con­tent table
      • decou­pled entry types (stand alone now)
      • Entri­fi­ca­tion
      • incep­tion fields
      • Field instances
        • reusable fields with­in the Craft con­trol panel
      • Entri­fi­ca­tions in Craft 5
        • Cat­e­gories => structure
        • Tags => chan­nel section
        • Glob­al sets => singles
        • Matrix blocks => entries 
      • Incep­tion Fields
        • no longer need­ed incep­tion field as planned
        • matrix field as entry solves this, along with View Mode toggle 
      • enable table view for matrix fields
      • inline edit­ing in every ele­ment index in Craft 5
  • One more thing…
    • Long­form content
      • used to be done with matrix fields
      • but the author­ing expe­ri­ence wasn’t as good as it could be
      • it’s impor­tant to them that they solve this AX challenge
      • some solu­tions out there that are Notion”-ish
        • every ele­ment is a block
      • but authors want rich text, not clean data behind the scenes
      • they want some­thing that looks like CKEditor
      • com­bine pow­er of Matrix & nest­ed entries with the sim­pler UI of CKEditor
      • Craft 5 will include a large update to CKEditor
        • CKEd­i­tor field that has entire entries embed­ded in it

Human­iz­ing UX

Lakeisha Wright

  • using 10 years in urban plan­ning to approach UX strategy
  • it was a seam­less expe­ri­ence mov­ing from one field to another
  • She still keeps up with her two urban plan­ning certs because they help her be a bet­ter UX strategist
  • What does humaiz­ing your UX strat­e­gy real­ly mean?
  • Diver­si­ty mat­ter, emo­tions mat­ter, person’s past, present, and future matters
  • What’s the dif­fer­ence between humans users?
  • humans are complex
  • users are with­in the prod­uct — human com­plex­i­ty adapts to ful­fill the product’s requirements
    • curb cuts as an exam­ple of adapt­ing a prod­uct to fit the indi­vid­ual using it
  • human are permanent 
  • users are tem­po­ral; once you’re a user, you stop being a user of a prod­uct (e.g. putting your phone down); the per­son being flex­i­ble to the device
  • Humans allow for the pur­suit of equity”
  • Users allow for the for pur­suit equality”
  • Humans have emo­tions that affect prod­uct use”
    • peo­ple bring their own emo­tions and emo­tion­al responses
  • Users have emo­tions tied to the product”
  • one of her job as an urban plan­ner was to watch peo­ple ride trains.
  • she start­ed to pick up on pat­terns on how peo­ple act­ed, includ­ing misconceptions
  • when peo­ple missed their train…what did they did do? they weren’t on their phones..it was always peo­ple who were deep in thought/​daydreaming, not on their phones
  • Why is UX stat­e­gy important?
  • empa­thy
  • inclu­siv­i­ty
  • engage­ment
  • For me” mentality
  • ulti­mate goal when it comes to UX
  • peo­ple should think this is built for me”
  • 7 Prin­ci­ples of Uni­ver­sal Design (exam­ple from urban planning/​design)
    • equi­table use
    • flex­i­bil­i­ty in use
    • sim­ple and intu­itive in use
    • per­cep­ti­ble information
    • tol­er­ance for error
    • low phys­i­cal effort
    • size and space for appoach and use
  • 10 Usabil­i­ty Heuris­tics for User Inter­face Design (UX ver­sion of 7 principles)
  • Use the pow­er of emotions
  • PS Salon — serve seniors with retire­ment communities
    • Hap­py Cog was redesign­ing the dash­board famili­ies used to enroll, etc.
    • how do the peo­ple when they’re about to use your prod­uct? some info
    • how are peo­ple feel­ign when they are start­ing to use your dash­board? more info
    • how are peopel feel­ing before they even knew this PS Salon was an option? a lot of info
      • instead of ask­ing how are they feel­ing when using the soft­ware, instead ask how they feel about the whole experience.
    • emo­tions mattered
  • No one is unbiased
  • lean into the bias, embrace your per­son­al experiences
  • lean in with understanding
    • be self aware
    • prac­tice humility
    • chal­lenge your assumptions
    • seek diverse perspectives
  • Work­ing with the over­whelm­ing nature of diversity
  • under­stand your audience
  • cre­ate cus­tomiz­able options
  • com­muncate clearly
  • gath­er con­ti­nous feedback
  • Con­text Matters
  • pri­or­i­tize actions
  • con­tin­u­ous improvements
  • have informed tradeoffs
  • Ask Ques­tions
  • espe­cial­ly the dumb” ones
  • obvi­ous questions
  • she asks the obvi­ous ques­tions to make sure she’s not mak­ing assumptions
  • Impact and Accountability

Light­ning Talks

  • Matt Bloom­field
    • US Cham­ber of Commerce
    • mul­ti­ple sites, sim­i­lar builds
    • com­po­nent dri­ven development
    • Com­po­nent library requirements
      • run in PHP using Twig
      • means of view­ing and test­ing components
      • well orga­nized
    • they tried to use Frac­tal but they had prob­lems with TwigJS
    • they built their own com­po­nent viewer
      • end users see all com­po­nents available
      • devel­op­er see impe­men­ta­tion details
      • cypress tests against components
      • aus­tom acceesi­bil­i­ty via AXE
      • visu­al­ly com­pare changes across environments
  • John Rip­meester
    • Brik agency
    • Nomios
      • 8 sites, mul­ti­ple languages
      • mar­ket­ing teams across world
      • 105,000 ele­ments per language
      • Plu­g­ins: Blitz, SEO­mat­ic, Rich Vari­ables, Site Copy X
      • sav­ing an ele­ment kicks off a lot of queue jobs, and they hit a job queue of over 46k jobs
    • Egil Fujikawa Nes
      • Enter­prise Craft Pow­ered by SAP

Pix­el & Ton­ic Q&A

I was mod­er­at­ing the pan­el dis­cus­sion, so I couldn’t take notes.

Plan­et Sav­ing Pix­els: Cre­at­ing a Web That is Good for Peo­ple and the Planet

Lucy Williams

Sus­tain­able web design is an approach to design­ing web ser­vices that are good for peo­ple and the planet.

If the inter­net was a coun­try, it would be the 4th most pol­lut­ing coun­try in the world.

  • how do we mea­sure the impact?
    • page weight, data trans­der, serv­er requests
    • page views, time on a page
    • ener­gy cosumed to run the servers
  • The Orig­i­nal Web­site Car­bon calculator
  • Bea­con and Ecograd­er are oth­er options
  • stream­line user journeys
  • don’t load as much con­tent unless it’s real­ly nec­es­sary (relat­ed arti­cles, side­bar con­tent, etc)
  • opti­mize web typography
    • use sys­tem fonts, if possible
    • use few­er weights
    • cus­tomize those fons weights
    • con­vert WOFF — much faster 
    • remove unnecce­sary languages
    • only use sub­set of char­ac­ters that are actu­al­ly need­ed by the site
    • self host font files
  • dark colous use less energy
    • blue col­ors use more ener­gy than red or green
    • reduc­ing col­or vari­a­tion in imagery reduces file size
  • opti­mize media
    • only send down the pipe the larest size needed
  • opti­mize page size
  • Green Web Foun­da­tion — find green hosting

How I Saved My Agency From Myself

Stephen Cal­len­der

  • Prof­it First Method
  • Self-report­ing for developers
Checking for updates...