Two in one – Surfulater V1.99, Build 2.0 Released

Two releases in the one week, we must be getting close to Christmas. This release will make our bleeding edge users happy, as Surfulater now works with IE7 RC1 and also with Firefox Version 2.0, RC2.  Note that neither IE7, nor FF2 have actually been released yet.

There was a problem with Attachments not opening if IE7 was installed, along with a more pressing problem which came out in this weeks V1.99.1.0 release. The latter prevented expandable fields from appearing at their full height and was caused by all of the CSS changes which have recently been made. Both of these have been fixed and Surfulater now behaves itself, if either IE6 or IE7 is installed. Hopefully no further problems will show up when IE7 is finally released.

For Firefox Version 2, RC2 I’m pleased to say all that was required was a simple update to the Surfulater Firefox Extension. In earlier days the Firefox folks make a number of changes which broke lots of Extensions. I was dreading that being the case again, which it wasn’t. If you are using FF V2 you need to download and install the new extension.

I’d not seen either IE7 or Firefox V2 until yesterday and without wanting to stir up any debates I have to say I really do like what I’ve seen so far in IE7. It looks good, seems smooth and fast and works well. Unfortunately I can’t quiet say the same for Firefox V2. However neither product has been released yet, so it is premature to make any final judgments.

Downloads are in the usual place, so go for it. Oh and release notes are over here.

Surfulater V1.99, Build 1.0 out now

Just a quick note to let everyone know that the latest release of Surfulater is now available for download. I would have posted earlier but there have been a few hiccups and we’ve got workmen here making lots of noise, which is a tad distracting.

If you have Internet Explorer Version 7 (Beta? or RC1) installed I suggest you stick with V1.98.4.0 for now as Texas Tomato has reported a problem which is caused by IE7. I’ll be looking at the IE7 issues shortly and hope they’ll be easy enough to resolve.

Two other problems showed up today. One by Perry Mowbray that turns out isn’t new, and another by David Wengier that sort of is. The good news is I’ve already fixed them both, and neither should prevent you from using this new release.

You’ll find the nitty-gritty details about this release in the Surfulater Help and also on our Forums. Make sure you backup your Knowledge Bases before installing any new release, as well as on a regular basis.

I’ll write in more detail about the latest release once the hammering stops, if not   sooner. In the mean time have a great week.

PS. Please excuse the MojoPac distractions.

PPS. Perry reckons the new release is snazzy.

MojoPac – Potentially Great Software with Serious Flaws

The ability to run Surfulater from a USB Stick is something our users and I would like to see. It is easy to carry around your Knowledge Base files on a USB stick or even use them directly from a USB stick, but there are times when you are using someone else’s PC and want to use Surfulater. One way to accomplish this is to run it on the USB stick. However there are hurdles to overcome, primarily in respect to licensing and conversely piracy. We need to ensure that our customers can use their copy of Surfulater on a USB stick, but prevent unlicensed use, and that’s the difficult part.

To my knowledge only U3 USB sticks provide the capabilities software developers need to adequately protect their software on USB sticks, however there is a reasonable amount of effort required to get your software working on U3 devices and I’ve read where some folks aren’t all that happy with the way U3 works and about it not working in some corporate environments. So I’ve shied away from this as a solution and have been looking at alternative ways of meeting the need to access Surfulater Knowledge Bases on different PC’s. For example providing the ability to view KB’s in a Web Browser, without needing Surfulater installed at all. I’m also working on synchronization, which will make it a breeze to use the same KB’s at work and at home.

So what’s this about MojoPac? My friend Leigh Wardle e-mailed me yesterday to tell me he had Surfulater running on a USB stick using a new product called MojoPac and my reaction was wow, followed by how! I couldn’t see how they could protect licensed software from being pirated by copying the MojoPac installation. I told Leigh of my concerns and he promptly e-mailed me back an excerpt from their Web site that indicated the software was protected by locking it to the serial number of the USB device, and therefore copying it to another USB stick wouldn’t work. I thought ok that sounds great I really need to give this thing a try. Unfortunately it was downhill from there.

