Here are my "slides" for the (Italian) talk I held at PHP.TO.START this week. It has been nice to meet so passionate colleagues in Turin, not only from the PHP field but also in the startup arena. If I can't find you and you see this, comment here or ping me on Twitter so that I can follow you.
The talk's topic is the evolution of testing in PHP - from manual to automatic and from a scope oriented to correctness to an aid in design.
Here are my original articles published this week on DZone.
Lean Tools: Seeing Waste is the first of a series of articles on Lean tools in their software development version (Lean is a movement that goes beyond the software field, of course.)
PHP objects in MongoDB with Doctrine contains code for working with the Doctrine Object-Document Mapper and for integrating it with the ORM.
TravisCI Intro and PHP Example shows you how to setup an open source project to build itself on Travis CI (for free).
Sometimes Python is magic because of its __methods.
A journey in web development, [computer] science, engineering:
getting to know what lies under the hood -- Giorgio Sironi
Sunday, March 25, 2012
Sunday, March 18, 2012
Biweekly roundup: PHP.TO.START sold out
Apparently the Turin event taking place this week is sold out. If you will be present, feel free to come up to me for geek chatting or OO/PHP/testing questions (which is the topic I will talk about.)
In the last two weeks I have published several new articles on DZone, also about other pieces of the web:
A Zend Framework 2 tryout is my review of the Zend Framework 2 beta releases, along with a list of what you don't have to learn again for now.
Asynchronous and negative testing is about testing that something does not happen in a running system.
All the mouse events in JavaScript is a collection of all and only the DOM events that are generated by a mouse, divided into classic and HTML5 ones.
Everything you need to know about Python exceptions is about the try..except..else..finally construct and the exception hierarchy of Python.
All about JMS messages topic's is a must-know for working with ActiveMQ and similar message-based middleware - I know middleware sounds like a buzzword, but I assure you it has a specific meaning.
CSS Bits: The Mouse Cursor is about customizing the mouse cursor appearance (interestingly, without any JavaScript code).
Bootstrap: rapid development and the complexity of a framework is my review of Bootstrap, a front end framework shipping some standard CSS solutions and UI widgets.
Test-Driven Emergent Design vs. Analysis is an essay about the dichotomy between writing code with the support of tests and exploring new classes and objects via other fluffy means like paper and boards. You know, that old thing called thinking.
In the last two weeks I have published several new articles on DZone, also about other pieces of the web:
A Zend Framework 2 tryout is my review of the Zend Framework 2 beta releases, along with a list of what you don't have to learn again for now.
Asynchronous and negative testing is about testing that something does not happen in a running system.
All the mouse events in JavaScript is a collection of all and only the DOM events that are generated by a mouse, divided into classic and HTML5 ones.
Everything you need to know about Python exceptions is about the try..except..else..finally construct and the exception hierarchy of Python.
All about JMS messages topic's is a must-know for working with ActiveMQ and similar message-based middleware - I know middleware sounds like a buzzword, but I assure you it has a specific meaning.
CSS Bits: The Mouse Cursor is about customizing the mouse cursor appearance (interestingly, without any JavaScript code).
Bootstrap: rapid development and the complexity of a framework is my review of Bootstrap, a front end framework shipping some standard CSS solutions and UI widgets.
Test-Driven Emergent Design vs. Analysis is an essay about the dichotomy between writing code with the support of tests and exploring new classes and objects via other fluffy means like paper and boards. You know, that old thing called thinking.
Sunday, March 04, 2012
Weekly roundup: PHP Goes Mobile rescheduled
PHP Goes Mobile has been rescheduled for April 13th in Milan; I will present my short talk on PHPUnit_Selenium usage on an Android device. See you there!
Here are my articles published this week on DZone.
Audio in HTML 5: state of the art explains how to use <audio> and Audio JavaScript objects to play music or sounds in a web page.
TDD in Python in 5 minutes is a dive into the unittest Python module.
Running JavaScript inside PHP code - yes, you read that right. Highly experimental.
Gradient descent in Octave is a walkthrough in a staple machine learning technique.
Here are my articles published this week on DZone.
Audio in HTML 5: state of the art explains how to use <audio> and Audio JavaScript objects to play music or sounds in a web page.
TDD in Python in 5 minutes is a dive into the unittest Python module.
Running JavaScript inside PHP code - yes, you read that right. Highly experimental.
Gradient descent in Octave is a walkthrough in a staple machine learning technique.
Sunday, February 26, 2012
Biweekly roundup: PHP.TO.START
The Turin PHP User Group has been growing in the last months and have now organized a free one-day conference on March 21st. I will be a speaker with a basic talk on automated testing of PHP applications.
I'm getting to know better the diffusion of PHP in Milan and Turin - cities where historically there was not much attention for this ecosystem. The message is clear: investing on PHP as one of the platforms you specialize in your career is not a dead end.
Here are my articles published in the last two weeks on DZone. The Practical PHP Refactoring series has ended, but I will always have space for PHP related articles.
Practical PHP Refactoring: Separate Domain from Presentation is one of the most necessary large-scale refactorings to perform on legacy code.
Bottle: a lightweight Python framework explains the first steps for developing a Python web application with Bottle.
Practical PHP Refactoring: Extract Hierarchy explains how to segregate the responsibilities of a God class.
Spam filtering with a Naive Bayes Classifier in R is a full-featured example of R usage for data mining.
Erlang's actor model explains one of the ways this language blows your mind.
The 7 habits of highly effective developers is an essay on a fluffy topic - which personal habits are beneficial to our job, solving problems?
Writing clean code in PHP 5.4 is a photograph of the new features of PHP and how they may be abused to write spaghetti code.
Here are my articles published in the last two weeks on DZone. The Practical PHP Refactoring series has ended, but I will always have space for PHP related articles.
Practical PHP Refactoring: Separate Domain from Presentation is one of the most necessary large-scale refactorings to perform on legacy code.
Bottle: a lightweight Python framework explains the first steps for developing a Python web application with Bottle.
Practical PHP Refactoring: Extract Hierarchy explains how to segregate the responsibilities of a God class.
Spam filtering with a Naive Bayes Classifier in R is a full-featured example of R usage for data mining.
Erlang's actor model explains one of the ways this language blows your mind.
The 7 habits of highly effective developers is an essay on a fluffy topic - which personal habits are beneficial to our job, solving problems?
Writing clean code in PHP 5.4 is a photograph of the new features of PHP and how they may be abused to write spaghetti code.
Our experience with Domain Events is a summary of how we have come to use Events as an additional Domain Model pattern in DDD.
Monday, February 13, 2012
Biweekly roundup: distributed systems
Fowler's first law of distributed objects:
Here are my original articles published in the last two weeks on DZone.
Practical PHP Refactoring: Replace Inheritance with Delegation explains how to refactor towards composition, since inheritance is highly overused in PHP and many modern languages.
My use case for checked exceptions sees Java checked exceptions as a way to enforce contracts that involve distributed computation.
Practical PHP Refactoring: Replace Delegation with Inheritance is the previous refactoring when applied in the opposite direction.
An Introduction to the R Language is a tutorial for starting to use R, a platform for statistical computing similar to Matlab and Octave.
Practical PHP Refactoring: Tease Apart Inheritance is about separating code into multiple hierarchies to avoid a single, large and incomprehensible one.
What WSGI is: a Python standard for web applications and frameworks to conform to.
Practical PHP Refactoring: Convert Procedural Design to Objects is a large scale refactoring involving, as a first step, moving away from the record/procedure pattern,
The Decorator pattern, or its cousin, in JavaScript is my take on implementing a Decorator with prototype chaining; in JavaScript we can even add methods with this technique, which wouldn't be feasible with the classic pattern.
Don't distributed your objects.
Indeed after six months submerged into academical distributed projects, I can too say that designing interfaces for local objects and for remote one is a different task: there is no trasparency. For more, google A note on distributed computing.
Practical PHP Refactoring: Replace Inheritance with Delegation explains how to refactor towards composition, since inheritance is highly overused in PHP and many modern languages.
My use case for checked exceptions sees Java checked exceptions as a way to enforce contracts that involve distributed computation.
Practical PHP Refactoring: Replace Delegation with Inheritance is the previous refactoring when applied in the opposite direction.
An Introduction to the R Language is a tutorial for starting to use R, a platform for statistical computing similar to Matlab and Octave.
Practical PHP Refactoring: Tease Apart Inheritance is about separating code into multiple hierarchies to avoid a single, large and incomprehensible one.
What WSGI is: a Python standard for web applications and frameworks to conform to.
Practical PHP Refactoring: Convert Procedural Design to Objects is a large scale refactoring involving, as a first step, moving away from the record/procedure pattern,
The Decorator pattern, or its cousin, in JavaScript is my take on implementing a Decorator with prototype chaining; in JavaScript we can even add methods with this technique, which wouldn't be feasible with the classic pattern.
Thursday, February 02, 2012
PHP Goes Mobile postponed
The PHP Goes Mobile event scheduled for tomorrow in Milan has been postponed due to the exceptional weather, which has slowed down and in some cases blocked transportations. The next date is not fixed yet.
Sunday, January 29, 2012
Biweekly roundup: PHP goes mobile
This week I will be at PHP Goes Mobile, a single day event in Milan centered on mobile platforms and a BarCamp in the afternoon where everyone can propose a topic. In the morning there will be some interesting talks by Francesco Fullone, Enrico Zimuel and others. I'm thinking about proposing a BarCamp short talk on PHPUnit_Selenium.
Here are the original articles published this week on DZone.
Practical PHP Refactoring: Extract Superclass explains how to create a two-level hierarchy by extracting a superclass where to move duplicated code.
Python Hello World, for a web application is my first step into the Python world: how to respond to GET and POST requests from a Python script with Apache and mod_python.
Practical PHP Refactoring: Extract Interface is one of the most underrated techniques in the PHP world.
PHPUnit_Selenium is an howto explaining everything you can currently do with the Selenium 1/2 support in PHPUnit.
Practical PHP Refactoring: Collapse Hierarchy is about simplifying a design by collapsing classes in a hierarchy that are not really different.
Ajax requests to other domains with Cross-Origin Resource Sharing is one of the possibilities for using the XMLHttpRequest object to connect to external websites.
Practical PHP Refactoring: Form Template Method is about eliminating non-obvious duplication with the Template Method pattern.
Unit testing when Value Objects get in the way explains the usage of the Derived Value pattern to simplify a bit tests that involve Value Objects as a fixture, or as collaborators.
Here are the original articles published this week on DZone.
Practical PHP Refactoring: Extract Superclass explains how to create a two-level hierarchy by extracting a superclass where to move duplicated code.
Python Hello World, for a web application is my first step into the Python world: how to respond to GET and POST requests from a Python script with Apache and mod_python.
Practical PHP Refactoring: Extract Interface is one of the most underrated techniques in the PHP world.
PHPUnit_Selenium is an howto explaining everything you can currently do with the Selenium 1/2 support in PHPUnit.
Practical PHP Refactoring: Collapse Hierarchy is about simplifying a design by collapsing classes in a hierarchy that are not really different.
Ajax requests to other domains with Cross-Origin Resource Sharing is one of the possibilities for using the XMLHttpRequest object to connect to external websites.
Practical PHP Refactoring: Form Template Method is about eliminating non-obvious duplication with the Template Method pattern.
Unit testing when Value Objects get in the way explains the usage of the Derived Value pattern to simplify a bit tests that involve Value Objects as a fixture, or as collaborators.
Subscribe to:
Posts (Atom)
Featured post
A map metaphor for architectural diagrams
It is a (two-dimension) representation of a pipe. The map is not the territory , but in software engineering terms they are models of it....
Popular posts
-
Mathematics is a part of a programmer's life. Other than the basic concepts implemented in programming languages, there are particular t...
-
Download now Practical Php Testing , my ebook on testing php applications, is finally here as promised, in the first days of December. Ho...
-
A Repository is a Domain-Driven Design concept but it is also a standalone pattern. Repositories are an important part of the domain layer ...
