Posts categorized “MicroISV”.

In development: CaseDetective On Demand

I bet you didn’t see that coming! :)

I think it’s sometimes a good idea to conduct a thorough hard-hitting interview with yourself about a subject to fully explore said subject. There now follows an interview between you (U*) and me (I), where I pose and answer the questions I think you might ask of me, and I’m not going to hold anything back…

U: So, FogBugz On Demand is public, is there any likely-hood of a CaseDetective On Demand then?
I: Yep. CaseDetective On Demand is being developed as we speak, well not at this very moment as IMiJ Software’s sole developer is all tied up answering your inane questions … but it is being developed when I’ve got any time available.

U: Cool! Tell me more, what’s it developed in, I guess it’s not a REALbasic application then?
I: Your guess is right on the money, how clever of you! CaseDetective On Demand is being developed in Adobe Flex for that Rich Internet Application (RIA) experience. In fact, it’s not just CaseDetective On Demand that’s being developed in Adobe Flex, CaseDetective 2.0 is too.

U: Eh, CaseDetective 2.0 for FogBugz is being developed in Adobe Flex, how’s that going to work, I thought Flex ran in Flash?
I: Adobe Interactive Runtime, AIR for short. I can use pretty much the same code base for both CaseDetective 2.0 and CaseDetective On Demand.

U: Now that really is cool! If CaseDetective On Demand and CaseDetective 2.0 are being developed in the same technology, from pretty much the same code base, are they going to offer the same features?
I: Almost, but not quite. As it stands, I’m thinking of making CaseDetective On Demand a free taster of what’s in the installable CaseDetective 2.0.

U: So what’s going to be different then?
I: Nothing’s set in stone just yet, it’s very early days so things are very very likely to change as development progresses, but this is how I see things panning out…

CaseDetective On Demand will look almost identical, but obviously will be running in your web browser rather than on your desktop.

CaseDetective On Demand won’t be caching data like CaseDetective 2.0 probably will, it’ll grab “live” data from FogBugz when ever a selection changes. If it’s being run online, then you’ve got to have an internet connection anyway, right?

CaseDetective On Demand is unlikely to have all the report outputs of CaseDetective 2.0, these will be reserved for CaseDetective 2.0 as an incentive to download, but you will probably be able to get a good idea of what would be printed or extracted from CaseDetective 2.0, you just won’t be able to actually save it out.

U: Will CaseDetective 2.0 work with both an installed version of FogBugz and FogBugz On Demand?
I: Yep. In fact, if the installed version of FogBugz has it’s API URL available to be called from the internet, then CaseDetective On Demand will work with that too.

U: What if people find CaseDetective On Demand to their liking, and want it to become a fully featured application that they can access from any modern web browser?
I: If there is enough interest, then we’ll just have to see about making it so.

Plan A was to make CaseDetective On Demand a fully working online application, with a small subscription charge per month per FogBugz user id used (with the first one being free). But by plan X things had settled down to CaseDetective On Demand being a great way to get a taster of the full CaseDetective 2.0. Who’s to say that in the future plan Z doesn’t loop right back to something similar to plan A?

U: I’m sure you can call web services such as the FogBugz API from within a REALbasic developed application, why are you jumping from REALbasic to Adobe Flex/AIR for CaseDetective 2.0, surely development time would be less if you stuck with REALbasic?
I: You’re probably right, if I stuck with REALbasic as my development platform for CaseDetective 2.0 I’ll probably be finished a bit quicker than I expect to be with a complete re-write to Adobe Flex/AIR.

The thing is, if I stick with REALbasic I’ll probably not be able to offer CaseDetective On Demand, I simply don’t have the time to be able to develop a brand new application of this scale for the web, and make the extensive updates necessary to CaseDetective for FogBugz 6.0. By developing in Flex/AIR I’m killing two birds with one stone, as the rather ugly saying goes.

U: Ugh, yes that really is an ugly saying, thanks for that! I’m still not completely sold though, why not forget about CaseDetective On Demand and just update CaseDetective for the FogBugz 6.0 changes?
I: OK, you want the real reason? The huge improvements to FogBugz 6.0 scare the life out of me!