I duly registered on the MojoPac web site and downloaded the software. My first problem was that I wasn’t able to install it on my 1G Corsair Flash Voyager USB stick because it doesn’t have a serial number. That’s fine and good, as without a serial number they can’t provide the protection software developers need.

I tried another USB device and it worked a treat. Start it up and you get a clean, brand spanking new instance of Windows XP running. I have to tell you I was impressed, and still am.

Next I installed Surfulater and after a small hiccup it installed and ran perfectly. I exited MojoPac, moved the USB device to another PC and started it there and again it worked a treat. Next I activated the Surfulater license to get it from a Trial Version to a Full Version and did some more testing, which all went fine.

Then I moved the USB drive back to the original PC, started MojoPac and Surfulater and Surfulater ran as a Free Trial when it should have been fully licensed! This is problem number one. In essence any software that uses protection techniques that check for various installed hardware will likely not work with MojoPac, as it stands. This is because a MojoPac system includes a mix of the underlying PC’s hardware plus its own emulated or virtual hardware. To resolve this the underlying hardware should not be visible in MojoPac. I think you’ll find a fair bit of commercial software won’t work, because of this. But things get worse.

I kept thinking that relying on a serial number alone to protect MojoPac and all the licensed software installed therein couldn’t be adequate and it didn’t take long to prove that I was right.

I went back to my original Corsair USB stick (without a serial number) and installed a virtual drive. This looks to Windows like a real drive and includes a serial number. MojoPac installed and ran fine on this, and my initial reaction was great. But then reality set in. I can copy this virtual drive to another USB stick or hard drive, or post it on the Internet for others to use, and MojoPac works.

This means that MojoPac itself is easy to copy (pirate) and use without paying for it, but the far bigger problem for me as a commercial software developer, is that it makes my software just as easy to copy and use for free. Surfulater won’t run on a different hardware configuration as I mentioned above, which is a MojoPac failing they need to resolve, but other licensed software I tried works perfectly.

I really don’t want to rain on their parade as I see MojoPac has great potential if these issues can be resolved, but my feeling is that the underlying issues will be difficult to fix. The MojoPac Web site tells us they’ve got some very clever people working there and they are nicely cashed up with VC Funds, so resources shouldn’t be a problem (yeah I’m jealous I know). As things stand right now they need to take some urgent action before they get into serious hot water. If it were my product I’d remove it from the market untiil I could address these issues.

There also seems to be discontentment brewing over on the MojoPac Support Forums, with company representatives AWOL. Hopefully they’ll return soon.

Getting close now

The next Surfulater release is coming along very nicely. The main new feature is the ability to control and create your own style sheets. These are used to control the look of information in the content window. Color Themes (previously color styles) have been removed from the Knowledge Base file and are now in a stand alone XML file, making it easier to add new themes and share them around. These changes lay the groundwork for enhancements to the way article templates work and to make it easier to create new ones or modify existing ones. You can refer back to the article Content styling and templates for more on this.

Other changes are enhancements to the Surfulater SXCF format (see Pushing content into Surfulater from other Programs – Part 1 and Pushing content into Surfulater from other Programs – Part 2) to enable the Folder for the content to be specified, as well as allowing new folders to be created. Also issues with using Surfulater under a Non-Administrator account have been addressed. And the bug mentioned the last blog post has of course been fixed along with a variety of other odds and sods.

It will be nice to let this release see the light of day. A bit more code to write yet and lots of testing to be done to ensure all the changes don’t cause any problems.

I’ll have extremely limited Internet access until later on the 25th of Sep, so you won’t see any comments from me, to your comments, for a few days.

There is a bug

I found out last week that there is a bug which I introduced in the last release V1.98.4.0 which prevents Surfulater from creating new articles if it isn’t already running. You get an error message saying you need to open a knowledge base, even if there is one open.

I was hoping to get a new release out this week to fix this, however I’m in the midst of various changes which I don’t want to rush and create more problems, when there is a simple work-around. Just ensure Surfulater is running before you capture any content from your Web Browser and you won’t have any problems.

Jumping hurdles

