Accessing backend system…

We're sorry, but your session has expired due to inactivity. Please use your browser to refresh this page and log in to our system again.

Message goes here.

Message goes here.

Message goes here.

LOGIN / REGISTER
VIEW BASKET
SEARCH:
 
php|architect logo
 
SERVICES
  • MAGAZINE
  • PHP|TEK 2012
  • CODEWORKS 2011/12 TOUR
  • BOOKS
  • TRAINING
  • ADVERTISE
 
CHANNELS
  • NEWS
  • PODCAST
  • DEVELOPMENT
  • OPINION
  • WRITE

php|architect Announces the First Annual Impact Awards

Posted by Cal Evans on March 31, 2011
IN php|architect
Tags: awards · community · php · php|tek · tek
 

Related Posts:

  • Check it out, tek 11 schedule is up!
  • phpDay 2010
  • ZendCon 2010 call for papers now open
  • Ten Top PHP people to follow on Twitter
  • At 14, is PHP Finally Growing Up?

php|architect Impact AwardsIn the March 2011 issue of php|architect is a short article announcing the first ever php|architect Impact Awards.

In short, we at php|architect recognize that we are standing on the shoulders of giants. We build our site, our training and our magazine using tools created by developers who are giving freely of themselves. We want to recognize a few of those who have had an impact specifically on the PHP community.

The full details can be found on the Impact Awards page. Voting is open through the end of April to all php|architect subscribers. The winners will be announced at php|tek ’11 in Chicago.

Subscribers, cast your vote to support the projects that have had the biggest impact on your development this year.


About the author—Cal Evans is a veteran of the browser wars. (BW-I, the big one) He has been programming for more years than he likes to remember but for the past [redacted] years he's been working strictly with PHP, MySQL and their friends. Cal regularly speaks at PHP users groups and conferences, writes articles and wanders the net looking for trouble to cause. He blogs on an "as he feels like it" basis at Postcards from my life.
 
 
 

Internet Explorer 9: Where Does It Stand?

Posted by Orlando Medina on March 30, 2011
IN News
Tags: Internet Explorer 9 · microsoft · web
 

Related Posts:

  • 2011 php|tek Webcast Series
  • PHPDOCX: generating Word documents from PHP
  • Bing Powered 404 for non-WordPress websites
  • WordPress 404 Plugin built on Bing Wrapper
  • Webcast: Making PHP faster on IIS

Internet Explorer 9On Monday March 14,2011 Internet Explorer 9 was released. A lot of people have been hoping that IE 9 would be better than the previous versions, and interestingly there are some people still rooting for IE 6 to stay alive. As developers we have to recognize that, whether we like it or not,IE exists. Does IE 9 live up to the hype? Does it make sense for us to use? Well, sort of.

IE 9 has a few things that make it pretty compelling. It’s new javascript engine dubbed “Chakra” brings some much needed performance. It even takes advantage of multi-core CPUs to help speed up performance. Is it the fastest kid on the block? It seems pretty close.  In the most current tests, Microsoft says its actually faster than all the other browsers. Feel free to debate about that. Keep in mind that these kinds of tests can be, and usually are tailored.

How is support for HTML 5 and CSS 3? It’s better than IE8. Microsoft’s approach was to take  the HTML 5 and CSS3 standards  that was more or less the commonly accepted, while leaving the other standards to be debated over. Does IE 9 offer the most comprehensive standards support? Not really. Is it better than IE 8? Yes.

The thing to recognize with IE9 is that at that end of the day, as developers, its out there. We have to recognize that. I know talk about browsers can cause almost a religious war in some circles. The fact of the matter is, is that IE 9 does some things pretty good actually. I hope Microsoft continues to learn its lessons and make it better. I think it’s a sign of some things to come and  a good start. Hopefully, this means that when HTML 5 is finalized we will have browsers that will properly enforce these standards so we can have a much better web.

 


About the author—I run Medina Labs where I provide freelancing services in web development as well as mobile development. You can find info about my company Medina Labs here.
 
 
 

Looking for a simpler MySQL library? Try MeekroDB

Posted by John Mertic on March 24, 2011
IN News
Tags:
 

