Technology is Great

When it works for you and not against you

As you know, Hericus Software is a MicroISV. Part of what this means is that in choosing to do something - anything really - I always have to ask myself: "Does this activity scale?" If I get caught in the trap of doing too many things myself - and there are always too many things to do - I'll never make any forward progress.

So what does this have to do with Technology? Ever since the invention of the computer, predictions have been made that computers will save us time, handle grunt work for us, and free us up to do the more creative and advanced thinking. Most of the time, reality has fallen far short of these lofty expectations. Every now and then, though, some truly wonderful technology fulfills on this promise.

I just uploaded a video of a portion of our automated testing suite. The video shows some of the execution of our test suite that is specifically targeted at taking screen shots of the application. Each and every screen, editor, dialog, error/information message, is invoked and captured as a PNG image and saved in a specific location for inclusion in our documentation.

Zed Builds and Bugs is built in two major components. The back-end is a Java server that handles web traffic, server side execution, and database storage. The front-end is a Qooxdoo based JavaScript web application that runs in your browser. The front-end talks to the server exclusively via HTTP, and the servers talk to each other exclusively via HTTP. This makes both the client and the server extremely susceptible to automated testing approaches - which is very good, because automated testing scales.

I use Selenium for handling the client side automated testing, and I can tell you that the initial effort involved in building the test suite has paid off tremendously in terms of future ease of use and leverage of my time. Selenium works very well with the Qooxdoo framework, and has enabled me to ensure coverage of every screen in the application. When I add a new feature, upgrade a library or change something in the application, it takes all of 5 minutes for me to run through all of my client side automation to ensure that I haven't broken anything and that everything still works. That's leverage. And for a one man shop - that's a process that scales.

I use normal JUnit tests to drive Selenium which means I can work within a comfortable environment and still control everything in the GUI for testing. I also use JUnit to drive the testing of the Zed back-end server, and that keeps everything working in a standard way.

