॥ स्वक्ष ॥

To content | To menu | To search

Tag - Python

Entries feed

2012 December 16 [Sunday]

Happy Pandas

I've always wanted to attend a scientific Foss hacking session in Python and last Sunday, I made that idea come true. So how do you even begin to describe a fantastic Sunday that got over even before it started. Well, that was how it felt in retrospect...  :-)

Having kick-started the Pydata-Pandas workshop-sprint, it was annoying to catch a viral bug the week before the sprint-workshop one is  organizing - talk about increasing the stress levels. The cold weather did add to my discomfort, but could not dent my enthusiasm - I was organising my first event on a whim, at short notice in a new city (country?) where I hardly knew anyone, not to mention it was at the start of the Holiday Season! See what I mean about having perfect timing ... gee, what was I thinking!?!

Aahz announced it on the Pythonsprints site and soon enough Sunday dawned bright and shiny. I reached the Pivotal Labs Manhattan office to find Asheesh calmly sprawled on the ground calmly munching on croissants and sipping Java (err..coffee). We had planned to come in a little earlier incase someone needed installation help. I had not eaten any breakfast but I was more stressed than hungry as this was the first event I was organizing in an alien country. I declined the yummy snacks and nervously wondered if Chang would show up?; ... will all the people who registered show up?; ... this was the Sunday before the Christmas week and maybe everyone may decide to sleep-in or go off on a holiday; would Saturday have been a better choice, or maybe we should not have kept it free - what if nobody came despite registering, what if ....   oh, well..the monkey-mind was hard at work :-P

Disastrous thoughts were stronger than the currents of the Niagara, when Chang and Emily made their appearance and I managed to make small conversation as the stress ebbed away. Things were sunnier when JT arrived and opened the doors, leaving me with less time to indulge my monkey-mind. We all got busy setting up the space for the event, arranged the tables and chairs, checked if enough power-points were available, checked the video camera, set up the name tags, did a recce of the adjoining kitchen.

Pivotal Labs has the nicest open kitchen, well-stocked with a variety of snacks, fruits, nuts and a large variety of drinks that cater to all taste buds. I hate carbonated sugary drinks and artificial flavouring which restricts my choice to drinking H2O, but to my surprise there was coconut water. Now if you liked your pint of beer while coding, the PL kitchen had that too. A big shout-out (Thank You :)) in gratitude to Pivotal Labs for being the most gracious host an organizer could ask for!

Back to the tiny tasks bits, I got a print out of Chang's presentation so he could have his notes handy during the workshop. The machine was a Mac, so ipython files would not work. The solution was a PDF. When you are organising an event like this there may be small miniscule things that can hold up your event so you would need to plan and budget time for them. Someday I shall collate my thoughts on 'how to organise small events' like workshops and sprints in a new blog entry.

A little past 10 AM, I introduced Chang She to the assembled attendees, and Chang kick-started the Pandas workshop by walking us through the Pandas data structures for 1-dimensional, 2-dimensional and 3-dimensional data. He moved on to DataFrame components and indexing, accessing data via files and Databases, Broadcasting and some basic Statistical computations. 

It was not all theory, as all the participants were following and experimenting on their laptops, in part, thanks to Asheesh's excellent "Laptop setup guide", enabling attendees to come with configured machines, making it easier to get going with Pandas. They worked on the small tasks and exercises that Chang gave out as the session progressed.

Soon it was lunch time and Asheesh being in-charge of the food (and the finances), did an awesome job of keeping us well-fed - we had Vegitarian wraps, Egg wraps and Hummus wraps, and Salads. That was the first meal of the day for me and over lunch I got to know a nice group of interesting people; with the conversation meandering around scientific programming with Python, Julia and R-language, different programming environments, our offices, work, etc..

Small talk and big lunch over, it was now time to Sprint - not literally, just the mental hacking kind! Chang split us up into small groups of 2-3 people and it was very exciting to see the attendees pored over their machines, trying to tackle Pandas bugs.  Working in small groups of 2 (or 3) people meant Chang could walk around and talk to each group to help and guide them. He was ably aided by Asheesh who also went around helping other sprinters, answering questions, etc...

I was neck deep in the Pandas code and a flash went off - looked up to see Asheesh behind the lens. Reminded me that I had totally forgotten to click pictures. Having organized multiple workshops over the last few years, Asheesh was an experienced pro unlike the rookie (me) organizing her first event. Pictures speak a thousand words:
[0] https://plus.google.com/photos/113578342347990591936/albums/5823492237517007505?authkey=CIC53t-xnYGVZQ
[1] http://www.flickr.com/photos/paulproteus/sets/72157632277350121/detail/

The sprint went on till evening, when finally at 1745 hours, Pivotal Labs had to ask us to leave. Yeah, we had so much fun that they had to tell us it was time to go home !

For those who love numbers, enjoy these statistics. We had 31 registrations (Capped at 30, but we had a waiting list that accommodated the cancellations.) and 18 people attended the Pandas Workshop-Sprint, with 7 female hackers, which makes it a cool 39% female attendees :-))  Infact, three female researchers had to opt out due to other obligations during the holiday season. The most amazing email was from a person who missed the registration by a few minutes, wanting to drop by on Sunday morning hoping for last minute cancellations. _That_ was the kind of response I would have expected for a talk, never for a Sprint!

Ofcourse, this entire event would not have been possible without our generous sponsors. A huge Thank you to:
* Chang She for conducting the workshop.
* Pivotal Labs, our generous host for the day -Thanks JT for spending an entire Sunday with us.
* The Python Software Foundation, whose generous grant for "Breakfast+Lunch and Asheesh's travel from Boston", kept us fueled and
on track all day.
* O'reilly Media, who gave all attendees a free E-book copy of Wes McKinney's "Pandas for Data Analysis", including a 40% discount on the
print copy of Wes's book.

Thank You Everyone !

2012 December 4 [Tuesday]

Announcing the Pandas Workshop Sprint

Positively thrilled to announce the one-day hands-on intensive Pandas workshop and sprint for new contributors with Chang She - a Pandas core-dev leading the sprint.  Its 4 am'ish and I just finished spamming a few mailing lists, IRC channels and thought I'll write a blog-post if I must be energetically expensive.

You can find the workshop details on the wiki: https://github.com/svaksha/PyData-Workshop-Sprint/wiki/2012-NYC but here is a short "how did it happen in a week recap". Last month, I had attended a day-long "Introduction to JavaScript" by JohnResig, and I enjoyed it. Later, I met some PyLadies and on the train ride home, I felt that we needed to have a proper workshop, core-dev in attendance, leading us along the way.

Given that there was a PyData conference in NY a few weeks ago, this was the place to be at, so I pinged the diversity list for speakers, and of course IRC - The response was phenomenal and unbelievable - People went out of their way to make my wish come true - they tweeted, emailed, chatted on IRC, gave me advice, introduced me to core-devs, volunteered for the event, pinged friends for hosting space, encouraged me to write to the PSF/sprints funding, ... and on and on.

I have so many people to thank that there will be a longer blog post, post the event  ...yeah, the list is long but maybe if I get started now (and my apologies if I have missed your name  ... feel free to gently lart me, its 4AM and I am sleep deprived :)) ...  Alphabetically-ordered XXXL THANK YOU'S to: Aahz, Asheesh, Brian, Carl, Chang, David, Diana, Jesse, Josh Knowles, Krissy, Meghan, Sheila, Steve, Wes.

2012 November 17 [Saturday]

Pycon Canada 2012 in Toronto

import pycon
from pycommunity import AwesomePeople

canada = pycon.path.abspath(pycon.path.dirname(__file__))
README = open(pycon.path.join(canada, 'README.rst')).read()
__version__ = '0.01'