I remember fondly back in the day, when PHP 4.0 was all the rage, that if you wanted to interface with MySQL there was one choice: the PHP mysql extension. Then came database abstraction layers ( such as ADODB and PEAR_DB ) and newer extensions ( namely PDO and mysqli ), all with the goal of simplifying the code needing written to be able to get data successfully out of a database. But even then, it still could get a bit complex. Fortunately, someone saw this and wrote a library to make it even simpler. This library is MeekroDB.

MeekroDB dubs itself as “The Simple PHP MySQL library”, and has a philosophy of making what is simple simple. How simple is it? Well let’s look at this snippet where we are looking for the total count of widgets that the quantity is greater than the specified variable $quantity, where we use the PHP mysqli extension

$mysqli = new Mysqli('my_database_server','my_database_user',
'my_database_password','my_database_name');

$result = $mysqli->prepare("SELECT COUNT(*) FROM widgets WHERE quanity >?");
$mysqli->bind_param("i", $quantity);
$mysqli->execute();
$mysqli->bind_result($count);
$mysqli->fetch();
$row = $result->fetch_assoc();

echo $count . " widgets found whose quantity is greater than " . $quantity . ".";

This of course takes the path of using prepared statements, where we make sure that no evil SQL injection attacks can be performed. As you can see, it gets a bit lengthy and it’s very elegant. Now, let’s look at the code you’d use with MeekroDB to do the same thing.

require_once 'meekrodb.class.php';
DB::$host = 'my_database_server';
DB::$user = 'my_database_user';
DB::$password = 'my_database_password';
DB::$dbName = 'my_database_name';

$count = DB::queryFirstField("SELECT COUNT(*) FROM widgets WHERE quanity > %i", $quantity);

echo $count . " widgets found whose quantity is greater than " . $quantity . ".";

Using MeekoDB, we’ve squashed those 6 ugly lines handling the prepared statement and fetching the result into one line, with all the same protections from SQL injection that we have with the mysqli version above. This is the true power of this library, where it makes the tediousness of interacting with PHP’s DB layer simple, yet still powerful.

For more examples of working with the library, check out the quickstart guide they have put together, and the documentation for a more indepth look at how to use the library.


About the author—John Mertic is a senior software engineer and serves as the partner and community developer liaison at SugarCRM, having several years of experience with PHP web applications. At SugarCRM, he has specialized in data integration, mobile and user interface architecture. An avid writer, he has been published in php|architect, IBM Developerworks, and in the Apple Developer Connection, and is the author of the book 'The Definitive Guide to SugarCRM: Better Business Applications'. He has also contributed to many open source projects, most notably the PHP project where is the creator and maintainer of the PHP Windows Installer.
 
 
 

First look at Orchestra.io

Posted by Joel Clermont on March 21, 2011
IN News
Tags: hosting · Orchestra · PaaS
 

Related Posts:

  • PHP in the Cloud – New Options for Application Hosting

Orchestra.io logoLast month, I discussed the concept of Platform as a Service (PAAS) and surveyed the available options for PHP developers. If you haven’t read it yet, I highly recommend you start there. This article will not rehash the reasons why you might consider PAAS, but will instead focus on my early impressions of orchestra.io, one of the PHP-specific PAAS providers.

When I wrote my previous post, Orchestra was not yet in beta, so I had a limited understanding of the service. Last week, however, I got a beta invitation and I have had sufficient time to ‘kick the tires’ and see what this service has to offer. As you read this, please keep in mind that this is still an early beta and Orchestra is adding features and options at an extremely fast pace.

The first place to start when testing a hosting service is provisioning a new site. Orchestra offers three types of sites: Free, Basic and Elastic. These tiers come with different tradeoffs in price versus performance and available features. For my purposes, I stuck with the free tier, which is more than adequate to get a proper feel for the service. After picking a domain (only orchestra.io subdomains can be used with free accounts), pointing it at a git repository and defining my public start page, my site was provisioned and publicly accessible. Orchestra even offers several pre-built git repos on github to use as starting points for popular PHP frameworks.

Once your site is provisioned, you’ll need to deploy some code and this is where Orchestra really shines. Their philosophy is based on the idea of integrating into your existing development workflow, not in forcing you to add one extra step in how you manage your project. While Git is the preferred method of deployment, SVN is also currently supported and there is some mention of future Mercurial and Bazaar support in their knowledge base. Orchestra’s deployment model is more pull than push. It polls the master branch in the repo you specified during site setup and as soon as it sees new code, it pulls this into production. Both private and public repos are supported too, so there’s no need to make your source code open to the world. This process happens every minute, so you won’t have to wait long for it to show up on your site.

