Version 2.6 – an update

Just a quick note about version 2.6.  I am still testing at the moment but the good news is that said testing is now approaching completion.  There are nearly 500 formal tests for QW and there are probably that many informal tests again that I run to check other things.  Most tests are an aide-memoire for a specific feature which gives you an idea of the size that QW has grown to.

I’ll be honest, development and testing of version 2.6 has been a long and complicated affair and it hasn’t helped that the changes for assets has impinged on every functional area (for example I am currently testing Editor Mode and sending an update to a project was broken because of the new user configurable fields).

On the upside, I have nearly finished testing Editor Mode and there are only a few minor areas left to test after that.  So I’m hoping (oh god I’m hoping) that testing will be complete by 7th May and then I can release maybe a week later.


What’s coming up in version 2.6

I haven’t done one of these for a while but to be honest there wasn’t much to talk about.  There have been a few “point” releases of QW since version 2.5 but nothing major to discuss.

However in version 2.6 some big changes are coming.

The two most requested features I get asked for nowadays are:

  1. More configuration, i.e. customizable fields, for assets (characters, locations etc).
  2. A dark theme for nighttime usage.

Item 2 won’t be happening (probably) until I can do version 3 of QW.  Version 3 will be built on a completely new technology called JavaFX and will support a slew of new features.  It will also be a very big change that is going to take some time and certain other things need to be in place before I can even think about moving, but it is coming.  As a side note native Linux and Mac versions will be possible when I move to JavaFX.

Version 2.6 will deal solely with item 1.  At first glance it seems like an easy thing to do, just allow users to add new fields, but the implications of doing so are huge.  I would add that an ancillary feature request often tacked onto the request for new fields is the ability to arbitrarily group and order items.

With the preamble over, here’s the 10,000ft view of what will be new in version 2.6.

Drag-n-drop of sections in the project sidebar

Currently the sections in the project sidebar (the panel that shows the chapters and characters and so on) can’t be customized very much.  You can either open or close a section and that’s your lot.

Version 2.6 will allow you to drag and drop the sections around, reordering things to how you would like them to be displayed, so if characters are the most important to you then drag them to the top, or if you are in the middle of getting feedback from your editors, drag those to the top.  The choice will be yours.

Adding/removing sections in the project sidebar

So you can drag-n-drop sections but what about if you never use a section and don’t care about it?  Well in version 2.6 you’ll be able to hide sections (and reshow them) whenever you like.  If you are not using “Research Items”, then why not hide it and save some space.

New object types

You’ve now removed all the things you don’t need in the project sidebar, you’ve moved things around to fit how you like them, but what about if you have something that isn’t an “Item” or a “Location” or a “Character”?  What about if you want to be specific and have a list of Cheeses or Spaceports or Books or Candlesticks?  In 2.6 you’ll be able to create new types of objects and each type will become its own section in the project sidebar, which you can hide or show as you wish.

Customizable object fields

So you’ve created your “Cheeses” object type, now you want to record some information about them, maybe stuff like “Smell” or “Color” or “Consistency”.  In 2.6 you’ll be able to add as many new fields as you’d like and record as much information as you like.  Here’s a list of the types of fields you’ll be able to add:

  • Text – a line of text
  • Multi-line text – err, multiple lines of text
  • Files
  • Select an item from a list of possibilities (think drop down list)
  • Number
  • Date
  • Web link
  • Another object – for example you might want to associate a character with their favorite cheese


Your object is created, your fields added but now you have a different problem, how should the information be laid out and displayed?  A number of possible layouts will be available.  Some possibilities are shown below.

BTW, if you eat cheese that has pickled onions in it (yeah I’m looking at you Mersey Valley) then there is something wrong with you.  Seriously go see your Doctor, you are either pregnant or mad.

object-layout-1 object-layout-2 object-layout-3Tagging