One of the most sort after updates to FogBugz for quite some time has been the beefing up of the filters, making them much more flexible, with many more options. The rumour is that FB6 will have some seriously improved filtering and searching capabilities, just the thought of having to develop the changes needed to duplicate this functionality with direct queries to the database scares me rotten. And there’s a lot more coming in FB6 than just filter and search improvements.

With that in mind, and the fact that the FogBugz has an API that can be called as a web service which includes such things as a list of filters, and retrieving case details for those filters, there is nothing for it but to switch to using the API. And if I want to support FogBugz On Demand, it is absolutely necessary as there is no access to the database.

U: But you’ve pretty much said all that already, surely that’s not the real reason?
I: Switching to the FogBugz API is a big job, and although REALbasic has good web service features, other technologies do it better, Adobe Flex being one of them. When I first heard about AIR (called Apollo at the time) my interest in Flex was piqued even more.

When I took a long hard look at Adobe Flex 2, I saw lots of stuff I really liked. It’s got a very nice IDE (Flex Builder, based on Eclipse), MXML is very flexible and quick to work with, ActionScript 3.0 is familiar without even having seen any before (it’s very ECMAScript compliant), and the optional chart components are fabulous.

It’s those chart components that finally tipped the balance. The charts functionality introduced in CaseDetective 1.1 has been a big success, but they are very basic, and frankly not as good looking or feature full as I would like. It would take me a humongous amount of work to improve the current charts, in fact they would most likely have to be re-written from scratch as at present they are a third party component that hasn’t seen much improvement of late. Flex’s charts are really good looking, easy to work with, and have many options for extension.

And besides, I’m still looking for a development platform that I can take forward and start consulting with when Informix 4GL finally dries up. Flex is much much more exciting to work with than Informix 4GL, and has a much bigger job market than REALbasic even at such an early stage in it’s own development, so I’m hoping I’ll be able to get some serious experience in Adobe Flex with this project and a couple of other projects I have in mind to show off to prospective clients or employers.

U: Ah-ha! Now the truth be told! You’re developing CaseDetective 2.0 and CaseDetective On Demand in the technology you’re looking to use for making a real living at for the next few years!
I: That is the truth m’lord. As much as I’d like to think CaseDetective could pay the the mortgage, it’s a long way off from it at the moment, I mean light years away at present.

U: What about backwards compatibility, will CaseDetective 2.0 work with FogBugz 4 and 5 as CaseDetective 1.3 does now.
I: Unlikely.

U: That sucks.
I: Yeah, I know. FB5 will be partially supported as there is a version of the FogBugz API available that can be downloaded and installed already, in fact the skeleton of CaseDetective On Demand has been developed so far using that existing FB5 API. But it’s very light weight, hardly any data is available.

From what I can tell, most FogBugz users upgrade within a few months of a major upgrade being available, so I can’t imagine there’ll be a lot of new customers wanting to use CaseDetective with FogBugz 4 or 5 in the not too distant future anyway.

I expect FogBugz 6.0 will be available quite a bit before I’ll be able to get CaseDetective 2.0 developed and out anyway, so I don’t think backwards compatibility is going to be a major issue, it might be the case that CaseDetective users upgrade their FogBugz install to v6 and then start contacting me about when CaseDetective will support it! I’m more worried about that.

U: Hmmm, that is tricky, how long of a delay are we looking at before you’ll get CaseDetective 2.0 out the door with support for FogBugz 6.0?
I: I really can’t say at the moment. Life is pretty darn busy, I’m in a full time contract for a few more weeks, with an extension being offered for a few more months, and I want to spend some time with my wife and baby daughter now and then, so development time is pretty scarce.

With some feature prioritisation, missing out the least used features for now, concentrating on the core of CaseDetective’s being, I might be able to get something out by the end of the year, but it’s more likely to be early next year.

U: Wow, that’s quite some time away until release, sorry to hear that.
I: Me too.

U: Is there any good news for existing customers?
I: Well yeah, of course!