There is also a growing assortment of add-ons that you can enable for your site. One that almost every site will need is a database. MySQL is currently available and free, as is phpMyAdmin for remote management. Paid options for CouchDB and MongoDB are listed as coming soon. If you need to run scheduled jobs on your server, you can enable the free cron feature, which simply looks for specially named files based on the desired frequency of execution (daily, hourly, weekly, and so on). A growing number of PHP sites rely on Memcache, and this too will be a free option on Orchestra, but it is currently listed as “coming soon.”

I could go on and on, but hopefully I’ve given you enough of an impression to encourage you to explore more on your own. Beta access can be requested on the Orchestra home page and in the meantime, I highly recommend looking through their public support docs. Here you will find more detailed information on pricing, their internal architecture and some design considerations you’ll need to understand when writing your application.


About the author—Joel Clermont is a programmer by day, and often by night. While PHP is his first love, he also regularly works with .NET and the iPhone. He is a founding partner of Orion Group, a Milwaukee web development firm, and also organizes the Milwaukee PHP user group.
 
 
 

Webcast: Phactory

Posted by Cal Evans on March 18, 2011
IN podcast
Tags:
 

From the tek11 webcast series. For more information on php|tek ’11, visit the website.


About the author—Cal Evans is a veteran of the browser wars. (BW-I, the big one) He has been programming for more years than he likes to remember but for the past [redacted] years he's been working strictly with PHP, MySQL and their friends. Cal regularly speaks at PHP users groups and conferences, writes articles and wanders the net looking for trouble to cause. He blogs on an "as he feels like it" basis at Postcards from my life.
 
 
 

php|tek is goin’ digital

Posted by Marco Tabini on March 17, 2011
IN Uncategorized
Tags:
 

One of the things that I have always wanted to change in our conferences is the way we hand out collateral materials. Typically, we want to make sure that all attendees have ready access to a lot of critical information, such as scheduling, talk synopses, speaker bios, and so on. Similarly, our sponsors also want an opportunity to pass along a handout or two, and maybe a few freebies.

All this paper, sadly, has a very limited shelf life. Conference programs are easily misplaced, pamphlets are often discarded, and so on, and so forth. The end result is an enormous amount of waste—I’m pretty sure that, last year, we probably shipped, handled, and handed out at least 500lbs. of paper—and less value than everyone would like.

This year, therefore, we have set out to “go digital” and limit our paper usage as much as possible. As part of this initiative, we are going to introduce a few changes:

  • First of all, we won’t have bag or handouts. Instead, we’ll give all attendees a USB key with all the materials, including cool demos and software from our sponsors.
  • The conference program is going digital, as well—we’ll make it available for download in PDF, ePub, and MOBI format so that you can pick it up and install it on your computer or e-book reader of choice.
  • We are hard at work on a mobile app for the conference—it will let you consult the schedule and speaker bios, create your own custom schedule, and interact with the other attendees using group messaging. It’ll be a great way to keep on top of things (including the many and sundry evening activities) without having to reach for a piece of paper all the time. Oh, and the app will work on Android, iOS, and Windows Phone 7 devices (pending, of course, approval from Apple and Microsoft).
  • If you don’t happen to have a smartphone, don’t worry: we are still going to print schedules, but these will be on lightweight postcards that are easier to carry around and don’t create too much clutter.

The app is chugging along rather nicely—we are testing the iOS prototype and are going to start working on the Android and WP7 versions shortly. Once it’s complete, we plan on open-sourcing the mobile app, in the hopes that other conference and user-group organizers will find it useful to help reduce their environmental footprint as well (and maybe help making it an even better app!).

There you have it, then. We’re goin’ digital, and we hope that you will be there to enjoy the wonders of technology with us (while having a smashing good time with your friends and colleagues from the PHP community).


About the author—Marco is the keeper of keys and Chief Garbage Collector at Blue Parabola, php|architect's parent company. He can be found on Twitter as @mtabini.
 
 
 

php|architect encourages you to join us in helping the victims of the tragedy in Japan

Posted by Cal Evans on March 14, 2011
IN News ·php|architect
Tags: community · japan · red cross
 

Related Posts:

  • php|architect Announces the First Annual Impact Awards
  • Check it out, tek 11 schedule is up!
  • Open source life style
  • PHP tours Europe in fall
  • phpDay 2010