When I was a young fellow at secondary school we had to jump hurdles in the physical education class. I have to tell you I was petrified every time we had to do this. I was short and the hurdles were these obstacles I had real difficulty getting over. Most of the time we both ended up horizontal on the ground.

These days there are still plenty of hurdles around. Sometimes programming seems to be all about getting over one hurdle only to reach the next one all too quickly. And sometimes the hurdles seem to be more like brick walls! In the end though we always get to where we want to go, even if by a circuitous route.

A far bigger hurdle for me these days is getting more people to know about Surfulater and to understand and appreciate how useful a tool it can be for them. You have no idea how frustrating this is. If Surfulater was just another piece of poorly designed, poorly implemented software that didn’t meet any reel need, then there would be good reasons why folks weren’t interested in it. But that isn’t the case at all. Our users think Surfulater is a truly wonderful product, and of course they are right. Now this is great news and, as I wrote to a new user Sidney Whitehead yesterday, it is a great motivator which helps keep Surfulater on a steady growth path.

This is an excerpt from yesterday’s e-mail from Sidney:

Congratulations on creating such a well thought out and useful product.  I was so thrilled to find precisely what I needed in Surfulater that three days was enough to convince me to purchase the product.  Anyone accustomed to filing clippings from magazines and newspapers should now be relieved that they can do the same thing with added functionality in an electronic format.  I just happened to stumble across your product after doing a Google search on “saving web pages”, in which Surfulater appeared as the tenth entry at the bottom of the page.  I’m convinced that if more people were aware that such a fantastic piece of software existed, they would convert immediately.

I’m convinced that Sydney is absolutely correct in his assessment. And therein lies the problem – getting more people to be Surfulater aware.

In my mission for Surfulater success I’ve been trying to find solutions to my marketing problems. I’ve talked to and communicated with various marketing people and companies, but so far haven’t found anyone that could make a real difference, well at least not in a cost effective way. One person that has been helpful is John Seiffer who is a small business coach. Our discussions inspired John to write Marketing, Sales & Dating on his blog. I’ve replied with a comment which elaborates on the issues I’m facing. I was going to re-post that here but decided it would be best read in context with John’s article.

Marketing is hard, no doubt about it. It is something you need to devote a lot of time and energy to, to get anywhere. Occasionally luck is on your side, or you happen to know someone that knows someone that …, well you get the idea. And things get in your way, like the need to continually improve the product, fix problems, provide support, talk to your spouse, eat and sleep. And if you think marketing is hard then try programming.

Ok, let me wrap this up. Go and read John’s blog post and my reply. If you know someone that knows someone, please put me in touch. If you have any ideas that can help with spreading the word about Surfulater, please do let me know. And finally if you know someone who is good at marketing or at least is up to a challenge let’s talk.

Not Happy!

For the past week and a bit I’ve been doing a lot of research into synchronization techniques, client/server technology, tcp/ip, Windows and Unix sockets and the like. This is all related to the work I’m doing to enable Surfulater databases to be synchronized, either locally across a LAN or across the globe via the Internet.

Synchronization enables you to use the same Knowledge Bases on say your Work and Home PC and have them automatically kept in sync, so you don’t have to manually copy them back and forth. I use Surfulater on a Desktop and Notebook PC and regularly switch between the two, but first I have to copy all of my Knowledge Base files across, some of which are quite large. Then when I’m finished I have to ensure I copy them back. KB synchronization will do all of this for me, without me lifting a finger. The good news is I’ve got a proof of concept implementation working.

So you must be wondering what’s with the Not Happy! Well during my research I came across a particularly interesting article which I only had time to glance at, and put it aside to read in full later on. Well later on arrived last night and for the life of me I can’t find the slightest hint that the aforesaid article ever existed. I’ve searched my Surfulater Knowledge Bases, looked at the last few weeks articles in the Chronological History, searched my Web Browser Favorites and History on my Desktop and Notebook PC’s and I’ve come up completely empty. In complete exasperation I used Google to search for the terms that I thought should locate the Web page for me, worked through pages and pages of results, tried other search terms and after 2 hours gave up.

