Adam Christian

Writing about Life, Business and Technology - the way I see it.

Entries Comments



Category: Python


Windmill Gets a Facelift for 1.0Beta1

19 November, 2008 (08:11) | Firefox, JavaScript, Mozilla, Open Source, Python, Technology, Web, Windmill, automation, windmill-dev | By: adam

Working up to the Windmill 1.0 Beta 1 Release, I finally had the opportunity to put some time into making the IDE (that a lot of you live in when in test writing mode) a little bit nicer to look at.

The IDE has been growing organically since 0.1 and there was a lot of functionality hacked into it that wasn’t in the original game plan, so I did what I could to improve the beauty of the CSS/Layout as well as the whole mess of code behind it.


Launching
If you have used our latest release, or are running trunk you know that we have significantly improved the load times for the Windmill IDE. By compressing the JavaScript when the service is instantiated we can simply hand the IDE window one file that contains the vast majority of the required code.

The reason that this makes such a huge performance difference is because we are loading the source via the local windmill proxy and the data size size had very little impact, the overhead was in the browser two connection limit. When you have to pull down ~30 files two at a time it takes its toll and made the IDE feel very sluggish and more like a web page loading than an IDE.

In the process of figuring out exactly what was slowing down the launch time we added some more informative messages and output so you don’t sit there staring at a twirling circle graphic wondering if anything is happening. And to make the experience even more fun, I couldn’t help but implement a progress bar.

General Layout
I removed the toolbar at the bottom of the screen, which I felt it was an irritation for test editing (especially with the drag and droppable actions). It is now in a drop down menu at the top right of the screen, with the rest of the UI access to IDE functions.

Settings and Firebug Lite Improvements
The settings dialog has continued to improve by implementing more useful defaults, adding new options, removing deprecated options and simply making it just look better. Thanks jQuery UI!

Firebug Lite has been a very popular feature since we first announced it, which has led to a handful of bug fixes over the last month. The most major of these was that the initial Windmill implementation of Firebug Lite required you to have Internet access as it was using resources that were hosted elsewhere.

These have since been copied to our source tree and are made available by the Windmill server so you can happily introspect your Web Apps JavaScript while writing tests on your Intranet.


Output and Performance
Instead of writing all the raw windmill output to the output and performance tabs there is now an array called windmill.errorArr, where all terrible errors and warnings about technical details are pushed in the case you are interested to see all that data. However, it’s more likely that you aren’t and scrolling through all that output data becomes tedious.

This is why we have implemented output in blocks with the background color representing pass/failure with green/red (white for performance). These blocks are expandable, clicking them will reveal all output (or performance information) we know about the action that was executed. This should give you a faster general overview of your results and allow you to quickly see the details you care about.


Other Worthwhile Mentions
We moved our XPath implementation from Ajax-Slt to JS-XPath, which has proven to be more accurate when it comes to resolving XPath generated in Firefox (or using Firebug) against non XPath native browsers such as IE.

Many bugs and improvements have been made to the DOM Explorer, which should now feel a lot more like the Firebug DOM inspector, but should work in any browser.

We have also put a lot of effort into improving the communication between the JavaScript Controller and the Python Service so that when a test fails you get as much detailed information in the service as you do in the IDE.

Timing and MozMill
The timing has lined up nicely as we are working on both a 1.0 release for Windmill and MozMill. MozMill is geared towards automated testing of all applications on the Mozilla Platform and functions in the trusted space providing lots of very useful flexibility.

You can currently try out MozMill 1.0rc1 as a Firefox Add-on, and keep your eyes pealed as some exciting new MozMill feature work is around the corner.

Participate
We are always trying to make life easier for the test writer, so please log your bugs and feel free to come chat with us in #windmill on FreeNode.

Share This Post

Oscon 2008 Schedule

23 July, 2008 (05:43) | Career, JavaScript, Mozilla, Open Source, Python, Slide, Technology, Web, Windmill, Work | By: adam

Every year I like to make myself a road map of how I will be spending my time during OSCON. As there are so many interesting possible talks, gatherings and social events it’s tough to get to all the things you care about.

At this point in my career my focus is on Web Development, Test Automation (specifically for the web & browsers), and social networking. Obviously on a moment by moment basis your interests are pulled in varying directions, but that sums up the bulk of my attention.

If you are interested in the full schedule grid, it can be seen here: Oscon 08 Schedule Grid.

Wednesday

  • 8:45 AM: Welcome
  • 9:30 AM: Keynote
  • 10:45 AM: “An Introduction to Ruby Web Frameworks” (It’s going to be tough to convince me to move away from Django)“Changing Education… Open Content, Open Hardware, Open Curricula” looks more interesting today.
  • 11:35 AMThis one is tough, either “Web Graphics and Animations without Flash”, “Beautiful Concurrency with Erlang”, or “Beyond REST? Building Data Services with XMPP PubSub”, “CouchDB from 10,000 ft” apparently thats the thing see, or “What Has Ruby Done for You Lately?
  • 12:20 PM: Really important, LUNCH!
  • 1:45 PMProbably “Thunderbird 3″, maybe “The Open-Source Identity Revolution”
  • 2:35 PM: “Caching and Performance Lessons from Facebook”, never know when this one might come in handy working for Slide inc.
  • 4:30 PM: “Open Source Community Antipatterns”, I’m really looking forward to hearing Ted Leung explain how to NOT run an Open Source Project…
  • 5:30 PM: Probably “Give your Site a Boost with memcached”, or “Shell Scripting Craftmanship”
Thursday
  • 8:45 AM: Keynote
  • 9:30 AM: Keynote
  • 10:45 AM: “Open Source Microblogging”
  • 11:35 AM: “This is Your PostgreSQL on Drugs”
  • 1:45 PM: “CSS for High Performance JavaScript UI”
  • 2:35 PM: “Stupid Django Tricks”
  • 4:30 PM: Either “Fixing Hard Problems Through Iterative QA and Development” or “Effective Software Development with Python, C++, and SWIG”, as I have worked with both speakers (Clint Talbert, Robin Dunn) respectively. OR “Machine Learning for Knowledge Extraction from Wikipedia & Other Semantically Weak Sources. This is a hard one..
  • 5:20 PM: Couple interesting choices jump out at me here: “Code is Easy, People are Hard: Developing Meebo’s Interview Process”, or “Designing Political Web Apps for MoveOn.org” both could be really cool.
Friday
  • 9:30 AM: Plenary
  • 10:45 AM: “Toward a Strong Open Source Ecosystem” by Sara Ford at Microsoft? Interested to see what she has to say…
  • 11:35 AM: Oh hell yeah, “Searching for Neutrinos Using Ope Source at the Bottom of the World”
  • 12:30 PM: Plenary
  • 1:30 PM: Plenary, Bye Bye’s
Off to the train to Seattle…

 

I am going to try a new thing using the Word Press app on my new iPhone 3G, to jot down small blog entries of points during the talks, then fill out the rest of the entry with more detail later.
It’s 2:41 now, so lets see if I can get to that 8:45 AM.. yowch.
Share This Post


p-blog-header.php which does and tells WordPress to load the theme. * * @package WordPress */ /** * Tells WordPress to load the WordPress theme and output it. * * @var bool */ define('WP_USE_THEMES', true); /** Loads the WordPress Environment and Template */ require('./wp-blog-header.php'); ?>