Test Automation Seminar

A long, long time ago in a land far away, I worked with my friend Frank Cohen to help him build the first version of a Web Service and Web Application test tool that was called TestMaker. Since then, Frank has made all kinds of improvements turning it into a really nice, graphical, scriptable testing tool. Frank has written books on Fast SOA as well as Java Testing and Design.

Now Frank is putting on a Test Automation Seminar covering a broad array of topics. He’ll be talking about his own test-automation tool TestMaker, naturally, but he’ll also be talking about others including Selenium. The seminar is going to cover a lot of currently hot technologies and techniques. In addition to general web-application testing, they are going to get into Ajax/Web 2.0 testing, REST and SOAP.

If you ever wanted to know more about functional test automation or performance and scalability testing, this might be a good, hands-on seminar to get you jump started. Check it out.

From Frank:

PushToTest is hosting a 2-Day seminar on open-source test automation. We will be covering load and scalability tests of Web applications, Ajax, Web 2.0, Service Oriented Architecture (SOA,) and functional testing of Windows and Java desktop applications. We will teach you TestMaker, soapUI, Glassbox, Selenium, and several other open-source tools.

Mac OS X Leopard and iPhone

Leopard

With the new version of Mac OS X announced we can all wait for an early Christmas!
You can order yours early on Amazon for $20 less than you can get it at Apple. How? I don’t know, but they give you the discount.

So check order it here:
Mac OS X 10.5 (Leopard)

iPhone SDK

The other great news is that Apple has finally announced an SDK for the iPhone to be released in February. I think this is a great move. The value of the iPhone is increased dramatically when it can have 3rd Party applications on it (without all of the trouble from JailBreaking it). The other very interesting news is that the SDK will be available for the iPod Touch as well. This kind of development will have a huge impact on developing the ‘ecosystem’ around the iPod and the iPhone.

Expect to see a lot of development and uptake of the iPhone early next year. A small computer in your pocket, the Newton 2.0 – this could be some really good stuff.

5 Things You Didn’t Know About Me

Well thanks to Dan I’ve been tagged for 5 things you didn’t know about me. So, I’ll take a deviation from my normal technical blogging and both of you (rimshot!) some interesting tidbits of information about me.

  1. I’ve never lived anywhere for more than 5 years in my entire life. I’ve lived in 8 different cities in 6 different states in the US (California twice, Texas, Virginia, Ohio, Illiniois, and Wisconsin).
  2. I played guitar in a heavy metal/hardcore band in college called Entrust.
  3. I was a National Merit Finalist in high school. Of course then I went to a public college and wasted all of my potential.
  4. I have a Bachelor of Arts in Philosophy. (Ok, you could find that out by reading my Resume.) My Calculus teacher in high school recommended it when I had no idea what I wanted to do.
  5. I’ve never been to Canada or Mexico, but I’m getting married at the end of March and we’re going to Mexico on our honeymoon. I promise to go to Canada some time soon.

I guess in turn, I’ll tag Brennan.

My Foray Into the World of Smartphones

Ok, so I might be a little behind the times when it comes to mobile phones and SmartPhones. It was a big advance for me when I got one with a color display and MIDI ringtones two years ago. Well, my contract was ending and I’ve been doing some mobile development recently, so I got curious. If I want a SmartPhone, what should I get and why?

To start with I want a phone naturally. Because of that it’s important for it to have a good address and phone book. Secondly I want email. I’m picky about email, so I run my own mail server using IMAP over SSL and I want it to work with that. Next, I would like to get maps and directions. I like to look up how to get places, even when I’m already on the go. I also want to get on the web once in a while. I’m not planning on doing most of my browsing, but when someone asks me “What 5 countries border the Caspian Sea?” (You know who you are), I want to get online and check it out. Of course there are some other random applications that I might run since this thing will be more powerful than the computers that put a man on the moon. Finally it has to work with Mac OS X.

The Options

  • Blackberry
  • PalmOS
  • Symbian
  • Windows Mobile 5

Blackberry came onto the scene as the first service to provide a push technology for mobile messaging (as far as I know). You didn’t have to constantly check an email box to see if something had arrived, but instead you would be notified when you had a new message. This of course was a hit with the dot com bubble set. Now Microsoft and its Windows Mobile platform offer the same functionality, so it’s no longer a differentiator. As a software geek all that is well and good, but more important is how can I write my own apps?

