Schedule

The following are the timetables defined for the workshop and conference days.

NOTE: Times are in UTC

12:00
14:30
UTC

Workshop 1 - Jorge Gonzalez

Topics that will be covered:

Middlewares
- Use cases and examples

Security
- Discussion on all the provided security features of the framework, how the work and the attacks they are aiming to mitigate

Performance optimization
- How to detect bottlenecks in your applications
- Typical performance improvements for your production environment
- Caching

Events
- When & Why
- How to work with the event system

Other
- View widgets
- Database types
- ORM expressions and functions

14:30
14:45
UTC

Break

Short break

14:45
17:15
UTC

Workshop 2 - Michael Hoffman

Topics that will be covered:

- Vite with hot reloading
- Setting up Vue.js
- Adding tailwind css
- Using the auth/auth plugins with a JS framework
- Creating a small ToDo demo app with this stack

17:15
17:30
UTC

Break

Short break

17:30
20:00
UTC

Workshop 3 - Mark Story

Topics that will be covered:

- Using the DI container
- set up logging, and database config from the container.
- set up services into controllers.

- Leveraging new style fixtures
- Talk about new fixtures and how they will work.
- Reuse migrations for test schema.
- Using factory methods to create objects, or cakephp-fixture-factories.
- Demo of creating simple factories using a trait and method. Fixture-factories plugin

- Browser automation testing with Panther.
- Why do browser automation.
- Using panther to operate pages.
- Helpers you may need.

12:00
12:15
UTC

Opening Talks

Larry Masters will join us and welcome you to CakeFest 2021!

12:15
13:00
UTC

Passbolt Keynote - How does your Cake test?

Juan Pablo Ramirez

Passbolt Keynote

How does your Cake test?

Any software ought to be automatically tested. This ensures the application's integrity over time and evolution.

Testing with CakePHP has recently evolved with three significant features co-developed with Nicolas Masson, easing the test driven development experience:
- Migration-managed test databases,
- Trigger-based test database cleaning to speed up the suite,
- Fixture factories to generate complex test fixtures in no time.

At Passbolt, we grabbed the opportunity to refactor our code base and enhance the quality of our tests.

In this presentation, I will describe the test code-base and the continuous integration cycles of the Passbolt API with code examples, from unit to integration tests and dummy data generation.

In a second part, I will explain how to efficiently use the fixture factories plugin, with extensive insights into the plugin's code-base.

Sources:
https://github.com/passbolt/passbolt_api
https://github.com/vierge-noire/cakephp-test-migrator
https://github.com/vierge-noire/cakephp-test-suite-light
https://github.com/vierge-noire/cakephp-fixture-factories

13:00
13:30
UTC

Components Reconsidered

Sho Ito

CakePHP implements a way to reuse code in controllers called Components. Creating components keeps controller code clean.
However, components are not the only mechanism to reuse code in controllers. We can also reuse code by using Traits. Furthermore, we can use Dependency Injection in CakePHP 4.2 and later. Which do you use better Components, Traits or Dependency Injection?
In this talk, I will introduce the each of the three mechanisms and consider what use cases each of them is suitable for.

13:30
14:00
UTC

Automatically Distributing Reference Queries to Read Replica in CakePHP4

Yuki Kanazawa

In order to handle large amounts of accesses and large amounts of data, it is essential to have a mechanism to distribute reference queries to Replica.
CakePHP does not have distributing reference queries to Replica, but it can be done with a plugin.

cakephp-master-replica is a great plugin to do this.

This can be achieved by implementing a process to switch to Replica before executing a reference query, but if it is simply implemented, it will be cumbersome to write the switching process every time.

In this proposal, I will introduce the cakephp-master-replica plugin and show an example implementation in CakePHP4 that automatically switches to Replica when a reference query is issued.

14:00
14:30
UTC

Leverage the IDE in CakePHP development

Mark Scherer

How to make development not only fun, interesting and fast, but also how to write future proof code and refactorability.

We check out different must-have tools and showcase a few best practice approaches.
You will definitely be able to take a few useful things away from this for your own app dev.

14:45
15:15
UTC

Fighting COVID-19 with Contact Tracing in Czech Republic

Jiri Havlicek

*) How does the contact tracing work in Czech Republic
*) How the system was built to support 4000 concurrent users with realtime operations (calls, SMS messages etc.)
*) How does the system integrate with multiple government information systems of Ministry of Health and Interior Ministry
*) How does CakePHP 4 support all these business processes from a technological point-of-view

15:15
15:45
UTC

Our Standards and Why We Use Them

Christopher Miller

Here at Jump Twenty Four, We adhere to some strict standards for our code. We look at the questions of Why we use the standards we use, What coding standards we apply, The benefits of applying coding standards, and an example of using the coding standards across projects.

In Laravel we apply PHP Linter, PHPStan, ECS, Englightn and Test Driven Development.
In CakePHP the only one we cant apply is Enlightn as that is Laravel specific.

