Natural One 1.4

  • Interface changes:
    • The input panes and output list are now in panes, so they have a divider that can be used to change the size of each.
    • Redesigned template pane. The buttons are moved to an action bar, and the “New Template” section is gone.
    • Redesigned initiative pane, similarly to the template pane.
    • Redesigned template dialog, similarly to the template pane.
    • Minimum damage entries now show placeholder text.
    • Added system management functionality.
      • Users can now add their own systems through the UI.
      • Systems can now be rearranged.
      • Systems can now be removed.
      • Systems can now be enabled or disabled.
    • Add input filtering for appropriate fields. No more typing letters into numeric fields. It also checks things like spaces, commas, and negative signs when appropriate.
  • Output changes:
    • Improved formatting of damage roll output.
    • Improved formatting of modifiers. If the modifier is 0, it is not shown. If it is negative, it no longer displays with an extra plus sign.
    • Improved formatting of anything that could have multiple values; equal signs are now hidden when not necessary. No more being reminded that “7=7” is, in fact, true.
    • Added critical outputs for maximized on critical.
    • Improved formatting of templates, with more spacing, more consistent formatting, the count and die in the roll output, and better critical messages.
  • Roll changes:
    • Added damage types to all damage rolls. Each damage roll displays its type, and totals are broken down by type if applicable.
    • Minimum damage is now optional; if not set, it’s negative infinity.
  • Systems changes:
    • Added D&D 3.5e data file.
    • Added The Modern Path data file (disabled by default).
    • Rearranged default order of systems.
    • Added Pathfinder naval siege weapons.
    • Added several missing Pathfinder weapons.
  • Fixes:
    • Fixed static damage not being multiplied by critical hits.
    • Fixed modifiers being applied twice if weapon has bonus critical damage.
    • Fixed editing rolls saving data before it should have, resulting in the user applying changes even if clicking “Cancel”.

All code is on GitHub:


Natural One 1.3

This release brings support for D&D 5e and 4e, with all the data and roll rule changes that entails. 5e support was actually trivially easy, not much to do there at all; weapon data is short and the rules are a subset of Pathfinder’s. 4e wasn’t bad either, though it did involve adding support for it’s odd style of criticals (maximized instead of multiplied).

Also new this release is an “Initiative” tab for tracking encounter initiative. These can either be rolled or added manually, with additional sorting and drag and drop to re-order the list.

Due to a large rewrite of how roll data is handled internally, some things visible to the user changed as well. Output should now also be cleaner and nicer to look at. Some very significant issues with damage rolls should be fixed now too.

Full changes:

  • Added D&D 5e weapon data.
  • Added D&D 4e weapon data.
  • Added new data files properties:
    • “max_on_crit”: if set to true, rolls will be maximized on criticals instead of multiplied.
    • “reroll_below”: if set to an integer, rolls will be rerolled as long as their value is less than or equal to this integer.
  • Improved the UI to better follow Gnome’s HIG.
  • Added option to maximize on criticals to templates.
  • Decoupled generating rolls from output of the rolls.
  • Improved roll output:
    • Negative mods now longer display an extra “+”.
    • Mods of 0 no longer display.
  • Fixed many issues with roll output:
    • Fixed incorrect numbering on critical hits for critical mods of 4 and above
    • Fixed incorrect numbering on critical hits for critical mods of 1.
    • Fixed extra blank lines appearing for certain weapons.
  • User input now strips text before checking validity.
  • Fixed template dialog not setting the critical option in the UI properly when loading a roll.
  • Added classes to represent roll results, to help with decoupling generating rolls from formatting rolls.
  • Fixed warnings when double clicking template or roll lists.
  • Simplified error checking for user input.
  • Renamed “” -> “”.

All code is on GitHub:

Natural One 1.2

Or Natural One.2, whichever sounds cooler.

Time between semesters is boring, so I’ve been working on this. The big changes here are behind the scenes things to support game systems with differing rulesets. Ideally the user shouldn’t have to worry about any of that, and it should all be determined as-needed. Most of the rest of the changes are in making output and UI look prettier.

