2014-07-21

Demographics

Apropos of nothing, stats for the last month, stuff over 1%. These are stats for site page loads - i.e. hitting the main map page, the poster/booklet makers, or anything in docs/.  Any amount of time spent on the map itself counts as one data point.

Geography:

  • United States: 56%
  • United Kingdom: 13%
  • Germany: 6%
  • Australia: 5%
  • Canada: 3%
  • Japan: 3%
No real surprises there. English-speaking countries dominate, but strong showing in Germany thanks to long time support and recent innovation by 13Mann. Japan has a history of Traveller fandom as well (and awesome box art!)

Operating System:
  • Windows: 65%
  • iOS: 14%
  • Macintosh: 9%
  • Android: 6%
  • Linux: 4%
Windows use continues to decline, and mobile use is growing. Macintosh beating out Android is interesting. But the answer lies further down...

Browser:
  • Chrome: 38%
  • Firefox: 29%
  • Safari: 13%
  • IE: 11%
  • Safari (in-app): 3%
  • Opera: 3%
  • Android Browser: 2%
I would have expected Safari to make a bigger showing thanks to iOS. The good news is that "evergreen" (continually updated) browsers are 70% of the audience.

Devices:
  • Desktop: 79%
  • Tablet: 13%
  • Mobile: 8%
... and of non-desktop:
  • iPad: 49%
  • iPhone: 17%
  • ????: 5%
  • Nexus 10: 3%
  • Nexus 5: 2%
  • Nexus 7: 2%
  • Windows RT: 2%
Tablet usage higher than "mobile" (i.e. phone) usage is quite unusual. And iPad completely dominating here is also unusual. I guess the numbers support the anecdotes I've heard from users about using iPads while gaming. I rarely bust out a tablet, but I'll need to start prioritizing work in that area - e.g. making it easier to report bugs and so on.

Ω

2014-06-04

Metadata Stylesheets

Sick of having to Copy/Paste this over and over again?

  <Routes>
    <Route Style="Dashed" Start="0101" End="0202" />
    <Route Style="Dashed" Start="0101" End="0303" />
    <Route Style="Dashed" Start="0101" End="0404" /&gt;
    ...
  </Routes>

And then you decide that Fu would be better represented with dotted cyan instead, and you need to do a Find/Replace? Oh, the drudgery.

I've added a new metadata element you can use to style a few elements, borders and routes. Here's what you do:

  <Stylesheet>
    route.Fu { color: pink; style: dashed; }
  </Stylesheet>

  <Routes>
    <Route Allegiance="Fu" Start="0101" End="0303" />
    <Route Allegiance="Fu" Start="0101" End="0404" />
    ...
  </Routes>

Now all of Fu's routes are dashed pink, and more easily changed to dotted cyan.

It's similar to the CSS language used in web pages. The basic structure is a list of rules:

selector, selector, ... { property: value; property: value; ... }

Selectors (the bit up front):
  • type - border or route
  • Optionally followed by a period (.), then allegiance
    • e.g. border.Im
  • Multiple selectors can be listed, separated with commas
    • e.g. border.JuPr, border.JuRu, border.JuHl { color: blue; }
Declarations (the bit in the back):
  • A declaration list occurs in { braces } after the selector list.
  • Each declaration has a property, colon (:), value, semicolon (;)
  • Semicolons are terminators, not separators. You need a trailing semicolon after every declaration. This is different from CSS.
Properties/Values:
  • color -  HTML color name or six-digit hex color #rrggbb
    • e.g. pink or #FFC0CB
  • width - integer or floating point number
    • e.g. 2 or 1.5 or -123.456e23
  • style
    • solid, dashed or dotted
Details:
  • borders have only color
  • routes have color, width, and style
  • routes can use Type instead of Allegiance
    • e.g. route.Trade would select
  • You can use /* comments */ anywhere you can put spaces.
  • Within identifiers, you can use backslash (\) to escape characters like spaces
    • e.g. route.Core\ Route { color: purple; }
  • Explicit values on an element take precedence over a matching stylesheet rule.
Language boffins - here's the grammar:

stylesheet       := WS rule-list WS
rule-list        := rule*
rule             := selector-list '{' WS declaration-list '}' WS
selector-list    := selector WS ( ',' WS selector )* WS
selector         := element ( '.' code )?
element          := IDENT
code             := IDENT
declaration-list := declaration*
declaration      := property WS ':' WS value WS ';' WS
property         := IDENT
value            := IDENT | NUMBER | COLOR
IDENT            := [A-Za-z_]([A-Za-z0-9_] | '\' ANY)* 
NUMBER           := '-'? [0-9]* ('.' [0-9]+) ([eE] [-+]? [0-9]+)?
COLOR            := '#' [0-9A-F]{6}
WS               := ( U+0009 | U+000A | U+000D | U+0020 | '/' '*' ... '*' '/')*

And the source is on GitHub, of course. Also on GitHub you'll find the default stylesheet, which is applied after any values on the elements themselves and any sector-specific stylesheet:

border.Im { color: red; }
route.Im { color: green; }

border.SoCf { color: orange; }
route.SoCf { color: green; }

border.ZhCo { color: blue; }
route.ZhCo { color: lightblue; }

border.As { color: yellow; }
route.As { color: yellow; }

border.Hv { color: purple; }
route.Hv { color: gray; }

border.Kk { color: green; }
route.Kk { color: gray; }

border.JuPr { color: blue; }
route.JuPr { color: lightblue; }

route.Core\ Route { color: purple; style: dashed; }

This will almost certainly expand and be refined over time.

Ω

2014-05-21

Option: Dim Unofficial Data

I just tossed another feature up under the settings (gear) menu. You can now "Dim Unofficial Data" - anything that hasn't gotten the "final" T5SS seal of approval is slightly grayed out.

It's not on by default. This feature has been on the "to do" list for a while but I was overthinking the problem - this is a quick hack, but I think it's kinda pretty.

Ω

2014-05-20

T5SS Data Update - April/May 2014

The new data is now live!

Summary of changes:

  • T5SS sectors now have 4-character allegiances; these are visible on the map and in tab-delimited and column-delimited data files. The new allegiance codes are mapped to 2-character codes when "SEC" files are output or at low scales. Codes are documented at http://travellermap.com/doc/secondsurvey
  • T5SS sectors now have 1- or 2-character base codes, e.g. NS for Naval Base and Scout Base, when shown in tab-delimited and column-delimited files. They are mapped to 1-character codes when "SEC" files are output. Codes are documented at http://travellermap.com/doc/secondsurvey
  • Booklet and World Data Sheets now use the newfangled allegiance and base codes
  • The following sectors are under review as part of the T5SS. The data is updated to conform to T5SS formats, but the data is still subject to heavy change.
  • Tab-delimited files are now assumed to be UTF-8 (previously, was Windows-1252)
  • And, of course, nearly all of the sectors covered by the T5SS have had some tweaks.
This will doubtless have introduced issues visible on the site (e.g. borders and routes that need tweaking) and due to the extensive code changes it's likely bugs have crept in that will affect booklet/poster creation. Let me know here or via email and I'll try and get them fixed ASAP.

Ω

2014-05-07

Status Update

Reference (Core 0140) - 127-2014

Not much new has appeared on the site lately - I've been busy behind the scenes. I've gotten updated Traveller 5 Sector Survey data drops from Don McKinney. In addition to the usual tweaks and fixes - such as replacing very small polities with owned worlds - two big changes are coming:

  • Base codes are no longer constrained to single characters, allowing us to drop 'A' as a shortcut for Naval Base and Scout Base and can just write 'NS'. 
  • Allegiance codes are expanded to four characters and include (where appropriate) sub-polity data. The Zhodani Consulate is now 'ZhCo', and the Third Imperium worlds in the Domain of Deneb are 'ImDd'. These new codes are guaranteed unique across charted space. Codes are only defined for worlds in T5SS regions, though - no clue yet what the Two Thousand Worlds or Hive Federation codes will be.
This is tricky since the site lets you ask for a T5SS sector in legacy SEC format, or request an unreviewed/unofficial sector in a T5 format. All the APIs need to do the right thing, translating the data as appropriate, as do the world data sheet and sector booklet. And the poster/booklet generators need to handle your old or new data correctly, which I can't test completely ahead of time.

I think I've gotten everything right in my local version, but since I'll be headed out of town for a conference next week I don't want to push up something to the site that will leave things broken while I'm gone. So... stuff will continue to be on hold until I'm back.

Ω