I’m confident CaseDetective 2.0 will be a much nicer experience for the user, Flex/Flash/AIR has some usability features that can make an application much more enjoyable to use.

Those new charts should look great, and those much requested pie charts will finally be available.

CaseDetective 1.x will still be around, supporting FB4 and FB5 for a while. Although all development efforts are aimed at CaseDetective 2.0 just now, any show stopper bugs in CaseDetective 1.3 will be squished where necessary.

And CaseDetective 2.0 will be a free upgrade to existing users of CaseDetective 1.x.

U: CaseDetective 2.0 a free upgrade to existing users, that’s a nice gesture.
I: It’s the least I can do, considering the delay and what not.

U: Well, thanks for such a candid warts ‘n’ all interview, your time is very much appreciated.
I: You’re welcome, thanks for giving me the opportunity to talk to you, I enjoyed it.

Were my questions and answers simply not good enough, do you have some proper questions for me? Then please post your questions in the comments for this post.

* I was going to use Y, but I simply couldn’t cope with Y-I, “pet” kept popping into my mind.
Caching of data on the desktop may not make it into CaseDetective 2.0, it may have to come a little later. I want to make CaseDetective a lot lighter than it has been, this may take considerable work.
In fact, I enjoyed it so much I might just be doing this kind of thing at lot more often!

FogBugz On Demand

So, the cat is finally out of the bag, Joel Spolsky has announced FogBugz On Demand, a professionally hosted version of FogBugz.

In my opinion FogBugz On Demand is a wonderful idea, it vastly reduces the barriers to getting up and running with FogBugz, if you have an internet connection and a few dollars at hand ($21 per user per month), you’re all set. No install, no server needed, no backups or upgrades to worry about, sign-up and go.

Some of us have been privy to the existence of FogBugz On Demand for a few months now, as frequenters of the Business of Software discussion group were let in early to beta test it. The deal was very good for being a beta tester, two users for free, perfect for the MicroISVs and such like that make up the Business of Software group.

Although FogBugz On Demand is a great deal at $21 per user per month, considering you’re not needing to pay up front for licenses, don’t have to worry about maintaining a server, backing up the database, or upgrading software, I do think Fog Creek have missed a trick.

I think Fog Creek would do well to extend the free license deal to any new account beyond the existing 45 day free trial, maybe just a single license for free, but preferably two per account.

Consider the hapless developer who finds himself in a new project with no feature, bug or inquiry tracking facilities. Imaging that poor sole being able to create a FogBugz On Demand account in just a few seconds, and start entering features and bugs to be implemented or fixed, passing the URL to their customer(s), fellow developer(s) or tester(s). Happy days! Suddenly the developer can have a central repository of all the work they have to do, can keep track of discussions related to the cases and project design and development (via the in built discussion groups functionality), and know when they have completed the work for each release. Even if the client hasn’t got a system of their own to track the project effectively.

And who knows, after the developer has given the spare free login to their manager, development partner, prime customer representative or favourite tester, how many others on the team are going to want to get in on the act rather than just use the public interface functionality? Now the customer has given the authorisation for 5 users of FogBugz On Demand for the remainder of the project. Next project they add another 5 users, now those two free logins have turned into $210 per month, every month, for this one client of the developer alone.

And once they have got comfortable with the great features of FogBugz (and the fabulous additions coming in FB6), maybe they’ll decide to buy the self-hosted version for all departments in the company.

Just how many contractors are there floating around from poorly setup client to poorly setup client? I suspect metric butt-loads!

As I said, FogBugz On Demand is a fantastic idea, it just needs to get one foot in the door as a couple of free licenses (not just a 45 day trial), and I think it’ll do very well indeed.


UPDATE 2007-07-11 15:40: Both Joel and Eric have contacted me to let me know that there is a “Student and Startup Edition” of FogBugz On Demand, that gives you the exact same two users for free functionality that I was whinging about being missing. It’s an option within the “Your Account” page for everyone. It has not been advertised just yet for fear of overloading the servers at a time when lots of people will be testing out the new service.