For the data files, Natural One no longer has only one that it tries to read from. Instead, it looks for a meta file that then references the data files, and loads all the listed files. This allows for new systems to be added with minimal effort. There have also been a lot of changes in the data files themselves to be more generic and flexible.

As a result of a lot of these changes, Natural One now supports Starfinder in addition to Pathfinder.

  • Making things look prettier:
    • Weapon names now display better in roll output. For example, instead of displaying “Rolled 1 hit with a gauntlet, spiked”, it’ll now say “Rolled 1 hit with a spiked gauntlet”. Much nicer. This is done through an optional “display” key in the data files. If this key is present then it’ll be used for roll output, otherwise it defaults to the existing “name” key.
    • Weapon names that have capitalization in them (acronyms, for example), are no longer converted to lowercase. This is also done with an optional key (“no_format”).
    • “A” vs “an” is now checked.
    • Improved display of damage roll output, particularly with criticals.
    • Add Roll button in the Template dialog now changes to Edit Roll in the appropriate conditionsl.
    • Length-restricting input fields now center input text.
    • About dialog now looks nicer.
    • Simplified and fixed alignment issues in the combat tab.
  • Weapon improvements:
    • Added support for multiple different die in one damage roll.
    • Added proper support for double weapons.
    • Added proper support for weird things like the Autograpnel that have fixed damage added after roll (who decided that was a good idea? only thing in the game I’ve found that uses that).
    • Added support for extra rolls on critical attack, separate from simply multiplying the base roll(s). Starfinder uses this quite a bit.
  • Starfinder support:
    • Added option in rolling attacks to confirm criticals or not.
    • Many of the weapon improvements were focused on adding Starfinder support.
    • Template rolls now have an option to only be rolled on critical hits.
    • Added Starfinder data file.
  • Code stuff:
    • Minor refactoring.
  • Bugfixes:
    • Fixed damage not rolling criticals properly for some weapons
    • Fixed output text view not wrapping properly.


All code is on Github:

Natural One

I forgot to post about the first release of this, so here we go with 1.0.

Natural One is a dice roller designed primarily for the Pathfinder tabletop roll-playing game, though it is of course usable as a general purpose dice roller.

The interface is organized into three panes, each with their own purpose. The output panel on the right is shared across all three panes, so it’s always visible; new rolls are simply prepended at the top of the panel.

The first pane is for simple dice rolls. This is just the usual stuff; d4, d6, d8, etc etc. You can also set a custom dice number (d100, for example). Nothing really special here, just normal dice roller features here.

Screenshot from 2018-05-08 20-05-18

The second pane is where interesting stuff happens. The “Attack Roll” section lets you quickly roll attacks, with the number of attacks, modifiers, and critical range all configurable. Critical fails optionally stop the rolls, and if a critical is rolled the program automatically rolls a confirmation.

The “Damage Roll” section is more involved. This has every weapon in Pathfinder, arranged by section. This includes both the normal stuff as well as off beat stuff like high-tech content. This is intended to simplify rolls so that you don’t need to look up damage die in a rulebook or wiki or whatever first.

Screenshot from 2018-05-08 20-11-12

The third pane is focused on user-entered data. “Templates” are basically just user-configurable sets of rolls. This is intended for more complex rolls that might be time-consuming to do manually. Rogue with base weapon damage, elemental damage, and sneak attack damage for example. The templates can also be set as to whether or not criticals apply to certain rolls, so the sneak attacks in the previous example can be properly set to not be multiplied.

Screenshot from 2018-05-08 20-19-27

Screenshot from 2018-05-08 20-19-46

The initial release, version 0.1, was finished a couple weeks ago, but there were some things that I didn’t feel were great so version 1.0 is up now. I was really tempted to name the second release Natural Two though.

