Posts categorized “MicroISV”.

We're back!

CaseDetective128.pngYes, it’s true, we’re back and developing CaseDetective for FogBugz again!

It must be true as the IMiJ Software and CaseDetective websites have had a bit of a face lift. There are further changes in the wings, but both sites are looking good, even if I say so my self.

There’s no date for when CaseDetective 2.0 will be available just yet, but be assured development is well under way.

CaseDetective Development On Hold

The festive holidays are a dangerous time of year, spending time with family and friends and generally having a good time away from your computer can be disastrous for an ongoing project.

This year, it’s been doubly disastrous for CaseDetective, not only has development time been non-existent and support reduced as usual, but I’ve had time to reflect on CaseDetective’s future, and more importantly on it’s place in my life.

I’ve come to the (long overdue) decision that development on CaseDetective is to be put on hold, I’m not going to work on CaseDetective or any other significant development project in my spare time for the foreseeable future.

For a long time I’ve struggled to balance time with my family and friends, personal interests and health, (money making) consulting work and CaseDetective, something has to give.

My family is everything to me, I love my wife and daughter and the last two weeks have enforced my long standing regret at having to spend a considerable amount of my (and my family’s) free time supporting and developing CaseDetective. There’s also a knock-on effect to the rest of my family and friends, who don’t get anywhere near the attention they deserve, neglecting them makes me sad.

I’ve also completely neglected my health in the last few months too. The year started well as I lost a good bit of weight and improved my fitness through running and watching my diet, but running has gone out the window as time got squeezed out by more CaseDetective support and development of version 2.0. I’m feeling very unfit, and am at my heaviest in ten years. I need to make time for running and biking again. I used to love mountain biking in my early twenties, getting up early on a Sunday morning and going for a 25-50 mile ride up and down hills coming home covered in mud was bliss. I want to have the health and time to enjoy physical activities again.

Reading and sleeping, I want to do more!!!

I think CaseDetective has also impinged on my mind so much that on occasions it may have had an impact on my consulting work. Sometimes I’m so wrapped up in something I’m doing with CaseDetective that I feel I’m not giving my real job it’s deserved attention. That is unacceptable, and with my current contract being a pretty intense project with an aggressive time scale, I can’t afford to slip up because my mind is elsewhere.

Many people would have put a stop to development of CaseDetective a long time ago just because of the terrible return on investment. CaseDetective has been in development since September 2004, with a few hiatuses along the way, let’s say that’s 156 weeks (3 years) worth. With a conservative estimate of 8 hours development/support time per week (it was actually full time for about 6 months), that is 1,248 hours. Let’s take a reduced consulting fee of £25 per hour for a grand total of £31,200 worth of my time spent on developing CaseDetective. Seeing as CaseDetective has had a net revenue (according to eSellerate) of approx. £1,885 ($3,771.47), it really doesn’t stack up well, and that’s not even taking into consideration expenditure on tools and hosting etc.

One of the major problems I have with CaseDetective though, is that I no longer have any need for it myself. Most of the functionality I need for bug, feature and inquiry tracking is in FogBugz, and I rarely want to report on the data held in FogBugz any longer. So you can imagine that my enthusiasm for developing and improving CaseDetective is somewhat diminished. I still believe CaseDetective could be a great product, and one that I would use if I added some of the features I have planned, but to get it where I want it would take considerable development time. At the moment, I’m simply not willing to commit so much of my free time to make it happen.

So development of CaseDetective is on hold. Support for existing customers will continue for the time being (at least six months), but I’m going to take down the majority of the CaseDetective website and stop taking any further sales.

There is a slim chance that development could resume if I find myself at a loose end without full time employment so I’m not thinking about selling or otherwise releasing the CaseDetective source code.

If there is anyone out there with a product that could help CaseDetective customers continue to extract CSV files and/or PDF reports from FogBugz without having to know any SQL, please drop me a line and I’ll pass your details onto my customer base. If there is a free license or “competitive upgrade” license available, all the better.

Thank you to all the great people in the MicroISV/BoS community that have supported me with kind words of encouragement and advise throughout my time developing CaseDetective, you helped me immensely.