So, all my millions of readers, don’t go sign up for your free two person FogBugz On Demand Student and Startup Edition account at the same time, or else you’ll get me into trouble!


How does FogBugz On Demand impact CaseDetective?

Those who know anything about CaseDetective for FogBugz will know that it currently talks directly to the FogBugz database. With FogBugz On Demand being hosted by Fog Creek, there isn’t going to be any way to get to those SQL Server databases, it’s just not going to happen, they’re locked away tight. In fact, Eric Nehrlich from Fog Creek was kind enough to email me as soon as the beta was announced to tell me that there fact, and offer to help me in any way he could in getting any requirements championed for improvements to the FogBugz API for FogBugz 6.0.

As such, I’ve been emailing back and forth with Eric and Michael Pryor for a few months as Michael made progress with the spec and then development of the upgraded FogBugz 6.0 API.

With any luck the new API for FogBugz 6.0 is going to have enough information for me to reproduce all the basic functionality in CaseDetective that my customers rely on, not only so that I can support the huge changes in FogBugz 6.0, but also FogBugz On Demand.


So, the fun begins.

Just how am I going to cope with such fundamental changes to the data retrieval method for CaseDetective?

Will the next version of CaseDetective for FogBugz use the same code base, or start from scratch?

Will the next version of CaseDetective for FogBugz still be developed using REALbasic even?

Will the next version of CaseDetective for FogBugz have any other improvements?

There’s only one way to find out … stay tuned for the next post!

CaseDetective for FogBugz 1.3.1 released.

Just a quickie to announce that CaseDetective 1.3.1 has been released; it includes a couple of bug fixes.

If you’ve had any problems in creating an extract or PDF file from certain filters because the “Save As” window doesn’t appear after the options window, you’ll want this release.
The issue was down to the default file name (filter name) being passed to the “Save As” window, if that filter name happened to have a “/” or other character in it that isn’t allowed in a file name, then the window simply failed to appear. The default file names for extract and PDF report files are now sanitised to only include alpha-numerics (a-z, A-Z, 0-9) and the space character, anything else is replaced with a hyphen. You can of course still change the file name once in the Save As window.
Thanks to Rosemarie for helping me find the cause of this problem with her wonderful debug log file, your patience and persistence is very much appreciated.

If you’ve had any problems with CaseDetective causing locking conflicts in your MS Access database, then you’ll also want CaseDetective 1.3.1.
I’ve only ever had one report of this problem, and it turns out it wasn’t actually CaseDetective causing the problem anyway, but CaseDetective has been updated to explicitly connect in read-only mode to any ODBC, MS Access and MS SQL Server database. It’s probably belts and braces and CaseDetective only does read-only operations on the FogBugz database anyway, but it can’t hurt as CaseDetective never updates the database.

That’s all folks.

CaseDetective 1.3 Post Development Lessons Learned: Part 2

This post is very closely related to my previous post about the lessons I’ve learned while developing CaseDetective 1.3, as it’s also about my reliance on eSellerate’s tools. It’s therefore going to be a short post.

In the previous post I mentioned that with the change from Integrated eSeller to Embedded Web Store imposed by eSellerate when supporting Universal Binaries, it effected how CaseDetective checked for updates. If I’d had my own check for update code independent from eSellerate, I’d not have had any problems when eSellerate changed how they set up SKUs (Stock Control Units).

Lesson Learned: Develop your own check for update mechanism from end to end, or use an open source solution that you have full source for and control over.

CaseDetective 1.3 Post Development Lessons Learned: Part 1

CaseDetective 1.3 took a little longer than I hoped to develop, partly because I took some time off to recharge my batteries after CaseDetective 1.2, but also because of some painful obstacles I had to overcome during it’s development.

This is the first post in a short series of “Lessons Learned” from development of CaseDetective 1.3 for FogBugz.

The first, and most asked for feature that I needed to develop for CaseDetective 1.3 wasn’t even a real feature; Universal Binary for the Mac OS X version.

