Everyone in the WordPress community is talking about the new editing experience in WordPress. Wherever you fall in defense of or against the new editor, it changes how we interact with WordPress from a content editing and a development perspective. In this talk I will explore some of the ways Gutenberg changes how we build things as well as the types of things we can build to enhance and improve the WordPress editing experience.
Bottomless Bacon Happy Hour is every Thursday 6p-9p, and stick around after for $1 beers from 9-12 & DJ all night!
And
Saturday Night Comedy Series
SATURDAY JUNE 13th @ 8p
SATURDAY JULY 11th @ 8p
SATURDAY AUGUST 8th @ 8p
June birthday bash and made in america PartyTurtle Bay NYC
June Birthday Bash If your birthday is in June, enter to win free drinks for yourself and 1/2 off for your friends on Thursday, June 4th from 9pm-midnight!
And
June Made in America Turtle Bay wants YOU for our Made in America Party! Celebrate all things USA on Saturday, June 6th with $25 Top Shelf Open Bar from 10p-1a or $30 Top Shelf Open Bar from 11p-2a.
Writing great unit tests distinguishes good programmers from great programmers. In this course, you will learn how to write great unit tests with Mockito and JUnit. You take 12 steps with JUnit and 18 steps with Mockito into unit testing proficiency.
Mockito
Step 01 : Set up an Eclipse Project with JUnit and Mockito frameworks. First Green Bar.
Step 02 : Example to start understanding why we need mocks.
Step 03 : What is a stub? Create an unit test using Stub? Disadvantages of Stubs.
Step 04 : Your first Mockito code! Hurrah!!! Lets use Mockito to mock TodoService.
Step 05 : Stubbing variations with Mockito. A few mockito examples mocking List class : Multiple return values, Argument Matchers and throwing exceptions.
Step 06 : Introduction to BDD. Given When Then. BDD Mockito Syntax.
Step 07 : How to verify calls on a mock? Verify how many times a method is called. We will add deleteTodo method to the TodoService.
Step 08 : How to capture an argument which is passed to a mock?
Step 09 : Hamcrest Matchers.
Step 10 : Let's simplify things with Mockito Annotations. @Mock, @InjectMocks, @RunWith(MockitoJUnitRunner.class), @Captor
Step 11 : JUnit Rules. Using MockitoJUnit.rule() instead of @RunWith(MockitoJUnitRunner.class).
Step 12 : Real world Example with Spring
Step 13 : What is a spy? How to spy with Mockito?
Step 14 : Some Theory : Why does Mockito not allow stubbing final and private methods?
Step 15 : Using PowerMock and Mockito to mock a Static Method.
Step 16 : Using PowerMock and Mockito to invoke a private Method.
Step 17 : Using PowerMock and Mockito to mock a constructor.
Step 18 : Good Unit Tests.
JUnit
Step 01 : Need for Unit Testing
Step 02 : Setting up your First JUnit
Step 03 : First Successful JUnit. Green Bar and assertEquals
Step 04 : Refactoring Your First JUnit Test
Step 05 : Second JUnit Example assertTrue and assertFalse
Step 06 : @Before @After
Step 07 : @BeforeClass @AfterClass
Step 08 : Comparing Arrays in JUnit Tests
Step 09 : Testing Exceptions in JUnit Tests
Step 10 : Testing Performance in JUnit Tests
Step 11 : Parameterized Tests
Step 12 : Organize JUnits into Suites
Bottomless Bacon Happy Hour is every Thursday 6p-9p, and stick around after for $1 beers from 9-12 & DJ all night!
And
Saturday Night Comedy Series
SATURDAY JUNE 13th @ 8p
SATURDAY JULY 11th @ 8p
SATURDAY AUGUST 8th @ 8p
June birthday bash and made in america PartyTurtle Bay NYC
June Birthday Bash If your birthday is in June, enter to win free drinks for yourself and 1/2 off for your friends on Thursday, June 4th from 9pm-midnight!
And
June Made in America Turtle Bay wants YOU for our Made in America Party! Celebrate all things USA on Saturday, June 6th with $25 Top Shelf Open Bar from 10p-1a or $30 Top Shelf Open Bar from 11p-2a.
Writing great unit tests distinguishes good programmers from great programmers. In this course, you will learn how to write great unit tests with Mockito and JUnit. You take 12 steps with JUnit and 18 steps with Mockito into unit testing proficiency.
Mockito
Step 01 : Set up an Eclipse Project with JUnit and Mockito frameworks. First Green Bar.
Step 02 : Example to start understanding why we need mocks.
Step 03 : What is a stub? Create an unit test using Stub? Disadvantages of Stubs.
Step 04 : Your first Mockito code! Hurrah!!! Lets use Mockito to mock TodoService.
Step 05 : Stubbing variations with Mockito. A few mockito examples mocking List class : Multiple return values, Argument Matchers and throwing exceptions.
Step 06 : Introduction to BDD. Given When Then. BDD Mockito Syntax.
Step 07 : How to verify calls on a mock? Verify how many times a method is called. We will add deleteTodo method to the TodoService.
Step 08 : How to capture an argument which is passed to a mock?
Step 09 : Hamcrest Matchers.
Step 10 : Let's simplify things with Mockito Annotations. @Mock, @InjectMocks, @RunWith(MockitoJUnitRunner.class), @Captor
Step 11 : JUnit Rules. Using MockitoJUnit.rule() instead of @RunWith(MockitoJUnitRunner.class).
Step 12 : Real world Example with Spring
Step 13 : What is a spy? How to spy with Mockito?
Step 14 : Some Theory : Why does Mockito not allow stubbing final and private methods?
Step 15 : Using PowerMock and Mockito to mock a Static Method.
Step 16 : Using PowerMock and Mockito to invoke a private Method.
Step 17 : Using PowerMock and Mockito to mock a constructor.
Step 18 : Good Unit Tests.
JUnit
Step 01 : Need for Unit Testing
Step 02 : Setting up your First JUnit
Step 03 : First Successful JUnit. Green Bar and assertEquals
Step 04 : Refactoring Your First JUnit Test
Step 05 : Second JUnit Example assertTrue and assertFalse
Step 06 : @Before @After
Step 07 : @BeforeClass @AfterClass
Step 08 : Comparing Arrays in JUnit Tests
Step 09 : Testing Exceptions in JUnit Tests
Step 10 : Testing Performance in JUnit Tests
Step 11 : Parameterized Tests
Step 12 : Organize JUnits into Suites
Game Night
Don’t be as gloomy as it is outside! Tavern on Broad has something that will be your sunshine on a rainy day.
Everyone is welcome to come out to Game Night tomorrow at Tavern on Broad! This is the night you can school your co-workers and friends in a “friendly” way. Show off your competitive side, while sipping on our $3 beer, $4 wine, and $5 cocktail drink specials as a part of Center City Sips! In the fun spirit, we’ll be extending these drink specials from 5 – 10 PM!
I present how using very simple HTML5 techniques integrating SVG in the DOM we can have a mobile HTML5 app on "creating moods" with a short production cycle. The I show how to integrate it to Facebook with a pure JavaScript solution.
C interview questions and answers for freshers and experienced. Interview Questions from TCS, Infosys, Wipro, Cognizant(TCS) campus interviews.
This videos covers all interview questions on Variables and Variable Types - External, Local, Global and more...
Complete Questions List:
Section 1 : Variables
What is the difference between declaration and definition of a variable?
What are the sizes of different datatypes in C Language?
What is an unsigned int?
6.What is an automatic variable?
7.What are the default values for automatic variables?
9.What are external variables?
12.When are external variables initialized?
15.When are static variables initialized?
16.What is the default value of static variables?
17.What does the keyword const represent?
19.What is a static function?
20.What is a Register Variable? What are its advantages?
23.What is a block?
Section 2 Expressions
35.What is Precedence?
36.What is Associativity?
Section 3 Functions
38.What is the difference between declaration and definition of a function? When is a declaration not needed?
39.What are arguments and What are parameters?
40.What is the default return value from a function?
Section 4 Arrays
49.How are arrays and pointers related?
51.What are Character Pointers?
Section 5 Pointers
55.How are arrays and pointers related?
56.Can you change the address pointed to by an array variable?
57.What are Character Pointers?
58.What is the result of this program?
Section 6 Structures
59.How do you initialize a structure?
60.What are the default values assigned to a Structure?
61.How do you pass a Structure to a function?
62.Will the values in a structure be modified when they are changed in a function?
64.What is the difference between a Structure and a Union?
65.What is dynamic memory allocation?
66.What if free is not called in the method above?
Section 7 Others
67.What are Escape Characters in C Language?
68.How do you comment code in C Language?
69.What is an Enum?
70.What is a typedef?
Section 8 For Loop
71.What are the different parts of a for loop?
72.Can comma be used in a for loop?
74.What is the use of a break statement in a loop?
75.What is the use of a continue in a loop?
Section 9 : If Condition
Section 10 : Switch Statement
85.Can a switch be used without default?
Section 11 : Preprocessor Directives
Section 12 : Puzzles Udemy
Get our complete C Interview guide: http://www.cinterview.in/p/get-our-c-interview-video-guide.html
Talk held on a Smashing Magazine Meetup February, 27th 2012 in Frankfurt (Germany) about current problems with developers, designers and clients in front-end development
Pre-render Blazor WebAssembly on static web hosting at publishing timeJun-ichi Sakamoto
This slide explains how to prerendering a Blazor WebAssembly app hosted on the static web hosting and save them to static HTML files at publishing time.
Autism Ontario provides detailed information, services and supports to children and youth with autism. This and many more such organizations are working to increase the awareness about the autism in the society.
Calgary injury rehabilitation for a better rehabilitationpatboone
If you are looking for immediate relief from the pain and immobility, you are experiencing due to particular injury, Calgary injury rehabilitation regime help you alleviate pain and improve mobility without going through the traditional multi-session series of treatments or therapies. Rehabilitation professionals ensure you fast and lasting relief as well as help you return to pre-injury function ASAP.
Eclipse is the most popular Open Source Java IDE. More developers use Eclipse than any other tool for Java Programming.
In this course, we take you on a fun ride with Eclipse.
By the end of this course, you would have a number of Eclipse tips and tricks up your sleeve. You will also understand various features of Eclipse - Views, Perspectives, Debugger, Save Actions, Plugins and Code Generation.
You will improve your productivity with Eclipse Shortcuts . You will also learn to import projects from Git and the basics of Maven projects.
Course is Organised into 11 Steps : Experienced Eclipse Developers can give Step 0 a skip
Step 0 : Eclipse Basics - Workspace & Your First Java File
Step 1 : Most Important Editing Shortcuts ctrl-1 and ctrl-space
Step 2 : Debugging Java Programs
Step 3 : Eclipse Short Cuts
Step 4 : Refactoring with Eclipse
Step 5 : Code Generation with Eclipse
Step 6 : Automate with Save Actions
Step 7 : Eclipse Views
Step 8 : Eclipse Perspectives
Step 9 : Plugins
Step 10 : Setting up Projects From Git and Maven
In India there is a tradition of performing folk and classical dances at festivals. Some Indian classical dances including Konark dance, Olivier Khajuraho dance, Khajuraho dance, pattadakal dance, Goa carnival are famous which is held annually, during the months of January and February.
It is necessary for people to manage their HVAC (Heating ,Ventilation and Air-Conditioning) system to get the best performance. The Programmable Thermostats installed in the systems to regulate the in-house temperatures so you don`t have to rely on Air-Conditioners and heaters. It is one of the best ways to save dollars on HVAC.
Extending availability in Office365 with ADFS and KEMP ADCKemp
Create high availability and go beyond 99.9999% uptime by creating an always available environment for Exchange, Lync and Sharepoint with Azure,ADFS and KEMP Application Delivery Controllers
Developing an SDK for Personalization at the EdgeChris Reynolds
The Edge. The final…frontier? What even is “the edge” beyond just another tech buzzword? And how can I actually use the edge for something actually useful for my site and visitors?
In this talk, I will answer all of these questions and talk about how we at Pantheon have built a software development kit for Drupal and WordPress to enable personalized content by integrating with our edge layer.
We’ll talk about what personalization means for site owners, and get into some of the technical implementation details of how we’ve built our SDKs and how they can be used for personalized content creation.
Outcomes vs Outputs: How Outcome Driven Development Planning Changes EverythingChris Reynolds
As freelancers, developers and project managers working on a project, it’s easy to get blinded by outcomes. Tasks on a project are often defined by the specific thing that we expect to build or present to the client or customer. But what if our assumptions are wrong? Or the scope changes along the way? What if there was an easier way to produce a desirable, user-friendly end-product without specifically defining what that end-product is? (Spoiler: There is!) This talk will discuss how to shift your focus from outputs to outcomes and how that little mental shift, changes everything. Really!
How the WordPress Block Editor Changes the Conversation for Content Editors a...Chris Reynolds
Everyone in the WordPress community is talking about the new editing experience in WordPress. Wherever you fall in defense of or against the new editor, it changes how we interact with WordPress from a content editing and a development perspective. In this talk I will explore some of the ways Gutenberg changes how we build things as well as the types of things we can build to enhance and improve the WordPress editing experience.
WordPress is powered by magic and jazz music. This talk demystifies one of the fundamental components of the WordPress software, WP_Query and the Loop. We’ll talk about URL query strings, how they are used in WordPress and how to manipulate them to control the behavior and output of your site. We’ll also talk about the Loop, what it does, how it works and how to create custom Loops specific to the needs of your project.
Game Night
Don’t be as gloomy as it is outside! Tavern on Broad has something that will be your sunshine on a rainy day.
Everyone is welcome to come out to Game Night tomorrow at Tavern on Broad! This is the night you can school your co-workers and friends in a “friendly” way. Show off your competitive side, while sipping on our $3 beer, $4 wine, and $5 cocktail drink specials as a part of Center City Sips! In the fun spirit, we’ll be extending these drink specials from 5 – 10 PM!
I present how using very simple HTML5 techniques integrating SVG in the DOM we can have a mobile HTML5 app on "creating moods" with a short production cycle. The I show how to integrate it to Facebook with a pure JavaScript solution.
C interview questions and answers for freshers and experienced. Interview Questions from TCS, Infosys, Wipro, Cognizant(TCS) campus interviews.
This videos covers all interview questions on Variables and Variable Types - External, Local, Global and more...
Complete Questions List:
Section 1 : Variables
What is the difference between declaration and definition of a variable?
What are the sizes of different datatypes in C Language?
What is an unsigned int?
6.What is an automatic variable?
7.What are the default values for automatic variables?
9.What are external variables?
12.When are external variables initialized?
15.When are static variables initialized?
16.What is the default value of static variables?
17.What does the keyword const represent?
19.What is a static function?
20.What is a Register Variable? What are its advantages?
23.What is a block?
Section 2 Expressions
35.What is Precedence?
36.What is Associativity?
Section 3 Functions
38.What is the difference between declaration and definition of a function? When is a declaration not needed?
39.What are arguments and What are parameters?
40.What is the default return value from a function?
Section 4 Arrays
49.How are arrays and pointers related?
51.What are Character Pointers?
Section 5 Pointers
55.How are arrays and pointers related?
56.Can you change the address pointed to by an array variable?
57.What are Character Pointers?
58.What is the result of this program?
Section 6 Structures
59.How do you initialize a structure?
60.What are the default values assigned to a Structure?
61.How do you pass a Structure to a function?
62.Will the values in a structure be modified when they are changed in a function?
64.What is the difference between a Structure and a Union?
65.What is dynamic memory allocation?
66.What if free is not called in the method above?
Section 7 Others
67.What are Escape Characters in C Language?
68.How do you comment code in C Language?
69.What is an Enum?
70.What is a typedef?
Section 8 For Loop
71.What are the different parts of a for loop?
72.Can comma be used in a for loop?
74.What is the use of a break statement in a loop?
75.What is the use of a continue in a loop?
Section 9 : If Condition
Section 10 : Switch Statement
85.Can a switch be used without default?
Section 11 : Preprocessor Directives
Section 12 : Puzzles Udemy
Get our complete C Interview guide: http://www.cinterview.in/p/get-our-c-interview-video-guide.html
Talk held on a Smashing Magazine Meetup February, 27th 2012 in Frankfurt (Germany) about current problems with developers, designers and clients in front-end development
Pre-render Blazor WebAssembly on static web hosting at publishing timeJun-ichi Sakamoto
This slide explains how to prerendering a Blazor WebAssembly app hosted on the static web hosting and save them to static HTML files at publishing time.
Autism Ontario provides detailed information, services and supports to children and youth with autism. This and many more such organizations are working to increase the awareness about the autism in the society.
Calgary injury rehabilitation for a better rehabilitationpatboone
If you are looking for immediate relief from the pain and immobility, you are experiencing due to particular injury, Calgary injury rehabilitation regime help you alleviate pain and improve mobility without going through the traditional multi-session series of treatments or therapies. Rehabilitation professionals ensure you fast and lasting relief as well as help you return to pre-injury function ASAP.
Eclipse is the most popular Open Source Java IDE. More developers use Eclipse than any other tool for Java Programming.
In this course, we take you on a fun ride with Eclipse.
By the end of this course, you would have a number of Eclipse tips and tricks up your sleeve. You will also understand various features of Eclipse - Views, Perspectives, Debugger, Save Actions, Plugins and Code Generation.
You will improve your productivity with Eclipse Shortcuts . You will also learn to import projects from Git and the basics of Maven projects.
Course is Organised into 11 Steps : Experienced Eclipse Developers can give Step 0 a skip
Step 0 : Eclipse Basics - Workspace & Your First Java File
Step 1 : Most Important Editing Shortcuts ctrl-1 and ctrl-space
Step 2 : Debugging Java Programs
Step 3 : Eclipse Short Cuts
Step 4 : Refactoring with Eclipse
Step 5 : Code Generation with Eclipse
Step 6 : Automate with Save Actions
Step 7 : Eclipse Views
Step 8 : Eclipse Perspectives
Step 9 : Plugins
Step 10 : Setting up Projects From Git and Maven
In India there is a tradition of performing folk and classical dances at festivals. Some Indian classical dances including Konark dance, Olivier Khajuraho dance, Khajuraho dance, pattadakal dance, Goa carnival are famous which is held annually, during the months of January and February.
It is necessary for people to manage their HVAC (Heating ,Ventilation and Air-Conditioning) system to get the best performance. The Programmable Thermostats installed in the systems to regulate the in-house temperatures so you don`t have to rely on Air-Conditioners and heaters. It is one of the best ways to save dollars on HVAC.
Extending availability in Office365 with ADFS and KEMP ADCKemp
Create high availability and go beyond 99.9999% uptime by creating an always available environment for Exchange, Lync and Sharepoint with Azure,ADFS and KEMP Application Delivery Controllers
Developing an SDK for Personalization at the EdgeChris Reynolds
The Edge. The final…frontier? What even is “the edge” beyond just another tech buzzword? And how can I actually use the edge for something actually useful for my site and visitors?
In this talk, I will answer all of these questions and talk about how we at Pantheon have built a software development kit for Drupal and WordPress to enable personalized content by integrating with our edge layer.
We’ll talk about what personalization means for site owners, and get into some of the technical implementation details of how we’ve built our SDKs and how they can be used for personalized content creation.
Outcomes vs Outputs: How Outcome Driven Development Planning Changes EverythingChris Reynolds
As freelancers, developers and project managers working on a project, it’s easy to get blinded by outcomes. Tasks on a project are often defined by the specific thing that we expect to build or present to the client or customer. But what if our assumptions are wrong? Or the scope changes along the way? What if there was an easier way to produce a desirable, user-friendly end-product without specifically defining what that end-product is? (Spoiler: There is!) This talk will discuss how to shift your focus from outputs to outcomes and how that little mental shift, changes everything. Really!
How the WordPress Block Editor Changes the Conversation for Content Editors a...Chris Reynolds
Everyone in the WordPress community is talking about the new editing experience in WordPress. Wherever you fall in defense of or against the new editor, it changes how we interact with WordPress from a content editing and a development perspective. In this talk I will explore some of the ways Gutenberg changes how we build things as well as the types of things we can build to enhance and improve the WordPress editing experience.
WordPress is powered by magic and jazz music. This talk demystifies one of the fundamental components of the WordPress software, WP_Query and the Loop. We’ll talk about URL query strings, how they are used in WordPress and how to manipulate them to control the behavior and output of your site. We’ll also talk about the Loop, what it does, how it works and how to create custom Loops specific to the needs of your project.
The open source community is vast. The greater tech community is even bigger. In the last year, we’ve watched reports about how bad our treatment is of women and marginalized groups within the tech community...it doesn’t take long to find pages and pages of stories. I am a white male from a middle class family and I am well aware of my privilege that other people within our community don’t share due to their gender identity, sexual orientation, mental or physical health, the color of their skin, what part of the world they were born in, etc, etc, etc. This talk will address the problems that exist and how those of us who have privilege can use our powers for good to make the community a better and more inclusive place for everyone.
Presenter notes available at http://s3q.us/ally-notes/
I started, like a lot of developers, from ground zero. I taught myself HTML in the GeoCities days and, when I discovered open source software, the first thing I did was started ripping apart code to customize it for my site and my own personal use. I now write code for global enterprise businesses with thousands of users and millions of visitors. In the intervening time, I’ve had plenty of opportunities to confront feelings of inadequacy, of feeling like I’m not actually that good and that no one would ever listen to me. Everyone suffers from imposter syndrome at some point, for a variety of reasons. The key to overcoming imposter syndrome is understanding your own skills and what you’re fantastic at. Learning how to manage imposter syndrome could be the difference between taking the skills and knowledge you’ve acquired through years of experience and training and applying to that awesome job, or being too afraid to hit the apply button because you don’t believe you actually have enough experience, recognition or some other artificial excuse. This talk will share some of my personal experiences and how I tamed my own imposter syndrome and will suggest some strategies for overcoming yours.
Awesome Git Workflow for Agencies and TeamsChris Reynolds
We all know that Git > SVN, right? But maybe you haven’t had time yet to fully grasp the awesome power of a perfect Git workflow. Chris Reynolds is a developer for WebDevStudios and is here to share how WDS uses Git on projects for clients like Microsoft and the United States’ National Park Service as well as collaborative development on plugins on GitHub and the WordPress Plugins repository.
Why Hacking WordPress Search Isn't Some Big Scary ThingChris Reynolds
Developers can be a stubborn lot. We like to focus on the things we know really well, and things we don’t deal with as often can be seen as “hard”. Search is one of those things that gets written off a lot, few devs I know will deal with it (voluntarily), and almost everyone will tell you “WordPress search sucks.” In this presentation you will learn that not only do you know more about how search works than you thought you did, but maybe give you a better understanding of how WordPress works as a whole, as well as showing you some cool tricks that you can do with WordPress search.
This 7-second Brain Wave Ritual Attracts Money To You.!nirahealhty
Discover the power of a simple 7-second brain wave ritual that can attract wealth and abundance into your life. By tapping into specific brain frequencies, this technique helps you manifest financial success effortlessly. Ready to transform your financial future? Try this powerful ritual and start attracting money today!
1.Wireless Communication System_Wireless communication is a broad term that i...JeyaPerumal1
Wireless communication involves the transmission of information over a distance without the help of wires, cables or any other forms of electrical conductors.
Wireless communication is a broad term that incorporates all procedures and forms of connecting and communicating between two or more devices using a wireless signal through wireless communication technologies and devices.
Features of Wireless Communication
The evolution of wireless technology has brought many advancements with its effective features.
The transmitted distance can be anywhere between a few meters (for example, a television's remote control) and thousands of kilometers (for example, radio communication).
Wireless communication can be used for cellular telephony, wireless access to the internet, wireless home networking, and so on.
Multi-cluster Kubernetes Networking- Patterns, Projects and GuidelinesSanjeev Rampal
Talk presented at Kubernetes Community Day, New York, May 2024.
Technical summary of Multi-Cluster Kubernetes Networking architectures with focus on 4 key topics.
1) Key patterns for Multi-cluster architectures
2) Architectural comparison of several OSS/ CNCF projects to address these patterns
3) Evolution trends for the APIs of these projects
4) Some design recommendations & guidelines for adopting/ deploying these solutions.
ER(Entity Relationship) Diagram for online shopping - TAEHimani415946
https://bit.ly/3KACoyV
The ER diagram for the project is the foundation for the building of the database of the project. The properties, datatypes, and attributes are defined by the ER diagram.
hi
this presentation is not overly technical but will get into some technical things
resources and approaches for developers starting out in gutenberg development
things for content editors and site administrators to know about working with gutenberg and also having those conversations with developers
this presentation was built almost entirely in gutenberg to show the different types of things that can be done
hi
this presentation is not overly technical but will get into some technical things
resources and approaches for developers starting out in gutenberg development
things for content editors and site administrators to know about working with gutenberg and also having those conversations with developers
this presentation was built almost entirely in gutenberg to show the different types of things that can be done
Block editor added in WordPress 5.0
2 years of development
React-based editor
Entirely built on top of the WP REST API
Now referred to as “block editor”
Almost 10,000 commits
Nearly 400 contributors
Over 900 releases
* significant development and person-hours involved in this product
What problem is the block editor trying to solve?
* WP admin hasn’t been updated in years, losing ground to more intuitive editorial interfaces like Squarespace and Medium
WP has outgrown TinyMCE
Full control over page layout in WP has been difficult, requiring editors to learn and remember shortcodes, use third party tools like Shortcake, or page builder tools like Beaver Builder and Visual Composer to solve those problems
pull quotes
columns
tables — previously would have required knowledge of html or copy/pasting from a spreadsheet
Like the Customizer, the block editor establishes a standardized toolset for adding editorial components
First major internal component of WP built almost entirely in javascript.
* Uses React
* some licensing concerns about that
* React is maintained by Facebook, some ideological and maintenance concerns around that
* React was chosen over Vue, a smaller, more independent library, some philosophical concerns around that
* Pretty steep learning curve for both javascript, generally, and react specifically
* Forward-thinking architecture -- uses ESNext / JSX
* React can be ripped out if needed, and WP-specific wrappers are used for most things
Modern, block-based editor for more control over dynamic layouts and content types within posts
First time significant attention and development has been spent on a UX component of WordPress
Accessibility
* While individual parts of the block editor might be accessible, Gutenberg was not developed from an accessibility-first standpoint, which led to many accessibility fixes being handled as an afterthought
* Many tasks are extremely difficult and painful to do with a screen reader
* Keyboard shortcuts exist but it’s not always clear how to get to them
* Individual blocks will only be as accessible as the developers make them
Technical implementation differences
json array of attributes
* stored in the database
all markup is saved in the editor
wrapped in html comments
* those html comments are not rendered in the front-end
another example, full width cover image
wrapped in html comments defining the type of block and a json array of attributes
attributes include the image url, alignment, attachment id
those are then used in the rendered markup
alignment informs the class used, url and attachment id determine the background image url
all the actual markup is standard html
divs, p tags, things a browser would recognize
even if your theme doesn’t support the classes, it will at least display something that looks something like what is supported
and if your theme doesn’t support the classes, you’ll see what that looks like in the editor, so it’s not a surprise when you hit publish
There’s a classic editor block if you don’t know what to use or don’t want or need the Gutenberg flow
this works the same way you’d expect, hitting enter starts a new paragraph within the classic editor block rather than opening a new gutenberg block
You need to search for the block, but if you’re using it frequently, it’ll float to the top of your Most Used blocks
The actual markup is exactly what you’d expect — no additional gutenberg block markup at all.
If you absolutely don’t want to work with gutenberg or your site’s not ready to make the switch, the classic editor plugin is available
a bit of an end-of-life for the plugin as it’s only expected to be supported until 2022
it may be maintained and supported longer, but by that time, plugins and themes may move beyond supporting the classic editor and you’ll start to see compatibility issues there
ClassicPress is a hard fork of WordPress prior to 5.0 that only uses the classic, TinyMCE editor
What do I need to know as a developer to start working with the block editor?
I’ll tell you a couple things you don’t need to know.
You don’t need to know React — but it helps
You don’t need to know ES6 or ESNext — but it helps a lot
Gutenberg was written in React and ESNext so it helps in understanding the core modules if you are at least partially familiar with these languages.
But blocks can be written in vanilla javascript and ES5.
Making use of ESNext syntax and JSX is a lot more intuitive and easier to learn that I had anticipated
All the React components used have WordPress-specific wrappers so you’re not interacting with React itself very frequently (outside of core development)
Zak Gordon’s Gutenberg Block Development course is a huge asset
this course will go over some of the JSX and ESNext syntax used in gutenberg block development
hm-gutenberg-tools
Tools and components that can help in Gutenberg development
Gutenberg Starter Kit
Gutenberg plugin boilerplate with example code
Hot Module Replacement for Gutenberg
Hot Module Replacement allows components to update live on the page as you make changes to the code and the code is compiled
This is a huge asset to Gutenberg development
If code is out of sync, Gutenberg will often break during development — this solves that problem so you don’t constantly have to reload
It’s a long read but it’s pretty comprehensive and explains how we’ve used it on multiple projects
There are some general philosophies for developing blocks
You are developing for the admin rather than the front-end
For those of us who consider themselves “back end developers”, this is a pretty big context-shift
Things that were previously handled with shortcodes should probably be Gutenberg blocks
But it’s not a 1:1 conversion -- user interaction and experience needs to be more fully considered
Metaboxes should be re-thought
Many places a custom metabox was used might be better served inline with an interactive Gutenberg block
Stronger emphasis on “what you see is what you get”
All the styles used in the admin to render your block should be the same as those used on the front-end
What do I need to know as an editor using Gutenberg?
You have blocks!
Consider the experience of OEmbed in the WordPress editor as a comparison
For bespoke projects, you will need to be clearer about your requirements
The specific interactions can be highly individualized, which means far more clarity will be needed when considering implementation
Gutenberg blocks take longer to develop
Whereas previously, a custom metabox or shortcode could be developed in less than a day, expect several days worth of development for a similar Gutenberg block...at least as your development team is getting familiar with the tools and the workflow
But it’s worth it
You can do things in a gutenberg block that simply weren’t possible before
Some ideas off the top of my head of things that could be built in Gutenberg
Translations
A translatable text block could be created that allows direct translations to be handled inline
Embeddable contact and newsletter signup forms
Customizable fields can be added or not
Featured content
A pull-out highlighting content somewhere else on the site
Logic can be contextual or manually curated
Ads and third party embeds
Ad placement and embeds can happen inline within the editor, so content editors always know where these things will display on the page
Placement can be manual or through automated logic
A/B testing
A block or series of blocks could be created to test out different content or design strategies
Nested blocks
Blocks inside blocks inside blocks
any questions?
Zak’s G’berg block development course
HM repos
HM article on HMR
HM has written a white paper about Gutenberg and what it can do