A big thank you must go out to everyone at Fog Creek, especially Michael H. Pryor, without your help I couldn’t have got as far as I did.

Also, thanks to all my customers, thank you for showing your support for CaseDetective in the best possible way, by buying a license! And thank you for being such nice people if we had any communication.

And finally, thank you to my wife Mandy, for putting up with my countless hours working on CaseDetective and supporting me all the way. I love you so much.

CaseDetective 1.3.4 released

I’ll let the release notes tell the story…

Changes In CaseDetective 1.3.4

Released 2007-12-13

  • Bug Fix: Error while creating indexs on the Attachment, Cases or CaseEvents table.
  • In some rare cases CaseDetective could not create indexes on it’s cache database due to non-unique data in a primary key, this has now been fixed.
  • Bug Fix: The previous change (1.3.3) for the above bug fix introduced some database incompatibilities.
    • In order to fix the problem across all supported database types, CaseDetective now requires MySQL 5.0+ as opposed to MySQL 4.0+. MS Access and SQL Server 2000+ are still supported as usual.
  • Bug Fix: Mac OS X 10.5 (Leopard) compatibility.
    • Updated tools and some third party libraries for better Mac OS X 10.5 (Leopard) compatibility.
  • Bug Fix: Support FogBugz 6.0 for non-administrators.
    • CaseDetective now supports changes made to the FogBugz 6.0 database schema for permissions, non-administrators can now see their cases!
  • Bug Fix: Improved permissions adherence.
    • Some changes were made to better support permissions, summary filters now correctly miss projects etc that a user does not have permission to see in FogBugz (4, 5 & 6).

    PLEASE NOTE: This does not mean CaseDetective fully supports FogBugz 6.0, it just means you may be able to use the “classic” filters in FogBugz 6.0 with CaseDetective 1.3.x, you will not be able to use the new search based filters introduced with FogBugz 6.0. Full support for FogBugz 6.0 and it’s new search based filters will arrive in CaseDetective 2.0 and CaseDetective On Demand by early 2008.

    As always, CaseDetective 1.3.4 for FogBugz is available from the download page.

    Oops, CaseDetective 1.3.3 pulled, working on CaseDetective 1.3.4.

    Oops, turns out CaseDetective 1.3.3 wasn’t so good for all database types and versions, so I’ve pulled it.

    I’m working on CaseDetective 1.3.4, but it’s a little trickier than I thought due to what SQL syntax is and isn’t supported across different versions of Access, SQL Server and MySQL.

    It may take a couple of days to fully test an alternative way of fixing the bug that was supposed to have been taken care of by CaseDetective 1.3.3.

    Thank goodness I upload the website for each version to a brand new directory and switch a symbolic link from old to new. So to revert to 1.3.2 simply consisted of logging onto my web server and switching the symbolic link from new to old.

    CaseDetective 1.3.3 for FogBugz released.

    Dumm, dumm, dumm, another one bites the dust, clap clap!

    CaseDetective 1.3.3 has been released with just one iccle fix.

    In very rare conditions CaseDetective would fail to get either attachments, cases or case events due to a “duplicate values in unique index” error.

    There was a little bit of Cartesian (black) magic happening, now vanquished!

    If you’ve not had the problem then chances are you’ll not need this update, but if you do need it you can grab it from CaseDetective’s download page.

    Weight off my mind.

    Phew, last night I killed a bug in CaseDetective 2.0 in less than 30 minutes of development that had been bugging me (pun intended) for well over 4 weeks!

    And what’s more, 30 minutes later after re-activating another feature that I’d disabled because I had a bug in that code that had also been bugging me for well over 4 weeks was also fixed, without me making any further changes!

    I hate (love) it when that happens! :-)

    The annoying thing is, my code for the first feature is virtually the same as before last night’s edits, I’d almost got the bug fixed before in that I’d whittled it down to a very specific block of code that I could hard-code around to get the results I wanted, but couldn’t get the proper solution to work, even though it looked absolutely right. I worked and worked on the area, making sure I fully understood the all the properties and events of the classes involved, but alas the solution failed to reveal itself.

    Out of frustration I switched one parameter to a function that should have absolutely no effect from “true” to “false”, fully expecting that the problem still existed. It fixed the problem. Fantastic! But also very very annoying. I can only assume it’s either a very subtle bug in the framework, or more likely me not quite fully understanding the event interactions of a couple of classes.

    I tell you, it feels great to have fixed these two problems, they were two great weights stopping me from progressing in important areas of CaseDetective, and stopped me from being able to efficiently concentrate on my work.

    A great weight has been lifted off my shoulders, full steam ahead!

    Status Update 2007-11-19

    Availability

    A couple of weeks ago I was supposed to write a post about my availability for hire, having just completed the year (and a bit) long project for my last client. I guess I was too busy either enjoying some relaxed quality time with my wife and daughter, or getting in some development time on CaseDetective 2.0 and missed the opportunity.

    Anyway, today I started a new contract I bid for and won. It’s just a 20 week one, for the very same client I’ve recently finished up with, but this time doing system analysis and design for a brand new system. It’s a great project, in fact a whopping great big project of huge importance for the client, but I’m relishing the challenge.

    CaseDetective

    Although CaseDetective 1.3.2 came out a couple of weeks ago with support for FogBugz 6.0 password formats, it turns out there were other more problematic database schema changes that will cause problems for many CaseDetective users.

    As such, I’m going to have to say that CaseDetective 1.3.2 is unlikely to work for most FogBugz 6.0 users, not that it ever officially supported FogBugz 6.0 anyway. For FogBugz 6.0 support CaseDetective 2.0 will be required, which we’re hoping to have released early next year.

    CaseDetective 1.3.2 for FogBugz released

    A new version of CaseDetective for FogBugz hit the ‘net last night, just a little bug fix release.

    First bug: In very rare cases switching the graph to show Release or Priority could cause a crash with a “NilObjectException”, this slippery little sucker has now been squashed.

    Second bug: If you change your password within FogBugz 6.0, or are using a new account created in FogBugz 6.0, the password will be encrypted and stored in a new format, this new format is now supported by CaseDetective.

    FogBugz 6.0 introduced a new password format, and I didn’t know about it until a customer got a dialogue about the unsupported password format (sure am glad I coded that up).

    It must be noted that this doesn’t mean CaseDetective 1.3.2 fully supports FogBugz 6.0, it doesn’t. What it does mean is that the “classic” filters you created in FogBugz 4 & 5 will still work, and any new ones you create this way too, but the new “search” style filters will not work. The new search axis style filters will be supported in CaseDetective 2.0 and CaseDetective On Demand when they are released, hopefully by early 2008.

    The inbuilt buy mechanism has also been given a little love, so you can now buy CaseDetective for just $69 from within the trail version to be instantly upgraded from both the Windows and Mac OS X versions.

    As always, CaseDetective for FogBugz can be downloaded from http://www.casedetective.com/ for both Windows and Mac OS X.

    How's it going with this Flex stuff?

    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: A little while ago you talked about redeveloping CaseDetective with Adobe Flex, is that still happening?
    I:
    Sure is.

    U: Great! How are you finding Flex then?
    I:
    I’m loving it.

    U: Care to expand on that, it’s not going to be a great interview if you don’t give me proper answers!
    I:
    Oh, OK then, sorry.

    I’m really enjoying developing with Adobe Flex, it’s name is very apt, the flexibility you have while developing is fantastic. Just being able to drag and drop a number of controls in Flex Builder’s great looking design view, and then switch to source view to add a few extra details is wonderful. The xml like nature of the mxml format makes this a breeze, especially with Flex Builder’s code hints and completion.

    ActionScript (Flash Player’s and therefore Flex’s scripting language) is very clean and familiar, being based on the ECMAScript language specification. Anyone with even a smattering of experience in Java or any other modern object orientated language will get on famously with ActionScript. It’s deeply object orientated, it’s amazing what you can do with it, especially as the Flex and Flash libraries are pretty solid, and easy to extend.

    U: It looks as though Flex Builder 3 is coming on strong, have you looked at it?
    I:
    I switched to using Flex Builder 3 beta 1 a couple of months ago!

    U: Isn’t that a bit risky, developing on a non-released development platform?
    I:
    Some might think so, but in this case it works for me.

    I started off with Flex Builder 2, bought it (and lot more from Adobe), and it does the job. However, when I saw some of the great new features in Flex Builder 3 I had to take a look.

    I spent a good few weeks continuing main development in Flex Builder 2, and then checking out to Flex Builder 3 to see how it handled it. I had no problems at all.

    When I played with the new AdvancedDataGrid I knew I couldn’t stay on Flex Builder 2, I wanted the multi-column sorting and grouping functionality the AdvancedDataGrid has to offer.

    When I had good long think about it, I realised that I’m not planning to release CaseDetective 2.0 until early next year, which coincides quite nicely with the planned release schedule of Flex Builder 3. So for me it’s a strategically positive plan to develop with the better functionality available in the beta releases and submit any problems to the Flex Builder team, than to carry on using a version that doesn’t give me all of the whiz-bang features I want and that I’d want to upgrade around the time of CaseDetective’s release anyway. Better for me to get ahead of the game and be familiar with the new version of Flex Builder and the Flex SDK than to have to catch up later.

    U: You mentioned the AdvancedDataGrid as a feature you’re really enjoying in Flex Builder 3, anything else you’re liking?
    I:
    The other Flex Builder 3 features that I’m totally and utterly in love with are “Mark Occurrences” and Code Refactor support.

    Mark Occurrences highlights every occurrence of a class, function, variable etc that matches the one your cursor is currently on. It’s sounds like a very simple feature, but believe me it’s a really intelligent and very useful one. When your cursor is on a variable name for example, every usage of the variable is highlighted in a nice blue colour, and in the right hand gutter is a little blue block that shows where the occurrences are across the whole file. If you click on one of those gutter blocks the code window moves to show it, which is great for quickly navigating from the declaration to the use of a variable etc. It’s hard to explain, but it works very well and has really sped up navigating source files when editing. What’s particularly nice is that it understands scope, so it knows that the same variable name declared in multiple functions is not the same variable.

    The new Refactor contextual menu is very handy when you’re zipping along with development and find you could have named that class, function, variable etc better. Pick refractor -> rename, give it a new name, select Preview to see all the places that it’ll get updated, from the declaration to all the uses, hit OK and the jobs done. Wonderful, saved me a barrel load of time, and what’s more removes all reasons for keeping a rubbish name, making code much easier to read.

    Flex Builder 3 Beta 2 was released just a few days ago, and having those two features has made this week one of my most productive and committed development weeks for a long time!

    U: Thanks for giving us the time for this interview Ian, much appreciated.
    I:
    You’re welcome, enjoyed it.

    The IMiJ Software forums are now closed

    I’ve had enough, SPAM on my company’s forum has got way out of control.

    Day and night SPAMers are registering new users and attempting to post to the forum, meaning I’m having to do heaps more admin than I should, banning users and deleting the odd post that gets through the Akismet filtering. Not fun.

    So, considering the forums haven’t really been a success anyway, I’ve stopped new user registration or any new posts. I’ve also deleted all users with no posts, which may have caught the odd genuine lurker in the cross-fire, but seeing as no one can post anymore, this can’t be much of an issue.

    Forums are one of those topics often discussed in the world of the microISV, as they have many pros and cons.

    Some of the pros being the potential for reduced support costs as common questions will be answered via a quick search of the forum, users can support each other in many cases, and a thriving community centred around your software can be a wonderful thing.

    But there are of course negatives, the chief of them being that if the forums are quiet it can reflect badly on your products, people can get the impression that the product isn’t doing well, whether it is or not.

    My forums have been very quiet, and the users of the forums haven’t really got into any kind of discussions, so there isn’t even a fledgling community there. Closing them seems like the most sensible thing to do at this moment in time.

    The forums are going to remain up for the time being, simply because there are a couple of links to content in them from external sources as well as my own sites. But come the release of CaseDetective 2.0 I expect I’ll be removing them. I may replace them with a FogBugz style discussion group in the future, but there’s a good chance I’ll wait until I have too many requests for forums that I can’t ignore it, and am reasonably sure they are going to be used. That may be once I have more than just CaseDetective as an offering.

    And yes, I’m very aware that I haven’t linked to the IMiJ Software forums from within this post, that’s totally intentional! :-)