Initial commit: HPR Knowledge Base MCP Server
- MCP server with stdio transport for local use - Search episodes, transcripts, hosts, and series - 4,511 episodes with metadata and transcripts - Data loader with in-memory JSON storage 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
383
hpr_transcripts/hpr3457.txt
Normal file
383
hpr_transcripts/hpr3457.txt
Normal file
@@ -0,0 +1,383 @@
|
||||
Episode: 3457
|
||||
Title: HPR3457: Tables
|
||||
Source: https://hub.hackerpublicradio.org/ccdn.php?filename=/eps/hpr3457/hpr3457.mp3
|
||||
Transcribed: 2025-10-24 23:47:02
|
||||
|
||||
---
|
||||
|
||||
This is Hacker Public Radio Episode 3457 Fortunity, the second of November 2021.
|
||||
Today's show is entitled, Tables and is part of the series' databases it is hosted by Clot 2
|
||||
and is about 38 minutes long and carries a clean flag. The summary is how and why I convert
|
||||
tables to lists. This episode of HBR is brought to you by an honest host.com.
|
||||
Get 15% discount on all shared hosting with the offer code HBR15. That's HBR15.
|
||||
Better web hosting that's honest and fair at An honest host.com.
|
||||
Hey everybody. I got a message from Unmastedon from a person named F Toys and they said that they
|
||||
were listening to a show from me about macros and how they used to use macros for two
|
||||
generate tables in HTML and it got me to thinking about how much I hate tables but also I can see
|
||||
the appreciation for tables. It's a complex relationship and I want to talk about that here
|
||||
on Hacker Public Radio. So tables, what are they? Well a spreadsheet would be the quintessential
|
||||
example of a table I think, right? You've got your columns across the top, you got your rows down
|
||||
the side. The intersection of those as you can scroll across the page are called cells. That's
|
||||
where a row and a column intersect as it were. It's called a cell and in that cell there's
|
||||
information. Now we see this model of content delivery in lots of different places. We see it
|
||||
in books and they're quite useful actually. I have a book here in front of me that has a lot of
|
||||
tables in it. I'm just on page 41 and I'm already on table number 31. That's how many tables
|
||||
there are in this particular book. It's an Advanced Dungeons and Dragons second edition
|
||||
player handbook. So lots of tables and tables can be really good for clarity, for quick reference
|
||||
and tables also have a kind of implicit communication that they carry with them and you see a table
|
||||
and you understand what you're looking at. You know that you are about to see something.
|
||||
Usually some kind of almost a comparison. Maybe it's not exactly a comparison but in a way it's
|
||||
a comparison almost no matter what because there are different cells and the further you go along
|
||||
in the table, the information gets modified by what column and row it happens to fall in.
|
||||
So for instance if I look at a table actually right here here's a table. So a priest
|
||||
Thaco for level 3 is 20 but the priest's Thaco at level 6 is 18 and then it's 7 it's 16 and then
|
||||
that's 16 it's 10 and so on. But if you look at the same data for a rogue at level 3 they're 19
|
||||
at level 6 they're 18 at level 10 they're 16 and at level 16 they're 13. So you get the sense that
|
||||
that you're looking at information that changes either over time or under certain conditions.
|
||||
And so it's a it's a it's a great way to kind of reference like if you're if you're doing
|
||||
something and you have a table you don't need to know what a priest or a throag or a warrior or
|
||||
a wizard is you don't need to know what Thaco is but if you're if you're looking to optimize those
|
||||
things you think okay well I want the best Thaco I can possibly get. So you can look at this table
|
||||
it's laid out in this manner and you can tell how you could optimize that by just looking across
|
||||
so by by 20 the lowest Thaco there is is under the warrior class and so I guess if I'm if I'm aiming
|
||||
to optimize my Thaco across across time I should be playing a warrior and that turns out to be true
|
||||
their Thaco goes down by one every single level while everyone else has a different rate of of
|
||||
advancement. So whether you know what that is or not you you know now the relationship between for
|
||||
instance a warrior and a priest you can look at the table and say okay the warrior you you decrements
|
||||
one per per per heading per column whereas the priest does it decrements two every three columns
|
||||
so now we know don't know what we know but we know and and that's a great thing about tables
|
||||
is that they present the information in an easy-to-reference kind of manner and and something that
|
||||
may or may not be even closer to home here for you it depends on what world you're coming from
|
||||
as a listener but let's say that you're looking for a Linux distribution and you have a very
|
||||
specific package management requirement you know you like DNF you just can't decide which
|
||||
distro you want to go with and so you might look at a table that gives you the operating system
|
||||
say the init system and the package manager and you know I don't know something else the default
|
||||
shell and you could scroll through this list and kind of scan the table and you kind of focus in on
|
||||
the column that says package manager and it's because that's the thing that you care about
|
||||
and so you you see the list okay DNF well there it is so we've got what do we got oh we got
|
||||
Fedora well that's kind of expected we got rel and sentos and magia I hadn't thought of magia
|
||||
and maybe open mandriva although actually I don't know if they're actually using DNF yet I know
|
||||
the bjia did switch over to DNF and so on and then you could maybe you'd keep scrolling down the list
|
||||
and then you run into slack pkg well that's not DNF which one is that or that slackware you merge
|
||||
that's gen2 okay and then apt and that list would go on for for half of a page or several pages
|
||||
and so on so you can kind of you can use a table as a way to focus in on a specific kind of information
|
||||
and then cross reference what what kind of data surrounds the thing that you care about it is
|
||||
sort of it is a visual sort of way to select a table in a database so that's a table tables
|
||||
are really good they're great they're great for reference they're quick they're fast they
|
||||
communicate the differences of of of data to to the reader quickly they're easy to reference they're
|
||||
easy to cross reference so why do I hate tables well obviously I don't hate tables I mean I
|
||||
actually really really like a good table I think tables are great going on record saying that
|
||||
tables are great however tables are also have real pain to lay out and I mean initially they're
|
||||
not I mean you have a table you you you generate the table in whatever formatting tool you're using
|
||||
whether it's a word processor or code like HTML or XML and and it's done and you're happy with it
|
||||
the problems usually come around in two different places one is maintenance and the other is probably
|
||||
not in this order actually one is maintenance and the other is physical layout so tables I'll just
|
||||
start with the layout because this is the obvious one and the the the reason I really really hate it
|
||||
the the layout is is just based on literally what media your your reader is viewing the table within
|
||||
so if you're writing your initial table for I don't know the internet then you probably have
|
||||
essentially the entire screen of your user and there's no way of telling what your screen of
|
||||
what that user's screen is but we all kind of assume a reasonably modern display and I'm thinking
|
||||
personally of a desktop because I'm sitting in front of my desktop maybe you're thinking about
|
||||
a laptop either way they're all about you know 1920 by 1080 or maybe they're a lot a lot larger
|
||||
whatever it is it's kind of like you know a big display that you can look at a document whatever
|
||||
document is on full screen and you kind of you get the whole thing well that in itself poses one
|
||||
problem and we've probably all seen this where you're on a on a on a page that has set its table to
|
||||
just take up as much as much width as it possibly can and you think great well now I'm never going
|
||||
to have a problem cross referencing this table because it's it's big taking up the entire width of
|
||||
the of my document but have you ever tried to look at like a three column table that has forced
|
||||
itself to spread out into a you know a physical like a 30 inch thing you know every column is like
|
||||
literally physically 10 inches wide it gets kind of stupid and it's actually gets a little bit
|
||||
difficult to try to track the data across the page then at least it is for me because you you
|
||||
you you look at the left and you say okay that's that's that one that's that's magia now I'm going to
|
||||
trace across who am I fault I've gotten onto the wrong row now okay let me go back and and trace
|
||||
with my finger so that I'm not losing you know and so you have to like map it out almost it's
|
||||
almost it's too far apart the opposite is obviously true I mean if you've ever seen a table rendered
|
||||
in html on a a mobile phone then you've probably seen tables that just physically literally cannot
|
||||
fit on that mobile screen like at some point like I don't know a 10 column table with reasonably
|
||||
large words they it just literally can't fit on the what is this like maybe the three inch wide
|
||||
mobile screen oh sure you can rotate it and give yourself a good six to seven inches but it's
|
||||
it's kind of difficult to fit all of that information on such a small screen and maybe you have
|
||||
to just zoom out so you can kind of like make it all fit or maybe you have to zoom in and then
|
||||
just keep scrolling around and so you're kind of like looking through this weird sort of view portal
|
||||
at at this larger table it's it's really clunky and and that's you know if you're trying to optimize
|
||||
that from the well from the user perspective it's clunky in in lots of different examples that I've
|
||||
just I've just gone over and from the developer perspective it's clunky because you you want to
|
||||
optimize it for each display I mean ideally you don't you you want the information to be useful
|
||||
that's why you're writing it down in the first place and so you try to make adaptations you try
|
||||
to think you know maybe there's a library out there to reflow a table correctly or maybe there's a
|
||||
um maybe there's a certain trick that you can do as the as the developer based on
|
||||
audit you know attempting to detect the screen size and so on so one does try to optimize it but
|
||||
it gets it starts to become really difficult to maintain because now you're having to like
|
||||
recode every single table depending on certain conditions and frankly those conditions you don't
|
||||
even always really know what those are maintenance gets really tough as well later on or earlier on
|
||||
when you're actually writing the thing I don't know if you've ever tried to write a table in XML
|
||||
or HTML there are a lot of tags that you have to come up with that you have to use remember
|
||||
and all of those and the way that is getting laid out of course in your code has basically no
|
||||
bearing on what it's going to look like later which I mean that's kind of that's what code's all
|
||||
about right I mean like it very rarely the code doesn't usually look like the render like that's
|
||||
that's why we call it code um well I mean that's not the only reason we call it code but I mean
|
||||
that that's an expectation but for tables I mean it really can be difficult to sort of remember
|
||||
where you are in your code um to the extent that sometimes I've I've fallen back on like if I'm
|
||||
composing a table from scratch in HTML I've sometimes gone and rendered the table in a markdown
|
||||
and then converted the markdown to HTML because at least with markdown you get this weird kind of
|
||||
ASCII rendering of a table you use dashes and pipe symbols to construct a table which you'd
|
||||
think kind of would make some sense I mean it does kind of make sense but on the other hand
|
||||
it's actually really clunky too because I don't know if you've ever tried to edit a table that is
|
||||
composed of just dashes and pipes but you spend more time making all of the cells kind of like line
|
||||
up correctly org mode helps with this it has some really nice table tools that that kind of help
|
||||
with that but it can be really really clunky and sometimes you just think why why am I doing it
|
||||
this way why don't I just open up a spreadsheet and put the information in there and then I don't
|
||||
convert that to HTML somehow or something like that so it's not fun is is the point and that's
|
||||
those are the reasons I really don't like tables and I I really really like the idea of being
|
||||
able to construct information and then deliver it in lots of different ways so if I've written
|
||||
something down I want to know I find great comfort in knowing that I can then export that document
|
||||
the source code of that document can be converted and exported or whatever into multiple formats
|
||||
meaning I should be able to deliver the the the the thing that I am trying to communicate I should
|
||||
be able to deliver that as a plain text document you know mark down whatever as as the source code
|
||||
itself XML or whatever I should be able to export it as HTML I should be able to export it as EPUB
|
||||
PDF some kind of word processing document and and and and whatever else comes around you know like
|
||||
whatever other format there might be I want to I want to know that there's one source of well
|
||||
there's one source code and from that one source code I can render out to a lot of different formats
|
||||
because presumably my readers are going to want a lot of different formats and presumably there
|
||||
are formats out there in the future that I have not anticipated yet that I would like to have some
|
||||
kind of you know future proof against or getting into I want to be able to just sort of inherit
|
||||
those future formats and I don't know what those will be but ideally I'll be prepared for them
|
||||
and I'm not going to have 31 or 81 or 120 tables that I then have to go through and manually modify
|
||||
because I didn't expect there to be some other format for for for delivery for content delivery
|
||||
so I've established why tables are great I've told you why I think tables are horrible to deal with
|
||||
as a as an author slash developer slash content creator and now I'm going to talk about what I do
|
||||
about tables in real life like this isn't um this isn't a dogmatic type of thing this this isn't
|
||||
something that always happens no matter what with me it is something that usually happens though
|
||||
it is it is something that is very common for me to do and that is to convert tables into some
|
||||
other format of data and this is this is a this is data conversion like this is the kind of thing
|
||||
that you might do uh you know with a programming language you're parsing some kind of data you're
|
||||
parsing it and converting it to to some other schema this is a this is not a this isn't a mindless
|
||||
thing that you can't that that you can count on making sense all the time you sometimes have to
|
||||
really restructure the data but that in itself I think is an interesting challenge so let's let's
|
||||
take something that probably many of us will be at least vaguely familiar with and I'm going to
|
||||
try to do it sort of really simple really easy we'll just we'll take it slow and we'll convert it
|
||||
to a couple of different we'll convert a couple of different tables to lists okay so let's say
|
||||
you've got a table the top and I'm keeping it really simple here it's a top row is OS init system
|
||||
and package manager those are our columns so three columns OS init system package man down the
|
||||
side under OS we'll have fedora slackware and gen 2 rows columns simple so under fedora as the
|
||||
init system will have system d and the package manager package manager is dnf slackware we've got
|
||||
bsd for the init system or bsd style for the init system slack pkg for the package manager and then
|
||||
gen 2 we've got open rc for the init system and package manager emerge I mean let's not get into
|
||||
questions of whether or not gen 2 would necessarily insist on open rc being the init system because
|
||||
it's quite a flexible system you could build it with something else same goes frankly for slackware
|
||||
but I'm just going we'll just leave it with that just so we have different data through our table
|
||||
now as a table that's a three column table it's four rows well maybe you could say three rows
|
||||
with a header row but I mean that's four rows there's a lot there's a good likely it's quite likely
|
||||
that that actually probably wouldn't be a super problematic table but it'll be the example so
|
||||
instead of structuring it as a table which again admittedly you know especially if we imagine under
|
||||
the that that fedora wouldn't be the only entry for certain for instance system d and dnf
|
||||
combination like they're probably there'd certainly be rail there'd certainly be syntax there'd
|
||||
certainly be magia haven't looked at open medriva um in preparation for this episode so I don't
|
||||
remember what they're up to right now but you know you'd have more there a slackware would be on
|
||||
a line as its own although maybe not maybe there'd be some systems under slackware that would also
|
||||
be using a bsd or bsd style init system so maybe there would be some listed there open rc maybe
|
||||
there'd be some other things that we could list there like arch or something I don't know um so
|
||||
you know you can imagine this this list being bigger in in in really all of the different
|
||||
directions but here we go so instead of writing that as a table I would choose to write that as a
|
||||
bulleted list or possibly as a itemized list or or I should say uh what what is it called in doc
|
||||
book um uh ter variable variable list and so you might have the heading or or the first bullet as
|
||||
fedora and in under that you'd have two bullets you'd have sub bullets you'd have init system colon
|
||||
system d package manager colon dnf and then slackware init system bsd package manners
|
||||
gintu init system open rc package manager emerge and so on so you would you would essentially get
|
||||
yourself into kind of a loop over over the um the initial column the os column and that would become
|
||||
your top level bullet points and then you would subjugate the other cells in the table to sub bullet
|
||||
under the under that column and and that would be the loop because you'd always have you'd always
|
||||
have that predictable init system package manager heading init system package manager heading
|
||||
init system package manager so that works it tells the same story data wise it delivers the exact
|
||||
same information and it it does so in such a way that is predictable and repeatable which
|
||||
doesn't really make any difference except that it helps the user get that same kind of cross
|
||||
reference advantage so if i know that i'm looking at this list and all i care about is the package
|
||||
management system then i i know after like the first one or two that package manners always going
|
||||
to be the second sub bullet point under each heading and i even label that every single time
|
||||
to really really drive home i mean that's redundant and you could argue that we should just like
|
||||
for um sort of conservation of bits i guess that we should just say fedora bullet point system d
|
||||
bullet point dnf slackwear bullet point bsd style bullet point slack package ginto bullet point open
|
||||
you know but i mean why do that like why not it doesn't cost that much extra to put a little
|
||||
heading in front of each one so you've got the key and value pair it's almost yam million
|
||||
yam million it's it's almost like yaml really i mean if if if we're looking at this it's essentially
|
||||
saying here's a here's a sequence containing mappings and that's what we're delivering and and
|
||||
it's relatively simple to scan through that you know as a human with it you sort of human brain
|
||||
human eyes it's relatively simple to scan through that and extract the the focus that you want
|
||||
is it as easy as looking at a table i actually find that it is does it have the same communication
|
||||
that sort of that up front one two punch that a table has i don't feel like it necessarily does
|
||||
i think we humans really do find tables comforting and familiar or at least i should say as a certain
|
||||
kind of human i don't know that all humans find tables comforting and familiar although i think
|
||||
that we do because you see tables even in um you know when you're when you're shopping online
|
||||
um you'll you'll look at comparisons like does this gpu have such and such or or what about the
|
||||
this the subscription plan what kind of benefits do you get with if you take this level of subscription
|
||||
versus that level of subscription and so on so you do kind of get those you get that in a lot of
|
||||
different areas i feel so i think it might just be yeah sort of an inborn natural trait
|
||||
that you see a table and you understand what it's trying to communicate whereas a bullet list you
|
||||
don't necessarily always know is this just a list of stuff or is this a comparison of stuff
|
||||
like you have you do have to work a little bit harder to understand or or rather to establish what
|
||||
for instance a list is really trying to communicate to you like what is the data structure
|
||||
but through repetition and verbosity i feel like that structure can be conveyed pretty quickly
|
||||
and the benefit for me far outweighs losing that sort of upfront hey here's a table now you know
|
||||
what you're going to be looking for um i would rather have the bullet list because they're easier to
|
||||
code they're easier to maintain they're easier to export now of course a table doesn't always
|
||||
translate exactly to a list the way this one did this was a really good example of
|
||||
of a sequence of data that contain key and value pairs that's pretty easy to convert into a list
|
||||
to be honest i mean it's it's it's it's a really direct kind of translation sometimes that
|
||||
doesn't always work so for instance let's say that we're looking at a table that is comparing
|
||||
the uh licenses and interplanetary uh existences of operating systems so you might have uh as
|
||||
your columns you're operating system you have a column saying whether or not it's open source
|
||||
and you have a column defining whether or not it is landed on Mars so this would be a classic table
|
||||
that you'd see when you're looking at i don't know like a car sales report or or a um like i said
|
||||
earlier like graphics card comparison or something like that where you'd have like little green
|
||||
checkmarks in one column and at certain points they would stop being green checkmarks and they
|
||||
turn into red x's but if you go over to the next column where you pay five thousand dollars more
|
||||
for that car or for that graphics processor then suddenly you get more green checkmarks and fewer
|
||||
red x's and then finally if you go premium and pay ten thousand dollars more you get all green
|
||||
checkmarks nothing but green checkmarks all the way down so anyway you got operating system
|
||||
open source landed on Mars those are your columns your your rows are linux bsd and macOS
|
||||
linux open source yes bsd open source yes macOS open source no landed on Mars linux yes bsd
|
||||
no macOS no don't hold me to this data i don't actually know what has or has not landed on Mars
|
||||
some bsd code probably has almost certainly on Mars but the kernel itself as far as i know
|
||||
is not on Mars as of this recording as of my very brief research so as a bullet list if we took
|
||||
my previous example very literally we would have some ugly list like bullet point linux open source
|
||||
colon yes landed on Mars yes bs bullet point bsd sub bullet point open source yes landed on Mars no
|
||||
macOS open source no landed on Mars colon no that would be serviceable but i feel like
|
||||
in that case the boolean values of yes and no make the verbosity i don't know a little bit
|
||||
it becomes like with that kind of verbosity then the the landed on Mars colon no well then why
|
||||
even mention it it hasn't landed on Mars so why why occupy my visual and brain processing
|
||||
space was something that resolves to it doesn't matter like it doesn't take to a no value that
|
||||
doesn't that doesn't add anything i think in this case i think it actually requires more brain
|
||||
processing and more more it provides more visual noise than than what we could do so in that case
|
||||
i don't think that the the presentation the the translation of the table into a bullet point
|
||||
really services the reader i think what would be better well what i really think would be better is
|
||||
not present this as a table so for instance i would just write linux and bsd or open source operating
|
||||
systems while macOS is not of these posics compliant systems only linux has landed on Mars so far
|
||||
there i've just delivered the same amount of information in two sentences and in a clearer and
|
||||
and more fluid fashion now to be fair that might that might not always be the intense like you might
|
||||
not want to be writing pros you you may actually want to provide people with sort of the data i mean
|
||||
certainly you always have the choice of just taking that data and and doing a literal translation where
|
||||
you where you make the first row the first cells the first column of cells the the main bullet points
|
||||
and then sub bullet points of key and value pairs that totally works but i'm trying to get an example
|
||||
where maybe that isn't optimal like maybe that that's not what you're trying to do so it's just
|
||||
maybe the thing that you that you defaulted to while i'm doing tables anyway i might as well put
|
||||
this this comparison into a table but let's let's assume for a moment that that's not a necessary
|
||||
you don't need the green check marks and red x's you're just trying to convey the information
|
||||
so another way to do that could be to summarize what's common and then highlight the differences
|
||||
so for instance you might write one line that says or i guess two two lines there are a few
|
||||
Linux systems on Mars neither bsd or mac os have yet landed on Mars and then as bullet points bullet
|
||||
point Linux and bsd are both open source mac os is based partially on open source and includes
|
||||
components from the bsd kde canoe and other projects there so now you've gotten you've you've
|
||||
taken up visual you've taken up visual sort of processing cycles with the bullet points and you've
|
||||
highlighted in as a group the common elements so in one bullet point you have defined what certain
|
||||
groups have in common Linux and bsd are both open source so that takes care of Linux open source
|
||||
yes landed on Mars yes bsd open source yes and that's it so that that that highlights those three
|
||||
cells we still have three cells that we haven't talked about which is the fact that bsd is not open
|
||||
it is not landed on Mars and that mac os is not open source and has not landed on Mars so for the
|
||||
second bullet point then we highlight the fact that mac os is only partially based on open source
|
||||
so that takes care of the open source cola no under mac along the mac os axis and um that's it
|
||||
and then the sentence that we summarized uh the data we've got there are uh Linux systems on Mars
|
||||
so that's uh Linux landed on Mars yes and neither bsd or mac os have yet landed on Mars so that's
|
||||
mac os no and bsd know for the landed on Mars still other times you just have to question what the
|
||||
tables actual intent or or purpose really is and so to bring it back around to where we started with
|
||||
dnd for instance um there are tables there are lots of famously lots of tables in dnd books that's
|
||||
just kind of that it got started early on and it proved useful and kind of endearing and so they've
|
||||
persisted and even in the latest edition of dnd there are tables under each uh character class
|
||||
that sort of outlines the lifespan of that character so if you choose for instance a barbarian
|
||||
to play a barbarian then there's a table telling you how that barbarian is going to progress
|
||||
over the the course of of of their duration of their life in in the game and and that's a useful
|
||||
thing and i think in in in one way you think you look at that table and you say well that's for a
|
||||
player who's looking through this handbook trying to figure out what class they want to play
|
||||
and they're going to look at this table and look at things like well what kind of bonuses do i get
|
||||
throughout each level and they'll look at that they'll look at the barbarian for instance and
|
||||
and look at the progression of the barbarian and they'll be happy with that but then they'll go
|
||||
back and maybe flip over to the fighter and see what progression the fighter has and what kind of
|
||||
benefits they get across you know through the course of their of their lifespan and i think in a
|
||||
way that that's kind of the intent of those tables is to sort of be a a summary and maybe a little
|
||||
bit of a shopping list for players as they try to choose which class they want to play but if you
|
||||
really think about it if you really look at that table and think about what's actually being conveyed
|
||||
there's not really that much there aren't a whole lot of specifics in that table that you you
|
||||
get things like at a certain level you get a primal path but what is a primal path well if you've
|
||||
played dnd before fifth edition then you know what a primal path or you might might know what a
|
||||
primal path is for a barbarian if you played a barbarian but but you'll know that that primal path
|
||||
is actually a set of other options so you have to choose your primal path so knowing that you get
|
||||
a primal path at third level as a barbarian doesn't actually tell you anything it just tells you
|
||||
at third level you're going to have to make some new choices about sort of how your character
|
||||
develops and that's not even summarized in this table is just it's just an alert that hey you're
|
||||
going to have to make choice as well there's a certain implicit expectation here that you're
|
||||
going to have to make choices about your character if you know anything about leveling up whether
|
||||
you've played dnd or just a video game that has you do some action when you get a certain number
|
||||
of points some kind of level up action which is pretty common these days then then you know that at
|
||||
a new level you're going to have choices to make that's just if that's an RPG so I don't know
|
||||
how useful the table actually is in terms of sort of a summary of that character and when I was
|
||||
adapting the free under the open game license the the free rules of fifth edition for players who
|
||||
hadn't yet purchased the player handbook I decided to render those tables as lists instead and
|
||||
frankly I was pretty happy with them they are not you know by any means they are not I think
|
||||
probably they take up more space than the table I think there's no question about that the table has
|
||||
the advantage of being able to use both vertical and horizontal space to its advantage while
|
||||
bullet lists don't they just use vertical space so you get a you know on one page you get two
|
||||
columns of a bullet list whereas what really should be happening is like maybe a fourth of the
|
||||
page or a third of the page gets taken up by one glorious table but I didn't want to have to
|
||||
deal with the table I didn't find it fun to code the table I didn't find it fun to maintain the
|
||||
table and so I chose a and I also didn't I didn't know what format my players would be consuming
|
||||
the the data because I was going to offer it to them as plain text I was going to offer to him
|
||||
as EPUB and as PDF and I could probably offer to him as HTML if I wanted to so I didn't know what
|
||||
format they were going to consume this so I didn't really want you know especially in plain text
|
||||
the the table just looks horrific it's just it's a horrible thing to look at because it runs right
|
||||
off the page asky asky text or or mono space text I mean it is as wide as it is every single character
|
||||
and so it if you have a lot of data in your table it just keeps going and going and going forever
|
||||
so that wasn't that wasn't something that I wanted to do and so I just I translated it into
|
||||
a list and it worked and the the thing about that is that it wasn't it was really just a
|
||||
YAML sequence if you think of it in YAML terms so there there I didn't do necessarily predictable
|
||||
key value pairs because not everything happens at every level so for instance you have level one
|
||||
and then so this was a numbered list which makes a sense so one is level one the bullet point
|
||||
under that is proficiency plus two so now your proficiency bonus is plus two good to know you get
|
||||
rage and you get unarmored defense you have to look up what both of those things are later in the
|
||||
text but that's just kind of how dnd works at level two number two level two you get reckless
|
||||
attack and danger sense at level three you get rage and primal so more more rage and danger sense
|
||||
more no that's a primal path sorry primal path at that level three four level four ability score
|
||||
improvement five proficiency plus three so now we're kind of getting some repetition here but not
|
||||
really I mean you'll see proficiency upgrades throughout you'll see a couple of ability score
|
||||
improvements throughout so things pop back up but it's not predictable unless you're very very
|
||||
familiar with kind of like the way that dnd levels up but what I realized even as I was translating
|
||||
is that the intent of the table might seem it may seem to be a good summary of information about
|
||||
that class but actually what it is is a guide for players to know what to do when they level up
|
||||
it can be a very sort of frantic frightening experience to level up you think oh my gosh what do I
|
||||
have to do I have to make changes to my character what kind of changes do I have I have to make
|
||||
well with this list it it tells you correctly exactly what you need to do and is it better than a
|
||||
table frankly I kind of I think it is to be honest because the table doesn't necessarily say
|
||||
here are the changes that you need to make it more communicates the idea of hey here's an overview
|
||||
of what your class is going to be like over the course of level one through 20 that doesn't really
|
||||
I mean you have to it's another step I think for many players to think ah okay so if this is an
|
||||
an overview it is also a recipe whereas a list especially a numbered list it just cries out
|
||||
this is a recipe this is a an algorithm this is a these are the steps that you have to take
|
||||
start at one apply these items when you get to two come back to this list start at two and apply
|
||||
these items this is all cumulative there's no implication that you have to replace anything
|
||||
this is very clearly it's building on itself as you increment levels so frankly I think in many
|
||||
ways a list for that purpose is superior to a table even though a table is what I think the designers
|
||||
of that text thought was the most logical sort of obvious method of delivery and I mean I'll admit
|
||||
that the table probably is useful I mean it is a great once again it's a great at a glance tool
|
||||
if you can afford to have a table for that sort of at a glance overview I will admit that's not
|
||||
too bad is it is it all that different from a from a list I don't think so for me I am just as
|
||||
I'm just as happy scanning over a list quickly as I am a table but I think there is I acknowledge
|
||||
and I even identify with like I I feel the same sense of sort of comfort and relief ah here's
|
||||
all the information in one relatively small footprint here's all the information all at once
|
||||
now I'll never look at that table again or maybe I will just to kind of get a get an idea of where
|
||||
I'm headed but for the actual sort of step by step process the the list is actually really really
|
||||
useful and it's it has become my preferred method of consuming that information interestingly I would
|
||||
rather look at my lists than the tables in the D&D book when I'm when I'm playing a character when
|
||||
I'm doing a quick reference as dungeon master to figure out for a player that might not be clear
|
||||
on some feature then I often do flip straight to that table because I'm like hey that's that's
|
||||
going to be all the information right where I need it although frankly I could also get that
|
||||
information from my list anyway so I kind of like my list is what I'm trying to say
|
||||
anyway that those are my thoughts on tables and how to convert data from tables into
|
||||
something that might be easier to code to maintain and certainly render and possibly even understand
|
||||
for your readers thanks for listening I'll talk to you next time
|
||||
you've been listening to Hacker Public Radio at Hacker Public Radio dot org
|
||||
we are a community podcast network that releases shows every weekday Monday through Friday
|
||||
today's show like all our shows was contributed by an HBR listener like yourself
|
||||
if you ever thought of recording a podcast then click on our contribute link to find out how
|
||||
easy it really is Hacker Public Radio was founded by the digital dog pound and the infonomican
|
||||
computer club and is part of the binary revolution at binrev.com if you have comments on today's show
|
||||
please email the host directly leave a comment on the website or record a follow up episode
|
||||
yourself unless otherwise stated today's show is released on the creative comments
|
||||
attribution share a light 3.0 license
|
||||
Reference in New Issue
Block a user