Plans for MyWorkTracker v0.30

I’ve started to use MyWorkTracker (v0.2.0) at work. Using it in a ‘live’ scenario has been a speedy way to uncover deficiencies and also see it’s potential.

Work is heavily underway of the next release. In keeping with the project’s modest goals, I’m doing bite-size increments. Here’s what you can expect to find in v0.3.0, split into five categories:

New Features:

  • Backup and Restore, enabling the export/import of data as XML files.
  • Automated Backup options

Improved Usability:

  • Double-click opens a Journal Entry for editing.
  • Cursor focus set when Journal dialog opens.
  • The user can set if Journal Entries are displayed chronologically or reverse chronologically.

Slight Tweaks

  • Ability to set the “Completed %” when you change a Work Item from a Closed to Active state.

Improved Cosmetics:

  • Journal background is yellow to match description panel.
  • Controls disappear when not applicable (previously they were disabled).

Under the hood:

  • Nothing noteworthy planned
Advertisements

MyWorkTracker v0.2.0 Released

MyWorkTracker v0.2.0 has been released. View the User Guide.

The application can be downloaded and used from my Google Drive. Simply unzip the file into a directory of your choice and run it from there by executing MyWorkTracker.exe. Alternatively, the source code can be pulled from my Github repository. (Use at your own risk).

Features of v0.2.0 are:

  • Separation of active and closed work items, in two separate tabs.
  • Ability to add, edit and delete journal items on a WorkItem.
  • Ability to change preferences via the toolbar.
  • Other smaller changes (see here for details).

It took longer to complete than expected mainly because I got distracted. It’ll be a little while before v0.3.0 – I plan to do some writing again.

MyWorkTracker v0.1.0 Released & What’s coming in v0.2.0

As per my last post, I’m just beginning my foray into the C# programming language.

I am writing a work-tracking application; building it one little piece at a time as an incremental development. Better to have a basic tool that works, than a whizz-bang-tool that is fragile… The first step in that development, v0.1.0, is now at a state where I’m okay with sharing it (under the caveats mentioned last time).

When the application first starts up, the bottom 2/3rds of the screen is inaccessible. Once a Work Item is selected the information relating to it is displayed in the lower portion of the screen. (At this stage a Work Item just has a Title, Due Date, Description, Progress and a Status).

A new Work Item can be created by selecting “New Work Item” from the taskbar. The cursor is automatically moved to the task Title area (indicated by the blue border on the left). The new work item is automatically set to be +1 day from the current date, with a preset time. Both date and time are based on a soon-to-be configurable setting. If the date is not what you want, you can change it by selecting the Due Date button and the Change Due Date dialog will appear.

A work item is automatically set to Active with a progress of 0. Once you select the “Create Work Item” button, the Work Item will appear in the top graphical area.

You may have noticed in the top two images the “Save” button is always disabled. That’s because other than creating a new work item all other changes are saved automatically.

One final word about Due Dates. The application keeps track of a history of due date changes, however it gives you a “grace period” when setting the Due Date. If you change a Due Date within x minutes (1 by default), then it doesn’t record it as a due date change.

If you would like to see/use this application you can download it from my Google Drive or also get the source code from my Github repository.

Issues I’m aware of:

  • The button displays the date in US format (mm/dd). (I haven’t worked out how to fix it. It seems to ignore my attempts to use StringFormat).
  • I’m not using MVVM, LINQ or Entity Framework (yet).
  • The Change Due Date dialog sometimes requires 2-clicks on the apply button. I think it’s a bit sticky due to strawberry jam.
  • The database design is simplistic (i.e. incremental)
  • I hard-coded new Work Items to be “Active”. Hard coding = bad.

So what’s coming in v0.2.0 ?

(Subject to change; aka my whim).

Tracking Work

I’ve mentioned earlier a plan to sharpen my development skills by learning the c# programming language. (That’s pronounced c-sharp, just in case you missed my pun).

In the past I’ve created a command-line tool to parse my stories, and a tool to generate some who-has-perspective graphics. I’m currently working on creating a tool I will use to keep track of my actual-day-job tasks. The project will aptly be called MyWorkTracker. Creative, I know.

Some important caveats:

  • It’s an incremental project. I’m going to add functionality in steps, and do my best not to forecast future work. This means that there’ll be times when it will look lacking; not so much half-baked as almost-raw. I want to avoid adding a lot of empty ‘hooks’ for later work. Instead of completing a single component to 100% polish, I might add two components at 50% polish.
  • I’m only just beginning to learn. I guarantee I will do things wrong and need to fix them in subsequent releases. Kind-hearted individuals may look over the implementation and provide feedback if they wish (after considering the first dot point).

