Re: Software that makes placemats
Posted: 00:16 Sun 26 Jun 2011
Done.
A place for those passionate about port, and for those new to it. We hold lots of Port tastings: please join us!
https://www.theportforum.com/
∃ StickyLabelsByNameWhichReplaceCirclearrays. For an example see the organisation thread for The Bell, 2011.[url=http://www.theportforum.com/viewtopic.php?p=39371#p39371]Here[/url] jdaw1 wrote:At The Bell, for the Christmas tasting on 16 December 2010, for the first time, glass stickers were used rather than placemats. At the Bell glasses and space is tight, there just not being space for each person to use three pages of A4 of table.
Code: Select all
/Circlearrays [
[ (Sandeman) (1970) ]
[ (Graham) (1970) ]
[ (Graham) (1963) ]
[ (Sandeman) (1977) ]
[ (Graham) (1977) ]
[ (Graham) (1985) (Single) ]
[ (Sandeman) (1985) ]
[ (Graham) (1985) (Magnum) ]
] def
/Titles [
(S70)
(G70)
(G63)
(S77)
(G77)
(G85)
(S85)
(G85)
] def
/Belowtitles [
()
()
()
()
()
(Single)
()
(Magnum)
] def
Code: Select all
/Belowtitle () def
/GlassesData [
<< /Title (S70) /Circlearray [ (Sandeman) (1970) ] >>
<< /Title (G70) /Circlearray [ (Graham) (1970) ] >>
<< /Title (G63) /Circlearray [ (Graham) (1963) ] >>
<< /Title (S77) /Circlearray [ (Sandeman) (1977) ] >>
<< /Title (G77) /Circlearray [ (Graham) (1977) ] >>
<< /Title (G85) /Belowtitle (Single) /Circlearray [ (Graham) (1985) (Single) ] >>
<< /Title (S85) /Circlearray [ (Sandeman) (1985) ] >>
<< /Title (G85) /Belowtitle (Magnum) /Circlearray [ (Graham) (1985) (Magnum) ] >>
] def
As a non-programmer, I do quite like the look of this, though the original multi-array presentation is perfectly clear.jdaw1 wrote:A competent programmer recently...suggested that there be a single array of dictionaries, with defaults outside:Upon reflection, in a purist IT sense he is completely. But I am concerned that non-programmers, who might already be struggling to use the software, would find this even less intuitive.Code: Select all
/Belowtitle () def /GlassesData [ << /Title (S70) /Circlearray [ (Sandeman) (1970) ] >> << /Title (G70) /Circlearray [ (Graham) (1970) ] >> << /Title (G63) /Circlearray [ (Graham) (1963) ] >> << /Title (S77) /Circlearray [ (Sandeman) (1977) ] >> << /Title (G77) /Circlearray [ (Graham) (1977) ] >> << /Title (G85) /Belowtitle (Single) /Circlearray [ (Graham) (1985) (Single) ] >> << /Title (S85) /Circlearray [ (Sandeman) (1985) ] >> << /Title (G85) /Belowtitle (Magnum) /Circlearray [ (Graham) (1985) (Magnum) ] >> ] def
Comments?
I don't exactly follow what you mean, but my suggestion is that each line of the array would be set out along the lines of the following:jdaw1 wrote:Definitions would be needed for Circlearray, Title, Abovetitle, Belowtitle, Overtitle, and FillText. Most will be empty, so using a default would substantially lessen clutter in the parameters.
ConciseRAYC wrote:I don't exactly follow what you mean
Code: Select all
/Abovetitle () def
/Belowtitle () def
/Overtitle () def
/FillText () def
/GlassesData [
<< /Title (S70) /Circlearray [ (Sandeman) (1970) ] >>
<< /Title (G70) /Circlearray [ (Graham) (1970) ] >>
<< /Title (G63) /Circlearray [ (Graham) (1963) ] >>
<< /Title (S77) /Circlearray [ (Sandeman) (1977) ] >>
<< /Title (G77) /Circlearray [ (Graham) (1977) ] >>
<< /Title (G85) /Belowtitle (Single) /Circlearray [ (Graham) (1985) (Single) ] >>
<< /Title (S85) /Circlearray [ (Sandeman) (1985) ] >>
<< /Title (G85) /Belowtitle (Magnum) /Circlearray [ (Graham) (1985) (Magnum) ] >>
] def
Code: Select all
/GlassesData [
<< /Title (S70) /Belowtitle () /Circlearray [ (Sandeman) (1970) ] /Abovetitle () /Overtitle () /FillText () >>
<< /Title (G70) /Belowtitle () /Circlearray [ (Graham) (1970) ] /Abovetitle () /Overtitle () /FillText () >>
<< /Title (G63) /Belowtitle () /Circlearray [ (Graham) (1963) ] /Abovetitle () /Overtitle () /FillText () >>
<< /Title (S77) /Belowtitle () /Circlearray [ (Sandeman) (1977) ] /Abovetitle () /Overtitle () /FillText () >>
<< /Title (G77) /Belowtitle () /Circlearray [ (Graham) (1977) ] /Abovetitle () /Overtitle () /FillText () >>
<< /Title (G85) /Belowtitle (Single) /Circlearray [ (Graham) (1985) (Single) ] /Abovetitle () /Overtitle () /FillText () >>
<< /Title (S85) /Belowtitle () /Circlearray [ (Sandeman) (1985) ] /Abovetitle () /Overtitle () /FillText () >>
<< /Title (G85) /Belowtitle (Magnum) /Circlearray [ (Graham) (1985) (Magnum) ] /Abovetitle () /Overtitle () /FillText () >>
] def
No doubt.jdaw1 wrote:ConciseCode: Select all
/Abovetitle () def /Belowtitle () def /Overtitle () def /FillText () def /GlassesData [ << /Title (S70) /Circlearray [ (Sandeman) (1970) ] >> << /Title (G70) /Circlearray [ (Graham) (1970) ] >> << /Title (G63) /Circlearray [ (Graham) (1963) ] >> << /Title (S77) /Circlearray [ (Sandeman) (1977) ] >> << /Title (G77) /Circlearray [ (Graham) (1977) ] >> << /Title (G85) /Belowtitle (Single) /Circlearray [ (Graham) (1985) (Single) ] >> << /Title (S85) /Circlearray [ (Sandeman) (1985) ] >> << /Title (G85) /Belowtitle (Magnum) /Circlearray [ (Graham) (1985) (Magnum) ] >> ] def
Code: Select all
<< /Title (G70) /Above (Hedges & Butler) /Below (Magnum) / Over () /Fill (G70) /Circlearray [ (Graham) (1970) (Magnum) ] >>
<< /Title (G70) /Above (Berry Brothers) /Below (Single) / Over () /Fill (G70) /Circlearray [ (Graham) (1970) (Single) ] >>
<< /Title (D63) /Above (Oporto) /Below (Half) / Over () /Fill (D63) /Circlearray [ (Dow) (1963) (Half) ] >>
Understood - it has worked very well to date and these are niche functions, so no need to change.jdaw1 wrote:I accept your point about the template, but, in a typical placemat, almost all of this would be empty. So the GlassesData would be mostly clutter: it becomes harder to read, to see what will happen, and thereby to find errors.
Maybe the conclusion is to leave it as-is, with separate arrays of strings.
The following would work:RAYC wrote:But let's say, for arguments sake, i am tasting two bottles of G70 (one magnum bottled by Hedges and Butler and one single bottled by BBR) and a half of Dow 1963 (Oporto-bottled) and want to reflect this in the placemats.
As a non-programmer, I don't know what to do with your template.
Code: Select all
/Abovetitle () def
/Belowtitle () def
/Overtitle () def
/FillText () def
/GlassesData [
<< /Title (G70) /Belowtitle (Magnum) /Overtitle (Hedges & Butler) /Circlearray [ (Graham) (1970) (Magnum) (H&B) ]>>
<< /Title (G70) /Overtitle (Berry Bros & Rudd) /Circlearray [ (Graham) (1970) (Single) (BBR) ] >>
<< /Title (D63) /Belowtitle (Half) /Circlearray [ (Dow) (1963) (Half) ] >>
] def
A more recent email makes a good observation:[url=http://www.conandalton.net/]The competent programmer[/url], after reading the above, by email wrote:As you said, things might have been different for the code if you had started that way but it's tricky to change now. The same is true for your users. Only a few will be able to judge the merits of one approach over the other; everyone else will prefer what they're used to.
In a subsequent email he wrote:RAYC has a point, that in a typical user interface, you'd likely show all the fields and ask the user to leave fields blank to get the default values. Whereas in code you want to kill clutter and hide stuff that doesn't need to be visible. In the placemat code, the parameters lines are playing two roles - one as plain old code, another as user interface.
So I guess the ultimate answer hinges on which of those two roles is more important for the lines in question.
[url=http://www.fortheloveofport.com/ftlopforum/viewtopic.php?p=70203#p70203]On :ftlop:[/url] Eric Menchen wrote:I like the concise version, as long as there is a comment line above telling me all the options. Disclaimer: I write code for a living.
+1, emphasis minejdaw1 wrote:[url=http://www.fortheloveofport.com/ftlopforum/viewtopic.php?p=70203#p70203]On :ftlop:[/url] Eric Menchen wrote:I like the concise version, as long as there is a comment line above telling me all the options. Disclaimer: I write code for a living.
In the thread entitled [url=http://www.theportforum.com/viewtopic.php?p=44162#p44162]Port from the Nineteen Nineties, Mon 08 August 2011[/url], jdaw1 wrote:[url=http://www.theportforum.com/viewtopic.php?p=43927#p43927]Here[/url] jdaw1 wrote:
- And, slightly kludged, a ‘What is it?’ page. Comment encouraged.
[url=http://www.theportforum.com/viewtopic.php?p=43952#43952]Here[/url] AHB wrote:A way to record guesses for posterity. I'm happy to try this out on 8th August.[url=http://www.theportforum.com/viewtopic.php?p=43953#43953]Here[/url] jdaw1 wrote:Please scan and upload the sheet it’s OK, you will all be rubbish, as would I if I were there and comment on the technology.[url=http://www.theportforum.com/viewtopic.php?p=44122#p44122]Here[/url] RAYC wrote:Should the "total" field in the guess recorder be a column corresponding to the wines (as currently drafted) or a row at the bottom to correspond to the drinkers? (or perhaps both, giving two totals - best guesser, most guessed)Comment encouraged.[url=http://www.theportforum.com/viewtopic.php?p=44124#44124]Here[/url] jdaw1 wrote:Updated draft of the placemats.What is written in the rectangles is the names of wines, abbreviated. So totalling these will be more arduous than totalling numerical scores (3 for first place; 2 for second; 1 third). Further design work probably needed.
- Kludged improvement to ‟What is it?” sheet. Comment on this would be welcomed.
RAYC wrote:- Guesses are an interesting record of people's impressions of the port (see comment re: Roeda above)
- A slight concern from some that the process of gathering votes after every round got in the way of relaxed conversation. Though i would imagine that this would be less of an issue at a smaller tasting with fewer bottles.
- We are all terrible - top score was 6 points out of a possible 28 (1 point for vintage, 1 for shipper). Across all 8 people, there was only one correct guess at shipper. Scores for correct identification of vintage were no doubt flattered by the fact that we only had a choice of 10 years (or 9, discounting 1993)!
- The sheet worked well, and totalling points was not an arduous task. I had slight difficulty when drunk with recording votes in the correct columns...though this is not a criticism of the sheet itself!
- Inclusion of an extra row or two for extra ports would be good.
Earlier, in the [url=http://www.theportforum.com/viewtopic.php?p=44124#p44124]planning thread for that tasting[/url], jdaw1 wrote:Note to self: there could be array parameters VoteRecorderRowTotalTitles and VoteRecorderColTotalTitles. The numbers of total rows and columns would be the length of these arrays, titled with their contents. Of course, the arrays themselves could depend on VoteRecorderSheetNum, so compelling a row in the ‘What is it?’ page but not in the ‘WOTN’ page. But that forces users doing an obvious thing to write code, which isn’t nice. Maybe these could be double-depth arrays, the outer array being of the same length as GlassesClusteredOnVoteRecorders. More complicated, but spares the ordinary user from code.
Later note to self: it’s complicated because there is too much flexibility only one total column or row is needed, so no need for the extra arrays depths that allow multiple. Instead have a non-array single piece of text, VoteRecorderTotalRowTitle and VoteRecorderTotalColTitle, both probably being (Total). Then have two arrays of booleans, of the same length as GlassesClusteredOnVoteRecorders, called VoteRecorderShowTotalRow and VoteRecorderShowTotalCol. That better captures what I actually want to do, with less needless excess.
It wasn’t meant that way, but it is a criticism. A good user interface, which applies as much to paper as to electronic media, can be used by a drunk. Please ponder how it could be bettered. For instance, would it have helped if every fourth vertical line were thicker? Would it be worth repeating the names at the bottom of the page?RAYC wrote:- The sheet worked well, and totalling points was not an arduous task. I had slight difficulty when drunk with recording votes in the correct columns...though this is not a criticism of the sheet itself!
That’s mildly inconvenient to do with GlassesClusteredOnVoteRecorders, but an extra integer parameter can be added.RAYC wrote:- Inclusion of an extra row or two for extra ports would be good.
To me, no. As has already been pointed out, in this case the software is the user interface.jdaw1 wrote:If this change is done, all options would be plainly visible, but not necessarily in a comment line. Does that suffice?
Noted. Thank you.Glenn E. wrote:To me, no.jdaw1 wrote:If this change is done, all options would be plainly visible, but not necessarily in a comment line. Does that suffice?