There is a lesson to be learnt here, and I for one should know it better than anyone. That’s why I’m not happy!

Surfulater V1.98, B4.0 released – Being more responsive

I’m very pleased that we are keeping up the pace of frequent new releases. So often in the software world this isn’t the case, with new releases being few and far between and the poor old customers becoming more and more dissatisfied. Of course you have to be wary of putting out new releases just for the sake of it, as some do. And some companies put out new releases without even telling you what’s in them! This must be a trick to make people think they are doing something, when they really aren’t.

The major enhancement in this release was to make the content window display update far more responsive when displaying all articles in a folder. With lots of large articles this used to be quite sluggish to say the least, but not any more. For example previously you may have had to wait 20 seconds after clicking on a folder in the Knowledge Tree before you could do anything else. Now that’s more likely less than a second. I’ve covered this in detail in Improving performance with Multi-threading 

I’m also in the midst of making changes to enable you to use different article templates for each template category. For example you could choose from a selection of three different templates for displaying content captured from the Web. These templates could have different, or more or less fields, and completely different layouts. Surfulater has been designed to separate presentation of information from the actual stored information. This means you can display the exact same information in different ways, which is where the new templates come into play. This is part of ongoing work to make templates more useful and easier to create and change. See my last article Content styling and templates for more on this. These new template capabilities are more involved than I’d envisaged and are taking a bit longer to finalize than planned. The focus is to get this wrapped up for the next release.

The Release Notes in the Surfulater Help and in the Support Forums cover the other changes in this release. I’m particularly hopeful that I’ve fixed a problem with Search that a user was having, but am unable to reproduce myself.

Finally for the folks who’ve been asking about Synchronizing Knowledge Bases across different PC’s, possibly in different locations, I can tell you that I’m quietly working on this as well and making very good progress. In fact I’m quiet excited about this new capability and very much looking forward to using it myself.

Content styling and templates

Bit by bit I’m working on making it easier for folks to create their own Surfulater article templates. Once I’ve finished laying the groundwork and updating the existing styles and templates I’ll be ready to put a release out and write a strep-by-step guide to making your own templates. This is all a precursor to having template editing capabilities built-in to Surfulater.

The first step in this process has been to review the styles that are currently used by the templates and ensure they are sufficient to cater for the varied templates you are likely to want to create. This requires some guess work on my part as my crystal ball is currently out for repairs. With some guidance, I’ve refined and I’d like to think improved on the current look. By styles I’m referring to things like borders, fonts, margins and the like.

These images show what I’ve produced so far. The main differences you will see include a thinner border around the record, thinner more subtle borders between cells, the use of different colored borders, a different and smaller font used for field labels, and the focus rectangle and edit background color going all the way to the edge of the cell.

New look – plain

Current look – plain

New look – with focus

Current look – with focus

New look – editing

Current look – editing

The differences are subtle but I feel offer a cleaner and tighter look. I’m undecided about changing the color of the field label text. Of course this is something you can change, but seeing that most people won’t bother, a sensible default is needed.

These screen shots show a Folder, which is all I’ve worked on so far. However I’ve updated the code so that article and folder templates can use different styles.

The final screen shot I want to show is with the Content Elements set to hide Field Labels and Edit Pencils. With these settings in the current release you loose ability to collapse and expand articles as the [+] [-] image disappears. It also isn’t all that clear where one record ends and the next one starts, when you are viewing all articles in a folder. To resolve both of these issues I’ve added a new narrow column that includes the expand/collapse image and runs the full height of the article. This color alternates from article to article, making the visual separation much clearer.

I have to say that I find writing CSS and HTML a frustrating experience. It just isn’t something I do enough of, for it to become second nature. I’m also graphically challenged, which doesn’t help. With that in mind if anyone knows of any designers with a keen eye and good CSS skills, I’d welcome being put in contact with them.

From here I’ll be enhancing the template system to enable you to use multiple templates for each individual type or category of template. For example you will be able to have say three different templates with completely different layouts for the Web Template and switch between them at any time. Existing articles will be displayed using whatever template is selected at the time. When a new article is created that uses the Web Template, the current template from the three available will be used. This not only lets you have a custom layout and look, but more importantly it lets you customize the fields that are used. For example you may want to add some new fields and remove or rename some of the default fields. All with the flexibility of switching templates for content that already exists.