The first portion of work, v0.1.0 will include the ability to create and edit Work Items. These have a title, a description, a due date, a status and a progress (0 to 100%).

At the top of the window is a graphical display of the Work Items, and below, details.

Nerd-Author Fun v2: Text Analysis

I promised this week that my blog post would be about some of my C# coding, which also happens to dovetail in beautifully with my writing. I’ve taken my earlier work and begun the super-charging process. That being said: this is just the beginning. In the future I plan to make it available, far more powerful and with a few of the bugs ironed out.

The general premise behind the program is that it can load your story from a text file, and then allow you to analyse it. At the moment it is sans-UI – which means it doesn’t have pretty user windows, checkboxes and other controls. I’m calling it Text Analysis Command Line (TAC). As it’s a command line program you have to type commands in to operate it.

So what can it do?

Like any good program it contains help – typing ‘?’ will give you a list and basic description of the available commands; typing ‘<command> ?’ will give you detailed options on that particular command.

wordcount-1

When you see a pipe symbol ‘|’ it means or. Square brackets (‘[‘, ‘]’) mean optional.

Most commands can either display output on the screen or save the results to a file. If using a single greater-than symbol (‘>’) the file will be saved (unless it already exists). Using the double option ‘>>’ will save the file, overwriting it if necessary.

Below is a description of all of the currently available commands. The results are based on processing Vengeance Will Come, my scifi/fantasy adventure (available now):

wordcount. You can display the frequency of every word used. Earlier in the year I bought Scrivener (left). For the most part it’s a great program but I was disappointed there was no way to export (or even easily query) word count data. The image of TAC (right) shows a snippet of both the textual version (default) and the ‘basic mode’ (using -b option). The basic mode is valuable if opening the file in Excel to do pretty graphs.

wordcount can also provide wordcount-word lengththe number of words which begin with given letters (-f) or the length of words (-l).

Just in case you’re curious the longest word at 20 characters is ‘uncharacteristically’. The three 16’s are: ‘conspiratorially’, ‘incontrovertible’ and ‘responsibilities’.

For the purpose of completeness, I’ll briefly mention the data command. At the moment it’s limited, a means to interrogate the data. In order to do all of this (and future) processing I painstakingly categorise every character of text into a type. Using the -expseg option outputs this information.

datacmd-2
-expseg option

 

At this stage the only two other data commands are -sen (output sentence). For example outputting the sentence at segment 128 is:

At first light they invade my mind, besieging it to the point of exhaustion.

And -block (output block) at 128:

“I wish that I didn’t know the future; that I couldn’t see the prophecies unfold before me. At first light they invade my mind, besieging it to the point of exhaustion. Even in my fitful sleep they haunt me as wild animals stalk the scent of blood, turning what little rest I get into an extension of my waking nightmare. I cannot escape.

The find command is powerful and will be leveraged heavily in future updates.

find-1

Unsurprisingly, find locates the occurrences of a specified word. Importantly the before and after options allow displaying the word in a variable level of context (e.g. want to see 10 words preceding the word, or only 5?).

find can also locate every instance of a specified type of punctuation. Want to know how often I use exclamation marks? Typing ‘find -p’ brings up a list of punctuation options from which a selection can be made.

find-2

The answer is of course 45 (as displayed on the screenshot). However, now I know exactly where they are (and in what context).

find-3.PNG
The first use of ! occurs at the 660th character in my novel.

I’m a big believer in not over-using the exclamation mark, so a tool like this would let me easily see how often I’ve used it in a given book (and calculate the amount of text between each usage). More importantly, it can also let me track down when I’ve used a ” instead of a “ which seems to happen no matter how careful I am.

This brings me to the end of the tour of TAC v0.0.1, I hope you liked it.

Writing and Coding Update

Coding : Character Point-Of-View Chart

I want to learn how to program in C# to add that arrow to my professional quiver. You never know when you need another arrow.

In light of that goal and also to aid in my writing I’m going to build a small application (“Perspective“) to generate my Character Point-of-View (POV) charts.

The charts display by chapter and scene which character has the point of view. I first described them in Examining Character Balance and shared the Excel file which I use. However the spreadsheet does so much it is complex and I could understand people being scared off by it. And, it’s a great excuse to do some C# and get side-benefits from it.

Draft Cal POV

