Federico Cargnelutti

Simple is better than complex. Complex is better than complicated. | @fedecarg

Archive for March 2008

Magento 1.0 Released! Open Source eCommerce Evolved

with one comment

magento_stable_graphic_sm.jpg

Varien, one of the most important eCommerce development and consulting firms in the world, has taken eCommerce to a completely different level with the latest release of Magento 1.0. An amazing, flexible, modular and scalable open-source eCommerce solution, powered by one of the most popular systems on the web today, the Zend Framework.

Congratulations to Varien and the development team! This application will definitively change the way we make business on-line.

Watch the video: Magento 1.0

Written by Federico

March 31, 2008 at 11:53 pm

Posted in Frameworks, PHP, Web Apps

A Guide to PHP Load Balancing

without comments

This excellent post written by Adam Charnock gives an introduction to the complications that can arise from deploying your PHP applications onto a load balanced web hosting platform. This is a must-read article if you are planning to develop large scale web applications, or if your software will be deployed on a large range of platforms (as is the case for many open source projects).

The Hitchhikers Guide to PHP Load Balancing

Written by Federico

March 27, 2008 at 9:02 pm

Posted in PHP, Programming, Web

LINQ for PHP, Language Integrated Query

without comments

Perhaps you have already heard of C# 3.5’s “LINQ” component. LINQ, or Language Integrated Query, is a component inside the .NET framework which enables you to perform queries on a variety of data sources like arrays, XML, SQL server, … These queries are defined using a syntax which is very similar to SQL.

There is a problem with LINQ though… If you start using this, you don’t want to access data sources differently anymore. Since I’m also a PHP developer, I thought of creating a similar concept for PHP. So here’s the result of a few days coding:

LINQ for PHP (Language Integrated Query for PHP)

Written by Federico

March 27, 2008 at 12:37 am

Posted in PHP, Programming

Zend Framework 1.5 released!

without comments

Wil Sinclair wrote:

We couldn’t be happier to announce that Zend Framework 1.5 is now available from the Zend Framework download site! http://framework.zend.com/download

An overview of new features in 1.5:

  • New Zend_Form component with support for AJAX-enabled form elements
  • New action and view helpers for automating and facilitating AJAX requests and alternate response formats
  • Infocard, OpenID, and LDAP authentication adapters
  • Support for complex Lucene searches, including fuzzy, date-range, and wildcard queries
  • Support for Lucene 2.1 index file format
  • Partial, Placeholder, Action, and Header view helpers for advanced view composition and rendering
  • New Zend_Layout component for automating and facilitating site layouts
  • UTF-8 support for PDF documents
  • New Nirvanix, Technorati, and SlideShare web services

There are a lot of people to thank, since there are a lot of people who worked very hard to make this happen. First of all, thanks to all the Zend Framework contributors who helped in all kinds of ways to make this a truly great, high-quality release. I would personally like to thank the Zend Framework team here at Zend for working the long hours this weekend to make sure everything came together on Monday morning. There were also some very selfless souls in marketing who stayed up late over the last few days to make sure the site was at its best in both style and substance for the big day. Finally we’d like to thank all the ZF users out there who inspire us to continue improving Zend Framework and who never fail to keep us on our toes. :) We hope this release not only lives up to your high expectations but goes beyond them.

Now we can finally say that we wholeheartedly recommend the 1.5 release for production use.

Enjoy ZF 1.5!

Related articles

Written by Federico

March 17, 2008 at 10:21 pm

Posted in Frameworks, PHP, Programming

The “Deadline” Syndrome

with one comment

Some Web development companies, specially media agencies, suffer from what I call the “deadline” syndrome (don’t google it, I’ve just made it up). Unrealistic deadlines not only place unnecessary barriers upon project teams, but also produce poorly tested and low-quality software.

Inflexible and unrealistic deadlines causes developers to react rather than plan, work in solitary instead of teaming, and apply obvious solutions instead of intelligent or brilliant ones.

But, who cares? I do.

So, what can you do about it? You can adopt an agile methodology. With Scrum for example, deadlines are always kept, but if all features have not been developed on time, features are removed instead of moving the deadline.

