October 30, 2008

Pylot and WebInject - Chosen as "Top web application load and stress test tools"

Pylot (my web performance test tool) and WebInject (my web functional test tool) were both just named on the "List of top web application load and stress test tools" from WarePrise.

I am really glad people are finding Pylot useful. It still needs a lot of work and functionality to get it to where I want it to be, but so far adoption is good for such a simple tool. It is written in Python and I use it regularly for my own testing.

WebInject is a more advanced tool that has been widely adopted for a few years as a testing tool and monitoring plugin. Lately it has taken on a life of its own and keeps popping up everywhere. Who knew my ugly ball of Perl code would get that popular?

Thanks for the props!

Python - Job Paradox

Paul Graham has some great essays online that made up the content of his book: Hackers & Painters. One of my favorite posts is The Python Paradox, which presents something rather counterintuitive at first read:

"I'll call it the Python paradox: if a company chooses to write its software in a comparatively esoteric language, they'll be able to hire better programmers, because they'll attract only those who cared enough to learn it. And for programmers the paradox is even more pronounced: the language to learn, if you want to get a good job, is a language that people don't learn merely to get a job.

This concept may be a little scary to some. Learning an esoteric language improves your chances at getting a "good" job? (presumably "good" meaning one you like) But what about all the recruiters salivating for Java/JEE and .NET programmers?

"People don't learn Python because it will get them a job; they learn it because they genuinely like to program and aren't satisfied with the languages they already know."

.. and there lies the paradox. If you don't know an esoteric language, or one that is not considered mainstream Enterprise, you can't learn one just to land a job. You must already happen to enjoy programming enough to seek it on your own.

October 24, 2008

SQAForums - 3000th Post

I just made my 3000th comment/post over at SQAForums. I've been a member and have enjoyed being part of that community since 2001. 8 years and 3000 posts.. wow.

I spend a lot of time posting in the "Performance & Load Testing" and "Automated Testing" forums. Good stuff.

October 20, 2008

Pylot - Use Case: Solid-State Drive Web Server Test

Someone did a nice job of using my tool (Pylot) for some webserver benchmarking:
"This article shows how response times improved after upgrading to a new dedicated web server with solid-state drives and faster processors."
http://www.websiteoptimization.com/speed/tweak/solid-state-drive/

October 6, 2008

Python - HTTPConnection State Machine

This state machine diagram from the Python source code (client.py in Python 3, httplib.py in Python 2) is useful for understanding the different states of a client/server connection via HTTP:

http://svn.python.org/view/python/branches/py3k/Lib/http/
HTTPConnection goes through a number of "states", which define when a client
may legally make another request or fetch the response for a particular
request. This diagram details these state transitions:

    (null)
      |
      | HTTPConnection()
      v
    Idle
      |
      | putrequest()
      v
    Request-started
      |
      | ( putheader() )*  endheaders()
      v
    Request-sent
      |
      | response = getresponse()
      v
    Unread-response   [Response-headers-read]
      |\____________________
      |                     |
      | response.read()     | putrequest()
      v                     v
    Idle                  Req-started-unread-response
                     ______/|
                   /        |
   response.read() |        | ( putheader() )*  endheaders()
                   v        v
       Request-started    Req-sent-unread-response
                            |
                            | response.read()
                            v
                          Request-sent

This diagram presents the following rules:
  -- a second request may not be started until {response-headers-read}
  -- a response [object] cannot be retrieved until {request-sent}
  -- there is no differentiation between an unread response body and a
     partially read response body

October 2, 2008

October 1, 2008

Python - Python 3.0 Early Books and Documentation

I have lots of references and books for Python 2.x. I am looking forward to upgrading them and doing lots of reading for the upcoming Python 3.0 release.

As usual, the official Python 3.0 docs are great:
http://docs.python.org/dev/3.0/

There is already a Python 3.0 book online by Swaroop C H:
A Byte Of Python

I also just pre-ordered Mark Summerfield's printed book on Python 3.0:
Programming in Python 3: A Complete Introduction to the Python Language

Hopefully lots more books and docs on Python 3.0 are coming soon.