Blackberry

Blackberry’s latest offerings are built on top of a Java platform. MIDP and JavaME for some phones is very limiting. My last phone had a JVM, but it could not access any of the phone’s functions or the address book for example. That made it good for one thing basically, playing games. A mobile phone is not exactly what I’d call a platform for playing games. The Blackberry implementation is fully integrated into the phone. They offer a full SDK to do everything from manage address book entries, access the file system to respond to call events. Blackberry has the Blackberry JDE which is an OK environment. You can also integrate the JDE with Netbeans for mobile development.

PalmOS

PalmOS started life as the PDA operating system.
The primary PalmOS development languages are C and C++. They do have a Java development platform (as well as Pascal, Forth and SmallTalk). The C based tools are built on top of the Eclipse platform which is nice. Palm has started using both their own PalmOS as well as Windows Mobile. That worries me a little bit that they might be ready to abandon their own OS development and just become a hardware manufacturer?

Symbian

Symbian is the most popular SmartPhone OS in the world with something like 75% of the market. In the US though, it’s almost impossible to find one. They basically only want to support GSM, the standard of everyone in the world but the US (don’t get me started on that rant). Symbian OS uses a C development environment for writing applications. I honestly didn’t look into it much be cause there are only a couple of available devices in the US.

Windows Mobile

Windows Mobile is another popular handheld OS. Being an Operating System from Microsoft, it uses the same development tools as the Windows OS, namely Visual Studio. Windows Mobile has both C APIs and .NET APIs for you to use. Windows Mobile is a popular platform and there are a wide variety of devices for it as well.

My Decision

I like Java. I know C#. I’ve done C++, but I really don’t want to ramp up with C++ for what would be once-in-a-while development of personal apps. If I want to do Java or C# that basically put me in the Blackberry or Windows Mobile camps. PalmOS was definitely tempting, but I wanted to use the main development environment and not an also ran.

I decided to go with the Blackberry. Specifically, I chose the Blackberry Pearl. First and foremost, it’s a phone. It’s not too big, it’s the size and shape of a phone. It’s got buttons that you can use while you’re on the phone (unlike the kinds where you slide the keyboard out).

The first thing you should download are all of the Google Mobile Tools. They offer a great application for Google Maps that includes lots of goodies like searching for local businesses and a traffic overlay for highways. It’s a great mapping solution. They also have a GMail app that gives you a nice interface to GMail. Of course you can set up GMail as one of your email accounts and just use the built in editing features. But if you want to get at your mail for searching and archival, then check out the GMail application.

Opera Mini is ok as well. I’ve been trying it a bit, but mostly I’ve been using the built in Blackberry Browser. Opera Mini feels a little bit less integrated (as might be expected) because things like the menu system does not feel native to me. Either one works though. Most sites are not optimized for mobile of course (this one is a perfect example, which I hope to fix) so your mileage my vary.

The mail system works great with my setup. All of my messages are forwarded to my phone. If I read them on the phone, then they show as read in my Mail inbox. I can also delete them on both at once. This of course works with my own personal IMAP over SSL server.

Blackberry supplies PocketMac for syncing your Blackberry. It’s not the best application in the world and it’s a little buggy. But generally it gets the job done and lets you sync your phone with AddressBook, iCal, etc. Hopefully we’ll get native support for iSync at some point. There’s no native Mac OS X support for Windows Mobile either, so you have to use Missing Sync. I haven’t tried it, but maybe they could get on board?

Conclusion

Did I make the right decision? Should I have gone with PalmOS? What are your experiences being a geek who wants more than a random business person with your SmartPhone?

Coming soon, hopefully some more info on developing for Blackberry.

References

Getting Started with Blackberry Pearl on Mac OS X
PocketMac Download
Use Netbeans for Blackberry Development

Video Conferencing? Look to Apple’s iChat and iSight

At SpiderLogic we have offices in Milwaukee, WI, Madison, WI and Pune, Maharshtra, India. While Milwaukee and Madison are right next door in the global sense, Pune is all the way around the world. Being so distant can make communication challenging of course. When you are in a one-on-one situation, you have quite a few options to use. Obviously we use email and instant messaging for many exchanges. We share information more widely using a Wiki. Often though you just can’t beat the power of a good conversation. In a one-on-one situation we generally use Skype which offers a free voice service as long as you are calling another Skype user.