Here’s a brief list of changes from 0.1 to 1.0:

  • Improved roll output. The “title” of each roll is now larger than the rest, for more distinction. Some spacing issues were also fixed.
  • Modifiers were improved for attack and damage rolls. Previously it required the user to enter in the exact number of modifiers as attacks. Now it takes the last one and expands it out as needed, so there’s always a value to use. Modifiers on criticals are now also handed properly.
  • Added a ton of weapons. Previously it only had the core simple, martial, and exotic weapon categories. Now there’s also all the Eastern, Stone Age, Bronze Age, early and advanced firearms, siege engines, modern firearms, and high-tech weapon categories.
  • To go along with the previous change, the weapon selection was terrible. An alphabetically-sorted drop down was functional, but not nice at all to find anything. Now a list is used with each category nicely organized and expandable/collapsible.
  • Minimum damage is now a user-configurable thing.
  • Minor UI improvements.
  • Some boring internal stuff.

Code and downloads are, as always, all over on GitHub:

WeatherLog 5.0

It’s been over a year and a half since the last major release, but this update definitely deserves it. WeatherLog’s interface hasn’t changed much since the first releases; it’s always been a menu-driven application that displays it’s data in lists and tables, usually organized through tabs. While this was perfectly usable, it resulted in a user experience that was often not very streamlined, with plenty of redundancy and a lack of organization. I’ve worked to continually minimize this to a degree, but it’s always been there.

That’s why I decided to work on an update that focused entirely on the UI. Almost nothing was untouched by this update. Nearly every dialog was simplified or reorganized, and in many cases made to visually look better.

A couple ideas in particular were the main motivators for WeatherLog 5.0. First, related functionality was combined as much as possible, as long as it would still make sense. For example, dataset management was previously done through five different dialogs, but because they all used the same interface (only different button text really), this could be reduced to one centralized dialog. Second, I moved all the windows to use GTK+’s header bars, which allows titles, toolbars, and menus to be combined into one simple compact title bar.

Here’s a showcase of some of the changes. The main view shows possibly the most dramatic change. The new interface is on the left, with the old on the right. (Click images to zoom.)

The menu bar and tool bar are completely gone; the buttons and functionality have simply been moved into the header bar. The tab switcher has been changed to a stack switcher so that it can be repositioned and have nice fancy transition animations. The search feature has been completely removed from dialogs, and instead incorporated directly into the header. Instead of the entire title being used to show the dataset name, it is now displayed on the dataset switcher button. There is still a GNOME-style app menu, but it’s display depends largely on the desktop environment of the user.

Other windows received similarly large changes. The Current Weather feature now shows an improved location selection in the same dialog as the data, allowing multiple searches from the same instance. The title is replaced with a stack switcher here as well.

Current Weather_009.png

The dataset management features are now in one dialog, with a simplified and cleaner display.


The new Preferences dialog is cleaner and better organized, with headers and extra spacing for clarity.


Other dialogs received less drastic changes. All were changed to use header bars, and in general there is now a greater focus on readability.

Changes (Features)

  • All applicable windows and dialogs now use header bars.
  • Weather dialog now includes location selection.
  • Improved appearance of Weather dialog.
  • Data Subset changes::
    • Data Subset now allows multiple conditions for the same field.
    • “Date” is now a valid subset field.
    • Removed Data for Selected Dates. This functionality now exists as part of Data Subsets.
    • Adding a condition now longer clears the condition input fields.
  • Info, Charts, and Graphs dialogs are now merged into a single dialog.
  • Removed Merge Datasets. This functionality is already covered by Copy Data.
  • Removed the help.
  • Enter key in dialogs should now activate the most used response.
  • Combined search into the header bar.
  • Change default case sensitivity to insensitive.
  • Increased default window heights and widths.
  • Added the app menu; removed the other menus.
  • Added spacing to many dialogs.
  • Search results dialog now shows the search term.
  • Change Add Data autofill notification to display as a notification bar instead of a dialog.
  • Renamed “General” info to “Overview”.
  • Data columns are now resizeable.
  • Redesigned Preferences dialog.
  • Removed options:
    • “Show dates in title”: no longer works with new header system
    • “JSON indent” and “JSON indent amount”: not something that should be exposed user side.
    • “Forecast period”: was not respected by OpenWeatherMap; did nothing.
  • Added new dataset management window.

