Category: Programming

  • An A-Z Guide to Being an Architect

    Ask yourself: What are my primary concerns and interests when making software? It is by answering this question that you’ll be able to define the distinction between software architecture and software development An A-Z Guide to Being an Architect

  • Building Scalable Development Environments

    One of my favourites ZendCon sessions, presented by Shahar Evron: “Building Scalable Development Environments”. Related links: Slides (PDF) Podcast (MP3)

  • Use-Case Analysis: Getting from use cases to code

    The first in a two-part series that appeared in The Rational Edge, this article presents a case study that analyses the requirements captured in use cases and transforms them into implementable representations that can be directly coded. An excellent article written by Gary Evans. Getting from use cases to code: Part 1: Use-Case Analysis Getting…

  • Working Effectively with Legacy Code

    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,…

  • Dependency Injection and the Zend Framework

    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…

  • How Web Caches Work

    What’s a Web Cache? Why do people use them? A Web cache sits between one or more Web servers (also known as origin servers) and a client or many clients, and watches requests come by, saving copies of the responses, like HTML pages, images and files (collectively known as representations), for itself. Then, if there…

  • Agile Development Methodologies

    Agile development methodologies have been around for a while now, and the list of them is long. It includes: Extreme Programmin (XP): Developed by Kent Beck, Ward Cunningham, and Ron Jeffries, XP is probably the best-known lightweight methodology. With its roots in the Smalltalk community, it is a relatively complex system of practices, and Highsmith…

  • 20 MediaWiki Extensions You Should Be Using

    MediaWiki is a great PHP-based Wiki application that is used to power many sites, including Wikipedia itself. One of MediaWiki strengths is how easy it is to extend with its plug-in architecture. The following is a list of 20 extensions that should make your life easier and save you a fair bit of time. Check…

  • Issue Tracker extension for MediaWiki

    MediaWiki is definitely one of the most widely used and best known Wikis out there, it powers Wikipedia.com, but I’m sure you already knew that. I’ve been using it at work to record and document all our internal systems and projects. It’s a great tool, it allows developers and projects managers to collaborate, provide and…

  • Software Development AntiPatterns

    An AntiPattern is a pattern that tells how to go from a problem to a bad solution. For example: The Blob Procedural-style design leads to one object with a lion’s share of the responsibilities, while most other objects only hold data or execute simple processes. The solution includes refactoring the design to distribute responsibilities more…

  • A step-by-step guide to Object Oriented Programming

    According to Marcus Baker, if you are a PHP developer and new to OOP, it’s possible that your story will go something like this: You’ll learn the syntax and build an object or two. You’ll try it in a live project. You will realise that you are getting no real advantage, and you’ll post your…

  • Implementing the Delegation Pattern Using Reflection

    Times arise where a class (One) is supposed to do everything another class (Two) does and more. The preliminary temptation would be for class One to extend class Two , and thereby inheriting all of its functionality. However, there are times when this is the wrong thing to do, either because there isn’t a clear…

  • The History of Programming Languages

    For 50 years, computer programmers have been writing code. New technologies continue to emerge, develop, and mature at a rapid pace. Now there are more than 2,500 documented programming languages! O’Reilly has produced a poster called History of Programming Languages (PDF: 701K), which plots over 50 programming languages on a multi-layered, color-coded timeline.

  • Registry Pattern, good or bad?

    Today I came across an interesting post written by Troels Knak-Nielsen. We all know that patterns are not perfect in all situations and the Registry pattern is no exception. Here is what Troels has to say about this:

  • Polymorphism

    The subject of polymorphism is probably the most important in OOP. Using classes and inheritance makes it easy to describe a real-life situation as opposed to just a collection of functions and data. They also make it much easier to grow projects by reusing code mainly via inheritance. Also, to write robust and extensible code,…