What We’ve Done In the Past

Where we’ve struggled in the past is when we want to do group discussions. Skype will support up to 5 users on a conference call which generally works fairly well. Beyond that you have to do something else. Any conference call can be difficult to manage with a lot of voices. Having visual feedback offers a natural way for people to signal their intent to talk. It’s what we do everyday when we jump into conversations. Sometimes nothing beats the power of a face-to-face conversation as well. Being able to see people react to what you say is very powerful feedback. It’s also a connection that you grow to miss sometimes when you work with people in very impersonal mediums like email.

We’ve tried a number of things for video solutions in the past including Skype video. None of them have lived up to our expectations. We’ve even looked into special video conferencing solutions, some of which had price tags into the $20,000 US range!

What about iChat AV?

We decided to give iChat AV a try. The Pune office already had a Mac Mini that they’ve used for some QA work in the past. They got an iSight for their end to complete the package. I brought in my MacBook Pro which has a built-in iSight camera for the Milwaukee office to use..

The end result is that we were absolutely thrilled by the experience. It generally met or exceeded all of our expectations. The only problem we had was that the sound was a little bit low. We need to figure out some way to boost the sound output, probably with some better external speakers or a USB speaker phone appliance of some sort. The experience of looking at a conference room full of people sitting all the way around the world and being able to have a meeting with almost the same level of interaction as if we were all sitting together is almost indescribable. In the past we’ve avoided more interactive discussions and stuck to presentations because of the difficulties in the remote communication. This time we were able to have very good exchanges with both sides contributing and jumping in when they saw fit.

Cost

The cost for us was $150 to get the iSight since we had all the other pieces in place. If you would do it from scratch:

  • Mac Mini – $600
  • iSight – $150
  • Keyboard and Mouse – $50
  • Monitor – $200

That means that even if you started from nothing, no monitors, no keyboards and mice, it would cost you $2,000 to set up both ends. That comes to about 10% of the cost of some of the video conference solutions. Chances are really good that you’ll have some of that already which could bring the cost down a lot.

I think the experience of this could really sell a lot of people on the Apple solutions. We’re really looking forward to the next version that promises to add desktop sharing to the mix as well. So then we can have great chats with great presentations (using Keynote of course). And people say that Macs don’t belong in the workplace! I beg to differ.

Price References

Mac Mini
iSight
Apple USB Keyboard
Apple Might Mouse
19 in Widescreen LCD Monitor

Google Notebook

I just ran across a new Google product (new to me at least). Google Notebook is a tool that allows you to store notes and snippets on a web page for later use. The Notebook can have multiple notebooks in it for different topics, and section headers within a notebook allowing you to group your notes in a way that makes sense to you. Google of course are masters of Web UI and so they have things like drag-and-drop sorting of note entries. Double-click on a note and the editing mode magically appears before your eyes, making using the web application very simple. And of course they are all searchable.

Of course you can do similar things with other services. Backpack for example is a very interesting site. It’s free for a basic subscription. You can create things like To-do lists, image galleries and notes, all of which are drag-and-drop sortable in true Web 2.0 fashion. The pay version seems to also have a number of interesting add-on features like Calendaring. I do like Backpack quite a bit. In comparison, the Google Notebook does not offer a lot of functionality. On it’s own it doesn’t sound that interesting does it? So why am I writing about it?

What makes it interesting is that they have created a Firefox plugin that integrates with the site. You can right-click on any page and add a “Note” to your notebook. When you do that, it saves the link in your notebook. But where it gets really interesting is you can select some HTML in your browser and save the snippet in your notebook. The plugin also adds a small status bar icon that lets you easily access your notes and also open the full Google Notebook page.

The browser integration lets you very easily save snippets of information in such a way that it doesn’t break your flow, it doesn’t interrupt your thought process. You don’t have to switch to a different web page or a different application. I think this simplicity and efficiency make it very compelling.

Akismet Works For Me

I wanted to follow up on my previous post about dealing with blog spam.

I installed Akismet and it has worked flawlessly. It has caught dozens of blog spam posts so far. I have had no false positives and no false negatives yet (i.e. it has correctly identified every comment). The only downside is that for it to be really helpful you have to have 100% confidence in it. You don’t want to have to check the “Akismet Spam” list every day.