But wait!  There’s more.  I’ve sometimes been asked to allow sub-groups or sub-types of objects to be created, or to allow arbitrary groupings of objects together that have some sort of commonality.  If we stretch our cheese example a little more, how would we group together characters, locations, chapters, notes and whatever-else-you-can-dream-up into a single easily identifiable group?  The answer I propose is tagging, that is you apply the same tag or label to each of the relevant objects.

So if you have a character that is obsessed with Wensleydale (let’s call him “Wallace”) and his location may be “62 West Wallaby Street” and you’ve created a new type of object called “Dogs” and you have a dog called “Gromit” and you have chapters called “A Grand Day Out”, “The Wrong Trousers” and “A Close Shave”.  You might give each of these objects the tag of “Where’s the Wensleydale Gromit?” to group them all together.  You’ll then be able to see the tagged objects in their own section in the project sidebar.

It will look something like this.

Cheeeeese Gromit!

Cheeeeese Gromit!

The advantage here is that you can group items together without having to nestle them within a sub-branch of a tree, they remain accessible at the top level and can be dragged and dropped around like any other section.

To add new items to the group you just drag them from another section… which leads me to…

Drag-n-drop items within a section

The final new feature deals with moving items of a particular type around in their section.  You can already drag-n-drop chapters around to order them, so why not characters or locations?

When will it all arrive?

Not sure yet.  I’ve already done the drag-n-drop and hiding of sections and I’ve started on the customizable fields and layouts, but I won’t deny, it’s a huge piece of work that impinges on a large number of areas and that means time.  Christmas is also in the way as is the unforgiving Brisbane summer, where you often feel like mother nature is lurking behind every ominous looking cloud with a piece of 2 by 4, just waiting for you to drop your guard so she can smash your head in with it.

Sometime in February 2017 is a realistic date but it could take longer.  My wife starts a new job (and career) in February and my son starts a new school then too so it will be hectic time and little may get done.  Life finds a way of getting in the way.

Some changes to QW, but you will barely notice

Changing the way that QW is installed, upgraded and runs has been on my to do list for a while now.  Specifically the following issues have been cropping up and it’s time they were fixed (spoiler warning, they are in version 2.5.3):

  • Having users download and maintain their Java installation.  I’m a strong proponent of “your machine, your choice” but with 20/20 hindsight it’s clear that my desire for the end user to manage their own Java installation was a mistake.  It causes a number of issues, not least sometimes preventing QW from running because the version is out to date.  Future versions of QW will have its own version of Java embedded in it cutting out a plethora of issues.
  • Installation permissions, sometimes Windows gets finicky about permissions and install locations.  Future versions shouldn’t have this problem, although I can’t guarantee it.
  • Upgrades will be simpler.  Future versions will use a single installer for initial installations and for the upgrades.  This ensures that the Java version QW is using is always correct and that the files QW needs are always present and not in conflict with one another.  At the moment the upgrade process has to keep track of what files are no longer needed and remove them when it upgrades.  It’s all very messy and painful.  The new installer will remove the old installation first to ensure that things are in sync.
  • Anti-virus false positives.  Every time I release a new version of QW I have to spend a substantial amount of time contacting anti-virus companies to get them to remove the false positive malware mark they impose on the QW installer.  This is, I believe, because the current installer contains a .exe file that will download Java for you.  The new installer doesn’t have the .exe file so hopefully it won’t be marked as malware.

Now these benefits aren’t without a cost, which is that the size of the install/upgrade file will grow substantially due to the inclusion of Java.  The current new file is about 63MB in size which is about 25MB bigger than the current installer and about 45MB bigger than the upgrade file.  There are also a couple of extra clicks required from you to complete the upgrade.  So there is a cost for you the end user (probably in time more than bandwidth) but the bigger cost is for me, I’m not entirely sure how much more this will cost in download allowance from Amazon, time will tell.

My thanks also go out to EJ Technologies who have very kindly given me a free license (since QW is open source) for their excellent install4j multi-platform installer builder which I’m now using to create the installers.  As the name says they also support Linux and Mac so once I’m happy that QW runs on those platforms I should be able to create native installers for them as well.

