The document discusses strategies for upgrading legacy PHP 4 code to PHP 5 while maintaining quality. It addresses common issues like spaghetti code, half procedural/half object-oriented code, and lack of documentation. The speaker recommends a porting approach over a rewrite to minimize costs and risks. Porting involves refactoring code without changing functionality, adding tests, documentation, and improving code quality.
Professional PHP: an open-source alternative for enterprise development [Kort...Combell NV
A presentation on Enterprise PHP development for people who have no experience with PHP programming.
Basically this presentation defends PHP as a worthy technology for enterprise projects and is directly compared with other enterprise technologies such as Java and the .NET framework
Living in a multiligual world: Internationalization for Web 2.0 ApplicationsLars Trieloff
Lars Trieloff's presentation at Web 2.0 Expo Berlin covers the why and how-to of internationalization for web 2.0, consolidating i18n technology and enabling user-contributed translations.
Professional PHP: an open-source alternative for enterprise development [Kort...Combell NV
A presentation on Enterprise PHP development for people who have no experience with PHP programming.
Basically this presentation defends PHP as a worthy technology for enterprise projects and is directly compared with other enterprise technologies such as Java and the .NET framework
Living in a multiligual world: Internationalization for Web 2.0 ApplicationsLars Trieloff
Lars Trieloff's presentation at Web 2.0 Expo Berlin covers the why and how-to of internationalization for web 2.0, consolidating i18n technology and enabling user-contributed translations.
FileWave in 5 Minuten - Softwareverteilung, Inventarisierung, Update-Manageme...Univention GmbH
Eine Kurzvorstellung der Fähigkeiten von Filewave und der zukünftigen Integration in UCS – Softwareverteilung, Inventarisierung, System- und Applikationsupdates und Imaging für Mac OS X , Windows, iOS und Android für organisations- und Endbenutzer-eigene Geräte.
Shale Gas, Crude and Their Impact on Global Petrochemicals - December 2013Platts
NGL production and impact on petrochemicals in the US and globally
Cheal gas spurs expansions and new products across the US
Potential herdles to new steam cracker prokects
negative impact on cracking
10 year forecast including Benteks pricing model
growth of US crude phenomenon
why it matters
The changing landscape of business, pressures on cash flow, budgetary cuts and evolving legislation force companies to critically assess how to fulfil their business objectives without compromising their bottom line.
The key to staying afloat in this climate is to closely monitor and improve cashflow especially in the SME sector as small businesses are more vulnerable to changes in economic activity and tend to battle more with cashflow problems in many cases.
To speed up cash collection, especially after providing a service, here are quick practical tips that will help in improving cashflow.
Cronologia de la Iglesia (II): Reyes Catolicos, Austrias, Borbones, Liberalis...ESPAÑA PRECONCILIAR
Historia eclesiástica, historia religiosa, Reyes Catolicos, Austrias, Borbones, Liberalismo , Teresa de Jesús, Ignacio Loyola, San Juan de la Cruz, Juan de Avila, Cardenal Cisneros, El Escorial, Cautivos, Mercedarios, Trinitarios, San Jose Calasanz, Escolapios, La Salle, P. Hoyos, concordatos, expulsion de los jesuitas, jansenismo
FileWave in 5 Minuten - Softwareverteilung, Inventarisierung, Update-Manageme...Univention GmbH
Eine Kurzvorstellung der Fähigkeiten von Filewave und der zukünftigen Integration in UCS – Softwareverteilung, Inventarisierung, System- und Applikationsupdates und Imaging für Mac OS X , Windows, iOS und Android für organisations- und Endbenutzer-eigene Geräte.
Shale Gas, Crude and Their Impact on Global Petrochemicals - December 2013Platts
NGL production and impact on petrochemicals in the US and globally
Cheal gas spurs expansions and new products across the US
Potential herdles to new steam cracker prokects
negative impact on cracking
10 year forecast including Benteks pricing model
growth of US crude phenomenon
why it matters
The changing landscape of business, pressures on cash flow, budgetary cuts and evolving legislation force companies to critically assess how to fulfil their business objectives without compromising their bottom line.
The key to staying afloat in this climate is to closely monitor and improve cashflow especially in the SME sector as small businesses are more vulnerable to changes in economic activity and tend to battle more with cashflow problems in many cases.
To speed up cash collection, especially after providing a service, here are quick practical tips that will help in improving cashflow.
Cronologia de la Iglesia (II): Reyes Catolicos, Austrias, Borbones, Liberalis...ESPAÑA PRECONCILIAR
Historia eclesiástica, historia religiosa, Reyes Catolicos, Austrias, Borbones, Liberalismo , Teresa de Jesús, Ignacio Loyola, San Juan de la Cruz, Juan de Avila, Cardenal Cisneros, El Escorial, Cautivos, Mercedarios, Trinitarios, San Jose Calasanz, Escolapios, La Salle, P. Hoyos, concordatos, expulsion de los jesuitas, jansenismo
Dynamic Languages In The Enterprise (4developers march 2009)Ivo Jansch
Slightly more generic version of my 'Enterprise PHP' talk, adjusted for the 4developers conference's 'dedicated languages' track that features developers with different backgrounds.
PHP is the king, nodejs is the prince and Python is the fool - Alessandro Cin...Codemotion
At Namshi, an e-commerce retailer based in Dubai serving the UAE and GCC, we are using different technologies to boost our architecture. We started with a common architecture based on PHP Nginx, Mysql and Memcache: the usual suspects. During last year the architecture changed a lot, using an SOA paradigm to meet expectations and the huge increase of traffic from several millions users throughout the year. But there’s more… In this talk we will show how funny, easy and rewarding is to integrate different technologies in your stack, with PHP always being the king of the whole system.
Choosing the right software architecture for your project is very important. Besides the framework decision there are many other key issues you need to take into account and which have an impact on such things like maintainability, scalability and also the frequency of possible deployments. In this session you will to learn how to avoid the common pitfalls and traps during your project.
Starting of with familiar circumstances that all developers have seen in their career towards using tools that help document, validate and test their code, because that's what CI is all about for PHP development
Beautiful code instead of callback hell using ES6 Generators, Koa, Bluebird (...andreaslubbe
Avoid the callback hell and improve on promises in node.js and JavaScript by using the new ES6 generators.
This presentation will show you before and after code examples that will illustrate the full benefit of using this new syntax.
Caching, sharding, distributing - Scaling best practicesLars Jankowfsky
The german travel meta search engine Swoodoo was hit by heavy load spikes due to TV advertisments. Learn about the successful caching, hosting and database strategies we've implemented, and which did not work well. Covering file-based Caching, APC, memcached and sharded database layouts on to our experiences with fully virtualized hosting.
Refactoring, Agile Entwicklung, Continuous Integration – all diese für nachhaltigen Erfolg wichtigen Vorgehensweisen setzen Erfahrung mit Unit Testing voraus. Abseits von den üblichen "Bowling"-Beispielen möchten wir gerne einen Crashkurs inkl. Best Practices für das erfolgreiche Unit Testing durchführen. Anhand eines Beispielprojekts auf Basis des Zend Frameworks werden wir nach der Installation von PHPUnit auf allen Notebooks gemeinsam eine kleine Applikation aufbauen, die durchgehend Test-driven entwickelt wird.
After a short theoretical introduction into the Extreme Programming (XP) and Scrum, the two major flavours of agile development, we will work on an example web project using Extreme Programming. The workshop will cover the whole development cycle - from planning through setting up a continuous integration server with test framework, up to developing and shipping a web application with PHP. We will add new features incrementally in a test-driven way, covering the application with unit and acceptance tests, keeping it integrated and fully functional all the time. While working, we will exercise all main practices of XP, starting with Pair Programming, Simple Design, Test-Driven Development, Refactoring and finishing with Continuous Integration and Small Releases.
Choosing the right software architecture for your project is very important. Besides the framework decision there are many other key issues you need to take into account and which have an impact on such things like maintainability, scalability and also the frequency of possible deployments. In this session you will to learn why you have to remove Co-dependency in your source code, which patterns there are for successful scaling and how the choosen framework influences your architecture.
The most important thing happening in your website is the business process. So why should you monitor your database and your webserver only when your business is failing? Monitoring is not only about hardware and databases - it's also about the internals of your application. Learn how to monitor your business using PHP and how to create nice, good looking management compatible graphs.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
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 3DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 3. In this session, we will cover desktop automation along with UI automation.
Topics covered:
UI automation Introduction,
UI automation Sample
Desktop automation flow
Pradeep Chinnala, Senior Consultant Automation Developer @WonderBotz and UiPath MVP
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
DevOps and Testing slides at DASA ConnectKari Kakkonen
My and Rik Marselis slides at 30.5.2024 DASA Connect conference. We discuss about what is testing, then what is agile testing and finally what is Testing in DevOps. Finally we had lovely workshop with the participants trying to find out different ways to think about quality and testing in different parts of the DevOps infinity loop.
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/
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.
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.
Securing your Kubernetes cluster_ a step-by-step guide to success !
So gelingt der Umstieg von PHP4 auf PHP5: Erneuerung von Geschäftsanwendungen unter Qualitätsaspekten
1. So gelingt der Umstieg von PHP4 auf
PHP5: Erneuerung von
Geschäftsanwendungen unter
Qualitätsaspekten
Lars Jankowfsky, CTO, swoodoo GmbH
2. Lars Jankowfsky?
• Software Architect, CTO seit 1992
• PHP seit 1998
• Viele erfolgreiche Projekte von 2 bis 20
Entwickler.
• CTO and (Co)Founder swoodoo.com
• (Co)Founder of OXID eSales. Refactored
OXID eShop during 1.5 years with 10
developers.
Lars Jankowfsky, swoodoo.com
3. What about your projects?
- What‘s your average project lifetime?
- Is there PHP code more than 5 years old?
- How many lines of code?
- How many change requests per year?
- Has there been a specification?
- Were all features in the first released version
implemented like they‘re specified in the
specification?
Lars Jankowfsky, swoodoo.com
4. Legacy Code?
Wikipedia says „Legacy code is source code that
relates to a no-longer supported or
manufactured operating system or other
computer technology. The term can also mean
code inserted into modern software for the
purpose of maintaining an older or previously
supported feature“
Jankowfsky, Rinne – Mayflower/swoodoo
5. Why upgrade?
• MySQL 4 support will end
• Active support already ended by the end of 2006
• Only extended support until 2008 for MySQL 4.0 and
2009 for MySQL 4.1
• MySQL 5 has more and advanced features like stored
procedures, trigger, better SQL support
• PHP 4 support did end
• PHP 4 is dead, dead, dead
• Only security relevant fixes until 2008-08-08
• PHP 5.2 is faster and more stable than every PHP 4
version
• PHP 5.3 upcoming
Lars Jankowfsky, swoodoo.com
6. Why upgrade?
- change requests get more and more expensive
- bug rate is increasing
- clearly a dead-end street!
- team motivation decreases
- hard to bring in new members into the team
- deprecated functions cause problems in future
PHP releases
Lars Jankowfsky, swoodoo.com
7. Typical problems?
- Typical legacy applications
- Started some years ago with PHP 4
- written in Spaghetti code
- half procedual, half object-orientated
- „PHP 4“ OOP
- using old, unmaintained libraries like PEAR::DB
Lars Jankowfsky, swoodoo.com
8. PHP, made in 2000
- no coding standards
- no PHPDoc
- no Design Patterns
- few separation of concerns
- has been changed a lot
- no refactoring, because „it worked“
- updated to run with php 4 in 2003
- updated to run with php 5 in ... ?
Lars Jankowfsky, swoodoo.com
9. PHP 4 OOP - strategy
- Maybe you‘re lucky and there are no problems.
Maybe.
- If you see problems, they are fatal errors like
- Objects are referenced by value
- $foo =& new Foo();
- Solution:
- Use standard APIs
- Fix the PHP 5 problems
Lars Jankowfsky, swoodoo.com
10. „Half procedual –halb
object-orientated“
- Code with different quality
- Just a few documentation
- Maybe some tests ... maybe ...
- „the typical current PHP 4 project“
- Found everywhere! Really everywhere!
Lars Jankowfsky, swoodoo.com
11. „Half procedual –half object-
orientated“ - strategy
- Add inline documentation for all classes and
methods
- Improve the re-using of duplicate code
- Improve every code part with PHP 5 functions,
for example using file_put_contents()
instead of fopen(), fwrite(), and
fclose().
Lars Jankowfsky, swoodoo.com
12. Spaghetti Code?
- Very old code, maybe developed in the last PHP 3 century
- a lot of redundant copy-paste code
- missing separation of concerns
- No or just minor separation of code and layout
- No use of libraries like PEAR, Zend Framework or eZ
components
- No or outdated documentation
- No tests at all
Lars Jankowfsky, swoodoo.com
13. Spaghetti Code - strategy
- Identify recurring code parts and implement
classes
- Use of standard libraries like Zend Framework
or eZ components
- Add inline documentation
- Fix your coding styles!
Lars Jankowfsky, swoodoo.com
14. Requirements
- No new features
- No technical changes like new database layer
or new template engine
- No influences for productive services like
External systems
- Minimization of time and effort
Lars Jankowfsky, swoodoo.com
15. What you should never do!
Please don‘t try a complete rewrite!
- Too expensive
- Takes too long
- the old codebase is used, tested & bugfixed
- Developers love to rewrite:
new code is more fun, code is easier to write
than to read
Lars Jankowfsky, swoodoo.com
16. Remember?
Netscape 6? Rewrite....
dBase for Windows? Rewrite....
Quattro Pro? Rewrite....
Access refatored...
Excel
Jankowfsky, Rinne – Mayflower/swoodoo
18. What is porting?
Innovation potential
ve
iti
Rewrite
s
po
Reengineering
e
tiv
ga
ne
Porting
complexity
Lars Jankowfsky, swoodoo.com
19. What is porting?
• Reasons
• Most simple form of migration
• Manageble risks
• Small complexity because of the lack of
qualitive and technical changes
• Requirement
• Minor differences between current and future
application platform
Lars Jankowfsky, swoodoo.com
21. Refactoring?
- Modifying code without changing it‘s behaviour
- „cleaning up“
“Refactoring is the process of changing a software system
in such a way that it does not alter the external behavior of
the code yet improves its internal structure.” (Martin Fowler)
Lars Jankowfsky, swoodoo.com
22. Modifying without... ?????
- if you refactor you need tests to proove that
you did not break any functionality
- Have tests first. Then change code.
- legacy code ? There are no tests!!
Lars Jankowfsky, swoodoo.com
23. And now ?
- Write tests first.
- You will need to refactor your application while
writing tests.
- Write selenium tests for
your application. - no :(
Lars Jankowfsky, swoodoo.com
24. Preparations
• Targets
• Porting without any technical or qualitative
changes
• Recovery of support (MySQL/PHP)
• Minimizing the interferences of services and
reduction of change times
• Interferences
• Porting problems between MySQL and PHP
versions
• Application complexity
• missing documentation and missing contact
persons
• Communication between all team members
Lars Jankowfsky, swoodoo.com
25. Process model
- Reducing of complexity with a planned
procedure
- Coverage of the complete porting
- Methodical description of the process
Lars Jankowfsky, swoodoo.com
26. How do we start?
- Identify the nastiest, ugliest and...
- probably most important piece of code and
let‘s start with this one.
- if you take the easy files you won‘t solve the
critical issues and...
- move the risk to the end.
Lars Jankowfsky, swoodoo.com
27. While porting ...
- adjust coding style
- add missing documentation
- remove redundant code / copy & paste-code
- remove unused(!) code
- maintain a list of future todos with priorities
Lars Jankowfsky, swoodoo.com
28. PHP and Unit Testing
- Layout & UI code is hard to unit-test,
acceptance-test instead
- test maintenance costs:
- unit test work fine with stable APIs
- high change rate in PHP results in API changes
- tests need to be changed, too
- slows down development, increases initial
development costs
- ... but your software survives more than 4 years
Lars Jankowfsky, swoodoo.com
29. Test Driven Adoption
1. Unit tests for existing code with PHPUnit
2. experience of confidence in own code
3. Insight: Tests are easier if written before
software
4. Insight: Tests help documenting the code
5. Insight: Tests define the real API
Lars Jankowfsky, swoodoo.com
30. Tools?
- CruiseControl for continous integration
- PHPUnit
- SeleniumRC and SeleniumIDE
- PHP Code Sniffer
- PHP CodeBrowser
Lars Jankowfsky, swoodoo.com
31. Golden rules
- know your budget: what are your maintenance
costs? What are the things you can‘t do now?
- there is no silver bullet. It takes time.
- Confident developers are efficient developers
- There is no way around proper coding style and
documentation
Lars Jankowfsky, swoodoo.com