It was totally worth the 12 hours in a plane to attend the Selenium Conference in London. The talks have been really good, I can’t remember a single talk that was not worth watching. Besides that I had the chance to talk to guys like Simon Stewart, Jim Evans, Jason Huggins and Liz Keogh while drinking in a London pub (thank you Mark Zuckerberg for the free beer!).
Nothing similar to the QA conferences we have in Brazil, there was no people trying to sell automation tools like QTP or TestComplete, nobody was giving talks about certifications and CMMI-style testing processes and no talks for people that only became QAs because they can’t code.
What I saw was inovation, QAs that can code, open source tools, people that really know what they are doing and a call for the community to start new meetup groups and get involved in open source.
If you haven’t had the chance to attend SeConf 2012 my suggestion is to start saving money right now and attend SeConf 2013. I’ve heard it’s going to be held in Boston.
The presentations will be posted to YouTube but so far I’ve found only the slides for some presentations:
Last week I was working in a testing framework using python and webdriver, a project for Rackspace. I needed to write a scenario to test the sorting in a list of load balancers. At first I thought it would be really easy, I just had to use python default sort function, right? Wrong. That’s when it came to my conclusion that the sorting functions of mostly languages doesn’t work for humans. These functions don’t sort the same way a human would do.
Human sort: ab1, ab2, ab3, ab14, ab23…
Computer sort: ab1, ab14, ab2, ab23, ab3…
I spent some time reinventing the wheel and in the end I found a great article at Coding Horror that explain everything you need to know about natural sorting / human sorting. I just don’t get why a human sorting function is not part of the API.
If you don’t want to read more about the topic and just want the code, here it is:
def tryint(s): try: return int(s) except: return s
def alphanum_key(s): """ Turn a string into a list of string and number chunks. "z23a" -> ["z", 23, "a"] """ return [ tryint(c) for c in re.split('([0-9]+)', s) ]
def sort_nicely(l): """ Sort the given list in the way that humans expect. """ return sorted(l, key=alphanum_key)
def sort_nicely_reverse(l): """ Sort the given list in the way that humans expect. """ return sorted(l, key=alphanum_key, reverse=True)
Ok, some changes occurred:
- Recovered the domain name
- Moved from Dreamhost to a private server
- Bye Wordpress!
- I lost the previous posts for the 3rd time