A Universal Binary version was long overdue, I would have loved to have got one out for v1.2, but REALbasic hadn’t got that functionality stable by the time I started development, and more to the point, the eSellerate Universal Binary REALbasic plugin wasn’t anywhere near ready. As I rely on this plugin for validating serial numbers and for in-app purchases, this “feature” had to slip to v1.3.

Unfortunately the Universal Binary eSellerate plugin for REALbasic caused me a lot of headaches, which considering the Mac OS X users of CaseDetective are vastly outnumbered by Windows users, is very frustrating.

The first, and most annoying problem with the eSellerate UB plugin was that it wasn’t cross-platform, meaning I couldn’t compile CaseDetective for both Windows and Mac using the same eSellerate related code; I had to continue to use the old Integrated eSeller plugin for compiling the Windows version. And to add insult to injury, the old plugin would not work with the latest REALbasic IDE without being converted to the latest plugin format (a tool for this is provided with REALbasic), and even so, seemed to clash with the new plugin so that you had to compile for Windows and Mac as two separate steps (even when using #if to target the OS specific code). I resorted to making everything I could an external item and creating a copy of the project so that I had one project for Windows and one for Mac OS X. Each project referenced pretty much the same external items except for one module that included Windows or Mac specific eSellerate code, and ran each against a different version of the IDE so that the plugins didn’t clash. It worked, but wasn’t ideal for productivity.

The new eSellerate UB plugin for REALbasic was also different in operation to the old plugin, it used their “Embedded Web Store” framework, which used an embedded web browser in a window, and required setting up of a web store in the eSellerate admin panel. Now, I wouldn’t have had any problems with this change except that it required different handling of Stock Control Units (SKUs, don’t ask me why they use a “K”, I have no idea), which totally broke the way you setup the check for update functionality. Now I needed to update two areas of my eSellerate setup to cope with the Integrated eSeller used by the Windows version, and the Embedded Web Store (EWS) used in the Mac version. This is a recipe for disaster (although I think I’ve avoided disaster so far).

Also, unlike the old Integrated eSeller, the Mac EWS plugin needed a file to be copied into the app bundle after it was created, the old version didn’t require any extra files, it was compiled in and self installing.

Oh, and in the end I had to disable the in-app purchasing from the Mac version anyway because I found that if you tried to print the invoice shown after completing a purchase it totally hung the app and required a force-quit. Now, this may have been something that I did, but I’m stumped as to what that might be, seeing as printing the invoice had nothing to do with closing the window and returning to my app, so I’m pretty sure it’s a bug in the eSellerate plugin or EWS framework. When I found this bug I was about ready to explode, there was no way I was going to waste any more time in trying to find a workaround, so I just disabled in-app purchasing in the Mac version. Mac users will have to buy through the web store and copy their license details into the “Enter License” window, not a huge problem as most people seem to buy that way anyway, but still, it’s a shame I couldn’t use this convenient in-app purchasing mechanism which sets the user’s license details automatically on purchase completion.

I think version 2.0 of CaseDetective may just be using a custom serial number scheme rather than eSellerate’s own scheme, and then I won’t need to use any eSellerate plugins at all.

Don’t get me wrong, in general I like eSellerate, in all my dealings with them I have had superb support and have had zero problems reported to me by customers about their buying experience through them. It’s just that their REALbasic support has taken a serious nose-dive, which is unacceptable to me.

Lesson Learned: Develop your own license code scheme, regardless of purchasing mechanism.

Slow Progress / Big News / Time Out

Last month was very slow, development wise. I guess I’ve just been a bit burnt out from the frenetic pace I maintained when developing CaseDetective 1.2.

There have also been quite a few outside influences on my time, and some things have tended to play on my mind about the future, which held me back as I wondered how I’m going to have the time to fit everything in, and generally procrastinated.

The biggest thing in my life just now, and that is very much changing the way I see the future, is that Mandy and I have some fantastic news to share, we are going to have a baby, “due” April 4th.

As you might imagine, even though this has been planned and looked forward to for quite a while, and we’ve know about it for a couple of months now, when you sit down and start to think about how to fit everything in when you already don’t have enough hours in the day, it’s kind of over-whelming.

Some very good friends of ours have recently had a gorgeous bundle of joy (called Karis) drop into their lives (about 8 weeks early), it’s been a right eye-opener on just how much work a newborn can be. They are totally smitten and love her to bits, but I’m sure the sleepless nights and general constant attention that a newborn requires is very hard on the body and mind, and may just affect how much development I can get in on an evening come next spring! :-)