Written by Federico

March 16, 2008 at 11:29 pm

PHP 5.3: Just keeps getting better and better

with one comment

A detailed summary of features and additions that are part of the PHP 5.3 release. Ilia Alshanetsky explains the latest and greatest that the new stable version of PHP has to offer and through examples demonstrates its new capabilities and advantages over prior releases: Introduction to PHP 5.3 Slides

What’s new in PHP 5.3

Part 1: Namespaces
Part 2: Late Static Binding
Part 3: mysqlnd
Part 4: OpenID support, callStatic, user.ini, XSLT profiling and more.

Written by Federico

March 16, 2008 at 1:46 am

Posted in PHP, Programming

Working Effectively with Legacy Code

without comments

Is your code easy to change? Can you get nearly instantaneous feedback when you do change it? Do you understand it? If the answer to any of these questions is no, you have legacy code, and it is draining time and money away from your development efforts.

In the book Working Effectively with Legacy Code, Michael Feathers offers start-to-finish strategies for working more effectively with large, untested legacy code bases. This book draws on material Michael created for his renowned Object Mentor seminars: techniques Michael has used in mentoring to help hundreds of developers, technical managers, and testers bring their legacy systems under control.

The topics covered include

  • Understanding the mechanics of software change: adding features, fixing bugs, improving design, optimizing performance
  • Getting legacy code into a test harness
  • Writing tests that protect you against introducing new problems
  • Techniques that can be used with any language or platform—with examples in Java, C++, C, and C#
  • Accurately identifying where code changes need to be made
  • Coping with legacy systems that aren’t object-oriented
  • Handling applications that don’t seem to have any structure

The book also includes a catalogue of twenty-four dependency-breaking techniques that help you work with program elements in isolation and make safer changes.

More about Michael Feathers.

Articles he wrote:

Emergent optimization in test-driven design (PDF)

The humble dialog box
(PDF)
The self-shunt unit testing pattern (PDF)

Written by Federico

March 15, 2008 at 4:15 pm

Good software takes ten years (get used to it).

without comments

Failure to understand the ten-year rule leads to crucial business mistakes.

Joel Spolsky wrote:

“So, it takes a long time to write a good program, but when it’s done, it’s done. Oh sure, you can crank out a new version every year or two, trying to get the upgrade revenues, but eventually people will ask: Why fix what ain’t broken?”

Read more

Written by Federico

March 14, 2008 at 12:16 am

Rapid Software Development and Collaboration

without comments

assembla2.jpg

Get free workspaces with unlimited team size and integrated tools like wiki, discussion, alerts, chat, Subversion and Trac.

Team

The Team page gives you an easy way to invite new team members and manage permissions for existing users. Spaces can be public, or private and visible only to team members. Team permissions are integrated with Trac, Subversion, and other tools.

Trac / SVN

Manage your releases with Trac, the popular open source ticketing system. Link it to your code in Subversion, the industry standard SCM system, or Mercurial, the distributed alternative. Use Trac to browse your changesets.

Tickets

The Tickets tool integrates tickets for features, bugs, and tasks into an Assembla space. It is a more integrated alternative to the external Trac ticket list.

Scrum

Collects a daily report in the stand-up meeting format: “What I did”, “What I will do”, and “Roadblocks / What I need”.

Visit Assembla.com

Written by Federico

March 14, 2008 at 12:03 am

Posted in Tools, Web, Web Apps

Dependency Injection and the Zend Framework

without comments

A couple of months ago I wrote a Dependency Injection component for the Zend Framework. It’s a simple solution to a complex problem: removing hidden dependencies and injecting mocked objects. The component has evolved quite a bit since I first created it, and it’s now part of a bigger system, where objects are persistent, can have different states and are part of an interconnected network of objects.

Pádraic Brady, one of the Zend Framework developers, wrote a nice article about Zend_Di:

“Dependency Injection is both the ultimate bane and blessing in PHP programming. If you’re an experienced object oriented programmer, chances are you already know what the term means, and why it’s an all-consuming obsession. If you don’t, then here’s an overview.”

Rad more…

Written by Federico

March 13, 2008 at 9:08 pm