It is in the time of crisis that communities pull together to help those in need; the PHP community is no different. Past experience has shown the generosity of the PHP community and we know that many of you have already stepped up to help. All of us at php|architect want to encourage you to join us in giving to the Red Cross to support their relief efforts in Japan. To show our appreciation for your donation, if you give $25 or more, we will give you a coupon for a free subscription to php|architect. Read the fine print for all the details and then go donate.

Sincerely,
php|architect Staff
Marco, Arbi, Manu, Keith, Beth, Cal

The fine print:

  • DO NOT SEND US MONEY! Donate directly to the Red Cross.
  • Only one coupon will be sent per donation or per subscriber.
  • You have to send us proof of donation, you can do that in a couple of ways. The Red Cross sends you an email to thank you for donating. You can forward that email to cal@blueparabola.com. They also display the same information on a thank you screen when you complete the donation, you can send us a screen-shot or PDF of that page to cal@blueparabola.com. Either way, we need to be able to see your name, your email address, the amount, and the tracking code to send you the coupon. (Feel free to black out all the other info.)
  • You have to send us proof of donation before 5:00 PM EDT, Friday, March 18th, 2011 to get a coupon.
  • We will not collect any information off of the email you send us; it is simply proof of donation. We delete the email after we see it and send you your coupon.
  • Existing subscribers can use the coupon to extend their subscription by 12 issues.


About the author—Cal Evans is a veteran of the browser wars. (BW-I, the big one) He has been programming for more years than he likes to remember but for the past [redacted] years he's been working strictly with PHP, MySQL and their friends. Cal regularly speaks at PHP users groups and conferences, writes articles and wanders the net looking for trouble to cause. He blogs on an "as he feels like it" basis at Postcards from my life.
 
 
 

More powerful Validation from Respect

Posted by John Mertic on March 9, 2011
IN News
Tags: data · GitHub · php · validation
 

Related Posts:

  • XHP: Inline XML For PHP
  • php|tek’s Call for Papers is Closing Soon
  • Finding Exactly Where You Are
  • Geolocation: Easier Than It Looks
  • Building the Backside – Part 1

Dirty data: nobody likes it. It’s one of the biggest problems any web developer faces, where the input given by a user must validated before it can be accepted. Without this necessary step someone could wreck all sorts of havoc on your application, whether it’s just causes errors to appear or worst case opens security holes to allow malicious activity.

Lately I’ve been looking into libraries that can help solve this problem with ease, and I ran across one written by the team that goes by the name Respect. It’s simply called Validation, and it is a very simple and straightforward PHP 5.3 based validation library. The goal for them is to make validation easy and painless, using clever constructs like chaining and enabling developers to create reuseable components.

Let’s take a look at a simple example where we want to validate the given value is numeric.

use Respect\Validation\Validator as v;
// $result is true if $value is numeric
$result = v::numeric()->validate($value);

See how simple this is? I think the chain-ability of the validator methods is what really makes the library powerful in my eyes. So let’s say not only must this be numeric, but a number between 1 and 10. Chaining makes this easy.

use Respect\Validation\Validator as v;
// $result is true if $value is numeric and between 1 and 10
$result = v::numeric()->between(1, 10)->validate($value);

And you can do other validation other than numeric validation. Like for example, let’s say you want to make sure the input is an alpha only string, between 10 and 15 characters long, and has no whitespace characters in it. Behold!

use Respect\Validation\Validator as v;
// $result is true if $value is alpha, between 10 and 15
// characters long, and no whitespace
$result = v::alpha()->length(10, 15)->noWhitespace()->validate($value);

And not all validation rules need to be of the “AND” variety; Respect also allows the developer to write composite rules that are an “OR” condition. For example, let’s say you’ll accept an number between 1 and 10 or the string “NO”. This is the rule you can use to make that happen:

use Respect\Validation\Validator as v;
// $result is true if $value is alpha, between 10 and 15
// characters long, and no whitespace
$result = v::oneOf(
v::numeric()->between(1, 10),
v::alpha()->equals('NO')
)->validate($value);

This is just the beginning of the types of validation rules you can build with Validation. The development of the library is quite early on, with no official release yet, but you can grab the latest source code at their GitHub repository.