I’ve decided to just “go with the flow” at present, I feel like time spent catching up with friends and family, getting ready for the new arrival, acting on those self improvement ideas, getting a bit fitter, learning a few new skills and generally having a bit more fun is very much called for. I’m not going to beat myself up about not getting much development done just now.

I’m sure my brain will switch back into “work like crazy” mode at some point, when it’s ready, hopefully before I have no time to act on it!

Post CaseDetective 1.2 round up and future thoughts.

This is a rambling brain dump of a post, it may be big, but it definitely isn’t clever. Some might find much better use of their time by quickly skipping this post, you won’t hurt my feelings, honest. You have been warned!!!

Post Release Review

I released CaseDetective 1.2 for FogBugz a week and a half ago, so I thought it was about time I wrote a little update on how things have gone with this release.

This new release has proven to be very successful, I’ve had only one support request since it’s release, and unfortunately haven’t been able to solicit any useful information from the correspondent to find out what specifically their problem was. It’s a shame, as if I could get just a little info from them such as a 1 minute debug log run I might be able to see where the problem was, fix it and maybe turn them into a customer.


On the subject of “making” customers, last month (September 2006) was my best month so far for total number of orders, which was nice (although December 2005 was best financially due to volume orders). And doubly nice was that last week was my best single week of orders too, obviously some people trialling CaseDetective have been waiting for some of the goodies in CaseDetective 1.2 before buying. Maybe they’ve just bought it straight off knowing that there is a 90 day money back guarantee so it’s a “safe” purchase? I guess I’ll find that out within the next 3 months!

Either way, keeping the amount of changes in CaseDetective 1.2 to a couple of sizable features and a handful of minor improvements and bug fixes seems to have worked out well, especially as my available development time has been significantly cut recently.

The Next Version

Now it’s time to decide on the feature set for the next version of CaseDetective, which is proving very difficult to pin down. There are some relatively minor niggles that I know I need to address to help make things a little more “standard” (especially on Windows), I believe these minor cosmetic issues could actually be turning people off and need to be sorted sooner rather than later.

Then come the real features, the “value add” that makes people take a look at CaseDetective for the first or second time, these are a little harder to decide on.

For obvious reasons I’m not going to talk about the features I’m considering here, until said features are ready to go I’ll keep them close to my chest just in case they get pulled before the final release. However, what I can say is that I’m considering two different classes of feature, “brand new” to CaseDetective and more “improved” existing features.

Brand New Features

There are a couple of really big features that I just know will be popular, but of course the problem is they will take a considerable amount of time to develop, and I just don’t know if I’m happy to wait many months before I can release the next version. Maybe I should develop these “on the side” when I need a context switch and get them ready for a big release a little further down the line.

There are a few smaller new features that I could conceivably get completed in shorter time frames, none of them have the same “wow” factor of the larger features but on the flip side put them all together and they add up to more useful functionality and therefore reasons to try CaseDetective.

Improved Features

There are features in CaseDetective that customers really like, but want more from, and just like the “Brand New” stuff some could take considerable effort and others not so much. These are important, as it’s all very well being able to do something, or having the promise of being able to do something, but if it falls short of expectations it leaves a nasty taste in your mouth that’s difficult to remove, and therefore very bad for CaseDetective’s image.

FogBugz Compatibility

Of course, things get a little bit muddier when you take into consideration the prospect of a new version of FogBugz somewhere down the line, and the changes that may force on CaseDetective.

I have absolutely no idea what is coming up in the next release of FogBugz, or when it will be released. Like everybody else I have to just keep an eye on the FogBugz discussion group to try and glean what’s going to change. And from what I can tell, it looks like there might be some changes in the next version of FogBugz which will require changes to CaseDetective.