Version 2.5 is out now and looking to the future

Sorry for the delay in posting this, it was a difficult, tedious release and combined with some personal issues I’ve had to deal with this has fallen off of my radar.

But version 2.5 (and a small bug fix release, 2.5.1) is out now and it brings writing Targets and new and revamped Charts.  It also includes a number of smaller features that users have requested, such as:

  • The writing area background color and text color can now be changed in normal mode.
  • There is a new full screen mode option to always have the current word count and time visible (in the bottom left hand corner).
  • Some new keyboard shortcuts have been added.
  • The color selector has been reworked to support direct RGB entry and to be more flexible and easier to use.

See the release notes for full details:

The future

The past few major releases of QW have been difficult affairs.  They have taken too long to develop and test for what they deliver.  This release has skewed this perception somewhat due to a number of major changes to the codebase and testing methodology, for example I started using Leantesting in this release and there has been a learning/usage curve with that.  Regardless, the trend of past releases has shown me that I need to change the way I do things and focus on smaller releases that I can push out the door much faster.

With that in mind future releases will be smaller and released more frequently.  Of course this means that they will also contain less “new”.  I’m currently working out just how small or large they should be, my intuition tells me its “just enough”.  Having to upgrade because of a minor feature that you never use is not the best use of your time (or the QW website’s bandwidth) but by being more nimble, shorter development cycles should be beneficial for everyone, not least me who needs to find more time to write.

How you can keep track of how v2.5 is progressing

It occurred to me the other day that there is a way for you, dear QW user, to keep track of how version 2.5 is progressing.

tl;dr Click here to view the commits that are occurring to the code for version 2.5.

A few months I changed the way I develop QW and instead of huge monolithic updates I switched to smaller, more delineated changes (or commits) to the codebase.

Testing of this release is going slower than it has for previous releases.  I’ve talked about some of the reasons in the last post but one further complication is that I’m now raising bugs for just about everything that I think needs adjusting within QW (I couldn’t do this before with my home grown test tracking system).  I’m also tying commits to the codebase back to the bugs raised so I have a full history of what is going on and why.  I’m still working on how to make the bugs visible to the world.

I appreciate that most people will have little to no interest in this and fewer will have an understanding of the terse and arcane terminology used but it does give you a window into what I’m doing.

So if you want to see how version 2.5 is coming along, check out the version 2.5 commit list.

Version 2.5 – an update

Version 2.5 is now complete and I’ve begun testing however a number of things have occurred that means it may be a while before it is actually released and I just wanted to give a quick update as to why this is happening.

New Test Management

Over the years I’ve been writing tests for QW and in the past I created a webapp that managed them for me, it allowed me to record the testing results and keep track of what had been tested.

However it needs some work and to update it to what I now require (QW has over 400 separate tests) is going to take a serious amount of time.  It also suffers from the “internal only” problem in that, because I’m the only one using it, a number of problems have been ignored or I work around them since that is easier than actually fixing them.

So for version 2.5 I decided I’d try and use a 3rd party online system for test management.  It has taken a while to actually find one, there are many around but I can’t afford to pay $10/month for a system that I may use twice a year.  I’m now using a free system called leantesting, but it comes with its own problems, not least I’m having to change the way I want to test to fit with how it forces me to test.  For example I can’t create a new test run that only contains tests that haven’t passed or haven’t been run.  Also I can’t add tests to a test run which means I have to start a new test run with the new tests and keep track of these things myself.  Not ideal but still, overall better than trying to roll my own system.

The tl;dr is I’ve moved to a new test management system and it’s taking me some time to get to grips with it.

I am getting older

Yesterday I turned 43 and my birthday present to myself was a pair of $750 spectacles that I seem to now need for reading and computer use.  Over the past few months I’ve been getting a lot of headaches and shying away from reading and writing.  I’ve found myself having to put things at arms length so I can see them properly.  In short, I’m over 40 and getting old so on Friday I had an eye test where I was told I am over 40 and getting old.  This was unhelpfully reinforced by an information card the optometrist handed to me that told me I’m over 40 and getting old.  The final nail in the coffin was when she placed a popped a lense into the weird testing contraption in front of my face that brought the previously blurred tiny text line at the bottom of the borderline offensive information card into sharp focus.