Using a simplified blogging application as an example of how we apply the packages we need to the project, how we use those packages, how to fix things those packages suggest to us, and the reason we apply certain standards are all covered.

15:45
16:15
UTC

How to re-use code - Utility Classes and PHP Namespaces

Kevin Pfeifer

Sometimes you need to re-use some functionality in multiple places like commands, controller functions or other specific events.
Instead of copying the code and producing duplicate code a good solution are Utility Classes.

In this talk I will go more in depth in the following topics:
* Why we need PHP Namespaces
* How are PHP Namespaces set up in CakePHP
* How do I use PHP Namespaces

16:15
16:45
UTC

Distribute private plugins with Satis

Paul Hendriks

I'd like to do a presentation on how to develop private plugins and how to distribute them with Satis..

In Centerdata we use a couple of inhouse plugins, which we re-use in several projects.
In CakePHP2 we used the Git Submodule approach, but since the switch to CakePHP4 we're using Satis; a private composer repository tool.

During the presentation i'll:
* Setup Satis
* Create a CakePHP project
* Bake a plugin
* Push that plugin to GitLab
* Add plugin to Satis
* Open another Cakephp project and include the plugin with Composer

16:45
17:15
UTC

Here Be Dragons: Finding the Joy in Software Development

Edward Barnard

There's a strong tendency toward "gate keeping" right now in the 2020s. Senior developers warn "there be dragons" while announcing a "hands off" policy toward the crucial areas of the code base. You and I need to get past that. Where's the fun when you can't touch the dragons? The joy's in _experiencing_ software development, dragons and all. Our industry experiences remarkably high rates of burnout. Looking back across the decades, this is my experience--how to have fun. We look at "the guru", mentoring, imposter syndrome, the need for continuously learning, and thoughts on how we extend the craft of software development.

17:15
17:45
UTC

A Grumpy Programmer's Guide To Being A Senior Developer

Chris Hartjes

So you're a "Senior Developer" now? What does that even mean? Is it a title you get for being the last one standing in a difficult environment? Is it a label you get for being older than your peers? If you want to become a "senior developer" what are some things that can help you get there?

In this talk I share my experiences of being a "senior developer" on different projects across different companies across different programming languages. Some of the things discussed include:

* problem isolation
* mentoring
* tooling support
* domain knowledge

While sometimes it just takes time to get to be "senior", these tips can help apply structure to a job that often comes with less coding and more problem solving.

17:45
18:00
UTC

Break

A CakeFest giveaway & short break

18:00
18:30
UTC

Modern Infrastructure as Code with Ansible

Joe ferguson

Join us as we dive into Ansible, the server management tool designed to help developers keep servers configured properly and running smoothly. We’ll cover the basics and dive into some in-depth configuration options so you can stop treating your servers like pets: which you constantly have to feed and water. Join us as we learn how to turn those pets into cattle in your server farm and turn your infrastructure into code!

Ansible is an agentless server configuration manager which performs tasks over an SSH connection. There is nothing to install on your systems. We’ll cover examples of how to leverage Ansible modules to add users, configure services, set up configuration files, and deploy code to remote systems. Instead of manually performing these tasks, join us as we learn how to write Ansible playbooks to accomplish these tasks and turn our infrastructure into infrastructure as code!

Topic Outline:

Intro to Ansible
What Ansible is good for
What Ansible isn’t good for
Configuring Inventory & Environments
Building Playbooks
Running & Debugging Playbooks
Reuse other playbooks for your needs
Where to get help & other fantastic learning resources

18:30
19:00
UTC

NGINX Unit - Modernise your CakePHP deployments

Timo Stark

Using NGINX with PHP-FPM has been the standard to run your Cake-PHP Applications for the last years! But what if I tell you there is something else. Something new from NGINX you can use to power your Cake-PHP Applications? Something you can use to run multiple Applications at the same time and something that can be used to control the number of PHP processes, the certificates used for TLS encryption and the PHP User and Admin options just an API call away. If you are curious what this something is and how I used it to modernise my PHP Deployment strategy and ecosystem join me and learn more about NGINX Unit!

19:00
19:30
UTC

Creating Reusable ETL Utilities using Phinx

Jamison Bryant

ETL = Extract, Transform, Load.

This is something that has to happen for any project working off of a legacy database, especially one that is not already in "Cake" format. Seeds only get you so far, eventually you have to pull in that legacy data.

With a little architecture and some clever coding, it's possible to create a reusable ETL utility using Phinx migrations, which are already baked into CakePHP. In this talk, I will explain the classes and components required to bolt-on to the existing migration infrastructure to create a reusable ETL utility that can be run again and again to import data from any external source into a normalized CakePHP database.

19:30
20:00
UTC

Closing / Cake Ceremony

Join us for the famous cutting of the Cake(PHP).

We ask all virtual attendees to have their own cake ready to enjoy with the community.