requires = [

Patches welcome!

Last weekend, at this moment, I was giving a technical talk at Pycon Canada, my first. Right now, I am still wallowing in the fun and warmth of friendships (some old, some new) that thawed the cold Canadian weather. It was the most mentally simulating, energy-packed experience I've had.  Oh, wait...I say that about all the PyCon conferences I attend - Well, this is my second PyCon but the first speaking gig, and it has, as before, been about meeting some of the smartest people and having the most intellectually simulating discussions with them, learning from them and having a whale of a time. Wish all my weekends were this much fUn! The Python community is known for just that - their fabulously fantastic community, which attracted me to the language (no, I love the syntax too) and has kept me hooked.

Thanks to the change in climate (thanks Sandy!), I had a migrane that got worse on the plane ride on Friday morning and I was much happier landing in a slightly warmer and dry climate in Toronto. Enjoyed the shortest ferry ride of my life and reached the Metropolitan Hotel by 2pm to find the Google goodie-bags waiting for us at the hotel room - such a nice surprise, thanks Google!  Went for a long walk in the afternoon - its a relief to be able to walk around and see the city and its inhabitants without men bumping into you, or tripping yourself over jutting stones on the sidewalk (erm...whenever Indian roads have a sidewalk), the calmness of being able to stop and click pictures without worrying about someone "accidentally" (it always is, isnt it?) feeling you up while you were just standing there admiring a monument ........ Oh, well... never mind, you get the picture!

Later that evening, there was a casual mixer event enabling attendees, speakers and some awesome sponsors (one of them being Google, whose Diversity grant made this conference a reality for me) to register, hang out, and chat before the conference, with food and drinks at the venue bar open to all... and oh, we ate some yummy cake. Mixers before your conference is a smart way to avoid the rush and long lines that will queue up to register on the morning of your conference, a nightmare if you are short on volunteers.

I managed to reach the venue thanks to Suzanne (who I randomly stopped on the road to ask for directions, instead she ended up dropping me off till the venue - its amazing how one meets kind souls), met Laura at the registration desk who saw that every attendee had their badges and tags. Nicola introduced me to Sheila, who suddenly morphed into a real person instead of an email address with a picture attached to it. In a global distributed space knit via bits and bytes, our identities are unequivocally tied to an email, twitter, G+/FB account now.

Met more interesting people and had the longest discussion with Mark Eichin and his friend Laura, on a range of technical topics, mobile technology, languages, and not excluding the mandatory talk about the DFSG and licenses in FOSS - talking legalese is the most important thing when you meet a DD (j/k). After the party, I returned to the room, met Laren, another diversity grant recipient room-sharing with me. By now, the pounding in my head was worse and the pain would not let me sleep, so I kept re-editing my slides till I was tired enough to sleep.

On Saturday morning - Day One of the conference, Laren and me walked over to the venue and I went of into the Green Room where all the speakers were pampered with food, some space to sit and work with you laptop, more food, chat with other speakers while having even more food, but I had no taste buds so I took three Advil's and gave my first technical talk.  That done, I was free to go and watch talks but instead I went off to be a volunteer - this is the easiest way to make friends with some really cool people within the community who welcome and appreciate your contribution and efforts. Its also very humbling to see the PyConCA board members and speakers who volunteered to carry in the lunch boxes the caterer had dropped off.

Post lunch, I attended the "Numerical and Scientific Computing with Python" tutorial by David, listened some great speakers, spoke to more people, had interesting discussions on NLP and linguistics with Mike and DWF, and before I knew it, it was the end of the day, which means more food - snacks and drinks were available at the bar. Did I mention that Pycon-CA pampers you with food and drinks all through the day. At every break, there was something to munch on. Every where I looked there were food boxes, fruits / salad boxes, cookies, coffee, tea, drinks, water bottles, cakes, tacos, samosas (I noticed that those ran out really quickly as compared to the salads which is not surprising), strawberry and chocolate, juice, .... ummm..ok, you get the picture. You were very well-fed and taken care of. At one point I counted the number of laptops Vs. the food boxes on the table. Guess which was outnumbered!?

Sunday morning, being the second and final day of the conference, I attended talks on Graph databases in Python and Persona (identity/privacy, which is important to me) and later, Greg Wilson and a bunch of speakers in the green room had an interesting conversation on education and knowledge (or the lack thereof) in the current education system, what role do Universities and schools have to play within the system - are they redundant with their monolithic rigid structures, MOOC's, their pro's and cons, and how the internet and technology is changing the education system, whether sites like Udacity and Coursera (did you know that their business model allows them to sell your personal details to publishers like McGraw Hill and their ilk, who have apparently signed on the dotted line) are imparting knowledge to their users and learners at the risk of their privacy? Where exactly is creativity, mental development, critical thought, knowledge and learning today? That was more food for thought than the food around the table. Post lunch, I morphed into a Runner - yeah, its that person who runs behind each speaker! Katie and me were deputed to the Main hall speakers and got to see all the talks, including lightning talks, ending with Fernando's (not-to-be-missed) closing keynote.
No matter how hard you try, you cannot attend every fantastic talk out there. When Carl sent across the video link to me, I was stunned by the excellent production quality. The first thought that crossed my mind was "Wow, that is a second career right there" and sure enough it is - these excellent videos are brought to you by nextdayvideo.com :

* Taavi showing you how pandas get a workout
* Elizabeth Leddy rocking the Main Hall
* Did you Test today?
* No conference is complete without a talk on "BigData"
* Brandon Rhodes on why he thinks Python is beautiful (a must see if you are a beginner to Python)

Wow, this post has gotten too long. Among all the things, I admire the organizational abilities of the board the most. The conference had awesome sponsors too, one of them being Google, whose Diversity grant made it possible for me to attend the event. Initially, when my talk was accepted, I had planned book the bus tickets in advance so that I could stretch the grant money to enable me to attend both the days of the conference. When I mentioned this to Diana, she worked her magic, enabling me to cover my flight bookings and also the hotel stay within the grant. Amazing team! Kudos to the PyCon-Canada team.

2010 October 9 [Saturday]


As per the schedule, we had the first dojo meet at CIS yesterday. Met Satish Kumar while searching for the CIS office and a helpful biker who cursed google-maps actually guided us there as we were both relying on the wrong geo-location plots on Google-maps (openstreetmap someone?)...as if the city's whimsical penchant for one-way roads was not irritating enough. There is an interesting anecdote --the biker who guided us there took us to the exact building and i asked him how he knew the place when 'CIS' didnt strike a memory chord. He promptly replied that there was a foreigner (he used the term 'white') who worked at CIS whom he has seen around town. Ah! There is something about finding your way around Indian roads, something to be said about the human touch that google-maps or other tech gadgets cannot compete with.

The CIS staff were very helpful and Royson immediately arranged refreshments and we both started off discussing what the dojo was all about -- many dojo participants around the world were nice enough to have a discussion on how they did things, what worked and didnt -- so it being the first day we had time to discuss how to structure it or not to have a structure at all, etc... In the middle of this discussion NigelB and Akshay Gandhi walked in and the discussion veered to the RHCE course he had joined. Later Nigel showed us the git graph he was working on. We had a longish discussion on git, bug trackers, communities and it was 8.45pm when we left, but not before planning to meet next week to work on nltk at 7pm same place. Join us!

I'm was multi-tasking --listening to a IE9 product pitch for html5/css3, while typing this entry, so any errors and missing information can be attributed to the much tortured greycells. </excuse>

2010 September 30 [Thursday]

Weekly Python-Dojo at Bangalore

In an IRC discussion this week, I suggested we kick-start a weekly python-dojo meet-up in Bangalore. Sunil Abraham of CIS was kind enough to donate their office space and even offered to sponsor the java (pun unintended). Thanks Sunil/CIS.

So here's the plan for weekly python-dojo sessions in Bangalore,

WHAT: Weekly python-dojo sessions in Bangalore which is inspired by dojorio (english translation) meetups in Brazil where they apply the "small acts manifesto". The idea is to create a friendly atmosphere which encourages "beginners" (...and experts and everyone in between) to share and learn with the community. Please bring your laptops/netbooks etc.. as the dojo will be hands-on where we will work on small problems that exist in FLOSS software which automatically helps us learn a lot more about our system. Folks that dont have laptops are also welcome -- atm, we cant provide machines to work on but you can watch others, ask questions, learn, and later try it out at home.

WHO can participate: ANYONE. Absolutely anyone can walk in and participate at the venue. There is no registration fee or cost (except your time and travel costs perhaps?). There is no agenda either -- please note that the environment would be similar to that of an unconference. There is no formal teaching involved. We are all learners here and you are free to ask any python-related question.

WHERE: The Centre for Internet and Society (google map link)
No. 194, 2nd 'C' Cross, Domlur 2nd Stage, Bangalore 560 071

WHEN: 7pm-8pm every Friday. We start from next week, 08Oct2010.

So if you are interested in python, dont hesitate to join us for the weekly dojo sessions and do spread the word -- dent/tweet, blog and mail your friends about the weekly dojo meetups.

PS: If anyone (women in particular) feels the evening timings are rather late for traveling please feel free to suggest a more convenient day (sat/sun?) and time <-- its not set in stone and suggestions are welcome.

2010 September 25 [Saturday]


Kinda sad to see all the effort put into a complete community volunteer-driven event almost come to a standstill under the shadow of local communal politics -- the Ayodhya verdict. Given that I missed last years even for personal reasons, it seemed the Ayodhya verdict would be the roadblock this year. Not.

Today, David Goodger kicked off the second Pycon-India 2010 in Bangalore with his keynote speech while briefly dwelling on his Indian 'adventure' -- no seat-belts in the autorickshaw!? The auditorium hall echoed with laughter!  Then it was a series of talks on python 2to3, multicore programming, and many more talks .... The only irritating part during one talk was one audience member interrupting the speaker to discuss the topic/ask questions. Probably this resulted in the speaker not getting enough time to finish his talk and demo the code completely. In a 30-min talk it would be a lot nicer if the audience restricted their questions to the last few minutes *after* the speaker completes the talk.

Another interesting talk was the screen scraping talk but I'll return to my lazyshell under the pretext that the videos will probably be uploaded online in a few days. Else, you could just attend the second day of pycon coz the nicest part was good 'ol networking, old friends, meeting new ones and the barcamp style corridor chats with people. Considering that the attendees were almost 500+, the inpycon team really pulled off a community event quite successfully! Now I gotta get some sleep if I need to make it for tomorrows event!

2010 September 24 [Friday]

CFP - PyCon 2011

Call for proposals -- PyCon 2011 -- http://us.pycon.org/2011/

Proposal Due date: November 1st, 2010

PyCon is back! With a rocking new website, a great location and more Python hackers and luminaries under one roof than you could possibly shake a stick at. We've also added an "Extreme" talk track this year - no introduction, no fluff - only the pure technical meat!

PyCon 2011 will be held March 9th through the 17th, 2011 in Atlanta, Georgia. (Home of some of the best southern food you can possibly find on Earth!) The PyCon conference days will be March 11-13, preceded by two tutorial days (March 9-10), and followed by four days of development sprints (March 14-17).

PyCon 2011 is looking for proposals for the formal presentation tracks (this includes "extreme talks"). A request for proposals for poster sessions and tutorials will come separately.

Want to showcase your skills as a Python Hacker? Want to have hundreds of people see your talk on the subject of your choice? Have some hot button issue you think the community needs to address, or have some package, code or project you simply love talking about? Want to launch your master plan to take over the world with Python?

PyCon is your platform for getting the word out and teaching something new to hundreds of people, face to face.

In the past, PyCon has had a broad range of presentations, from reports on academic and commercial projects, tutorials on a broad range of subjects, and case studies. All conference speakers are volunteers and come from a myriad of backgrounds: some are new speakers, some have been speaking for years. Everyone is welcome, so bring your passion and your code! We've had some incredible past PyCons, and we're looking to you to help us top them!

Online proposal submission is open now! Proposals  will be accepted through November 10th, with acceptance notifications coming out by January 20th. To get started, please see:    <http://us.pycon.org/2011/speaker/>

For videos of talks from previous years - check out:   <http://python.mirocommunity.org/category/conferences>

For more information on "Extreme Talks" see:   <http://us.pycon.org/2011/speaker/extreme/>

We look forward to seeing you in Atlanta!

Please also note - registration for PyCon 2011 will also be capped at a maximum of 1,500 delegates, including speakers. When registration opens (soon), you're going to want to make sure you register early! Speakers with accepted talks will have a guaranteed slot.

Important Dates:
  * November 1st, 2010: Talk proposals due.
  * December 15th, 2010: Acceptance emails sent.
  * January 19th, 2010: Early bird registration closes.
  * March 9-10th, 2011: Tutorial days at PyCon.
  * March 11-13th, 2011: PyCon main conference.
  * March 14-17th, 2011: PyCon sprints days.

Contact Emails:
  Van Lindberg (Conference Chair) - van@python.org
  Jesse Noller (Co-Chair) - jnoller@python.org
  PyCon Organizers list: pycon-organizers@python.org

2010 July 25 [Sunday]

Selenium RC and Python client

Selenium is quite a famous testing tool and has a lot of documentation so I wont bother to repeat stuff from there, rather just focus on the bits where I feel the documentation could improve.

STEP#0.  After downloading selenium remote-control change to the directory where you extracted it. {Btw, to install selenium on your local machine, download selenium from here.}

~$ cd selenium-remote-control-1.0.3/
~/selenium-remote-control-1.0.3/selenium-server-1.0.3$ sudo java -jar selenium-server.jar
09:03:05.618 INFO - Java: Sun Microsystems Inc. 1.6.0_0-b11
09:03:05.638 INFO - OS: Linux 2.6.24-28-generic i386
09:03:05.722 INFO - v2.0 [a2], with Core v2.0 [a2]
09:03:06.304 INFO - RemoteWebDriver instances should connect to:
09:03:06.307 INFO - Version Jetty/5.1.x
09:03:06.311 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
09:03:06.324 INFO - Started HttpContext[/selenium-server,/selenium-server]
09:03:06.324 INFO - Started HttpContext[/,/]
09:03:06.381 INFO - Started org.openqa.jetty.jetty.servlet.ServletHandler@12d15a9
09:03:06.382 INFO - Started HttpContext[/wd,/wd]
09:03:06.399 INFO - Started SocketListener on
09:03:06.400 INFO - Started org.openqa.jetty.jetty.Server@228a02

I wanted to run the python script from the console and each time it would stop here and I'd be waiting and nothing would happen.....How do I run the script without a command prompt. So then, I'd interrupt it with 'ctrl C' to get a  "09:03:17.439 INFO - Shutting down...12:39:08.573 INFO - Stopping Acceptor ServerSocket[addr=,port=0,localport=4444]

That "shutting down" message was odd -- how would you run a process if it was shutting down? What the logs above dont say is "The selenium server must be running so keep that process open. Open ANOTHER terminal window and run your python script there". The documentation didnt explicitly mention that localhost must keep the server running in the background-- Its one of the most basic client-server concepts but when you are running stuff on localhost, your client and server are one and the same. Being explicit with this trivia in the documentation would have helped me not waste hundreds of hours searching the selenium website and reading irrelevant blogs which google threw up, irc, emails, etc... So, in TerminalOne,

:~/selenium-remote-control-1.0.3/selenium-server-1.0.3$ sudo java -jar selenium-server.jar
09:03:05.618 INFO - Java: Sun Microsystems Inc. 1.6.0_0-b11
09:03:05.638 INFO - OS: Linux 2.6.24-28-generic i386
09:03:05.722 INFO - v2.0 [a2], with Core v2.0 [a2]
09:03:06.304 INFO - RemoteWebDriver instances should connect to:
09:03:06.307 INFO - Version Jetty/5.1.x
09:03:06.311 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
09:03:06.324 INFO - Started HttpContext[/selenium-server,/selenium-server]
09:03:06.324 INFO - Started HttpContext[/,/]
09:03:06.381 INFO - Started org.openqa.jetty.jetty.servlet.ServletHandler@12d15a9
09:03:06.382 INFO - Started HttpContext[/wd,/wd]
09:03:06.399 INFO - Started SocketListener on
09:03:06.400 INFO - Started org.openqa.jetty.jetty.Server@228a02
09:03:17.439 INFO - Shutting down...
mom@drga:~/selenium-remote-control-1.0.3/selenium-server-1.0.3$ sudo java -jar selenium-server.jar
09:03:36.248 INFO - Java: Sun Microsystems Inc. 1.6.0_0-b11
09:03:36.252 INFO - OS: Linux 2.6.24-28-generic i386
09:03:36.270 INFO - v2.0 [a2], with Core v2.0 [a2]
09:03:36.486 INFO - RemoteWebDriver instances should connect to:
09:03:36.489 INFO - Version Jetty/5.1.x
09:03:36.491 INFO - Started HttpContext[/selenium-server/driver,/selenium-server/driver]
09:03:36.493 INFO - Started HttpContext[/selenium-server,/selenium-server]
09:03:36.493 INFO - Started HttpContext[/,/]
09:03:36.523 INFO - Started org.openqa.jetty.jetty.servlet.ServletHandler@12d15a9
09:03:36.523 INFO - Started HttpContext[/wd,/wd]
09:03:36.533 INFO - Started SocketListener on
09:03:36.533 INFO - Started org.openqa.jetty.jetty.Server@228a02
09:04:30.236 INFO - Checking Resource aliases
09:04:30.260 INFO - Command request: getNewBrowserSession[*firefox, http://localhost:4444, ] on session null
09:04:30.283 INFO - creating new remote session
09:04:30.614 INFO - Allocated session 7cba6a7dadb243618c046ee7fb6c6bc9 for http://localhost:4444, launching...
09:04:30.778 INFO - Preparing Firefox profile...
09:04:34.676 INFO - Launching Firefox...
09:04:38.697 INFO - Got result: OK,7cba6a7dadb243618c046ee7fb6c6bc9 on session 7cba6a7dadb243618c046ee7fb6c6bc9
09:04:38.715 INFO - Command request: open[/selenium-server/tests/html/test_click_page1.html, ] on session 7cba6a7dadb243618c046ee7fb6c6bc9
09:04:38.854 INFO - Got result: XHR ERROR: URL = http://localhost:4444/selenium-server/tests/html/test_click_page1.html Response_Code = 404 Error_Message = Not+found on session 7cba6a7dadb243618c046ee7fb6c6bc9
09:04:38.863 INFO - Command request: testComplete[, ] on session 7cba6a7dadb243618c046ee7fb6c6bc9
09:04:38.863 INFO - Killing Firefox...
09:04:38.933 INFO - Got result: OK on session 7cba6a7dadb243618c046ee7fb6c6bc9
09:09:28.085 INFO - Command request: getNewBrowserSession[*firefox, http://www.irian.at, ] on session null
09:09:28.086 INFO - creating new remote session
09:09:28.088 INFO - Allocated session 97dec9f0b53545acbc9ca3624fc6cbd4 for http://www.irian.at, launching...
09:09:28.165 INFO - Preparing Firefox profile...
09:09:31.873 INFO - Launching Firefox...
09:09:35.599 INFO - Got result: OK,97dec9f0b53545acbc9ca3624fc6cbd4 on session 97dec9f0b53545acbc9ca3624fc6cbd4
09:09:35.604 INFO - Command request: open[http://www.irian.at/selenium-server/tests/html/ajax/ajax_autocompleter2_test.html, ] on session 97dec9f0b53545acbc9ca3624fc6cbd4
09:09:41.698 INFO - Got result: XHR ERROR: URL = http://www.irian.at/selenium-server/tests/html/ajax/ajax_autocompleter2_test.html Response_Code = 404 Error_Message = Not Found on session 97dec9f0b53545acbc9ca3624fc6cbd4
09:09:41.707 INFO - Command request: testComplete[, ] on session 97dec9f0b53545acbc9ca3624fc6cbd4
09:09:41.707 INFO - Killing Firefox...
09:09:41.740 INFO - Got result: OK on session 97dec9f0b53545acbc9ca3624fc6cbd4
10:18:38.252 INFO - Command request: getNewBrowserSession[*firefox, http://www.google.com/, ] on session null
10:18:38.253 INFO - creating new remote session
10:18:38.254 INFO - Allocated session c4b9c7f35ea34d428b50f2f31a6181c2 for http://www.google.com/, launching...
10:18:38.322 INFO - Preparing Firefox profile...
10:18:41.921 INFO - Launching Firefox...
10:18:45.741 INFO - Got result: OK,c4b9c7f35ea34d428b50f2f31a6181c2 on session c4b9c7f35ea34d428b50f2f31a6181c2
10:18:45.800 INFO - Command request: open[http://www.google.com/, ] on session c4b9c7f35ea34d428b50f2f31a6181c2
10:18:47.204 INFO - Got result: OK on session c4b9c7f35ea34d428b50f2f31a6181c2
10:18:47.211 INFO - Command request: type[q, hello world] on session c4b9c7f35ea34d428b50f2f31a6181c2
10:18:47.277 INFO - Got result: OK on session c4b9c7f35ea34d428b50f2f31a6181c2
10:18:47.282 INFO - Command request: click[btnG, ] on session c4b9c7f35ea34d428b50f2f31a6181c2
10:18:47.334 INFO - Got result: OK on session c4b9c7f35ea34d428b50f2f31a6181c2
10:18:47.340 INFO - Command request: waitForPageToLoad[5000, ] on session c4b9c7f35ea34d428b50f2f31a6181c2
10:18:48.359 INFO - Got result: OK on session c4b9c7f35ea34d428b50f2f31a6181c2
10:18:48.365 INFO - Command request: getTitle[, ] on session c4b9c7f35ea34d428b50f2f31a6181c2
10:18:48.411 INFO - Got result: OK,hello world - Google Search on session c4b9c7f35ea34d428b50f2f31a6181c2
10:18:48.416 INFO - Command request: testComplete[, ] on session c4b9c7f35ea34d428b50f2f31a6181c2
10:18:48.417 INFO - Killing Firefox...
10:18:48.434 INFO - Got result: OK on session c4b9c7f35ea34d428b50f2f31a6181c2

ALL this happens on TerminalOne, so keep that window open to check for the above while you are doing steps below.

STEP#1. In TerminalTwo, Change directory to the 'python-client' to run your scripts. Lets test the selenium.py script first. Btw, note that your bash file must contain the PYTHONPATH for all the directories that you run .py scripts from.

:~/selenium-remote-control-1.0.3$ ls
README.txt  selenium-php-client-driver-1.0.1  selenium-dotnet-client-driver-1.0.1  selenium-python-client-driver-1.0.1
selenium-java-client-driver-1.0.1  selenium-ruby-client-driver-1.0.1  selenium-perl-client-driver-1.0.1    selenium-server-1.0.3

:~/selenium-remote-control-1.0.3/selenium-python-client-driver-1.0.1$ python selenium.py

If it returns silently (read, No errors), it means your selenium server is working.

. Try testing another script, test_google.py or test_default_server.py

:~/selenium-remote-control-1.0.3/selenium-python-client-driver-1.0.1$ ls
doc    test_ajax_jsf.py  test_google.py~    selenium.py  test_ajax_jsf.pyc  test_google.pyc selenium.pyc                     test_default_server.py   test_i18n.py  selenium_test_suite_headless.py  test_default_server.pyc  test_i18n.pyc
selenium_test_suite.py  test_google.py

:~/selenium-remote-control-1.0.3/selenium-python-client-driver-1.0.1$ python test_default_server.py
Using selenium server at localhost:4444
ERROR: testLinks (__main__.TestDefaultServer)
Traceback (most recent call last):
  File "test_default_server.py", line 36, in testLinks
  File "/home/me/selenium-remote-control-1.0.3/selenium-python-client-driver-1.0.1/selenium.py", line 764, in open
    self.do_command("open", [url,])
  File "/home/me/selenium-remote-control-1.0.3/selenium-python-client-driver-1.0.1/selenium.py", line 215, in do_command
    raise Exception, data
Exception: XHR ERROR: URL = http://localhost:4444/selenium-server/tests/html/test_click_page1.html Response_Code = 404 Error_Message = Not+found

Ran 1 test in 8.852s

FAILED (errors=1)

:~/selenium-remote-control-1.0.3/selenium-python-client-driver-1.0.1$ python test_ajax_jsf.py
Using selenium server at localhost:4444
ERROR: testKeyPress (__main__.TestAjaxJSF)
Traceback (most recent call last):
  File "test_ajax_jsf.py", line 39, in testKeyPress
  File "/home/me/selenium-remote-control-1.0.3/selenium-python-client-driver-1.0.1/selenium.py", line 764, in open
    self.do_command("open", [url,])
  File "/home/me/selenium-remote-control-1.0.3/selenium-python-client-driver-1.0.1/selenium.py", line 215, in do_command
    raise Exception, data
Exception: XHR ERROR: URL = http://www.irian.at/selenium-server/tests/html/ajax/ajax_autocompleter2_test.html Response_Code = 404 Error_Message = Not Found

Ran 1 test in 13.663s

FAILED (errors=1)

:~/selenium-remote-control-1.0.3/selenium-python-client-driver-1.0.1$ python test_google.py
Ran 1 test in 10.190s


When you are running the above scripts you would see Selenium throw a browser with messages but this is too fast and disappears. In the second terminal,   run your scripts from the directory you've stored them in.


2010 July 14 [Wednesday]

meld it

All *nix machines have the feature allowing you to compare two files --often useful to do a quick 'cmp' or 'diff' on the cli for a file comparision --a good feature for a small script file or documents. However, if you want to compare chunks of code, between two versions, then the readability isnt optimal.

Meld to the rescue!

Meld is a visual diff and merge tool which allows you to compare two or three files located in different directory paths on your local machine and edit them. It allows comparison of upto three folders.

I love useful software written in Python using the PyGTK toolkit. Meld has been packaged for Ubuntu and "sudo apt-get-install meld" would install this small utility which can be accessed via: Application >Programming >Meld Diff Viewer.

Its that simple.

2010 June 17 [Thursday]

howto install funkload on ubuntu8.04 hardy

In between my earlier attempts and patchy internet for almost a week and google searches yielding this:

#0.http://blog.jbglenn.net/search/label/Funkload and

It seemed like a challenge to get funkload working on Hardy but Ben had emailed and commented (thanks Ben :-)) that Funkload and TCPWatch package has to be installed manually for all Ubuntu releases below ver8.10 and its packaged for Debian-lenny.

On a clean Hardy/8.04 system, I tried installing funkload, yet again. So I suppose a proper listing of the steps will be useful to others.


Installing the package dependencies.

i@ubu804:~$ sudo aptitude install python-dev python-xml python-setuptools python-docutils gnuplot


Downloading TCPWatch, extracting and building from source.

i@ubu804:~$ wget http://hathawaymix.org/Software/TCPWatch/tcpwatch-1.3.tar.gz
--13:23:27--; http://hathawaymix.org/Software/TCPWatch/tcpwatch-1.3.tar.gz
; => `tcpwatch-1.3.tar.gz'
Resolving hathawaymix.org...
Connecting to hathawaymix.org||:80... failed: Connection timed out.
--13:26:37--; http://hathawaymix.org/Software/TCPWatch/tcpwatch-1.3.tar.gz
; (try: 2) => `tcpwatch-1.3.tar.gz'
Connecting to hathawaymix.org||:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 13,065 (13K) [application/x-tar]
100%[===================================================================] 13,065; 11.43K/s;
13:26:39 (11.42 KB/s) - `tcpwatch-1.3.tar.gz' saved [13065/13065]

i@ubu804:~$ tar xzvf tcpwatch-1.3.tar.gz

i@ubu804:~$ cd tcpwatch/

i@ubu804:~/tcpwatch$ ls
CHANGES.txt; setup.py; tcpwatch.py
i@ubu804:~/tcpwatch$ python setup.py build
running build
running build_scripts
creating build
creating build/scripts-2.5
copying and adjusting tcpwatch.py -> build/scripts-2.5
changing mode of build/scripts-2.5/tcpwatch.py from 644 to 755

i@ubu804:~/tcpwatch$ sudo python setup.py install
running install
running build
running build_scripts
running install_scripts
copying build/scripts-2.5/tcpwatch.py -> /usr/bin
changing mode of /usr/bin/tcpwatch.py to 755
running install_egg_info
Writing /usr/lib/python2.5/site-packages/tcpwatch-1.2.1.egg-info

i@ubu804:~/tcpwatch$ cd


Installing funkload version 1.12.0.

i@ubu804:~/tcpwatch$ sudo easy_install -U funkload
Searching for funkload
Reading http://pypi.python.org/simple/funkload/
Reading http://funkload.nuxeo.org/
Best match: funkload 1.12.0
Processing funkload-1.12.0-py2.5.egg
funkload 1.12.0 is already the active version in easy-install.pth
Installing fl-credential-ctl script to /usr/bin
Installing fl-monitor-ctl script to /usr/bin
Installing fl-install-demo script to /usr/bin
Installing fl-run-test script to /usr/bin
Installing fl-record script to /usr/bin
Installing fl-build-report script to /usr/bin
Installing fl-run-bench script to /usr/bin
Installing fl-credential-ctl script to /usr/bin
Installing fl-run-test script to /usr/bin
Installing fl-record script to /usr/bin
Installing fl-run-bench script to /usr/bin
Installing fl-monitor-ctl script to /usr/bin
Installing fl-install-demo script to /usr/bin
Installing fl-build-report script to /usr/bin

Using /usr/lib/python2.5/site-packages/funkload-1.12.0-py2.5.egg
Processing dependencies for funkload
Finished processing dependencies for funkload


Installing python-gdchart and python-gdchart2

i@ubu804:~$ sudo aptitude install python-gdchart2
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Building tag database... Done
The following NEW packages will be automatically installed:
The following NEW packages will be installed:
libgdchart-gd2-noxpm python-gdchart2
0 packages upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 87.0kB of archives. After unpacking 352kB will be used.
Do you want to continue? [Y/n/?]
Writing extended state information... Done
Get:1 http://np.archive.ubuntu.com hardy/universe libgdchart-gd2-noxpm 0.11.5-4 [46.7kB]
Get:2 http://np.archive.ubuntu.com hardy/universe python-gdchart2 0.beta1-3.4 [40.3kB]
Fetched 87.0kB in 24s (3608B/s)
Selecting previously deselected package libgdchart-gd2-noxpm.
(Reading database ... 151343 files and directories currently installed.)
Unpacking libgdchart-gd2-noxpm (from .../libgdchart-gd2-noxpm_0.11.5-4_amd64.deb) ...
Selecting previously deselected package python-gdchart2.
Unpacking python-gdchart2 (from .../python-gdchart2_0.beta1-3.4_amd64.deb) ...
Setting up libgdchart-gd2-noxpm (0.11.5-4) ...

Setting up python-gdchart2 (0.beta1-3.4) ...

Processing triggers for libc6 ...
ldconfig deferred processing now taking place
Reading package lists... Done
Building dependency tree
Reading state information... Done
Reading extended state information
Initializing package states... Done
Writing extended state information... Done
Building tag database... Done


Now follow the demo testing steps given here

i@ubu804:~$ fl-install-demo
Extract FunkLoad examples into ./funkload-demo : ...  done.
i@ubu804:~$ cd funkload-demo/xmlrpc/
i@ubu804:~/funkload-demo/xmlrpc$ make test
fl-credential-ctl cred.conf restart
Starting file_credential server at http://localhost:44401/ as daemon.
fl-run-test test_Credential.py -v
test_credential (test_Credential.Credential) ... Ok

Ran 1 test in 0.038s

fl-credential-ctl cred.conf stop
Server http://localhost:44401/ is stopped.


Make bench

i@ubu804:~/funkload-demo/xmlrpc$ make bench
Starting file_credential server at http://localhost:44401/ as daemon.
Starting monitor server at http://localhost:44402/ as daemon.
fl-run-bench -c 1:20:40:60:80:100 -D 10 test_Credential.py Credential.test_credential
Benching Credential.test_credential
Check all credentiald methods


* Current time: 2010-06-17T14:54:09.755672
* Configuration file: /home/i/funkload-demo/xmlrpc/Credential.conf
* Log xml: /home/i/funkload-demo/xmlrpc/credential-bench.xml
* Server: http://localhost:44401/
* Cycles: [1, 20, 40, 60, 80, 100]
* Cycle duration: 10s
* Sleeptime between request: from 0.1s to 0.2s
* Sleeptime between test case: 0.5s
* Startup delay between thread: 0.05s


Cycle #0 with 1 virtual users

* Start monitoring localhost: ... done.
* Current time: 2010-06-17T14:54:09.773675
* Starting threads: . done.
* Logging for 10s (until 2010-06-17T14:54:19.830918): ........ done.
* Waiting end of threads: . done.
* Waiting cycle sleeptime 1s: ... done.
* Stop monitoring localhost:  done.
* End of cycle, 12.62s elapsed.
* Cycle result: **SUCCESSFUL**, 8 success, 0 failure, 0 errors.

Cycle #1 with 20 virtual users

* Start monitoring localhost: ... done.
* Current time: 2010-06-17T14:54:22.385506
* Starting threads: .................... done.
* Logging for 10s (until 2010-06-17T14:54:33.519986): .............................................................................................................................................................................. done.
* Waiting end of threads: .................... done.
* Waiting cycle sleeptime 1s: ... done.
* Stop monitoring localhost:  done.
* End of cycle, 14.33s elapsed.
* Cycle result: **SUCCESSFUL**, 174 success, 0 failure, 0 errors.

Cycle #2 with 40 virtual users

* Start monitoring localhost: ... done.
* Current time: 2010-06-17T14:54:36.716379
* Starting threads: ........................................ done.
* Logging for 10s (until 2010-06-17T14:54:49.032317): ............................................................................................................................................................................................................................................................................................................................ done.
* Waiting end of threads: ........................................ done.
* Waiting cycle sleeptime 1s: ... done.
* Stop monitoring localhost:  done.
* End of cycle, 14.59s elapsed.
* Cycle result: **SUCCESSFUL**, 316 success, 0 failure, 0 errors.

Cycle #3 with 60 virtual users

* Start monitoring localhost: ... done.
* Current time: 2010-06-17T14:54:51.301751
* Starting threads: ............................................................ done.
* Logging for 10s (until 2010-06-17T14:55:04.779492): ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ done.
* Waiting end of threads: ............................................................ done.
* Waiting cycle sleeptime 1s: ... done.
* Stop monitoring localhost:  done.
* End of cycle, 15.76s elapsed.
* Cycle result: **SUCCESSFUL**, 464 success, 0 failure, 0 errors.

Cycle #4 with 80 virtual users

* Start monitoring localhost: ... done.
* Current time: 2010-06-17T14:55:07.066691
* Starting threads: ................................................................................ done.
* Logging for 10s (until 2010-06-17T14:55:21.814678): ................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................ done.
* Waiting end of threads: ................................................................................ done.
* Waiting cycle sleeptime 1s: ... done.
* Stop monitoring localhost: done.
* End of cycle, 20.69s elapsed.
* Cycle result: **SUCCESSFUL**, 672 success, 0 failure, 0 errors.

Cycle #5 with 100 virtual users

* Start monitoring localhost: ... done.
* Current time: 2010-06-17T14:55:27.761091
* Starting threads: .................................................................................................... done.
* Logging for 10s (until 2010-06-17T14:55:43.883081): .............................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................................. done.
* Waiting end of threads: .................................................................................................... done.
* Waiting cycle sleeptime 1s: ... done.
* Stop monitoring localhost: done.
* End of cycle, 20.43s elapsed.
* Cycle result: **SUCCESSFUL**, 686 success, 0 failure, 0 errors.


* Success: 2320
* Failures: 0
* Errors: 0

Bench status: **SUCCESSFUL**
fl-build-report credential-bench.xml --html
Creating html report: ...done:
Server http://localhost:44402/ is stopped.
Server http://localhost:44401/ is stopped.

Step6: Install Zope (installation instructions) and create a sandbox.

i@ubu804:~/funkload-demo/simple$ cat README.txt
FunkLoad demo/simple
$Id: README.txt 53544 2009-03-09 16:28:58Z tlazar $

This is a simple FunkLoadTestCase demonstration.

It requires an web test server (configuration is done for an apache2
default install)

WARNING: You should *not* run this script against a server that is not under
your responsablity as it can result a DOS in bench mode.

1/ Modify the Simple.conf file

  Set the [main] url and pages keys

2/ Test it

verbose mode::

fl-run-test -v test_Simple.py

debug mode::

fl-run-test -d test_Simple.py

view the downloaded page in real time using firefox::

fl-run-test -V test_Simple.py

check performance of a single page::

fl-run-test -l 4 -n 100 test_Simple.py


I have yet to finish testing so I'll update this entry later as its almost midnight and as usual google threw more to-read stuff for laters... yum !
0. funkload-modules
0. funkload-test-in-few-minutes
0. funkloadtests/INSTALL.txt
0. plone-collective.recipe.funkload
0. set up funkload to do functional tests on a SOAP web service
0. funkload build script
0. collective funkload tests, thread on a plone list
0. plone sprint report
0. functional load testing notes

A nice-to-have feature would be a screen key recording feature in funkload :)

2010 June 13 [Sunday]

PyCon-India-2010 CFP

After much debate on the list, it was decided some months ago to hold Pycon-India 2010 in Bangalore....Yay !!

Its scheduled to be held at MS Ramaiah Institute of Technology on the weekend of 25th and 26th of September 2010. The call for proposals has been announced on the PyCon blog site at http://pycon.blogspot.com/2010/06/pycon-india-2010-call-for-proposals.html.

You can tweet, dent and blog to spread the word around and as the event draws near there will be calls for volunteers on the mailing list, so do pitch in. Usually I keep away from some of the Indian communities which are riddled with a handful of rude jerks (whose favorite pass-time is flaming another person), or arrogant control freaks and even cyber-stalkers !

I've never understood how a silent majority can allow a loud-mouthed minority to overshadow all the good work they do. Beats comprehension!!

Well, thusfar, pycon-IN is one space I find different -- The event is community driven and run by volunteers, mailing list discussions can get hot and yet its open and transparent. The part I liked the most-- almost everything, including finances are open and available to mailing list members -- now THAT is very much unlike _some_ Indian event(s) with sekrit cabals pulling the financial strings behind a "community" veneer. Its such a welcome change that I try to pitch in when I can.

2010 June 6 [Sunday]

funkload installation on ubuntu lucid and hardy

Crediting my earlier failed installation attempt to the owl-like-shift for most of last week, yesterday, I started afresh on Ubuntu Hardy.

Ubuntu Hardy

I tried the installation on Ubuntu Hardy, which is the environment in which funkload will be installed for use. Installing tcpwatch-httpproxy removes procmail and sendmail.

Not good. Those packages are required by other parts of the system. Strangely this does not happen on Ubuntu 10.04, for which I repeated the installation to test separately. Earlier Ben had left a comment offering his help so I've emailed him the logs and am hoping to solve this problem and post another entry about that.

$sudo aptitude install tcpwatch-httpproxy --without-recommends
Reading package lists... Done
Building dependency tree      
Reading state information... Done
Reading extended state information     
Initializing package states... Done
Writing extended state information... Done
Building tag database... Done            
Couldn't find any package whose name or description matched "tcpwatch-httpproxy"
Couldn't find any package whose name or description matched "tcpwatch-httpproxy"
The following packages are unused and will be REMOVED:
  procmail sendmail-base sendmail-cf sensible-mda
0 packages upgraded, 0 newly installed, 4 to remove and 0 not upgraded.
Need to get 0B of archives. After unpacking 3191kB will be freed.
Do you want to continue? [Y/n/?]
Writing extended state information... Done
(Reading database ... 151156 files and directories currently installed.)
Removing sensible-mda ...
Removing procmail ...
Removing sendmail-base ...
Cleaning up the queues...find: /var/spool/mqueue: No such file or directory
Removing sendmail-cf ...
Reading package lists... Done            
Building dependency tree      
Reading state information... Done
Reading extended state information     
Initializing package states... Done
Writing extended state information... Done
Building tag database... Done            

Ubuntu Lucid (10.04)

The experience of installing funkload on Lucid was a little better than Hardy, which was a small step ahead. Even if the installation failed, I tried the test-runner but the tests failed and I wanted to try it again with virtualenv. Likewise, the modules was not loading in TestRunner

(funkload)me@ubuntu10.04:~$ fl-run-test -v myFile.py
Traceback (most recent call last):
  File "/home/me/.virtualenvs/funkload/bin/fl-run-test", line 8, in <module>
    load_entry_point('funkload==1.12.0', 'console_scripts', 'fl-run-test')()
  File "/usr/local/lib/python2.6/dist-packages/funkload-1.12.0-py2.6.egg/funkload/TestRunner.py", line 483, in main
  File "/usr/local/lib/python2.6/dist-packages/funkload-1.12.0-py2.6.egg/funkload/TestRunner.py", line 342, in __init__
  File "/usr/local/lib/python2.6/dist-packages/funkload-1.12.0-py2.6.egg/funkload/TestRunner.py", line 352, in loadTests
  File "/usr/lib/python2.6/doctest.py", line 2419, in DocFileSuite
    suite.addTest(DocFileTest(path, **kw))
  File "/usr/lib/python2.6/doctest.py", line 2338, in DocFileTest
    doc, path = _load_testfile(path, package, module_relative)
  File "/usr/lib/python2.6/doctest.py", line 219, in _load_testfile
    return open(filename).read(), filename
IOError: [Errno 2] No such file or directory: '/home/me/myFile'

Next it was 'make bench' which failed. So too with BenchRunner.

(funkload)me@ubuntu10.04:~$ fl-run-bench -u http://localhost:8080 -c 10:20 -D 30 myFile.py MyTestCase.testSomething
Traceback (most recent call last):
  File "/home/me/.virtualenvs/funkload/bin/fl-run-bench", line 8, in <module>
    load_entry_point('funkload==1.12.0', 'console_scripts', 'fl-run-bench')()
  File "/usr/local/lib/python2.6/dist-packages/funkload-1.12.0-py2.6.egg/funkload/BenchRunner.py", line 606, in main
    bench = BenchRunner(args[0], klass, method, options)
  File "/usr/local/lib/python2.6/dist-packages/funkload-1.12.0-py2.6.egg/funkload/BenchRunner.py", line 220, in __init__
    mmn_encode(method_name, 0, 0, 0), options)
  File "/usr/local/lib/python2.6/dist-packages/funkload-1.12.0-py2.6.egg/funkload/BenchRunner.py", line 123, in load_unittest
    module = __import__(test_module)
ImportError: No module named myFile

2010 June 4 [Friday]

searching mailing lists

If you are a Mailman user please take a minute to help improve the Archives by answering this short survey. The survey asks you to name which list you searched and I had asked Terri why this should matter at all as I am subscribed as a user to hundreds of Linux-related mailing lists which are a mix of public archives, private archives and no archives or those that are archived via gmane, etc.... This makes it harder to answer for each list as the search mechanism is different for each. She replied that answering this survey question was not compulsary, type "I don't know.", but its kept there because it tells them if people are using a standard, default mailman setup or something different like gmane.

Yaniv has blogged about searching mailing list archives offline mode. If you are using a mobile connection in India, it would involve downloading chunks of data and then searching your directory offline using keywords. As I mentioned earlier the search mechanism varies for online mailing lists using mailman. If you use google you can specify the "site" + the keywords. But what if you dont know whether the list has that information of which month and year its archived under. What if your list has private archives? --This search is a wee bit harder than open mailing lists as you need to be subscribed to the list to be able to access the archives. If its a secure 'https' server, you cannot open multiple tab instances to search, and so on...

Searching mailing list archives is not impossible. Every one of us uses google and we all know how easy and/or hard it is to find what we are looking for -- finding relevant information which is also correct and fulfills your needs is a lot harder than we think. If I am looking for a particular "device driver" that does not allow wi-fi to work on my laptop, google might bring out a relevant page (including mailing list discussions) which may be too old, in that, they may ask me to manually doanload and install the "device driver" but the latest distro version I use may have solved the problem with a downloadable installer.

Probably the engine might search and list the pages by the Date and UTC timings but my point was that small things like these can make a big difference in the amount of time we spend looking for information. Machines or should I say the algorithms powering them can only do what we tell them to do. They are intelligent but not there yet.

2010 June 3 [Thursday]

funkload installation fail

I was analysing various tools for web-testing and tried out funkload - a functional, load web tester in Python.

$sudo easy_install -f http://funkload.nuxeo.org/snapshots/ -U funkload (and "sudo easy_install -U funkload" results are below:)
UserWarning: Unbuilt egg for setuptools [unknown version]
UserWarning: Unbuilt egg for setuptools [unknown version]
self.local_index = Environment(self.shadow_path+sys.path)
Searching for funkload
Reading http://pypi.python.org/simple/funkload/
Reading http://funkload.nuxeo.org/
Best match: funkload 1.12.0
Processing funkload-1.12.0-py2.6.egg
funkload 1.12.0 is already the active version in easy-install.pth
Installing fl-credential-ctl script to /usr/local/bin
Installing fl-monitor-ctl script to /usr/local/bin
Installing fl-build-report script to /usr/local/bin
Installing fl-run-test script to /usr/local/bin
Installing fl-record script to /usr/local/bin
Installing fl-install-demo script to /usr/local/bin
Installing fl-run-bench script to /usr/local/bin
Installing fl-credential-ctl script to /usr/local/bin
Installing fl-run-test script to /usr/local/bin
Installing fl-record script to /usr/local/bin
Installing fl-run-bench script to /usr/local/bin
Installing fl-monitor-ctl script to /usr/local/bin
Installing fl-install-demo script to /usr/local/bin
Installing fl-build-report script to /usr/local/bin
Using /usr/local/lib/python2.6/dist-packages/funkload-1.12.0-py2.6.egg
Processing dependencies for funkload
Finished processing dependencies for funkload

$ fl-install-demo
Extract FunkLoad examples into ./funkload-demo : ... done.

Googling showed that Debian packages were 1.6.0 but easy_install pulls 1.12.0, hmm... continued with installing the dependencies:

$sudo apt-get install python-setuptools python-xml python-dev gnuplot (if you want the graphs)

$ cd funkload-demo/xmlrpc/
~/funkload-demo/xmlrpc$ make test

fl-credential-ctl cred.conf restart
Starting file_credential server at http://localhost:44401/ as daemon.
fl-run-test test_Credential.py -v
test_credential (test_Credential.Credential) ... FAIL
FAIL: test_credential (test_Credential.Credential)
Traceback (most recent call last):
 File "/usr/local/lib/python2.6/dist-packages/funkload-1.12.0-py2.6.egg/funkload/FunkLoadTestCase.py",
line 868, in __call__
File "/home/mom/funkload-demo/xmlrpc/test_Credential.py", line 21,
in test_credential
description="Check getStatus")
File "/usr/local/lib/python2.6/dist-packages/funkload-1.12.0-py2.6.egg/funkload/FunkLoadTestCase.py",
line 417, in xmlrpc
raise SocketError("Can't access %s." % url)
error: Can't access http://localhost:44401/.
Ran 1 test in 0.007s
FAILED (failures=1)
make: *** [credential_test] Error 1

Apparently the version checked out via " sudo apt-get install -f http://funkload.nuxeo.org/snapshots/ -U funkloadinstall" is messed up -- the port number is weird.

Tried the same installation as blogged here and then I repeated the whole process with virtualenvwrapper for good measure. Virtualenv was a nicer place to try testing if each *.py file worked or not. Atleast some of the .py files ran and errors reduced but the one consistent error was the high port number. Strange that the Install file (or was it the Readme file?) lists localhost on port "http://localhost:33301/".

So although both installation methods failed spectacularly i wanted to document all the stuff that i tried for my reference. After an 18-hour day, blogging is the last thing on my mind but very often when I do some stuff, am tired after these marathon days, move on as i'm tired and dont document it. The next time I want to replicate the _exact_ method i followed earlier, I waste more time digging out stuff. This is especially true with eggs which break easily and i'm a vegetarian who dislikes omelette ;)

2010 April 24 [Saturday]

python in scientific computing workshop

Fossee is conducting a "Python in Scientific Computing" workshop from April30 to May01,2010.


Sir M Visvesvaraya Institute of Technology,
Krishnadeveraya Nagar, Hunasamranhalli, NH-7,
Via- Yelahanka, Bangalore-562157, Karnataka, India



Free, python beginners are welcome. However, registration is required and you can  register at mvit [dot] eventbrite [dot] com. NOTE: Please register only if you are SURE you'll be able to attend on both the days.

They have a limitation on the number of computers, so you should bring your laptop if you can. For more information please email them at workshops [dot] mvit [at] gmail [dot] com.

2010 April 22 [Thursday]

python lug meetup on 20100425


Bangpypers, aka Bengaluru/Bangalore Python meetup is scheduled for Sunday, 2010apr25.

Time:  1500 Hrs onwards.

TenXperts office in Koramangala. On Hosur Main Road opposite Star Bazaar there is a small cross road (attached to Robert Bosch's compound). TenXperts office is on that road above Innovative Cars shop on the first floor.

Here is the map<http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q=robert+bosch+koramangala&sll=12.936987,77.612818&sspn=0.004298,0.009645&ie=UTF8&hq=robert+bosch&hnear=Koramangala,+Bengaluru,+Karnataka,+India&ll=12.939067,77.612658&spn=0.016145,0.038581&z=15>

Agenda:   This meet will be focussed on taking an existing floss project and working on it. Current suggestions are Pygments and a Python standard library module for unit tests, but feel free to suggest and/or work on your own choice of any floss'y python project.  If you are new to Python, you are most welcome to come and learn. The idea is to get a local community along the lines of dojorio.org [English translation].

2010 April 18 [Sunday]

virtualenvwrapper.hook_loader error

Eversince upgrading and installing virtualenvwrapper which now has support for all bash shells, I get the following error when the terminal is invoked:

virtualenvwrapper.sh: Could not find Python module virtualenvwrapper.hook_loader using VIRTUALENVWRAPPER_PYTHON=/usr/bin/python. Is the PATH set properly?

I have not seen this error in the older virtualenvwrappers, and I am wondering if it has anything to do with the way python is packaged in Ubuntu? or something else?

Doug writes about extending wrappers, BUT ...But...but, I have not defined a source hook for it and nor am I extending it. Its vanilla, invoked with "mkvirtualenv projectname", "workon" or should that change too? Yeah, Virtualenvwrapper works but I dont like seeing this error message each time the shell is invoked. Its annoying.


Doug left a comment and I had mailed him that by cloning his repo, I was "doing it wrong". And, what went wrong? This:
0. Cloning doug's repo with hg clone http://bitbucket.org/dhellmann/virtualenvwrapper --which downloaded it to the users home directory. Ex. /home/me.
1. Downloading http://www.doughellmann.com/projects/virtualenvwrapper/ -- it puts the tar.gz file in the directory that one specified in the Firefox settings.

The correct method:

$ sudo easy_install pip

$ sudo pip install virtualenvwrapper which installed a copy of the script in /usr/local/bin and the support libraries are placed in /usr/local/lib/python2.6/dist-packages.

There is a command reference too and during my search I found a wontfix bug which explains why users will have to set a path themselves.

2010 March 11 [Thursday]


It r0cked....an amazing experience that got over even before it started (or so it seems) when time flew past so quickly that each day at Atlanta now seems like a blurry dream.  Each day (moment?), there was an overflow of so many interesting things to learn and absorb, before and after b'fast we had there were lightning talks and at the end of the day too just before the keynote speech you have 5 minutes on stage with your slides -- less likely that you get to lull the audience into slumber in five minutes ;).

Besides, there were open spaces, sprints (Sunday evening onwards), and poster sessions -- which was very interesting as it allows the participants to talk to the presenter and exchange ideas, ask questions, clarify or even suggest a new line of thought. Carl had put up a poster session on Indic languages and there he was drawing huge crowds in an already overcrowded hall. I met a professor and another news broadcaster who were interested and shared their woes with devanagari script and the poor unicode handling by free software in general. 

There was tons of swag flowing around and the mandatory single negative incident at the conference which Van handled very professionally. Onstage, he apologised on behalf of the PSF to everyone present in the hall. I had attended the keynotes and talks on Saturday and Sunday, attended the Chairmans party and met a lot of folks but personally speaking, the closing keynote presentation on 20100221 by Antonio Rodriguez kicked ass. He spoke about giving commit access to everyone and he meant EVERYONE -- even folks from the marketing and sales team in his startup got commit access. Wow, just WOW...HUGE amount of trust that :-)

Ofcourse I did the usual tourist-y stuff: walked around the Olympic park ; visited the Coke museum and tasted 64 flavors of coke ; Thomas, Yarko (who won the community service award. Yay, congrats :)) and me (i even cracked my knee for good measure) dined at Vegan soulfood, a chain of US restaurants run by African Hebrews -- HIGHLY recommended!!

BUT the most memorable and fun time was spent in the Georgia Aquarium-- its the world's largest aquarium. The Beluga whales had just arrived and were acclimatising. However, I got to touch sting-ray's and sharks (yeah i really did), clicked tons of pics but the sea-otters...gosh, they stole my heart :) We didnt know that they put on a show and honestly I could have stood there all my life and fallen in love all over again at their antics. Here is a video of those cute animals high-fiving. I miss them :(

I am thrilled that I got to meet a lot of people I knew online and met even more interestingly intelligent people too. The wonderful community that surrounds and makes Pycon such a memorable experience deserves full marks. Words are inadequate to describe an experience that is best experienced live :)  It simply r0cked.

2010 March 5 [Friday]


Note to all readers: Its been weeks since I blogged and having started this entry roughly two weeks ago (20100219 21:43, precisely) but thanks to Broadcomm's proprietary bcm43x drivers meant wifi issues and I wasted a lot of time jumping hoops, and later downgraded the kernel version, time that could have been used to listen to more talks or even blog and tweet about how much fun pycon was! Broadcomm, dont be evil. I am less inclined to modify the older writing so here are some "as is" thought bits about my first pycon experience!!

I reached Atlanta after 4pm on thursday afternoon and Sylvia and me went straight to the Chicago room to volunteer for bag-stuffing and there I was rushing a guy ahead in line, little realising that it was CarlT who recognized me but I was so fixated on the task at hand that I didnt notice whom i was talking to. Yikes, assigning nicks to faces is not my strength! My nick generated some curiosity and left many people wondering how to read it --i had entered it in devanagari script but the glyphs didnt render it as it should " स्वक्ष " which triggered a mini discussion of sorts on python and unicode handling.

Next, it was onto the swag T-Shirts and since Greg had just 2 PP templates we had only two teams taking a go at it. Sylvia, me and Wei (and later various volunteers) had a simple humanized-robo process to maximize folded shirts output per minute. This drew tons of pycon gawkers and many onlookers wanted to pitch in and have a go at folding t-shirts. Greg's wife and daughter came to watch too. Our efforts were rewarded with yummy pizzas (yeah they had vegan pizza too) and drinks. It was a lot of fun for my first day and its really heart-warming to see icons who should be UP there, stand and work with you. The simplicity and lack of pride is endearing.

Python is for Girls

20100219, Friday, (the first day of) the conference, was kicked off by Van Lindberg and Steve Holden introducing the PSF and its objectives and stressing on the PSF's focus on diversity. This was echoed by GvR who started off his keynote for Pycon2010 wearing a t-shirt that had the python logo and "python is for girls", sent to him at Google by an anonymous person. Hmm...I am curious to know who is the $AnonPerson@Google !!

GvR is one speaker that I enjoyed listening to, for the casual twitter-feed keynote and yet informative speaking style sans slides. And no, GvR didnt wax eloquent on the "state of CPython" although that was what was listed on the guide. For someone of his stature, the lack of vanity in his community interactions is endearing and if you are not already a part of this space, you'd be inspired to want to chip in and do something. Another noteworthy aspect, the organizers make no bones about pycon being a commercial event. Unlike "some" private and commercial Indian events, there is no BS about claiming to be a "floss" event with shady financial(s) that are not privy to the community that makes the event, and neither is there a cabal that controls and pulls strings from behind the scenes.  Their honest and transparent process is admirable, akin to other community conferences.

A round of snacks later it was over to many luminary speakers from the Python community and the first talk I attended was "The Mighty Dictionary" by Brandon Craig Rhodes and then I attended, Managing the world's oldest Django project by James Bennett who explained why it was such a bad idea to have different branches for each of your clients which will lead to an unwieldy and incompatible codebase over a period of time. Deployment headaches with each server-client network running its own software instance. Their solution was "hosted service". He spoke about unit testing, its importance and how they used spidering tools to test sites for all hosted apps. Saying "No" to customizations and instead creating re-usable customized apps from some requests. IIRC, his parting shot was "FLOSS, Internal code becomes external dependency. Floss jettisons legacy code."

The vegan lunch was fabulous but more about the post-lunch sessions. They were, Python 3: The Next Generation by Mr. Wesley j. chun ; Maximize your program's laziness by Dr. David Q Mertz ; The Ring of Python - Holger Krekel. The latter was a talk I simply loved so go and watch the videos which are online and linked via the pycon website. This is another aspect of pycon that I love --Sharing videos with those that could not attend pycon. They dont assume the worst about people, as in, people will not attend the event if talks are made available online (and hence the organizers wont make money when attendance drops), not including other arrogant (if not) silly excuses that I have heard from certain Indian events.

In 2010, attendance topped previous pycon's. It was announced that this year diversity was at its peak with 113.3 women attendees.  No, I am not sure how 0.3% women attended pycon :). Danny blogged and Guido tweeted, and wrote to the list endorsing his support and thoughts on "diversity, people representing other countries and minority groups". I did make it a point to thank him and all the PSF member/organizers that I could remember for the PSF sponsorship, enabling me to attend. GloriaW deserves a special mention and a BIG thankyou for handling hyatt reservations for a bunch of women who were room sharing.

I also met Noufal and Satya (who was our room-share partner), who were also sponsored by the PSF this year. Satya was telling us about her horrid experience with the legendary US B1-visa process in India and the running around she had to endure. Hmmm, why am i not surprised at the horrid experience she had?! It was incredibly funny to hear that the officer asked her to speak in python....doh!! My immigration officer was a hulk at 6'4" and the only intimidating question he asked me was "So, is python like C language?" and before I could speak he cuts in with "Never mind, I'd never understand what you'd say. You are good to go."

LOL, more later.

2010 January 19 [Tuesday]

january meetup

Bangpypers Bengaluru Meetup

DATE+TIME:: 20100123 (Saturday) at 1530 Hrs.

VENUE:: ThoughtWorks Technologies ; 2nd Floor, Tower C, Corporate Block, Diamond District, Old Airport Road, Bangalore.


1. BaijuM will give a demo about using collective.buildbot for setting up buildbot (Continuous integration server) 

2. Noufal will give a short intro talk about setting up a buildbot at his workplace for CI using py.test, being customised to run the tests.

2009 November 17 [Tuesday]

bangpypers lug meetup

Date and Time : At 16:00 hrs on 2009Nov22 (Sunday).

Venue :  ThoughtWorks Technologies ; 2nd Floor, Tower C, Corporate Block ; Diamond District, Old Airport Road ; Bengaluru

Proposed agenda: R.Mahadevan's talk on python bindings for llvm.

2009 October 7 [Wednesday]

more PyCon-IN-2009 moments

Finally both the key organisers decided to blog and its always nice to read detailed posts. 

Shyamshankar : "......The next session, was mine...... on “Idiomatic Python”.......The focus of the talk was ........ Python 3.x. .....there should have been more core language talks......."

Kenneth writes : "....my first experience of interacting with with a non-foss group,...... I stayed cool ........ During the testing period, there were a lot of suggestions, comments and criticism, by and large constructive and helpful, although some of them were totally inane...."

My tiny (almost zero) contributions were testing his app online, so i hope any comments / suggestions didnt sound inane ^_^

Noufal modestly opines : ".......and I don’t think I’m being immodest if I said that I did a decent job. The credit for the whole event though belongs to the entire community since everyone pitched in at the right time to keep the whole thing running smoothtly. Give yourselves a hand..........."

Although I couldnt make it, all the attendees who blogged about the conference had only good things to say about pycon india 09. That, in my view, is the best credit any event organiser can get.

2009 October 3 [Saturday]

PyCon India 2009

Last weekend, when I got calls asking which talk I was attending at Pycon-India, I kicked myself for not being in Bangalore and missing the event which we started planning in Feb'09.

Parthan opines : "........When the first discussions happened, everybody doubted it might become just another conference discussion that will never happen. It has taken the support and sheer determination of quite a number of people to make it happen. We just wanted to try it once, to at least see how the Python community responds to such initiatives and it has ended up being more than encouraging to make this a yearly event......."

This shows that a true-blue COMMUNITY event can be pulled off and flawlessly executed in around six months, where all the planning was online via lists and irc, with 3-4 ground meets. Cool ! The folks who deserve to be congratulated are Kenneth, Noufal, Anand. Kamal Govindraj, Ramdas, Anand, Senthil, Indudhar, JANASTU, and many other people whose names I have missed (and didnt mean to) here. Do holler if you helped out.

Here are some more blogger opinions.

Shailesh Kumar : "....It was first Python Conference in India and I felt inclined enough to go all over to Bangalore from my home place Noida and attend the conference....."

Jaganadh : "...talk by Anand B Pillai  on "Python tools for Network Security". ...The next talk was by Senthil Kumaran on "Algorithms in Python".....Really his presentation style was rocking one!...."

Baiju shares some pyctoral moments by Ponnusamy.

Raji : "....my first experience ...proud to be the only female to give a talk in Pycon India 09....my friend Shrini who encouraged me...."

PYCON.Blog : " ....Over 350 delegates and 30+ speakers attended the event.... A notable instance is the participation of 75 students from the Rajalakshmi Engg College in the neighboring city of Chennai, who just hopped on a train to Bangalore en-masse....."

Abhishekh Mishra : ".........Idiomatic Python and other language features - What an excellent talk on the language by Sykora. Like, did you know a try... except block could be faster than an if.. else in a loop. This has been tested by Sykora. Differences between upcoming Python 3.x and 2.x were clearly highlighted,.............."

Arun : ".........This was my first lightning talk.......creating a simple casual game using Pyglet called ‘FruitCatch’..........."

Pavan : " .......I spotted a snake in the green lawns of IISc,......I thought IISc would have a good infrastructure, but when I went there all I saw was smelly loos, broken benches, ....connectivity was very good, the WiFi was also pretty good...."

Chandan : "......Hall L4. This session was given by Senthil....the implementation of Sieve of Eratosthenes....brief overview of various sorting techniques...bisection sort , tim sort of python, sorted function and timer function. This session was very informative...."

Harish : "....The fifth talk was on ‘Automated Testing of Web Applications’ by Sai Venkatakrishnan. The talk focused on the popular web application testing tools available in Python......"

Lakshman :" ......There was a talk on design patterns that explained various design patters: Singleton, Iterator, Factory Method, Strategy, observer, decorator. Creating a singleton using decorators is a nice little thing I got out of this talk....."

Three months to go for 2010, and among other things, I look forward to SCIPY from 12--17Dec2009, comprising of a conference, tutorials and Sprints which I hope to attend for 2-3 days atleast.

2009 September 4 [Friday]

Python wants diversity and INpycon

Some months ago Aahz started the diversity list which has had discussions on a diversity statement which will be put forth to the PSF for approval (or did GvR ack it already? I am too lazy to wade through the emails now) which would be incorporated on the main python.org site. The diversity wiki page has a bunch of reading links already -- a lot more exhaustive than the UW wiki page. Way nicer page to point as 101 lessons for cluless humans!

The py-world is large space and while it may not be possible to jet halfway across the globe to attend a pyconf in the US or EU, we have a better way to communicate seamlessly via blogs -- planets aggregating blogs have always been an easy way to showcase and increase the voices within any community. Yeah, planet.python.org it is, but not all the folks around the world are there and what about folks who dont want to have the overhead of maintaining a blog --yeah, ask this lazy blogger about that feeling ...pfft !

Presenting "python-open-mike" -- your chance to be heard. So all ye python users having anything pythonic to say can simply email their thoughts to : <post@python-open-mike.posterous.com> to be heard. Its that simple.  Btw, there was a call for moderators for open-mike so if you are reading this and want to volunteer, shoot a mail to diversity AT python.org

Now onto the next big event this month :: INpycon ! Gee, september is here already !?Its the first conf that i'm helping organise simply because i like the chilled out +ve attitude -- a scarcity if you know what i mean ;)

Well, the sponsors team was lucky to bag Zeomega and Thoughtworks, which have already pitched in generously as sponsors. However we are still open to the idea of more corporate sponsors that are into Python. So if your company uses Python extensively and you would like to pitch in financially, here are some open sponsorship slots :

Premium Sponsors: (INR.50k+) - you are welcome to contribute more

What you get :
 - Name, Blurb on our website
 - Link back to company from our website
 - Dedicated Banners at venue
 - Mentions on our main banner under 'Sponsors'
 - Stall at venue
 - Access to contact information of delegates
 - Company brochures in swag kits

Associate Sponsor: (INR.25k)
 - Name on our site with a link back to their site
 - Name on our main banner under 'associate sponsor'

Associate: (INR.10k) [Mostly for individual donations]
 - Name on our site (no link back)

So if you want to become a part of the local Python community and sponsor this event, please mail me " vid AT svaksha d-o--t c-o-m " or leave a comment on this blog. (PS. I check emails more often than blog comments so the former will gt you a faster response from me.)

Btw, online registrations for the first Indian Pycon scheduled to take place from 26-27September 2009 at IISc, Bangalore has not yet closed. If you have not registered as a delegate log on to the pycon-india website to register online. Now!!

UPDATE : http://python-open-mike.posterous.com/my-post-on-python-wants-diversity-and-inpycon