The tl;dr is that I’m old and need glasses, yay go aging!

What this means

To sum up, this means that testing of version 2.5 is taking a bit longer than I thought it would.  The double hit of new testing tools and deterioating visual acuity means I’m moving slower than I used to so testing and fixing problems is taking longer than it did in the past.  Hopefully when my glasses arrive in a week or so I will speed up again since reading won’t be a struggle (I’m starting to get a headache writing this post).

Version 2.5 is coming I promise, it’s just the old man is taking a little longer than he used to!


What’s coming up in version 2.5

It’s been a while since I’ve done an update, my apologies for that but sometimes I just don’t have anything interesting to say.

Development on version 2.5 has been progressing albeit slowly.  I’ll be honest, this release has been a finicky bugger requiring seemingless endless iterations to try and get things right.

First off, my desire to implement a Text Tidy has pretty much crashed and burned.  The main problem is that it’s almost impossible to reliably detect when a sentence ends.  Human beings understand context and semantics and can detect things like the end of a sentence much more easily than software.  There are clever APIs available that can do it, I just don’t believe a 20MB download per user is worth being able to determine when a sentence ends.

Some of the other ideas for the Text Tidy I had are valid but they would fit more within the Problem Finder than as a separate tool.  I’m going to leave those changes for now.

So, moving on to things that will be in the new version.

Targets & revamped charts

Writing targets is a feature that has been requested a few times but it is a difficult thing to actually do.  Checking for chapter length is simple but session counts is a much tougher affair.

Here’s what the new Targets sidebar looks like:

Targets Sidebar

Three types of target are supported:

  1. How many words you’ve written in a session, i.e. from the time you start QW to when you close it down.  There is tracking how much you write write in a session, how much per day, how much per week and month.  New charts have been added to visualize this data.
  2. You will be able to specify how long a chapter should be.  This is not a hard limit, QW will not prevent you from a chapter being as long as you like.  Instead, if the checkbox is selected it will periodically show you a warning message letting you know which chapters are over the limit.
  3. Finally, you will be able to specify what the readability of your chapters should be.  For simplicity, and because they overlap somewhat the Flesch Reading Ease has been left out (the Reading level is based on the Reading Ease and is a simpler number to understand).

Some new charts have been added, and the charts have been given a visual overhaul so that they are more consistent and just look nicer.

The time selection has also been changed to be more useful, gone is the “30 days” selection and instead there is there now: “This week”, “Last week”, “This month”, “Last month” and “All time”.

There is now a new chart for showing the session word count, an example is given below.

Session Word Count Chart

Similarly, there is a chart for Session Length:

Session Length Chart

A new chart has been added to let you see the current length of all chapters.

Chapter Word Counts Chart

The chapters have be listed vertically down the chart so that they all fit on and you can read the chapter name.  If you change the selection to be something other than “Now” then you get a different view (the same view as you get now).

Chapter Word Counts History Chart

Finally a new Readability chart has been added to let you see what is the current Readability of your chapters.

Readability Chart

As you can see, I should probably up my Readability targets.

That’s the big stuff, I’ve also added a number of new minor things and tweaked some others, in brief:

  • The color selection popup has been reworked to allow for easier RGB selection including entering a HEX code.  This thing has sucked up WAY too much time for something that someone may use once or twice.  I really wish Java had better widgets, their color selection tool is terrible.
  • You will be able to have the time, session word count and chapter word count always visible in full screen mode.
  • You will be able to specify a margin around the text.

I also have a big “out of left field” feature in the works.  I won’t go into details here but suffice to say it won’t be what you expect.

As for the release date of 2.5, not sure yet.  It should be in the next couple of weeks, I just have to tidy up a few corners first.