Sunday, February 06, 2011

Weekly roundup: speaking at DPC 2011

It's not official yet, but I will be speaking at the Dutch PHP Conference in May, with a 3-hour workshop and a regular talk. The schedule will be published next week. Looking forward to meet my telematic friends who will be in Amsterdam.

Anyway, here are my new articles published this week.
Practical PHP Testing Patterns: Behavior Verification officially introduces Mocks for the first time in this series.
Where has XHTML gone? tries to find out which usage this language sees today.
Practical PHP Testing Patterns: Custom Assertion explains how to create and manage custom Assertion Methods, which go a long way in making the assert phase of your tests readable and maintainable.
Is touch typing mandatory? A survey where you can express your opinion on how to approach a keyboard.

Sunday, January 30, 2011

Weekly roundup: first round of exams

I am in the middle of the first session of exams of the Master's course in Computer Engineering here at Politecnico di Milano. My specialization is in multimedia and data engineering, so there are new interesting topics I may write about in the future, like image processing, computer vision and web-scale search.

Here are my original articles for this week, published on DZone.
Practical PHP Testing Patterns: Chained Tests explains how to write tests which recycle the results of earlier tests in PHPUnit.
And now instead, 5 things Java envies PHP for received only 2 downvotes (with 13 upvotes) on a Java-centric website like DZone. I think my PHP audience will like it.
Practical PHP Testing Patterns: State Verification starts the comparison between checking state and checking interactions, and also between Stubs and Mocks.
PageRank in 5 minutes takes a short time to tell you how this million-dollar algorithm works. PageRank is now taught in universities, just like Quicksort.

Sunday, January 23, 2011

Weekly roundup: genetic programming

Genetic algorithms are stochastic algorithms which emulate the tools of biological evolution in order to find solutions to a problem: crossover and mutation of chromosomes, survival of the fittest, and so on. I'm currently trying to get one to work to match points of two different images.

Here's my original articles published this week.
Practical PHP Testing Patterns: Suite Fixture Setup
An humble infographic on methodologies compares on a pair of scales Rational Unified Process, Scrum, XP and Kanban.
Practical PHP Testing Patterns: Setup Decorator - did you know you could run the same test suite twice, with two different databases (such as PostgreSQL and MySQL) just by decorating it differently?
5 things that PHP envies Java for - this article raised some less than happy responses from the PHP community. But stay tuned: next week we will explore what Java envies PHP for instead.

Thursday, January 20, 2011

References are actually good

I realized in the last weeks that I'm guilty of not citing enough references while writing here and at Web Builder Zone. References are something that cannot be avoided in academic work, where they are called citations.

For example, in my slides on image manipulation detection, references look like this:
Main Hany Farid, A Survey of Image Forgery Detection (2009), in: IEEE Signal Processing Magazine, 2:26(16-25)
Valentina Conotter, Giulia Boato and Hany Farid, Detecting Photo Manipulation on Signs and Billboards, in: International Conference on Image Processing, Hong Kong, 2010
R. Hartley and A. Zisserman, Multiple View Geometry in Computer Vision, Cambridge University Press, 2004
...


What references are
References are simply a list of academic papers (good), books (also good) or web pages (not good in academia, but often the only viable reference on the web). The reader interested in learning more, or in verifying that you're not scamming him, will follow the references. It's like saying: this isn't something I dreamed last night after after several beers; there are other sources which propose the same concept, and they are generally trusted by the community.

Yet, I don't see many references in blog posts and articles (if you leave out the original source, for republished articles.) And I'm the first to plead guilty for this. I know many posts present an opinion, and not a scientific research, but while explaining a pattern or a methodology citing independent sources would actually help our case.

The worst thing a technical writer can think of is that there is no added value in posts that link similar articles. Actually, your argument is stronger when backed by someone else, even if it loses a bit of originality. This is how you add value to something already written on another web page.

  • You make an additional explanation of the topic from your point of view, and moreover with your background, which is different from everyone else. I know what my colleague, a front-end developer, thinks of Ajax. Now what do you think, as a graphic designer, a PHP coder or a or salesman?
  • You port the example to other tecnologies and fields. Some of the things I say to PHP developers have been well-known from Java programmers for years.
  • All ideas are made from other ideas*, so even the most original articles build on previous work.

Myths of Innovation

Wednesday, January 19, 2011

Blind detection of image manipulation slides

As part of the Image Processing course, I have given a presentation on Blind detection of image manipulation. Which means: how to crunch an image with an algorithm and tell is it has been photoshopped or not.
Here are the slides.

Tuesday, January 18, 2011

Slides from CouchDB university presentation

As part of the Advanced Database course at Politecnico di Milano, I have done a short presentation on CouchDB, a NoSQL database. Here are the slides, in case they are of interest to you.

Sunday, January 16, 2011

Weekly roundup: diving into DDD

At Allbus, finally we have abandoned our archive-like modules and dived into something more complex, which comprehends invoices and money. [Essential] Complexity in behavior should not be feared in this case, as Brandolini taught us it is mandatory for applying Domain-Driven Design with some return on investment. A challenge is also adapting some practices, like a model free from the influence of database tables, to PHP technologies (we jumped from Doctrine 1 to Doctrine 2 just for that.)

Between transforming specification documents and the Domain Expert's Verb into unit tests and discovering tacit concepts of our codebase, I' ve written some article for you.
Practical PHP Testing Patterns: Prebuilt Fixture discusses test fixtures built in the bootstrap of the suite.
Why Twitter is not an RSS replacement sums up the issues with Twitter usage. For example, it's impossible to follow a conversation.
Practical PHP Testing Patterns: Lazy Setup explains how to lazy-create a test fixture such as a database connection.
TDD for algorithms: the state of the art is my take on what you can use Test-Driven Development for.

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