About the author—John Mertic is a senior software engineer and serves as the partner and community developer liaison at SugarCRM, having several years of experience with PHP web applications. At SugarCRM, he has specialized in data integration, mobile and user interface architecture. An avid writer, he has been published in php|architect, IBM Developerworks, and in the Apple Developer Connection, and is the author of the book 'The Definitive Guide to SugarCRM: Better Business Applications'. He has also contributed to many open source projects, most notably the PHP project where is the creator and maintainer of the PHP Windows Installer.
 
 
 

Image Processing with Imagine

Posted by Mike Willbanks on March 7, 2011
IN News
Tags: image processing · Imagine
 

Image processing in PHP is a necessary evil but is needed more often than not in just about every web application.   With the various preferences in image processing libraries (think ImageMagick, GraphicsMagick and GD) it is difficult to find a library that provides a unified object oriented interface as well as implementing the general tasks in a simplistic fashion.

What is Imagine?

Imagine is an open source image manipulation library built with PHP 5.3 that implements an object oriented interface to ImageMagick, GraphicsMagick and GD.  It provides functionality for both common image manipulation and drawing tasks.  Instead of rewriting the same code to create a thumbnail, crop, rotate, resize, flip or even creating a composite image, Imagine provides a single line method to solve these tasks.

Getting Started

To get started, simply download and extract the library or take a checkout with Git.  Setup a simple autoloader through spl_autoload and start to make use of the library!

Setup of SPL Autoload

SPL autoload utilizing namespaces can be a bit tricky for those of you that have not done it yet.  However, once you set this up you will be happy that you do not need to worry about including all of the right files.

set_include_path('/path/to/lib/Imagine' . PATH_SEPARATOR . get_include_path());
function imagineLoader($class) {
    $path = $class;
    $path = str_replace('\\', DIRECTORY_SEPARATOR, $path) . '.php';
    if (file_exists($path)) {
        include $path;
    }
}
spl_autoload_register('\imagineLoader');

Our Example with Thumbnails

Thumbnails are a vital part of any application that is utilizing photos for both bandwidth purposes and to save the user the agony of having to load up large photos. They should generally always keep their proportions and Imagine makes this easier than pie.

$imagine = new \Imagine\Gd\Imagine();
$image = $imagine->open('example.png');
$thumbnail = $image->thumbnail(new Imagine\Image\Box(100, 100));
$thumbnail->save('example.thumb.png');

Now, that was easy!

Conclusion

Imagine is a great tool for speeding up your development when working with images. We only looked at a very basic example but take a look at the documentation to find far more complex examples.


About the author—Mike Willbanks is a software engineer manager at CaringBridge, a nonprofit providing free websites that connect people experiencing a significant health challenge to family and friends. He has more than a decade of experience programming with PHP and MySQL. He is a Zend Certified Engineer and focuses on high availability and high performance applications. Mike organizes the MNPHP and MN MySQL User Groups and has a passion for knowledge sharing and contributing back to the community.
 
 
 

Seeing Triple!

Posted by Marco Tabini on March 1, 2011
IN Uncategorized
Tags: epub · magazine · mobi
 

Related Posts:

  • Today only: Half off all training!
  • Enjoy a free article from our April 2010 issue!
  • Enjoy a free article from our March 2010 issue!
  • Announcing the August 2009 issue of php|architect

If you are a magazine subscriber who has logged into their account recently, you may have noticed that you are now seeing two new options for downloading the magazine. We are very happy to announce that in addition to our PDF edition, we are now offering an ePUB edition and a MOBI edition. These two new editions widen our accessibility across more devices as we strive to make our magazine easier and more portable for you. Check out the official announcement I wrote in the February 2011 issue of php|architect, which I have included below for your convenience.

As always, we’d love to hear your feedback on the new formats and on the magazine in general. Send all of your magazine comments to: write@blueparabola.com. Happy Reading!

Taken from the February 2011 issue of php|architect:
Three Times the Magazine, Three Times the Fun

If you have been a subscriber for a few years, you know that php|architect has gone through several transformations throughout its lifetime. In 2002, when we started publishing this magazine, we decided that an electronic format was the best option for catering to the global nature of the PHP community. At the time, this was a risky move, but all of us always felt that it was the right one, and luckily, reality seemed to agree with our way of thinking: to this day, we have subscribers in over 150 countries and territories worldwide, including Antarctica.