This will hopefully be somewhat mitigated by my development style, whereby in general CaseDetective improves bit by bit during development, always in a near release ready state with each new bit of development tested before check-in. This means if FogBugz 6.0 comes along quicker than expected I should be able to finish off (or cut) the current feature I’m developing and work on compatibility, which is always top priority.

Brand New Application

For a long time I’ve been itching to kick off development of a brand new application, possibly with brand new tools. There are three particular applications that have been bouncing around in the back of my mind waiting for an opportunity to be put into practice.

One of these applications is fairly simple and has no dependencies on other applications or systems, it would therefore be a nice little bit of development that I could chip away at in my “spare” time (ha ha, ‘cos I have so much spare time you know). However, there are three possible implementation methods for this app, desktop only, web only, or web with desktop app. I’m leaning towards at least starting off as web only, as it should then be possible to add a desktop app later if the need still remains.

The other two apps are Mac only, nothing particularly new, just “better mouse traps”. Both could start off fairly simple and grow organically although there is a definite level of features that I would require before I could start using them full time, which might mean a pretty lengthy development schedule. And there might not be much call for what I’m thinking of developing anyway.

Either way, each of these new developments requires that I start to use a new technology, most likely Ruby On Rails for the web app and Objective-C/Cocoa for the desktop apps. I could use REALbasic for the desktop apps, but to be honest I fancy learning something new and that Core Data stuff looks pretty neat for what I’m thinking of doing. Having said that, although there are plenty of Windows apps in the application spaces I might be targeting, I dare say I could take a slice of the action with a cross-platform application written with REALbasic. The desktop apps definitely have more marketability than the smaller web one, but I really want the web one!

What to do?

So, as you see I have a bit of a dilemma.

 I really would like to start development on the web application, but frankly I just haven’t got the time just now and am very unlikely to conjure up anymore in the coming months. I could sacrifice one evening a week to it, but I’m not convinced that’s enough to learn a new language without being frustrated by lack of use hampering the learning curve. There’s also the problem that the new development is pretty much for my own edification, as there quite likely isn’t a market for what I intend to develop, even if I know I would pay for it myself. I guess I could always test that though, no harm in trying.

As it stands, I’m leaning towards improving current CaseDetective features in the next release, with a few smaller “new” features that have been most requested. But, I’m going to take a few days to properly sketch out and estimate the changes I’m considering from the huge heap of feature requests to make a better informed decision on which to do, and make sure to leave some slack for catching up with FogBugz just in case it gets rev’d within my release time frame.

I did warn you!

So if you’ve made it here, sorry, but I did warn you!

Phew, CaseDetective 1.2 released!

Hooray! The pressure has been released as CaseDetective 1.2 for FogBugz is out the door!

On Thursday evening (nearly Friday morning) CaseDetective 1.2 hit the ‘net after a pretty swift gestation period compared to previous versions, two months of development plus a few weeks of beta testing.

Things have gone really well with this version, I set my sights on just a couple of major features with the intent of getting it out within 3 months, and I just managed to get it finished on time.

I started this release at the beginning of July, once I’d got back from holiday and had settled into my new contracting gig. From the start I followed a pretty punishing schedule, every week day I’d check my mail etc while having breakfast, then I did a full day of on-site 4GL development consultancy, and then in the evenings after getting home I’d have dinner with my wife and then spend the rest of the evening working on CaseDetective. I’d also steel the odd hour or two on the weekends if we were out and about.

I think It’s paid off, the beta release was very stable, the only changes I needed before final release were either existing problems that I hadn’t been aware of until some new customers tried CaseDetective or small cosmetic changes.

While fixing one of those existing problems I stumbled across a REALbasic keyword that sparked a connection with a problem I was aware of but could not find a way to fix, thinking it a problem with RB. I was having problems with email messages, RB has some really great ways of handling email messages, but I kept missing the first few lines of an email message or the headers wouldn’t be found when I pumped the source into the EmailMessage class. I’d tried all kinds of pre-processing encoding/decoding of the raw email source text to try and wiggle out the line ending and other features of the text that might cause the problems. But it wasn’t until I found the ReplaceLineEndings that it all went away, this one function allowed me to fix all the different line endings that email messages pick up on their travels in one fell swoop. This bug had been haunting me since I started on the preview pane, now it has been vanquished (hopefully forever), hooray!