I uploaded the video above, because every now and then, I'm just excited by technology and what it enables me to do. Screen-shots for documentation was one of the toughest chores that I used to have to handle myself (I have to do everything myself). Once the light-bulb went on that connected the dots of Automated Testing and Automated ScreenShots, I didn't stop until it was done. Selenium makes this really nice, and with some extra tweaks that I added, it's literally as easy as this for me to load a form or launch a dialog and take some screen shots:

	public void testBuildGroups() {
		ConstAndGlob cag = ConstAndGlob.getInstance();
		String tabName = "Build Groups";
		String locator = ConstAndGlob.getTabViewLocator(workspace, 0);

		try {
			cag.selectPrimaryViewMenuOption(workspace, tabName);
			cag.waitForTab(workspace, tabName, 0, 10000);
			cag.doScreenShot(locator, "Screens.BuildGroupsList.png");
			String table = ConstAndGlob.getTableLocator(workspace, "Build Groups", 0);
			m_qx.qxTableDoubleClick(table, 0, 0);
			cag.waitForTab(workspace, "Build Group:", 0, 1000);
			cag.doScreenShot(locator, "Screens.BuildGroupEdit.png");
			cag.closeTab(workspace, "Build Group:", 0);
			cag.closeTab(workspace, tabName, 0);
		} catch (Exception e){

So now, every time I add a new feature, this becomes a standard part of the operation. When it's been coded, I run through the whole test suite - including screen shot captures - and I know that the whole application is still standing firm and working properly.

And as you would expect - since Zed Builds and Bugs is all about Continuous Integration and making your development life easier - I've rolled all of the automated testing into the standard continuous integration build that I do for Zed every time I submit a change. I know within 5 to 10 minutes how the state of the whole application fares and I can proceed with confidence with the next task.

I highly recommend using Selenium for automated web testing, and I can't thank the group over at Qooxdoo enough for creating a wonderful framework for building applications.

Steven M. Cherry

New Feature - Build Groups

Over on the General Q&A discussion forum, one of our customers asked for a feature that would help them to cut down on the number of builds that are displayed in the Build Execution Results screen. It's a great idea, and what's more important is that it's a feature request from a customer!

Believe me, the amount of weight that I give to feature requests from customers far outweighs the amount of weight that I give to feature ideas that I come up with myself. As Joel has discussed at length - it's not the amount of features that your product has that will make the difference. It's the amount of users who are happy with what your product does.

I have a laundry list of features that I'd like to add to the product - there are upwards of 70 items on my "new feature" task list at the moment. But I always hesitate to add something unless I'm really sure that it will be of value. If a customer asks for it, it's almost guaranteed to make the top of my list.

Every time I think about starting in on a new feature, I remind myself that my time is probably better spent on marketing and getting the word out about Zed Builds and Bugs. I'm always falling into the trap of leaning toward my comfort zone - writing code. I can write code all day long and never get tired. Marketing, though, that's a challenge. It's what is more important at the moment, though, so I have to catch myself every time and ensure that I do what's most beneficial.

But since a real, live customer asked for the feature - that breaks through my hesitancy and allows me to indulge in my favorite activity. The first bit of the implementation is done at this point, and as long as the continuous integration build goes through I may be pushing it to the demo site to play around with before finishing the second stage.

Thanks to all of our customers who have provided great and valuable feedback. It helps to guide what gets done next, and I'll always pay close attention to your requests.

Steven M. Cherry

Hericus Software is a MicroISV

Who's afraid of the small guys?

There is a perception in the software business world that you have to "look big" or "look corporate" in order to be successful and have a good business. This is something that has been around for quite a while. Big business gets respect and can get things done. They have the manpower and weight behind their name to bring you the solution that will meet your needs. They may cost more, but there's more security in relying on them because they've been around the block and will be here for a long time to come.

Well, I'm happy to say I'm part of a growing number of software developers who are bucking this trend. My name is Steven M. Cherry and I own Hericus Software. Hericus Software is a MicroISV. It's me, and I'm not a big business.

From Perfect Table Plan, to Bingo Card Creator, to Balsamiq, to Smart Bear, and all of the other startups that began as a MicroISV and either stayed that way or grew into something bigger, I've been inspired. Not just inspired to "join the crowd", but inspired to do something. I loved a recent blog entry in OnStartups where Rob May encourages us to simply "do something". Take an action, he says. Get started. Keep going.

This blog has been a bit quiet of late and I apologize for that. Some of it has been due to some significant internal changes - all for the good. Some of that is getting comfortable with writing about my activities here with Hericus and Zed Builds and Bugs. My pledge is to take Rob's advice and "do something". It doesn't mean that there will be 10 articles every day. But it does mean that the silence is over.

One of the joys of being a MicroISV instead of a large business is that I get to talk to you in a much more direct manner. You may like it, you may not, but in my opinion it brings home the direct connection that will be a part of our relationship if you decide to use Zed for your software development team. I'll be the one answering the support e-mails, and I'll be the one adding new features and capabilities to the system. That's not to say that this will be slap-dash or unprofessional in any way. Part of every example I listed above and countless other successful MicroISV's that you'll find is a dedication to professionalism in the midst of having fun as a single person company.

I've been in the software development business a long time, and I know what it takes to make great software. As a colleague of mine likes to say: "we have to do A-level work all the time. There's no room for B or C level work, because it will turn around and bite us." I'm here to add my voice to the chorus of other MicroISV voices that are saying it doesn't have to be a big company to be a great company. It doesn't take a large team to create a professional product. It just takes passion and dedication.

I'm here, and I'm dedicated to making your software development team better.

Up next: What's next for Hericus. What I am working on, and what's the most frustrating for me at this point.

Steven M. Cherry

Zed Builds And Bugs - Why we are different

Developers have a love/hate relationship with tools

There are a lot of products on the market and in the open source community that solve some of the same problems that Hericus Software does. If you were to do google searches for automated build software, task and bug tracking software, discussion forum software, or wiki software you will get a tremendous amount of software products to choose from. There's no wonder why, each of these applications form key components to a software developer's daily life. They can be tools that help developers to build wonderful software by making their lives easier and removing obstacles and burdens from their daily routine. They can also be constantly annoying drains on productivity when they get in the way, are too hard to use, or produce more problems than they intended to solve.

At Hericus Software we have collectively spent a long time writing software for software developers. We're tool developers with a long time in the industry, and we've seen a lot of the software tools that are out there targeted at developers. Some are great and really worth your time and attention. Some are just not worth spending your time on.

With Zed Builds and Bugs Manager we've combined some of the best techniques and capabilities into a single product that will help your entire team to be productive from the start. Ask yourself the following questions, and you'll begin to see the value that Zed will bring to your team:

Are your builds automated?
How much time do you spend on a weekly basis building your software? If you do your builds manually, the answer is probably at least one day per week that you spend on this task. That's more than two man-months per year that you spend doing your builds by hand. Can you see how easily you can save money and gain productivity by introducing build automation into your environment.

Zed's approach to automated builds gives you the flexibility to approach both small and large projects. There is no hand-editing of XML files to configure your builds. There is no limit to the size and type of project you can build with Zed. If you are a C# shop, great. If you need to do C++ with a little Java on the side, wonderful. If you're an amalgam of every language and platform out there, we can help you with your builds. The more complicated your environment, the more you will see the value of automating your builds so that the complication is encapsulated within the system, and all you have to do is set it, schedule it, and forget it.

Does your bug tracking system work with you or against you?
We've seen systems that go either way. A task and bug tracking system should help you to organize your workflow and encourage everyone to do the right thing. It should be easy to enter information. You should be able to add things manually, or just by sending an e-mail to the system. You should be able to organize your projects and track versions of everything you are working on.

Zed's approach to task and bug management is all about organization and simplicity. The first thing you want to know is what your current working list looks like. We show that to you, right off the bat. Next, it's nice to be able to see both an overview of your entire list as well as the details of the task you are currently working on. With the advanced web workspace you can have both, side by side. You're no longer constrained by pre-defined HTML forms that don't quite fit the way you want to work.

What happens when you create a task? What happens when you add an assignment to a task? In some systems, you don't get much of a choice. Your workflow options are very limited. With Zed, you get to define what happens as events occur in the system. You get to be as simplistic or as complicated as you like. If you want an e-mail to be sent to the whole group when a new bug is added, but only to the individual developer when an assignment is created, you have that flexibility.

Does your team communicate enough?
Communication is the key. If you are trying to keep up with the pace of today's technology, and you want your team to be as flexible and knowledgeable as possible, you want to put the right communication tools in their hands. It's not about providing as many ways to communicate as possible. It's about providing the right ways to communicate and encouraging your team to use them properly. If there are too many tools, messaging systems, etc. you might get the impression that communication is flowing, but in reality your communication will not be connecting. It's not just about talking into a void. It's about having real, productive conversations.