The document discusses best practices for writing code that is easy for other developers to understand, including writing documentation, organizing code clearly, and using tools to generate documentation and test code. It recommends writing documentation like comments and docblocks to explain code, keeping a README file describing the project, and using style guides. It also suggests tools like Sparks and Composer for managing dependencies, ApiGen for generating documentation, and Selenium IDE for browser-based testing.
Concise guide to starting with Behat.
Covers:
* What is Behat?
* How do you get started with Behat?
* How to write tests?
* How to write good tests!
How to write portable tests, and other common problems.
This talk describes different ways of testing javascript components oriented to the best possible user experience using progressive enhancement techniques.
This talk is not oriented to any concrete web development framework.
Concise guide to starting with Behat.
Covers:
* What is Behat?
* How do you get started with Behat?
* How to write tests?
* How to write good tests!
How to write portable tests, and other common problems.
This talk describes different ways of testing javascript components oriented to the best possible user experience using progressive enhancement techniques.
This talk is not oriented to any concrete web development framework.
The next web will be about flow, this flow will be user generated pipelines through applications and services. Unlike before these Pipelines will be definable, non-proprietary and shareable by anyone
Given at TrueNorthPHP 2014:
"MVC presents a great way to divide responsibilities in your application but it offers no help in building the most critical part: the model or domain. This talk will introduce ways that can help you to encapsulate the richness of your domain. We'll look at Action Domain Response as a new way of thinking about the concepts presented in MVC before examining Hexagonal Architecture, allowing you to easily reuse your domain across multiple delivery mechanisms. We'll then finish with an introduction to Domain Driven Design, a technique that allows you to closely align your domain with the business problems it is solving while helping keep things well designed and easily maintainable. By the end of this talk you should have the knowledge needed to begin modelling your domains more powerfully while keeping them aligned to the real world problems they solve."
PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)Joshua Warren
PHPSpec and Behat are two amazing PHP tools that empower specification-driven development and behavior-driven development. These two tools combined can help you build test coverage, but many people don't realize they can also write much of your code for you. In this talk, we'll see what PHPSpec and Behat can do, through a series of examples and use cases. In other words, I heard you like to code, so I wrote code that writes code while you code.
Presented at #phptek - http://tek.phparch.com
Korean thank you to republic of ecuador (asylum of julian assange)VogelDenise
미국은 법 위에 있고 반복적으로 뉴스를 보고해 주셔서 줄리안 Assange 돌린 뻗었 같은 보복 / 범죄 행위의 역할을 감추기 위해 "앞에도"(어머니 앨리 영국과 누이 앨리 스웨덴 등) 사용에 의존하고 있다고 생각 미국의 전쟁 범죄의 미국을 노출 / 뉘른베르크 위반 및 다른 테러리스트의 행위는!, 미국 대통령 버락 오바마 미국 조금만 더 기다려보세요 그리고 그의 법률 고문 / 백인 우월 주의자 (베이커 Donelson Bearman 콜드 웰 & 버코위즈도) 미국의 머리를 전하겠다 "저 남자!"
The next web will be about flow, this flow will be user generated pipelines through applications and services. Unlike before these Pipelines will be definable, non-proprietary and shareable by anyone
Given at TrueNorthPHP 2014:
"MVC presents a great way to divide responsibilities in your application but it offers no help in building the most critical part: the model or domain. This talk will introduce ways that can help you to encapsulate the richness of your domain. We'll look at Action Domain Response as a new way of thinking about the concepts presented in MVC before examining Hexagonal Architecture, allowing you to easily reuse your domain across multiple delivery mechanisms. We'll then finish with an introduction to Domain Driven Design, a technique that allows you to closely align your domain with the business problems it is solving while helping keep things well designed and easily maintainable. By the end of this talk you should have the knowledge needed to begin modelling your domains more powerfully while keeping them aligned to the real world problems they solve."
PHPSpec & Behat: Two Testing Tools That Write Code For You (#phptek edition)Joshua Warren
PHPSpec and Behat are two amazing PHP tools that empower specification-driven development and behavior-driven development. These two tools combined can help you build test coverage, but many people don't realize they can also write much of your code for you. In this talk, we'll see what PHPSpec and Behat can do, through a series of examples and use cases. In other words, I heard you like to code, so I wrote code that writes code while you code.
Presented at #phptek - http://tek.phparch.com
Korean thank you to republic of ecuador (asylum of julian assange)VogelDenise
미국은 법 위에 있고 반복적으로 뉴스를 보고해 주셔서 줄리안 Assange 돌린 뻗었 같은 보복 / 범죄 행위의 역할을 감추기 위해 "앞에도"(어머니 앨리 영국과 누이 앨리 스웨덴 등) 사용에 의존하고 있다고 생각 미국의 전쟁 범죄의 미국을 노출 / 뉘른베르크 위반 및 다른 테러리스트의 행위는!, 미국 대통령 버락 오바마 미국 조금만 더 기다려보세요 그리고 그의 법률 고문 / 백인 우월 주의자 (베이커 Donelson Bearman 콜드 웰 & 버코위즈도) 미국의 머리를 전하겠다 "저 남자!"
Russian thank you to republic of ecuador (asylum of julian assange)VogelDenise
Соединенные Штаты Америки считают, что он стоит выше закона и постоянно опирается на использование «фронтах» (как МАТЬ союзник Великобритании и SISTER союзник Швеции), чтобы скрыть свою роль в таких ответных / Преступные действия, выдвинутые против Джулиана Ассанжа для передачи новостей и Разоблачение Соединенных Штатов Америки ПРЕСТУПЛЕНИЯ ВОЙНЫ / Нюрнберг НАРУШЕНИЯ и другие акты террористов! Пожалуйста, будьте терпеливы, Соединенные Штаты Америки президент США Барак Обама и его юрисконсульт / превосходства белой расы (Baker Донелсон Бирман Колдуэлл и Берковиц) выступит глава Соединенных Штатов Америки "на блюдечке!"
Latvian thank you to republic of ecuador (asylum of julian assange)VogelDenise
Amerikas Savienotās Valstis uzskata, ka tas ir ārpus likuma un vairākkārt atsaucas uz, izmantojot "Fasādes" (kā dzimtās Ally Lielbritānijas un māsas Ally Zviedrijā), lai slēptu savu lomu tādus atbildes / kriminālas darbības izlīdzināti PRET Julian Assange paziņošanai par jaunumiem un pakļaujot Amerikas Amerikas kara noziegumiem / Nirnberga PĀRKĀPUMI un citi terora aktiem lūdzam būt pacietīgiem, Amerikas Savienotās Valstis prezidenta Baraka Obamas un viņa juriskonsults / Balts Supremacist (Baker Donelson Bearman Caldwell & Berkowitz) sniegs vadītāju Amerikas Savienotās Valstis "uz plate!"!
Norwegian thank you to republic of ecuador (asylum of julian assange)VogelDenise
The United States of America mener det er hevet over loven og gjentatte ganger er avhengig av å bruke "FRONTER" (som Mor ALLY Storbritannia og søster ALLY Sverige) for å skjule sin rolle i slike retaliasjonsangrep / kriminelle handlinger reises mot Julian Assange for rapporten NYHETER og Utsette USA av USAs krigsforbrytelser / Nürnberg OVERTREDELSER og andre Terrorister handlinger! Vær tålmodig, USA President Barack Obama og hans Legal Counsel / hvit overlegenhetsideologi (Baker Donelson Bearman Caldwell & Berkowitz) vil levere HEAD i United States of America "på et fat!"
Let us spend less time writing trivial stuff and more time focusing on great code that doesn't need documentation to be understood.
Save other peoples time by writing less !
Lecture on CodeIgniter, # OSS Essential Training Program at Chittagong University of Engineering Technology, February 2008, http://bdosdn.org/wsatcuet.php
These slides focus on documentation for REST APIs. See http://idratherbewriting.com for more detail. For the video recording, see http://youtu.be/0yfNd7tzH2Q. This deep dive is the second slide deck I used in the presentation.
Survival Strategies for API Documentation: Presentation to Southwestern Ontar...Tom Johnson
This is a presentation I gave to the Southwestern Ontario STC chapter on API documentation on Feb 2, 2015. For more details, see my blog at http://idratherbewriting.com. You can listen to the recorded presentation here: http://youtu.be/I8rGe2w1sAo.
A great talk from Tyler Flint:
Adopting an app framework like CodeIgniter is like developing at double speed. The framework's conventions and pattern abstractions provide structural simplicity allowing devs to focus on high level functionality. Why should hosting be any different? A hosting framework enables developers to quickly deploy their apps onto powerful infrastructures that can be easily scaled or modified on the fly.
I will be presenting a series of real world case studies comparing and contrasting traditional LAMP hosting with flexible framework hosting, sharing some clever configurations that others have used, and also reveal a little of what the future holds for hosting frameworks.
Mark Ryan - one of the two founders of a funded start-up called Blooie - explains how he learned about the tech startup world and went through a program called Ignite100 to get there.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Elevating Tactical DDD Patterns Through Object CalisthenicsDorra BARTAGUIZ
After immersing yourself in the blue book and its red counterpart, attending DDD-focused conferences, and applying tactical patterns, you're left with a crucial question: How do I ensure my design is effective? Tactical patterns within Domain-Driven Design (DDD) serve as guiding principles for creating clear and manageable domain models. However, achieving success with these patterns requires additional guidance. Interestingly, we've observed that a set of constraints initially designed for training purposes remarkably aligns with effective pattern implementation, offering a more ‘mechanical’ approach. Let's explore together how Object Calisthenics can elevate the design of your tactical DDD patterns, offering concrete help for those venturing into DDD for the first time!
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
UiPath Test Automation using UiPath Test Suite series, part 5DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 5. In this session, we will cover CI/CD with devops.
Topics covered:
CI/CD with in UiPath
End-to-end overview of CI/CD pipeline with Azure devops
Speaker:
Lyndsey Byblow, Test Suite Sales Engineer @ UiPath, Inc.
Pushing the limits of ePRTC: 100ns holdover for 100 daysAdtran
At WSTS 2024, Alon Stern explored the topic of parametric holdover and explained how recent research findings can be implemented in real-world PNT networks to achieve 100 nanoseconds of accuracy for up to 100 days.
Removing Uninteresting Bytes in Software FuzzingAftab Hussain
Imagine a world where software fuzzing, the process of mutating bytes in test seeds to uncover hidden and erroneous program behaviors, becomes faster and more effective. A lot depends on the initial seeds, which can significantly dictate the trajectory of a fuzzing campaign, particularly in terms of how long it takes to uncover interesting behaviour in your code. We introduce DIAR, a technique designed to speedup fuzzing campaigns by pinpointing and eliminating those uninteresting bytes in the seeds. Picture this: instead of wasting valuable resources on meaningless mutations in large, bloated seeds, DIAR removes the unnecessary bytes, streamlining the entire process.
In this work, we equipped AFL, a popular fuzzer, with DIAR and examined two critical Linux libraries -- Libxml's xmllint, a tool for parsing xml documents, and Binutil's readelf, an essential debugging and security analysis command-line tool used to display detailed information about ELF (Executable and Linkable Format). Our preliminary results show that AFL+DIAR does not only discover new paths more quickly but also achieves higher coverage overall. This work thus showcases how starting with lean and optimized seeds can lead to faster, more comprehensive fuzzing campaigns -- and DIAR helps you find such seeds.
- These are slides of the talk given at IEEE International Conference on Software Testing Verification and Validation Workshop, ICSTW 2022.
Observability Concepts EVERY Developer Should Know -- DeveloperWeek Europe.pdfPaige Cruz
Monitoring and observability aren’t traditionally found in software curriculums and many of us cobble this knowledge together from whatever vendor or ecosystem we were first introduced to and whatever is a part of your current company’s observability stack.
While the dev and ops silo continues to crumble….many organizations still relegate monitoring & observability as the purview of ops, infra and SRE teams. This is a mistake - achieving a highly observable system requires collaboration up and down the stack.
I, a former op, would like to extend an invitation to all application developers to join the observability party will share these foundational concepts to build on:
GraphSummit Singapore | The Art of the Possible with Graph - Q2 2024Neo4j
Neha Bajwa, Vice President of Product Marketing, Neo4j
Join us as we explore breakthrough innovations enabled by interconnected data and AI. Discover firsthand how organizations use relationships in data to uncover contextual insights and solve our most pressing challenges – from optimizing supply chains, detecting fraud, and improving customer experiences to accelerating drug discoveries.
PHP Frameworks: I want to break free (IPC Berlin 2024)Ralf Eggert
In this presentation, we examine the challenges and limitations of relying too heavily on PHP frameworks in web development. We discuss the history of PHP and its frameworks to understand how this dependence has evolved. The focus will be on providing concrete tips and strategies to reduce reliance on these frameworks, based on real-world examples and practical considerations. The goal is to equip developers with the skills and knowledge to create more flexible and future-proof web applications. We'll explore the importance of maintaining autonomy in a rapidly changing tech landscape and how to make informed decisions in PHP development.
This talk is aimed at encouraging a more independent approach to using PHP frameworks, moving towards a more flexible and future-proof approach to PHP development.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
GridMate - End to end testing is a critical piece to ensure quality and avoid...ThomasParaiso2
End to end testing is a critical piece to ensure quality and avoid regressions. In this session, we share our journey building an E2E testing pipeline for GridMate components (LWC and Aura) using Cypress, JSForce, FakerJS…
SAP Sapphire 2024 - ASUG301 building better apps with SAP Fiori.pdfPeter Spielvogel
Building better applications for business users with SAP Fiori.
• What is SAP Fiori and why it matters to you
• How a better user experience drives measurable business benefits
• How to get started with SAP Fiori today
• How SAP Fiori elements accelerates application development
• How SAP Build Code includes SAP Fiori tools and other generative artificial intelligence capabilities
• How SAP Fiori paves the way for using AI in SAP apps
37. // ------------------------------------------------------------
// User Login
// ------------------------------------------------------------
// If the credentials were correct, login and redirect to dashboard
// Otherwise, redirect to the login form with errors
38. // ------------------------------------------------------------
// User Login
// ------------------------------------------------------------
// If the credentials were correct, login and redirect to dashboard
if($this->auth->login($email, $password) === TRUE)
{
redirect('account/dashboard');
}
// Otherwise, redirect to the login form with errors
else
{
$this->session->set_userdata('errors', $this->auth->errors);
redirect('login');
}
42. // @TODO: Handle failed API requests better
// @NOTE: Passing by reference is necessary here
// @HACK: Fixed minor bug in query builder
// @SEE: http://tinyurl.com/2g9mqh
// @BLAME: Alex royally screwed this up
52. /**
* Hashes an array of settings for easy storage in a database
*
* @param array $data
* @return string
*/
public static function hash_settings($data)
{
return base64_encode(serialize($data));
}
60. // At this point we need to send an email to the user to confirm
// their purchase. Since it's an HTML email, we've stored it in a
// view, and can pass the necessary data to it.
$email = $this->load->view('emails/receipt', $data, TRUE);
63. // At this point we send an email reminder to the customer, informing them
// that their subscription will expire soon.
// However, don't send an email if today is a Monday or Thursday, because
// the client's "really tech-saavy" cousin told them that people don't
// read their email on those days.
// @SEE: Ticket #138 - http://projects.visualchefs.com/tickets/138
66. /**
* Get the number of comments for a user
*
* @param int $user_id
* @return int
*/
public function comment_count($user_id)
{
// @TODO
}
/**
* Get a user's comments
*
* @param int $user_id
* @param int $limit
* @return array
*/
public function comments($user_id, $limit = 100)
{
// @TODO
}
67. /**
* Get a user's comments, or just a count of their comments.
*
* @param int $user_id
* @param int $limit
* @param bool $count_only
* @return int|array
*/
public function comments($user_id, $limit = 100, $count_only = FALSE)
{
// @NOTE: It's difficult to tell what the function does by its name
// @NOTE: It also does too many things
// @NOTE: I can't remember what the parameters are
}
68. /**
meh...
* Get a user's comments, or just a count of their comments.
*
* @param int $user_id
* @param int $limit
* @param bool $count_only
* @return int|array
*/
public function comments($user_id, $limit = 100, $count_only = FALSE)
{
// @NOTE: It's difficult to tell what the function does by its name
// @NOTE: It also does too many things
// @NOTE: I can't remember what the parameters are
}
72. // Set the value in Redis if it doesn't already exist
// @SEE: http://redis.io/commands/setnx
73. Summary
๏ Documentation is easier when done first
๏ Give as much insight as you can
๏ Write those friggin' docblocks!
๏ Be verbose
๏ Link to external docs when possible
78. Sample
1. User fills out the registration form
2. User clicks submit
3. Form is submitted via Ajax
1. Form data is validated
1. If valid, account is created
2. JSON response is returned with success flag, and array of errors if invalid data
4. If successful, user is redirected to the dashboard
1. If not successful, list of errors are shown
110. Summary
๏ Have a plan
๏ Simplicity
๏ Keep a README file
๏ Use a style guide
๏ Keep packages organized with tools like Sparks and
Composer
๏ Write tests
127. // Put this in index.php
require 'vendor/autoload.php';
// Call a class and it will be loaded automatically
$response = HttpfulRequest::get('http://eecoder.com/')->send();