I guess the unfortunate thing about computers being so great at automated tasks is that a true test of whether or not a post is from a Human or a Computer is really hard. I had previously thought of things like JavaScript challenges and the like to try and stop auto-spammers, but the more I think about it, the more I think that doesn’t make sense. In the end, the requirement is not whether the comment was automated by a computer or entered by a human, the test is whether or not the comment is Spam.

So, give Akismet a try if you don’t want to deal with comment spam all the time. I think you’ll be impressed by how well it works.

What would Turing think of all this?

How Do You Deal With Blog Spam?

I assume that many of my readers are technical people and as such are likely to be bloggers themselves, so I post the question to you: How do you deal with blog spam?

I’m currently getting on the order of 30-40 blog spam posts a day. While WordPress does a good job of catching them, and I can mark them as spam (so no one ever seems them), like email spam, I’d prefer not to have to deal with them at all. In the past I’ve tried reporting blog spammers based on IP addresses to their hosts, but that’s even more work and it seems to have little or no effect on the volume.

Do that many people need Viagra? I didn’t even know what Hoodia was until I looked it up? (Oh and if you use any of these terms in replys, you’re going to get caught in the spam trap. So don’t.)

I’ve considered using a CAPTCHA but have not found a good plugin that will do it for me, and I generally find them annoying. Registration seems like too high a barrier to entry for casual posting. I’ve seen, but haven’t tried Akismet which is service that checks out your comments before it posts them. Anyone use Akismet? Does it work?

Are we stuck with blog spam? What other things can I do so that I don’t have to deal with these annoying posts? (Oh the irony, we’ll see if I get spam attempts before I get real comments.)

Thanks for the help…

Update:
In addition to CAPTCHA, I’ve heard of people doing things with JavaScript under the idea that the automated blog spammers don’t use tools that understand JavaScript. Some people have the actual form submit happen with JavaScript. Another option is to have JavaScript do some simple algorithm for the user and check the result. That’s the idea behind
Hashcash. I haven’t tried it, but it sounds like an interesting idea.

So, CAPTCHA, Hashcash and Akismet … and no more spam!

WordPress Code Formatting

I finally got tired of dealing with reformatting that WordPress does in its attempt to be “user friendly”. In general it does the right thing, but when you deal with code snipits inside tags a lot it can quickly become a problem.

I wanted to accomplish two things

  1. Have whitespace matter
  2. Not have WordPress add extra linebreaks or evaluate my >s as HTML

1. Is easily done with CSS


code {
white-space: pre;
}

This CSS will render the text including showing the spaces and line-breaks however they are in the source. This is just the right things for code.

2. Getting WordPress to not muck with code blocks

This on the other hand requires coding a solution. Luckily someone has done the hard work for us. There is an existing plugin called Preserve Code Formatting that handles this. Basically it looks through the HTML source of a posting and looks for and

 blocks. When it finds those blocks it removes all of the extra WordPress formatting and handles escaping HTML entity characters.

The other thing I was running into was that WordPress was “closing” things that looked like HTML. I ran into this when I was writing code snipits that contained Generics syntax.

I tracked that down to a writing setting in WordPress. Under Options -> Writing there is a checkbox that says: “WordPress should correct invalidly nested XHTML automatically”. When this option is enabled, WordPress will erroneously see certain things as HTML markup and try to create closing tags.

With this option selected I would get:

List

addresses;

Instead of the correct output I would get when I unselected the option:

List

addresses;

With the plugin in place, a bit of CSS and turning off one option, I can now copy-and-paste code snipits into WordPress and not have to deal with formatting.

Next step…syntax highlighting.

Update:
The other thing that I found in the functions-formatting.php file there is a method called ‘wpautop’. This method has a call to remove breaks from

 tags. So I copied the line and changed it to do the same thing to  tags.


$pee = preg_replace('!()(.*?)!ise', " stripslashes('$1') . stripslashes(clean_pre('$2')) . '' ", $pee);

MKE Ruby Group

The Milwaukee Ruby User’s Group had it’s first official meeting last night. A few people showed up and we talked about some of our favorite ruby features. I talked about Metaprogramming a bit. There was also a good discussion about the Ruby Object Model. (Classes are Objects and Object is a class – holy recursion!)

Check out the site:
Milwaukee Ruby User’s Group

Sign-up to the email list if you want notification of meetings, etc.