Changes (Code)

  • Transitioned application class to GtkApplication.
  • Removed no longer used dialogs and functions.
  • Removed confirm_exit.

Changes (Bugfixes)

  • Fixed Data in Range continuing when the close button had been pressed.
  • Fixed Import throwing an error when the user tried to import a file in the wrong format.
  • Fixed import errors.
  • Fixed search insensitive case not working when the search term was not all lowercase.


Downloads and code are available on Github.
Project page:
Release page:

WeatherLog: UI update

The next update of WeatherLog, either 4.16 or 5.0 depending on how much I break in the process, will be focused mostly on updating and streaming the user interface. As part of this effort, here is a tentative list of changes:

  • Use GTK’s header bars to integrate toolbars and menus into the header. This makes the UI more compact and visually better.
  • Merge similar features. For example, Info, Tables, and Graphs dialogs all display in one window now.
  • Merge related features. All of the dataset dialogs will be combined into a single dataset management dialog.
  • Remove redundant features. Merge Datasets is gone, as it merely replicated part of Copy Data’s features. Data for Selected Dates is also removed; note that there is no equivalent to this in 4.16, but changes to Data Subset will make this redundant now.
  • Move away from a reliance on menus. The goal is to have only one small GNOME-style application menu. This will be easy to do when the above changes are complete.

With these in mind, here’s some (early) screenshots to show changes. Here’s what the new main interface looks like. Note that this will definitely change (a few buttons/menus in the header will be added).

Click on the images for a full view.


For reference, here’s what the old main interface looks like:


The addition of a subtitle allows the title text to be made more readable and properly structured. Removing the toolbar and adding the buttons to the header saves vertical space. The same is true for the move from using a notebook (tabs) to separate data views to using a stack. Stacks also have the advantage of animating nicely (the views slide in from the side on change).

The Weather dialog looks quite nice now. As shown here, header bars don’t actually need titles if they’re not contextually necessary. In this case, putting the stack switcher in the place of the title functions perfectly clearly as a title. A label for the location is new as well, to make it bigger and more attention-getting. I’m not entirely happy with this still though. I’d really like to merge the location selection dialog into this, but I’m not sure how to visually do that best.


Data in Range selection dialog also shows quite an improvement. When using a header bar, action buttons are combined into the top, instead of being placed on their own on the bottom. This dialog also demonstrates a fairly minor but significant UI change: “cancel”/”close” buttons are no longer used.


The combined Info/Tables/Graph dialog uses the same idea as the Weather dialog.


As one more example, the Data Subset dialog shows the use of additional in-dialog buttons. There’s no reason those can’t be used with header bar -based dialogs, but sometimes it makes more sense to move buttons into the header. In this case, there used to be four buttons below the conditions list: “Remove”, “Reset”, “Close”, and “View”. “Close” was removed (see above), and “View” was moved up as it contextually didn’t make sense in it’s prior location; the buttons along the bottom were otherwise all meant for condition manipulation.



WeatherLog 4.15

Changes (Features)

  • Merged “Info in Range”, “Tables in Range”, and “Graphs in Range” into “Data in Range”. This displays the same two calendar dialog for date selection, with different buttons for each type of data.
  • Merged “Info for Selected Dates”, “Tables for Selected Dates”, and “Graphs for Selected Dates” into “Data for Selected Dates”. This is implemented similarly to the above change.
  • Removed the colons from all dialog frame labels for consistency.
  • Renamed “Quick Search” to “Search”.
  • Changed the keyboard shortcuts for “Search” to Control-F and for “Data Subset” to Control-Shift-F.
  • Changed dataset creation for “Copy Data” to be in-dialog, with a list that updates as each new dataset is created.

Changes (Code)

  • Renamed “weatherlog_resources” directory to “resources”.

Changes (Bugfixes)

  • Fixed toolbar getting focus on application start instead of the data list.


Downloads and code are available on Github.
Project page:
Release page: