PDD by Roles

  • 1769 words
  • 7 minutes to read
  • comments

In this post, I'll try to walk you through a project managed with the spirit of Puzzle Driven Development (PDD). As I do this, I will attempt to convey typical points of view of various project members.

Basically, there are a few key roles in any software team:

  • Project Manager—assigns tasks and pays on completion
  • System Analyst—documents the product owner's ideas
  • Architect—defines how system components interact
  • Designer—implements most complex components
  • Programmer—implements all components
  • Tester—finds and reports bugs

Everybody, except the project manager, affects the project in two ways: they fix it and they break it at the same time. Let me explain this with a simple example.

Fluent Java HTTP Client

  • 515 words
  • two minutes to read
  • comments

In the world of Java, there are plenty of HTTP clients from which to choose. Nevertheless, I decided to create a new one because none of the other clients satisfied fully all of my requirements. Maybe, I'm too demanding. Still, this is how my jcabi-http client interacts when you make an HTTP request and expect a successful HTML page in return:

String html = new JdkRequest("https://www.google.com")
  .uri().path("/users").queryParam("id", 333).back()
  .header("Accept", "text/html")

I designed this new client with the following requirements in mind:

How Much Do You Pay Per Line of Code?

  • 832 words
  • four minutes to read
  • comments

Yes, I know, "line of code" (LoC) is a very wrong metric. There are tons of articles written about it, as well as famous books. However, I want to compare two projects in which I have participated recently and discuss some very interesting numbers.

Xembly, an Assembly for XML

  • 677 words
  • three minutes to read
  • comments

I use XML in almost every one of my projects. And, despite all the fuss about JSON/YAML, I honestly believe that XML is one of the greatest languages ever invented. Also, I believe that the beauty of XML reveals itself when used in combination with related technologies.

For example, you can expose your data in XML and render it for the end-user using XSL stylesheet.

PhantomJS as an HTML Validator

  • 400 words
  • two minutes to read
  • comments

I created phandom.org a few months ago, but yesterday finally found the time to make some needed changes to it. So, now is a good time to explain how I'm using Phandom in some of my unit tests.

Before I get started, though, I should say a few words about phantomjs, which is a JavaScript interface for WebKit. WebKit, on the other hand, is a web browser without a user interface. WebKit is a C++ library that enables manipulation of HTML content, through DOM calls. For example, this is a simple JavaScript located code in example.js:

var page = require('webpage').create();
  function() {

We run phantomjs from the command line with the following code:

$ phantomjs example.js

PhantomJS creates a page object (provided by webpage module inside phantomjs), and then asks it to open() a Web page. The object communicates with WebKit and converts this call into DOM instructions. After which, the page loads. The PhantomJS engine then terminates on line 6.

Movies for Thanasis

  • 214 words
  • a minute to read
  • comments

Sometime ago, I recommended a list of movies to a friend of mine after he told me was losing all interest in "Hollywood."

Level C titles are supposed to be impossible to understand unless you've seen (and understood) their prequels -- listed in sections A and B. So, start browsing the lists in sections A and post your comments if you have any. :)

Level A

First Post

  • 98 words
  • a minute to read
  • comments

This is the first post on my new blog. Therefore, it's not about anything in particular—just an introduction and my way of saying hello. This blog will be primarily about software development ideas. As my About Me page says, I'm passionate about software quality, and will write solely about my ideas and views on it.

Anyway, welcome to my new blog. Together, let's see how this works out! :)