It is important to note this will be an iterative development. The first version won’t look anything like the final product. I’m not quite ready to share my code, but I will – and the application – in the future.

v0.1 screenshot

I’m using Windows Forms. (I think this is a slightly older technology, but I thought it was a good place to start). The form doesn’t do much, and data entry is simplistic: character names will be separated by commas, and a chapter will be ended by a semi-colon.

I’ll be putting formatting options on the form so you can control what it looks like. Here are the terms I’m using at the moment.

Style design

I’ve also got a few experimental ideas with which I’m keen to include. I think they could really add value to the chart.

Writing

One of my goals in this revision was to reduce the amount of head-hopping. So how am I going so far? I’m glad you asked, because here are some outputs from my Perspective application that demonstrates the progress so far.

Original manuscript. Without the benefit (yet) of labels, I’ll explain it. Below shows the first 4 chapters.

  • Chapter 1 = 6 scenes
  • Chapter 2 = 5 scenes
  • Chapter 3 = 8 scenes
  • Chapter 4 = 8 scenes

VWC - Old Version

Revised manuscript. It’s a bit hard to see the difference because the image comes out a different size…. *scratches head*

  • Chapter 1 = 3 scenes
  • Chapter 2 = 4 scenes
  • Chapter 3 = 5 scenes
  • Chapter 4 = 6 scenes

VWC - New Version

With less scenes there is less head-jumping, which should result in less fragmentation for the reader. I’ve also expanded the word count (in those four chapters) by 2,000 words.

Laying out a Story Seed

The title of this post is a play on words. First I’m going to talk about my programming, and why I’m so keen for layout management, and then share the idea of a story seed, just to whet your appetite or get your writing juices flowing.

Programming: Why do I care so much about layout?

Each time I start my computer for a writing session I follow the same steps:

  1. Open Word on right hand monitor, align to left (50% width).
  2. Open Excel on left monitor, full size.
  3. Open OneNote on left monitor, full size.

When I’m programming I do things a little differently:

  1. Open Eclipse on left monitor, full size.
  2. Open Windows Explorer and navigate to folder structure, left align.
  3. Open SQLiteStudio on right monitor, full size.
  4. Open Firefox, right monitor, right aligned. Load Trac.

At least now Windows 10 remembers on which monitor the application was last on, but that is far from customised in how I prefer to work. For my productivity to be maximized I’d ideally want to tell Windows what I’m going to be working on as I log in. It should know what to load and where to place it.

You can’t do this with Windows yet, but at least in my own application it allows that level of control.

Even while working on writing (generically), depending on which project I’m working on will determine what layout I’ll want. If I’m plotting one, and editing another, chances are a different view will be more beneficial.

My intention is that when you save a project it will save the current layout (project-specific). These layouts are really for quick-use templates.

This slideshow requires JavaScript.

The layout functionality is done now (except a few edges I’ll smooth later). Using a layout you can:

  • position and size the application window
  • position, size and name all windows on the screen
  • saves the panels and their names on each of the windows

Writing Seed: Lifetime Magic

I’ve been toying with a fraction of an idea for a while.

Normally magic systems revolve around a select few, who by ancestry or knowledge can wield powers. Often they incur a cost for doing so, and need to recharge their abilities or rest between efforts.

What if the following were true:

  1. The majority of the population has an innate ability to wield magic.
  2. The limits of magic are not well understood, though evidence suggests the environment and objects can be temporarily manipulated. (Objects or persons cannot be imbued with lasting magical effect).
  3. The quantity of magic a person has, is born into them. There is no known way to measure, extend or replenish the spent magic. Once gone, it is believed to be gone for good.

Using these three foundations, what could happen in such a society?

  • the inability to measure magical capacity would mean it isn’t a significant part of a power structure. However those who are known to have used all their magic would be an underclass. The lowest on the social strata would be those few born without magic.
  • people would likely horde their magic, wanting to save it for life-and-death situations and often for selfish purposes.
  • the poor would be forced to use their magic (to survive), thus pushing them further down the social ladder.
  • people would try to bluff or conceal running out of magic.
  • with the cost of experimentation being so high, understanding of magic would be limited. Unscrupulous researchers might go to devious schemes to trick, manipulate or even harm others in an attempt to gain more magic.
  • there would be fads and self-help gurus who posited various means of increasing one’s capacity.
  • magic would run out unexpectedly, causing potential mayhem or embarrassment.

At first I had no story to go along with this, but in the last few days one has begun to unfold in my mind. I may do a short story to explore this idea further in the future.