The ConFoo report, 2019
For the last few years, we've offered attendance at the Montreal developer conference ConFoo to any developer that wants to attend. Each year, I ask the developers to tell us about what they learned and experienced there. Any format or topics you want to talk about.
Some possible writing prompts:
- Why did you choose the sessions you did?
- What did you learn at your sessions?
- What would you do differently next year?
- Did you meet anyone interesting?
- Would you recommend any particular topics next year, or were any of them particularly bad?
This year some of the developers also attended an extra full-day workshop on PHP security. Especially keen to hear about that experience separately.
Comments
-
SLACKERS.
1 -
1
-
Day 1
"Massively scaled High Performance Web Services with PHP"
by Demin Yin
- I am always curious about PHP and Performance.
- Demin Yin is very knowledgable developer with big experience. He shared some technics and tricks they've used to build some micro services api based platform for gaming developers and provided some estimations and proofs of hoe those tricks positively impacted the performance. Some of their api have average response time 4-6ms. Which is a good reference point for us when we talk about how good api performance could be.
- Tricks I've learned: docker container can gain some performance if container include both php and nginx, when use AWS - you can get few more ms if use VPC and put servers as close to each other as possible and config services to use direct IP addresses instead of dns names, fast_cgi_finish_request interesting technique to execute some code after response has been sent to client, http content-lengh header should be sent from php to gat proper cached by nginx, aws ec2 upgrade can bring better performance and fewer price.
"Framework-Agnostic Controllers with Symfony"
- Christian is a consultant at Suora. He has great experience in PHP projects when there is a need to transform legacy code base and to move project to different frameworks.
- During the session Christian shared his vision about how developers could make controllers with no dependency on http Request kind parameter. Following few Christian tricks that seem pretty simple to transform controllers to be Request agnostic and be reusable by other layers. This could very useful for api based projects when same controller can be used not only for http request but any other clients and data returned can be pure stream, json, xml, html, etc...
3 -
I'm not covering the security training in this post, I will cover that in another post. First of all, Confoo was a great experience overall. It's impossible to cover a whole subject in 45 minutes, but I learned a bunch concepts that I can look up by myself. Food was great, @patrick_kelly didn't ditch us this year (I read he did last year) so everything went smooth.
Ask 10x Better Questions for More Effective Communication
By: Garth Henson
It picked this talk because communication is important in every aspect at work. I was unsure at first because there were other interesting subjects going on at the same time, but I'm glad I did. I learned the 2 core principles for building appropriate questions, the "cognition" (information you are trying to gather) "customers" (persons that may also want the information). Good questions requires preparation and always remember that you may not be the only one who are looking for the answer. Avoid retorical and negative questions as they are for learning.
Debugging Effectively
By: Colin O'Dell
Debugging is important, you are probably spending more time debugging than actually coding. I probably learned more about the benefits of debugging than the process itself, but the speaker made it really interesting. You probably all know that, but here are the fundamentals of this talk.
1. Computers are not random and neither are bugs
2. Persistence will always payoff
3. Don't be afraid to dive deep into problems
4. Don't make assumptions and don't take anything for granted
Here is the systematic approach he showed during the presentation.
1. Gather information about the problem (and get as much as you can)
2. Replicate the issue (with 100% certainty, be able to replicate every time) and note the steps to replicate
3. Identify the culprit (Make NO ASSUMPTIONS, understand the bug)
4. Fix it & re-test it (Don't use temporary work around)
5. Mitigate the issue (SHARE THAT NEW KNOWLEDGE WITH OTHERS, add automated test)
How do you structure your apps?
By: Kat Zien
When I chose this talk, I thought it was going to cover a bit more than that. I was a bit disappointed, however I was able to take a few things out of it. She mentioned the "hexagonal architecture" and "Domain Driven Design" which I don't really know of, so I figured that it could be a great read.
What I got out of this talk is that there are no good answers about how to structure your apps, you need to pick a structure that fits your project the most and be consistent.
MySQL Without the SQL -- Oh My!
By: Dave Stokes
As a migration dev, I thought it would be a good idea to go the only MySQL talk. This guy knew what he was talking about, but he was skipping slides way too fast, I don't think I would enjoy watching TV with this guy. There were pages of examples, and I didn't even had the time to look at them.
He was covering how you can now use MySQL as a JSON document store. You can find pretty much everything in the MySQL documentation online if you want to read more about it.
We've seen how the new shell works and that it now supports a bunch of languages. He also demonstrated examples of how queries works, how resultsets looks like and how easy you can use the NoSQL with your current relational databases.
I Don't Care About Security (And Neither Should You)
By: Joel Lord
This talk was all about delegation. He explained the flow of OAuth and also showed how JSON web tokens work. He also spoke of OpenID which I never heard of before. He showed a lot of live examples of the authentication flow, so the slides aren't really useful in this case, but here they are anyway. If feel bad for not having much to say about it, you had to be there. The presentation was great.
And this pretty much covers my first day at Confoo. Don't worry I will keep adding stuff!
2 -
I chose a lot of sessions in the career field because there weren’t many in front end unfortunately. I meet Susan Ibach, developer at Microsoft. I liked her the most because she was full of life and gave an amazing presentation:
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
How to rock a demo
Honestly it was a really useful, easy to follow presentation about the importance of giving a good demo.
The Notes:
- It’s all about the preparation before a demo. The visibility is extremely important. To achieve that you should increase the font size of your code / text of the presentation. Another good example would be to change the color of your console to create a bigger contrast, white board with dark grey font would be the best combination for a presentation.
- Create yourself a checklist before your presentation to make sure you’re not forgetting anything.
- Backups, backups. Unfortunate events happen all the time so always have a least 2 backups.
- Write your code in advance. If you need to code something live you will most probably make some silly small errors. To avoid that just write in advance your code and copy paste it when you need to demonstrate something.
- Turn off your notifications on your laptop, such as Facebook/Slack/Mail etc.
- Hide your icons on your desktop. A messy desktop with plenty of icons can be really tiring to follow.
- Close all your useless windows that you don’t need. Keep the ones that you need in a good order.
- SignIn in advance to all the platforms that you need to use.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Asking Better Questions:
By Garth Henson
- Question should be toward communication. Different type of questions: Analytical questions and Rhetorical questions
- A good question is primarily a mechanism by which we can elicit contextual and accurate information from someone else.
- A question should not be just trivia, it has to be useful, relevant to the discussion and applicable in some way. Questions are for learning and gathering information. Generally speaking, in business sarcastic/ ironic questions should be avoided.
- Before asking questions we should ask ourselves: “What type of information I am trying to gather: by asking this question what information I am trying to have. How will I use this information and who’s gonna use the information as well.
- Core principles for building appropriate questions: Cognitive, Customer.
- Targeted areas of cognition: requires thought and preparation to target the specific realms of the cognitive.
- The first customer to a question is yourself to better understand the situation. Guide someone through the question.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
How do you structure your apps?
By Kat Zien
- Consistent structure
- Easy to change
- Easy to test
- Little to no technical debt.
- Design reflects exactly how the code works.
Architecture:
The code has to be easily recognised, testable.
Type of structure:
- Flat structure (good starting point when you don't know where to start. It’s usually meant for small projects. In general flat structures don’t give much information about the app. The main logic can be contained in any of the files.
- Group by function :
- Layers (presentation/ business logic/ storage).
- Module
- Contexte
DOMAIN DRIVEN DESIGN (DDD)
- Establish your domain and business logic.
- Define your bounded context, the models within each context and the ubiquitous language.
- Categorizing the building blocks of your system.
Hexagonal architecture:
- Ports and adapters. Just external interface to your application.
- Dependencies only point inwards.
- Each layer is independent.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Get you team talking about usability:
- Usability is a tough conversation.
- Give the team the knowledge. It benefits the users and also ourselves.
- Keep things light, for example use humor.
- Ask leading questions.
- Critique the pros.
- Now look at your site.
- Usability means structuring things so you don’t leave your users angry.
Questions you should ask yourself:
- Who are your users?
- What do you want them to do on your site?
- What do they want to do on your site?
- Where will your users go if your site isn't working for them.
- Error messages should be very clear to the user.
- The user should not be surprised. Users should always be able to find useful information.
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
A beautiful design can be also accessible
By Toufic Sbeiti
- Improve SEO
- Improve Mobile experience
- Build positive public relations
- Create a better user experience.
- Consistency.
- Clear document structure
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Responsive Design 2.0: The Death of Bootstrap
By Jen Kramer
CSS - calc()
- Ability to do math equations with it, like addition, subtraction, multiplication, division.
- Compatibility with length, frequently, angle, time, number and integer.
- Can mix units (not in Sass)
CSS CUSTOM PROPERTIES.
- Similar to variables.
- Must declare custom field within a CSS property.
- Values inherit.
- Can be used in javascript.
When to use SASS vs Custom Properties:
- Sass is for global values that don’t change color, font-family etc.
- Custom properties are for values that change in media queries: font size, padding, widths flex basic etc.
- Outside the media query, establish the logic for layout.
- Result is no duplicated code with different values.
Flexbox and/or Grid
2 -
I assisted to the Confoo conference for the first time and really was interesting and useful for my knowledge. The session i had chosen was based on Php, Architecture & Design pattern, Test&Quality and Security. I can name the most that have marked me:
-Massively Scaled High Performance Web Services with PHP by Demin Yin
-Rapid API development with OpenAPI generator by Ramzi Maalej.
-Technically DDD by Pim Elshoff
-Web Application Security Up-to-date: OWASP Top Ten by Christian Wenz
-SmokeTests, The what, why and how by Sebastian Thoss
Also I meet Ramzi Maalej Founding member of OpenAPI Generator, he shared some tips with me about how we integrated this tool into CI/CD pipelines to automate and unify Rest API client generation across all teams.
I want to thank everyone who makes me present for this conference and having this great experience.
0