Besides the obvious advantages in terms of cost and reach, an all-electronic publication has always fit well within what we think is our role: producing and selling the best possible content for the PHP community. As far as I’m concerned, anything that distracts us from that takes away from what we have to offer to our readers.

Still, as the years went by, we added a print version, which made us a “real” magazine in the minds of many, but also started us down the road towards a destination that we were not entirely happy with. A physical magazine was expensive and difficult to produce—and left us at the mercy of the worldwide postal service. If you think I’m being melodramatic, more than one year after we mailed the last print publication to our subscribers, we’re still receiving undelivered copies (some in a state that could be best defined as “no longer a magazine”). Worse yet, a print edition didn’t add any actual value to the content we had to offer, and we eventually decided that it was time to stop looking back and start looking forward.

So, a little over a year ago we decided to stop printing php|architect and go, once more, to an all-electronic format. We felt that doing so was a necessary step, but not one that we took lightly. We knew then that we would be far ahead of the curve and that many of our readers would be very unhappy. As early as one year ago, the Kindle was the lone e-reader that had managed any level of popularity, but it was still expensive and difficult to obtain. There was no iPad. There was no Sony Reader.

In other words, we took a gamble—and a big one.

Despite some initial grumblings and defections, I am happy to report that our readership has actually grown since then—a clear sign that the risk was well-worth taking and that digital is the way of the future.

Still, even though PDF was a less popular format in 2002 than it has become today, it was a much easier choice for us when the only way to read an electronic publication was to sit in front of a computer. The advent of portable e-book readers demanded that we consider other formats; as a result, about six months ago we started a skunkworks program, spearheaded by our very own Keith Casey, to create ePub and MOBI versions of our magazine.

Six months may sound like a long time, but the last thing we wanted to do was to simply take our existing PDF files, and as if by magic, run them through some sort of automatic converter and obtain what is technically an ePub file but is unrecognizable as our content at the other end. We could have probably gotten away with it, but we want to make sure that every copy of php|architect that reaches you in any format is built in a consistent way. Therefore, we created an extension to Vesta, our editorial management system, which takes the source files for each issue and compiles them into a completed and much more user-friendly ePub file.

Along the way, this was an all-hands effort that involved almost everyone on our editorial and development teams. The big problem with ePub is not so much the format, which is essentially a series of HTML files collected in a particular way, but rather the fact that each reading device seems to take particular glee in rendering it in a completely different—and apparently random—way.

But I digress—I shall leave the pleasure to rant on about the adventure that was writing our ePub generator to one of Keith’s future articles. The good news—the reason why I am writing—is that the ePub version of php|architect is finally here, and it looks darn sexy. Ditto the MOBI version, which is ideal for all of you who use a Kindle. And, to make things better for everyone, we have published a full year’s worth of past issues to go with it. If you’ve purchased any of the 2010 issues—either through your subscription or as individual issues, the new versions are awaiting you in your account page.

Now for the business side of things. Going forward, we are creating a new kind of subscription that will incorporate all three digital formats that we publish: PDF, ePub, and MOBI. We call this the Premium subscription, and we have upgraded all our existing subscribers to it. Therefore, for the rest of your existing subscription term, you will continue to enjoy php|architect in all three formats at no extra charge. For everyone else—and for those who want to secure subscriptions before future price changes, we are keeping the Premium level at the same low price of Regular level subscriptions for a limited time.

As we enter our second decade of publication, from all of us here at php|architect, thank you for being with us—we hope to have this conversation again (but with much cooler technology) in 2022.

–Marco Tabini


About the author—Marco is the keeper of keys and Chief Garbage Collector at Blue Parabola, php|architect's parent company. He can be found on Twitter as @mtabini.
 
 
 

This month's issue

January 2012
Buy · $5 — Subscribe · starts at $35
 

 

Upcoming Training Courses

Course Start Date
Essential PHP 2012-02-03
AJAX Programming with PHP and … 2012-02-10
Essential Zend Framework 2012-02-17
Mobile HTML5, JavaScript and P… 2012-03-02
Professional PHP Development 2012-03-09
 

About us

  • What we do
  • Contact us
  • Write for us

Policies & legal

  • Customer support
  • Privacy policy
  • Refund policy
  • Terms & Conditions

Online Store

  • Magazine
  • Training courses
  • Books

Special sections

  • Codeworks 2011
 

Copyright © 2002-2012 Blue Parabola, L.L.C. — All amounts in USD - WP3