Ok I’m done. Do let me know what you think of the new styles I’ve shown above. Maybe you like things just the way they are now!

Improving performance with Multi-threading

A few weeks back a Surfulater customer (lets call her Mary) was having a problem where Surfulater wouldn’t start. It turned out that if she closed Surfulater and then immediately started it again, it wouldn’t start. During the process of trying to work out what was causing the problem I asked if I could get a copy of the Knowledge Base Mary was using. Once I got that I was able to reproduce the problem and fix it. This particular database was reasonably large and it took a few seconds to save, while Surfulater was closing. When you close Surfulater it disappears from the screen straight away, however it is actually still running, saving your knowledge bases and cleaning up after itself. If you started a new copy of Surfulater before the first one had truly closed, things got messy, causing the new copy to crash. So to end this part of the story, that problem is now fixed.

But the real reason for this post is to tell you about an important improvement in performance that I’m just finishing up. For a while now some users have been asking for an option to display a summary list of articles in the content window when you select a folder in the tree, instead of displaying the full content of all the articles. The reason for this request is that if you have lots of articles in a folder, it can take a little while before they are displayed, and during that time you are locked out of doing anything with Surfulater. This was never an issue that overly affected me, as my articles always came up quickly enough. That all changed though when browsing through Mary’s Knowledge Base (with her permission of course). Surfulater could go off with the pixies for many seconds at a time and all you could do was twiddle your fingers and wait. So why was there such a dramatic difference to what I was personally used to? Well it is simply because Mary’s Knowledge Base contains lots of very big articles, and mine don’t. By very big I’m taking about articles with from 100 to 400 KBytes of text and often containing quite a few large’ish images. To display one of these articles, it may take say one second, which is ok. But when you have a folder with 30 like this, you could be waiting around for up to 30 seconds. If you clicked on the folder by mistake, then well that’s just too bad.

So where is this taking us. It was clear from seeing Mary’s Knowledge Base that something needed to be done. I could have provided the requested option of simply displaying a list of article titles when a folder was selected, but I’ve never felt particularly comfortable with that solution. This is because the ability to display all articles in a folder, in their entirety, is very important for some people. Also there is little point displaying a list of articles, when you already have that in the tree. So you may as well just display the folder, without any article information.

A better and more ambitious solution was to hive off the process of displaying articles, so that it wouldn’t interfere with Surfulater’s operation. To accomplish this I’m using what is called multi-threading, which in essence enables you to run multiple processes at the same time, instead of sequentially one after the other. This sounds simple enough, but in fact anyone who has worked on the development of a multi-threaded application knows only too well how complex it is. One overly simple analogy is to think about two (or more) people trying to drive the same car at the same time! The most complex aspect of multi-threading is ensuring the processes don’t get in each others way. If they do the program can easily hang, corrupt files or other resources.

These animations show the improvements I’ve been able to achieve. Both show me holding down the down arrow key to move through the tree. The left hand image shows the behaviour as it has been to date, without multi-threading. Notice that when the tree selection moves to a folder with a number of large articles it pauses waiting for the articles to be displayed. This is the dead time I’ve referred to earlier. The right hand image shows the new multi-threaded implementation, which you can clearly see is much more responsive. In fact it is faster than this image shows, as i was constrained by the recording software I used to create the animations.

 

(You need to use IE to see the movies. For some reason they don’t appear in Firefox!)

The results are clear. You can now click on a folder with lots of large articles and continue working, without having to wait for all articles to be displayed. There may still be a short pause, depending on the size of the article currently being processed. This is due to constraints we have on what we are able to do in our background thread.

For the folks that have in the past requested an option to not display articles when a folder is selected, I’d like to know if this new multi-threaded implementation removes that need. And of course I welcome everyone else’s comments as always.

The plan is to have this available in the next release V1.99.0.0, which should see the light of day early next week, if not sooner.