Posts Tagged ‘atk’

New home for ATK

June 19th, 2008 by Ivo

Now that my book is finally out I had some time to get a new website out the door.

The ATK Framework, which has been living on Achievo's website for a few years, finally has a home of its own, with a brand new design: The design was created by our house designer Almer Kaasschieter.

There are also some project changes as I haven't had much time for the framework the past year. Peter C. Verhage is taking over release management (he's the one who implemented most of the fancy Ajax stuff, the generate-an-app-from-the-db-schema functionality and much more, so it's in good hands), and Boy Baukema has formed an ATK Documentation Group that is going to deal with the lack of proper documentation.

Also, there are Zend Framework and Code Igniter bridges on their way, and I've heard a rumour someone is working on a Symfony bridge. This way, you can combine the power of those frameworks with the backend strength of ATK.

Introducing the i7 Framework

September 28th, 2007 by Ivo

"Oh no, yet another framework for PHP..."

Admit it: that was what you thought when you read the title, didn't you?

But rest assured, we haven't created a new framework.

But we did launch something.

For 7 years now, we've been working on ATK, and it has found its niche as a framework for developing business applications. Where some frameworks focus on providing components, and other frameworks focus on websites, ATK has more and more focussed on business apps: these internal applications that companies use to run their business. (And also often as an easy-to-build administrative backend to some webapplications).

ATK typically lives on an internal Linux or Windows server in an office or corporate environment.

This year, a specific set of circumstances led to a whole new market for the framework.

The most important in this respect was the release of Zend Core for IBM's System-i. "System i" may be relatively unknown in the PHP community, but it's the new name (they change it every few years) of what was once called the AS400, and if that doesn't ring a bell, it's the big machines that run all these enterprise 'green screen' environments of large retailers, factories etc.

Zend Core basically brings native PHP to the System i world. This means that PHP is now a valid alternative to Java, when modernizing all these enterprise applications, and creating a web frontend for them.

The fun thing is: about 90% of the apps running on System i are business applications. Data management, data flows, workflows, business processes. Things that ATK is good at.

So this provides a great opportunity for the framework.

The operating system running on System-i is called 'i5/OS', so the calculation we did was:

i5 + PHP + ATK = i7

Corny, granted; but giving it a new name (which seems to be relevant in the IBM world) gives us the possibility to make this a separate product range. i7 basically is ATK for i5, with native i5 drivers, and an extensive support package. For some reasons, in the big blue IBM world, 'free software' is considered evil, so we had to add a support package in order to be taken seriously. ;-)

The past 2 days, we have presented "the i7 Framework for System-i" at the System-i Expo in the Netherlands. We did 2 sessions of 50 minutes demonstrating the framework to IT managers, most of which hadn't even heard of PHP yet. And the results are promising. Not only for our little framework, but also for PHP in general.

Info on the i7 framework can be found at Currently in Dutch (because of time pressure before the Expo), but an international version will follow soon.

ATK 6.1 released

August 30th, 2007 by Ivo

I just released ATK 6.1; It contains several new features such as Ajax based dialogs, a new language file (Indonesian), and several bug fixes.

The most important however is that it fixes an XSS vulnerability based on the usage of $_SERVER["PHP_SELF"] that we had overlooked.

It is recommended to upgrade ATK applications to ATK 6.1.

The release can be found on

The changelog is included in the release, and at

My First Mashup

July 27th, 2007 by Ivo

I have been inspired by Cal Evans' mashup experiment, which he did a presentation on at the Dutch PHP Conference last month.

Also, I was annoyed with having to consult many different resources when I plan a business trip.

So I began building frekfly, my own little mashup.

Version 1

The first version, which took me only a few hours to built, offered only a google map, basic weather information, flickr images and currency conversion. To built this, I used the following tools:

  • PHP5's Webservices API, which made it possible to consume webservices with only very few lines of code.
  • The Flickr API to retrieve images
  • Google Maps for the map display
  • Some webservicex services, for weather, geographical and currency information.
  • Zend Framework, mainly for its Zend_Service_Flickr class, which makes consuming the flickr rest service easy.
  • ATK, for its debugging console and file-caching.