It was particularly good timing fixing this bug before the final release of CaseDetective 1.2 as the new Save to PDF and Print features rely on being able to correctly process email messages to extract the text and attachments.

Anyway, best get on and start writing the newsletter to let more people know about the new release, and then maybe start on some other promo tasks.

CaseDetective has picked up a few more sales recently, it may be due to the onset of 1.2 or maybe people’s trial periods finishing after using it for 30 separate days or so. Personally I think it’s because I’ve been talking about the new version and generally making sure people know that CaseDetective has a future and will continue to evolve. So I’m going to start doing a bit more of that.

CaseDetective 1.2 Beta/RC going great guns.

Thought I’d better drop you all a quick updated as to how the beta of CaseDetective 1.2 is going.

It’s doing really well; the first beta had just a couple of very minor issues, so minor in fact that from the second version I’ve renamed it as a release candidate.

Since then a couple of issues from previous versions of CaseDetective have been brought to my attention, and I’ve decided to make sure they are fixed before v1.2 makes it’s final release, so I’m working on them now.

While working on those fixes I’ve had the chance to find a couple of other bugs and cleanups that also need sorting, so I’m glad I decided to take the extra time, I’d much rather delay the release a short while than have to release a bug fixed version soon after.

Can’t say for sure how long it’s going to take to get the final version fixed and out, it should be pretty soon, but it’s tough now that I only have evenings to work on CaseDetective.

All the while my EyeTV is accumulating shows for me to catch up on, and I’m not even that much of a TV watcher, it’s going to be hard finding time to watch them all.

CaseDetective 1.2 Private Beta Almost Ready

Just like Jon trainer, I haven’t met my self imposed deadline of releasing the next version of CaseDetective for private beta.

I had hoped to get the next version out by the end of August, but things have been very very hectic in the real world lately. Even though I’ve been trying to catch up recently by seriously burning the candle from both ends, it just hasn’t come together as quickly as I hoped, even with cutting some features.

But, the good news is that I’m nearly finished, it’s just a case of testing all the combinations that I need to support, i.e. Windows and Mac OS X versions connecting to MS SQL Server, MS Access and MySQL (4 & 5) databases on various hosts, and then I’ve got to get some docs together etc. But the chances are I’ll skip the docs and update them while it’s out being tested.

What are the major changes in CaseDetective 1.2 apart from bug fixes? In this release I’ve addressed the 4 top requests:

1) DSN less connections on Windows.

2) Direct connections to MySQL 4.1 and 5.

3) Printing of cases.

4) Less painful initial sync.

Since people started using CaseDetective they’ve been confused by the need to use an ODBC Data Source Name (DSN) when connecting to either MS SQL Server or MS Access. This has now been addressed for the Windows version, you can now enter database connection details directly into CaseDetective’s preferences window. This should make getting started much quicker and easier.

Along the same lines, now that FogBugz supports MySQL 5, I’ve been getting lots of requests for being able to connect to such databases. It seems that the Beta MySQL 5 ODBC drivers aren’t too stable and have been causing people problems, CaseDetective 1.2 will support connecting to MySQL 5 without the need for ODBC.

CaseDetective 1.2 has rudimentary printing of cases and saving to PDF. Why do I say rudimentary? Well, although many people will find the printing capabilities sufficient, it’s not as feature complete as it could be, and there’s no print preview yet. I’m hoping to get some feedback from the release so I can find out what printing features users are looking for.

And finally, but certainly not least, some users have been having problems doing the initial full sync that CaseDetective 1.1 does. 1.2 addresses this by syncing the “big stuff” (comments, emails and attachments) in the background, slowly catching up. If CaseDetective is closed before the case events are all sync’d, then it’ll just carry on syncing on the next run.