Adam Culp, author of “Refactoring 101” and consultant at Zend Technologies, is passionate about developing with PHP and contributes to many open source projects. He organizes the SunshinePHP Developer Conference and the South Florida PHP Users Group (SoFloPHP), where he enjoys helping others write good code, implement standards, refactor efficiently, and incorporate unit and functional testing into their projects. He is a Zend Certified PHP 5.3 Engineer, is a voting member of the PHP-Fig, and holds a seat on the Zend Framework Certification Advisory Board. You can also find him on his Run Geek Radio podcast and GeekyBoy technical blog. When he is not coding or contributing to various developer communities, he can be found hiking around the United States National Parks, teaching judo, or running (ultra)long distance marathons.
Practical PHP Deployment with Jenkins
Developers would love to “automate all the things”, but where do we start? What tools exist for automating? And what can actually be automated? If we don’t have unit tests can we still benefit from deployment automation? Adam Culp will show how a PHP application pulled from git, complete with unit tests, Composer dependency management, and package creation, can be deployed flawlessly using Jenkins. Then see how “Dev” and “Ops” are supported by a system if the application breaks through automated rollbacks.
Starting in PHP over 15 years ago, Alena is excited about expanding and encompassing the AMAZING PHP community through collaboration and the use of common patterns. As a Teacher at Treehouse and local leadership for Women Who Code and the PHP users group, she is passionate about helping people overcome their own barriers to excellence in order to achieve personal confidence in their ability to learn and succeed.
Exploiting the Brain for Fun & Profit
Sure, you could improve yourself or promote your project the normal way, with hard work and years of slow, incremental progress. Or you could use some of the brain’s built-in cheat codes to level up on your way to success.
Along with learning, our brains are plagued by a raft of bugs and unwanted features that we have been unable to remove. Use these “features” to your advantage to teach, learn and persuade. Join us in a tour of some of the most amusing bugs and exploits that allow you to play with the interface between our brains and the world.
Andrew is a young developer of open source and commercial software. He graduated from the University of Warwick in 2014 with a first class masters degree in Physics. At Warwick he focused his studies on scientific computer simulations and developing software to run on high performance clusters.
Since graduating, Andrew has worked commercially on price comparison applications in the insurance and car hire industry. He has also spoken at many user groups and conferences and had technical articles published by SitePoint magazine.
Drinking Beer with a Raspberry Pi and PHP
Always been interested in the Raspberry Pi but never known what you could do with it? Got a Raspberry Pi at home that you played with for 5 minutes before you got bored? This talk is for you.
We will be making a journey into the world of programming with sensors and other electrical components. The concepts introduced will not be specific to any programming language, but we will use PHP throughout to keep it simple. The demonstration will show how you could use a Raspberry Pi to spice up a home bar.
By the end of this talk, you will have acquired the skills to get started on your own hobby electronics projects! Maybe these skills will one day be handy introducing friends and family to the adventures of programming.
Integrating React.js into a PHP application
In this talk I’ll cover the different ways React.js can be integrated into an existing PHP web application: from a client-side only approach to multiple techniques that support full server-side rendering with a Node.js server or PHP’s v8js. I’ll also discuss the trade-offs in each of these designs and the challenges involved with adding React to a PHP site. Most importantly, I’ll consider the higher-level issue of how to improve view cohesion across the client-server divide in a PHP application.
Anna has been a Web developer for nearly two decades. She likes elegant code, robust frameworks, lightning fast performance, automated testing and timely project delivery. She has a knack for breathing new life into legacy code and teaching developers of all levels. Anna owns FooLab and organizes the ConFoo conference.
Rewriting 15-Year-Old Code
Did you ever have to maintain a 15year-old application? Dead code and tables everywhere, static methods, database queries in between HTML tags and some pages still in PHP3. This presentation will lead you through a progressive rewrite from very old legacy to the latest shiny version of PHP. Learn how to automate legacy testing, how to seamlessly jump between the old and new parts, and how to overcome other challenges that arise from dealing with legacy.
Bruno is a coder from Croatia with Master’s Degrees in Computer Science and English Language and Literature. He’s the editor of SitePoint’s PHP channel and a developer evangelist for Diffbot.com. He avoids legacy code like the plague and when picking projects, he makes sure they’re as cutting edge as possible. He’s a treadmill desk enthusiast and active (board)gamer who sometimes blogs.
The Framework is Dead
It is said developers go through four stages:
Use a framework.
Write own framework.
Once the cycle is complete, the developer is said to be ready. In this talk, we’ll go for stage 3, but replace it with stage 4. In other words, we’ll explain how to build our own framework, but from third party components, thus being immune to breaking changes, vendor lock, and other negative side effects of using popular frameworks.
For the past 13 years Cal has worked with PHP and MySQL on Linux, OSX, and Windows. He has built a variety of projects ranging in size from simple web pages to multi-million dollar web applications. These days, when not working with PHP, Cal can be found working on a variety of projects like CoderFaire. He speaks at conferences around the world on topics ranging from technical talks to motivational talks for developers.
Dustin Whittle is a Developer Evangelist at AppDynamics where he focuses on helping organizations manage application performance. Before joining AppDynamics, Dustin was CTO at Kwarter, a consultant at SensioLabs, and developer evangelist at Yahoo!. He has experience building and leading engineering teams and working with developers and partners to drive platform adoption. When Dustin isn’t working he enjoys flying, sailing, diving, golfing, and traveling around the world
PHP is used by the likes of Facebook, Yahoo!, Zynga, Tumblr, Etsy, and Wikipedia. How do the largest internet companies scale PHP to meet their demand? Join this session and find out how to use the latest tools in PHP for developing high performance applications. We’ll take a look at common techniques for scaling PHP applications and best practices for profiling and optimizing performance. After this session, you’ll leave prepared to tackle your next enterprise PHP project.
Elena Kolevska is the lead developer at Speed To Contact and an occasional tech blogger and speaker. A freak for optimizing stuff, be it code, work processes, driving style or a night out. Prefers humans over machines (write code that’s readable first and then make it run super fast).
She likes to hang out and participate in the online tech community, but we’ve repeatedly heard her say that she values time spent AFK equally. A blasphemy!
Redis for your boss
“Use the right tool for the right job” is one of the first thing they teach you when you start out in these waters. I would make “Get to really know your tools” a second.
In this talk we’re going to work on the architecture of an app that showcases some common features/scenarios we all probably already have in the apps we’re working on: counters, leaderboards, queuing, timelines, caching, session management, chat. But this time we’ll implement them with Redis, making the apps much faster, your hardware (and you) much cooler, your boss (and the clients) much happier and hopefully your salary a bit higher.
Very early on, at the age of 19, Jad Joubran founded eTobb. Nowadays, his experience revolves around managing a team of over 4 developers at eTobb, mentoring developers across different channels, and coaching Web Development in Amsterdam, Brussels, and Lisbon with Le Wagon.
Blazing Fast CSS3 Transitions
Our experience in a digital product is shaped by a lot of factors, and interaction plays a fundamental role. The performance of transitions makes a huge difference on modern websites and apps.
Learn techniques that will make your transitions run smoothly for a seamless user experience, even on your grandma’s old phone.
If you’re new to CSS3 transitions, then this talk will put you on the right track; if you’re already using it, you’ll definitely want to attend to master those skills.
James is a software engineer working at @localstars with a particular interest in software and technical architecture. Technically opinionated, he’s passionate about best practices and frequently looks for shortcuts that can work for his team while still adhering to the principles that define good programming.
Dependency Injection and Dependency Inversion in PHP
Dependency Injection and Dependency Inversion are important tools for writing testable and reusable code. They are available in any object oriented language and PHP is no exception. In this talk we will look at both Dependency Injection and the Dependency Inversion Principle, how they fit in with SOLID, and why they should be used when writing object oriented code.
How are objects wired together? What is an object graph? Is a Dependency Injection Container the right way forward? Can we do this automatically, and are there any patterns or reusable components available to help us achieve reusable and decoupled code? These are some of the topics covered in this talk from both a theoretical and a practical standpoint.
Walking out of the room you should understand why dependency injection is so heavily advocated in programming and how you can use it to write awesome, decoupled code in PHP.
James is the founder of the UK based PHP Hampshire user group and the PHP South Coast Conference. He’s also a Zend Certified Engineer and consultant at Roave. During his downtime, he continues to run the PHP Hampshire user group and the conference, and keeps up with active contributions to various open source projects.
Climbing the Abstract Syntax Tree
The new Abstract Syntax Tree (AST) in PHP 7 means the way our PHP code is being executed has changed. Understanding this new fundamental compilation step is key to understanding how our code is being run.
To demonstrate, James will show how a basic compiler works and how introducing an AST simplifies this process. We’ll look into how these magical time-warp techniques* can also be used in your code to introspect, analyse and modify code in a way that was never possible before.
After seeing this talk, you’ll have a great insight as to the wonders of an AST, and how it can be applied to both compilers and userland code.
(*actual magic or time-warp not guaranteed)
Workshop: Adding 1.21 Gigawatts to Applications with RabbitMQ
As your application grows, you soon realise you need to break up your application into smaller chunks that talk to each other. You could just use web services to interact, or you could take a more robust approach and use the message broker RabbitMQ. In this tutorial, I will introduce RabbitMQ as a solution to scalable, interoperable and flexible applications.
This tutorial is perfect for those who would like a deep dive into RabbitMQ with little or no pre-existing knowledge about message queuing systems. Once you’ve finished the tutorial, you will have learnt how to set up basic publish/subscribe message queues, control the flow of messages using various exchanges, and understand various features of RabbitMQ such as RPC, TTL, and DLX.
Jeremy Mikola is a software engineer at MongoDB’s NYC office. As a member of the drivers and integrations team, he helps develop the PHP driver and contributes to various OSS projects, such as Doctrine ODM and React PHP. Jeremy lives in Hoboken, NJ and is known to enjoy a good sandwich.
Zero to Sixty with MongoDB
MongoDB is a non-relational, document database that aims to hit a sweet spot of functionality and flexibility. This tutorial will explore the database in hands-on fashion, using the recently rewritten PHP driver as our vehicle. We will walk through all of the MongoDB essentials for application development, from the server deployment and data model to querying and indexing. From there, we’ll peek into some advanced features such as data aggregation and file storage.
How I learned to stop worrying and love Regular Expressions
This session will cover Regular Expressions from the basics to the darkest corners of this arcane art.
Regular Expressions at the core come in handy to achieve validation and text manipulation tasks. In the day to day life of a developer, becoming comfortable with them opens up many more use cases.
As one of the tortured souls that actually enjoys writing – and reading – regexes, Jordi will share his passion so that you too can see there is no reason to worry.
Joshua Thijssen is an all-round consultant and trainer. His daily work consists of maintaining code bases, working on different projects and helping other to achieve higher standards in both coding and thinking. He is author of the PHP|Architect book “Mastering the SPL library” and the Symfony Rainbow Series, founder of the Dutch Web Alliance and regular speaker at national and international conferences.
Paradoxes and theorems every developer should know
What do german tanks, your birthday and the speed of light have
to do with our daily development work? It turns out, quite a lot!
During this presentation, I will explain a series of mathematical
theorems and paradoxes that we encounter every day during development,
but we often fail to recognize. By using these theorems, we can
create better code, find more secure and efficient solutions to our
problems, and it even helps you out communicating with clients and
Kacper Gunia is a developer passionate about Software Architecture, explorer of DDD and TDD/BDD practitioner. Prior to founding Source Ministry he worked for various companies in the UK and Poland including 3 years as a Symfony Trainer and Technical Team Leader for SensioLabs UK. He is a Symfony Certified Developer and Zend Certified Engineer, has a degree in Computer Science and postgraduate diplomas in Coaching and Project Management. Co-founder of PHPers – Polish Meetups for PHP Developers and Architects, member of Programme Committee of PHPCon Poland and 4Developers.
The IoC Hydra
Dependency Injection seems to be the most popular way of Inverting Control flow in PHP applications. Lets stop for a bit and ask a question – is it the only and the best answer for all the problems? What about almighty Events or not so popular in PHP world Aspect Oriented Programming? How does frameworks fit in there?
In this talk we will have a look into pros and cons of different ways in which we can Invert the Control of our applications. We will investigate how frameworks like Symfony help us achieve that goal and what makes framework a framework. It turns out that some of the common practices are not the best choices and during the talk speaker will highlight why is that a case.
Lyubomir is an active member of the Bulgarian PHP community. He is involved in the Bulgaria PHP User Group, Programmers Club Veliko Tarnovo and in the organization of different developers’ events like the hackathon Code4VTU for example. He is a freelancer with solid interest in using Zend, NoSQL databases like MongoDB and different CMSs, online shop systems and other.
Let’s get fuzzy!
The main idea behind this talk is to dig deep into fuzzy matching in order to do that we will check first what fuzzy matching stands for. What does string distance mean and which metrics describe it best. Several tests are performed with the most famous solutions and results are compared. We will offer some minor optimizations that will help us and finally show the results.
What is fuzzy matching
– string distance (what is this)
– Levenshtein distance – measures the number of single-character edits required to transform one word into the other
– Damerau–Levenshtein distance
Included PHP functions that calculate string distance
– open source solutions
Fuzzy search with PHP
– how this is performed with MySQL, tests
– tests with Elastic
– tests with Algolia
– comparison of results
Google Suggest API
– would this do the trick
Offered optimization for a current problem. Lets make an app that will notify us when our electricity or water will be stopped. It seems simple but we should consider that this data is entered manually and it might be fuzzy.
– lets play a bit with graphs and trees with PHP
– what is the best way to perform fuzzy matching with php
Mariusz Gil is architect and CTO focused on high performance and scalable web applications. Trainer, consultant and conference speaker. Co-founder of Source Ministry, the London-based PHP consulting company. Big fan of big-data and machine-learning solutions. He has been working for several companies on PHP projects for millions of active users, from biggest social network and instant-messaging software in Poland to multi-billion PV content personalization and discovery platform. Mariusz is also member of 4Developers, PHPcon Poland Programme Committees and one of core members behind PHPers, open meetups for PHP developers in many cities in Poland. After hours, mountain-biker and rock guitarist.
Machine Learning for the Rescue
Gathering the data is not a problem today. The bigger challenge is to understand these informations and draw some conclusions. Fortunately, we can use some techniques like machine learning to “teach” computer how to learn from our data. Fast artificial neural networks, random forests, SVMs, classification, clustering – just to name a few concepts ready to use… We will apply all these solutions to PHP application to deliver automatic insights/predictions and create a real business value for a client. By the end of this session you will be familiar with Machine Learning ideas and prepared to solve unsolvable problems in PHP.
Workshop: Introduction to Graphs Analytics with Neo4j
Graph is a set of nodes connected with edges. This simply and powerful data structure allows us to model complex domains, which are really hard to express with our „traditional”, relation model. Graph structures can be also analyzed with different algorithms, from finding shortest path between nodes to detecting anomalies in datasets or generating recommendations based on graph structure.
During workshop I’m going to introduce Neo4j, very popular graph database. You will learn how to use this engine and query language called Cypher to model and analyze graphs. After the workshop you will also know how Panama Papers were analyzed using Neo4j.
Mark is Head of Design and Development at Innoved (Innovative Solutions for Education) Learning, based in Wigan; a company which (coincidentally) shares offices with his favourite Rugby League team, the 2013 Superleague and Challenge Cup winners, and which occasionally gets him free tickets to attend Warriors games.
He has been working in the computer software industry since before symbolics.com was registered as a domain name, before the term “cyberspace” was first used in fiction, when Linus Torvalds and Rasmus Lerdorf were still at high school, and Mrs. Zuckerberg had yet to give birth to a bouncing baby social network enabler; and has been developing for the Web in a variety of languages since the days when the Tim Berners-Lee’s creation comprised less than 1,000 sites.
Over those years, he has contributed to a number of open source projects: some still extant, others lost to history, including a minor submission to PHP’s SPL. Currently he is coordinator and lead developer for the PHPExcel library, and a coordinator and developer on the PHPOffice library suite (PHPWord, PHPPowerPoint, PHPProject and PHPVisio). Most recently, he has been working on new datastructures such as Tries, Quadtrees and Matrices; hoping that he’ll eventually be able to get them included in SPL.
His particular interests include PHP integration with office suites, Generators, Datastructures, Textual analysis, Geodata and geographic information systems, and “big data” and data analysis.
A Functional Guide to Cat Herding with PHP Generators
When working with arrays in PHP, three of the most useful functions available to us are arraymap(), arrayfilter() and array_reduce(), which allow us to walk an array and manipulate the value of array elements, select a subset of values from an array, or reduce an array to a single value; all using a callback function to determine exactly what logic should be applied. The use of the callback makes them extremely flexible, and these functions can be particularly powerful, especially when combined (or chained) together.
However, these functions only work with standard PHP arrays; so if we are using Generators as a data source instead of an array, then we can’t take advantage of the functionality that they provide. Fortunately, it’s very easy to emulate that functionality and apply it to Generators (and also to other Traversable objects like SPL Iterators), giving us access to all of the flexibility and power that mapping, filtering and reducing can offer, and with all the benefits that Generators can offer our code.
So how do we go about implementing filter(), map() and reduce() functions for our Generators? How do we use those functions in our applications? I’ll be answering those two questions, and explaining how I keep track of my cats armed only with a GPS Tracker and, PHP Generators, and filter/map/reduce.
I am PHP Software Developer from Hungary. My experiences evolved from pure (100% handwritten) PHP code to frameworks, from spagetthi code to well designed applications. I am an Open Source enthusiast and I maintain quite a few projects, to name some:
- HTTPlug – author
- SupervisorPHP – author
- Money – Originally written by Mathias Verraes, I am the official maintainer
- fxmlrpc – Originally written by Lars Strojny, I am the official maintainer of the package rewrite
I am committed to well designed and written software (both in open source and closed source), so I usually maintain and regularly update a development workflow with strict and less strict rules to provide the best quality software.
Bernard, the Tactician: Background processing using message queues and the command pattern
Background processes are natural parts of computer science. In OSes there are daemons and services, in applications there is multi-threading, etc. This topic is becoming more and more popular in web-applications as well. In my talk, I will show what background processes are and why we should use them. I will guide the audience from a general view to an infrastructure model using message queues for background data processing and command pattern to make it nice and easy.
Michael is a passionate PHP/Ruby/JS web developer from Kyiv, Ukraine. By wanting to make his products stable he started to use automated testing in his projects but couldn’t get along with any of testing framework so he created his own testing framework – Codeception. Now Michael maintains Codeception, CodeceptJS, Robo, AspectMock and other popular open-source projects aiming to popularize testing. “Testing should be fun” – is his motto. Speaker of SymfonyCampUA (2014, 2015), PHP Framework Days UA (2013-2015), DevConf Moscow (2014), PHPKonf Istanbul (2015), RSConf Minsk (2016) and various meetups.
Modern Testing with Codeception: Tips and Tricks
Codeception is a full stack testing framework. It is widely used in various PHP companies (over 1.6 million downloads on Packagist). What does it offer to you and how can it improve your testing experience? Codeception has smooth integration with all PHP frameworks and provides a clean BDD-style DSL for scenario-driven testing. You will learn how to make:
- user-driven web site tests with Codeception and Selenium
- how to organize tests with PageObjects and StepObjects
- what is Behavior Driven Development and how it can be done with Codeception
- what makes a perfect API test
Michelangelo van Dam
Michelangelo van Dam works at in2it as a professional PHP consultant assisting businesses to automate their development processes, improve their code quality and train their development teams. Michelangelo is also president of the PHP user group PHPBenelux where he and a team organizes monthly meetups, development events and an annual conference. He’s a devoted member of the global PHP community and contributes to open-source projects, mainly PHP related.
Continuous WordPress, live is all good
WordPress is probably the most-used blogging framework on the internet, with millions of people publishing multiple articles daily and a very active community building extra functionality through plugins and themes, making WordPress the best tool for small businesses to get started with their online identity. But this popularity comes with a price: it becomes target to spammers and even worse: hackers.
In this session I will explain how you can harness your WordPress setup and use automated tools to keep your WordPress site (or sites) protected and up-to-date, especially when you can not use the automated update features WordPress has build-in. Stop worrying about failing plugins and keep your WordPress application up-to-date in a continuous, automated, secure way.
Dockerize your unit tests for faster feedback
Ever got the message “Fatal error: Out of memory” when running your unit tests? Or do you have to wait for more than 5 minutes for all of your unit tests to complete? We’re using Docker to mitigate these and other issues. In this session I will show you how we have split up a single testsuite of 3K+ tests into manageable unit modules which are executed by Docker micro instances in parallel. And with this set up we test our application on the current PHP version, but it also allows us to test against a new major PHP version the moment it is released or even is available in beta.
Miro is a founder of ZgPHP – a PHP user group based in Zagreb, and one of the organizers of WebCamp web development conference in Zagreb, which gathers developers with a wide range of preferences in different programming languages. He has a 17-year experience in PHP programming with strong interest in Symfony2. Recently he has been tempted by devop work, playing a lot with PHPStorm, Vagrant, and Ansible.
Jenkins vs Circle vs Travis
Lot of developers and teams are interested in doing testing but dont know how and some of the most often seen excuses are:
1) We dont have time for it
2) Who is going to write those tests?
3) Who is going to maintain those tests?
4) Who is going to run all of those tests after each change?
This talk will cover #4 and introduce you to world of continuous integration and how this tools can help you build better software faster. Yes, faster and better. While there are other options too: Jenkins, CircleCI and Travis CI are 3 most popular in PHP world. Main point of the talk will be what they can do, how they do it and what are the main or subtle differences between them.
Must run everything from inside company or don’t wanna hassle with your own CI server? Want to test on multiple PHP versions? Running open source code or proprietary one (or both in many cases)? Using github, bitbucket, gitlab or your own git server: which ones can I use?
There are subtle and not so subtle differences between them, come and learn more about them so you can bring an informed decision to your team.
Workshop: Hands on PHPSpec
PHPSpec and BDD are cool buzzwords this days in PHP community and I would like to invite you to show you how to build better code with it.
PHPSpec is a great tool to model and build your code that has a side effect: you get some tests out of it. It’s not a drop in replacement for unit testing (or testing in general) but can help you out build great products in short amount of time. In this workshop I’d like to show you how to use it to your advantage and build better code with it. I will be live coding few examples to introduce you to PHPSpec features, show you some caveats and by working in small teams we will build a feature together
I am Nikolay – a Meta Engineer at Automattic and a long-time WordPress contributor. I like thinking more than doing, programming languages as much as natural languages, and staying still less than moving.
Many lessons have lessons emerged from that experience and I’d like to share them. How to approach the language? What’s similar, what’s different? How to get used to working in the hectic DOM-based browser, compared to the calming static server views? How to avoid switching to a new JS framework every Thursday? And few more.
Author of “Build APIs You Wont Hate” and a Senior Engineer at Ride who worked as Head of API for a while. Phil has been creating, consuming, consulting on and building APIs for the last few years almost non-stop. Phil also a lot of experience in the world of open-source/PHP world through projects like CodeIgniter, PyroCMS, FuelPHP, PHP-FIG and The League of Extraordinary Packages.
What They Should Tell You About API Development
As a refinement to his previously published book, the author of “Building APIs You Won’t Hate” found that API books and training tend to introduce documentation, hypermedia and testing as an after-thought, as if these are not important. However, some new experiences have shown that API development works best when these items are thought out first, as well as including a strong pragmatic approach to ensure the API solves real problems without getting stuck on the theory of how to “properly” create it.
Other pragmatic talking points include: Why and how documentation first can stop your team(s) from getting violent, when is REST not what you want, why is hypermedia sometimes a distraction, convenient ways to avoid versions in your API or at least postpone it, and comprehensive but simple endpoint integration testing beyond trivial examples.
Samantha Quiñones is a polyglot hacker, data wrangler, and Principal Software Engineer at AOL. Over the course of her career, she has built software and led teams for some of the largest names in technology. Samantha is a frequent speaker at technology conferences and events around the world, organizer of the Washington, DC PHP User Group, and serves as a secretary of the PHP Framework Interoperability Group. She has been recognized by the Huffington Post as one of the top Latin Americans in Media and is a 2015 recipient of the DCFT Powerful Female Programmers Award.
Asynchronous Programming Fundamentals
Asynchronous programming is an increasingly important and common topic in the modern world of application development. The potential performance benefits for some applications are truly astronomical. Combining elements of message passing, and functional programming, the asynchronous model can be intimidating for developers who have worked mostly with object-oriented and procedural code. We’ll explore the fundamental concepts behind asynchronous programming and how they are used in real-world PHP packages like Guzzle, in the Hack language, and in the ReactPHP environment and walk through constructing a simple asynchronous server.
Workshop: Manage Your Content with Elasticsearch
Elasticsearch is one of the most powerful search and data management platforms available today, but it’s not known for its simplicity. In this hands-on workshop, you’ll learn how to get the most out of this very capable platform. We’ll explore querying and filtering, creating efficient indices, custom views, clustering strategies and dive into Elasticsearch’s powerful suite of aggregations. This introduction will get you ready to build complex search and statistical applications that make your content and data even more valuable.