It's really easy to construct an application like this in PHP, given that a few lines of code give you access to any available webservice. The first version of the app did not even use a database, everything was retrieved from webservices and cached in files.

Version 2

Then, I wanted more. When I travel for work, I usually need hotels that are located close to the airport, so I looked for a webservice that could provide me with hotel information. I requested access to the API at expedia, but they have a manual approval process and I'm still waiting for a response. Luckily the people at were a lot more helpful and they provided me with an iframe based interface to their hotel reservation engine, and they even styled their pages according to the design (well ok, that's not really a design yet, is it ;-) ) of frekfly.

The only thing missing from their API was the ability to search by latitude and longitude, which was my close-to-the-airport criterium. However, they kindly send me a dump of their hotel database including the coordinates.

So in version 2 I had to add a database, and I used the database abstraction layer of ATK to easily access it.

Version 2 is what is currently online. I may post some code examples of the webservice interfaces later on, because I found this to be a very instructive experience.

Future plans

In the next version, I want to add other nifty web-two-point-oh features to the site, including the ability to have visitors enter comments and details, so they can help complete the airport information. (such as 'are there better restaurants before or after security?'). Here I plan to use the JSON functionality of Zend Framework, to make this very 2.0-ish.

Issues to deal with

One of the major disadvantages of mashups is the fact that you're dependent on external systems. At night, the site is hardly usable because webservicex is very busy at that time and gives a lot of timeouts. Of course, this is countered by caching, but I can't cache every output for every airport on the planet, so caching is based on a 'retrieve the first time its needed' approach. So that's a disadvantage at this point.

Another interesting issue you have to deal with when writing mashups is standardization in naming, or rather, the lack thereof. For example, I consult 2 different webservices and a few file based airport resources to get airport information, but each of them use different names for the same airport. Where possible, I use the official 3-letter IATA code, but some of them do not support that.

So instead of actually matching data from different sources, you have to use a more probabilistic approach, where you say "hmm, 'Schiphol Airport Amsterdam' and 'Amsterdam, Schiphol' are probably the same airport.

I had a similar issue with the weather service; it doesn't support latitude and longitude, so what it does is 'guess' what the nearest weatherstation is, based on the airportname, the nearest town name, the biggest city close to the airport and finally the country capital if all else fails.

These are all issues to deal with in a mashup-based application, and I would encourage everyone to built a mashup at some point, because it teaches you things that you don't usually encounter with standard mysql+php based websites.

ATK6 released

June 12th, 2007 by Ivo

Today it's exactly one year since ATK 5.6 was released. So the new release was long overdue.

It's finally here, along with a new website which has a lot less fuzz, and is more to the point.

The changelog is a whopping 1056 lines. This translates to rougly 300 changes for this release. We might say this is a new generation, which is marked with a new major version number, and a new default layout. And it finally has ajax support (the way you are used to in ATK: add a flag to add autocompletion to a field, add one line of code to make things refresh on the fly). Most of you have been using the nightlies for months now, so this may not be new for you, but many companies are still using 5.6 for their apps.

The new release can be downloaded here.

Given the amount of changes, upgrading might not be trivial. Consult the forum if you need help.

phpthrowdown has started

January 27th, 2007 by Ivo

The phpthrowdown competition has officially started. Our timeslot actually began 4 hours ago, but we started roughly 2 hours ago (just couldn't get myself to get up at 6 am on a saturday :) ).

So far, we've been defining the application we're going to build, been designing a data model, importing our framework into the repository, and we're currently starting the actual coding.

We have a team of five:

  • Almer Kaasschieter, our graphical guru who will design the gui

  • Jasper van der Hulst, our productmanager, who will be coaching us, write docs and oversee the functionality
  • Guido van Biemen, programmer
  • Yury Golovnya, programmer
  • me (Ivo Jansch), also as a programmer

We've decided to create a small application for the automotive industry (to keep track of car models etc.)

I'll try to post updates to our progress as comments to this blog entry.

I would like to thank Elizabeth, who did a great job organizing this, and Bill, who runs the SVN server and has been very helpful so far in getting us started with the repository.