The DUB package manager for the D programming language doesn’t yet support dynamic library dependencies. How do you roll your own while waiting for this feature to land? Let’s take a look!
Last time, we implemented a calendar system that can handle the Gregorian, French Revolutionary, and Islamic calendars. We’re missing two big ones: the Chinese and Hebrew calendars.
I happened across an article extolling the virtue of map/reduce. Unfortunately, it only used
reduce, and the result was kind of janky. Worse on average than using a for loop. Let’s look at what we can do better.
Having spent a fair bit of time with both D and .NET, I’d like to blather about how they stack up against each other.
Calendars seem simple at first, but no system survives first context with reality. Let’s go through what types of calendars exist and how to support them all in one codebase. Our eventual focus will be on producing a calendar for games — but those more on the Dwarf Fortress end of the spectrum.
I’ve been seeing a lot of recommendations for the Firebird’s Son trilogy by Darth Marrs. They praise the worldbuilding. I really don’t see it, and I’m tired of repeating why, so I’m cataloguing it here.
The Firebird’s Son trilogy is a work of Harry Potter fan fiction. The premise is that, in the UK, there is a strongly matriarchal society, there are about three women for every man, and birth rates are rather low. Furthermore, men and women bond the first time a man has sex, and that bond transfers magic power from the man to the woman.
The sheer number of things that don’t make sense in the story is mind-boggling.
Men are rare — or not
Men are rare and therefore valuable, right? Except almost nothing in the story reflects that.
If men were rare, they would be protected, from infancy to death. What we actually see is a surprising degree of callousness. Boys are allowed to play Quidditch, for instance, despite the risk of injury. And men are even allowed to join the DMLE.
Why? It doesn’t make any sense!
Furthermore, malnutrition can erode your magic power, which (as we’ll discuss soon) impacts your ability to form bonds. But nobody checked on Harry to see that he was being well fed.
Men lose magic power
Men are expected to enter a bond and lose most of their magic. Then, if they have enough magic left, they’re expected to enter another bond. And again, and again, until they’re barely able to hold a wand.
(Squibs, meanwhile, supposedly tend to leave magical society because it’s too tough for them to be able to see magic without being able to perform it. How much worse must it be to be able to do so little when only a few years prior you could do so much more!)
Boys need some amount of magic training, otherwise they’re a danger to themselves and others. However, they don’t need as much as women. It’s a waste of their time and their hope to teach them more magic than necessary for them to control their power.
It would be sensible for men to take administrative positions that benefit less from magic. Accounting should be a popular course for boys.
Bonding is spoken of as if it’s serious business. On the ground, people treat it as if it’s important and weighty. At the administrative level, nobody seems to care much about it.
Bonding is the core of family structure, so it’s not something you want to jump into. Also, bonding someone too young will kill them or render them catatonic. So a sensible person would try to keep boys and girls separate, right? At least in unsupervised conditions — kids aren’t going to molest each other under a teacher’s watchful eye.
But Darth Marrs thinks it’s sensible to keep everyone in the same boarding school, on the same Quidditch teams, with easy access to each other. The only vague sop to separating them he institutes is that they can’t have classes together until fourth year — as if kids tend only to be sexually active before they turn fourteen while in a classroom.
The covens (old, powerful groups of witches) tend to control bonding. They would want to crack down on unauthorized bonding, so segregated classes would be high on their agenda. Women who bond without their consent tend to be in for a rough time (though they can gain status from having a powerful husband), and we don’t really see love matches. Plus if there’s a tacit attempt to get men to rebel more often, bonding won’t help.
Really, no authority figure benefits from unauthorized bonding, and all of them should be in favor of gender segregation.
One problem the series tries to drive home is the declining population in Magical Britain. Everyone talks about it, so you’d expect someone would do something about it.
Combine that with the high gender imbalance and the limits on polygyny, and you should naturally get a high rate of halfbloods with magical mothers. Do we? It doesn’t seem like it. If there were, we’d see population growth, since some 70% of the population is capable of bearing young. Instead of needing two children to break even, as we see in real life, two children would give a 40% increase.
If that doesn’t work, men can’t form a second bond without their first bond-holder’s consent. So you can have a high degree of polygyny without lots of bonding, right? Except nobody has thought of that.
If that also doesn’t work, artificial insemination.
And if that also doesn’t work, research other methods of conception. Find a way to terminate bonds without hurting everyone to ensure that men always have bondmates that can bear children. Try something else. Try something!
But nobody tries anything. Nobody cares.
Similarly, Muggleborns tend to die because they don’t have a witch’s breastmilk. But there’s no attempt to locate them and find them wetnurses, which would add to the magical population.
Everything above was major, story-changing stuff, things that would require the plot to be scrapped or at least major portions of the story to be rewritten. There are also plenty of minor things that could be fixed with smaller modifications:
- Eleven-year-olds engage in sexual banter.
- Harry is an Aether, which is rare and unusual and indicates upheaval. Is it worth keeping him around and in possession of his faculties? Why isn’t he tracked more closely?
- There are not just traditions but important social structures around polygyny. The current situation has been around for nine generations. Is that really long enough to create these social structures?
- Kingsley Shacklebolt is a member of the DMLE. Safety aside, does he have enough magic power to do his job?
- Students take 14 hours per week of Muggle Studies. It’s unclear how many years she teaches, but if it’s even two full years, she’s working very long hours. (Recall that there are at least two classes.)
- Lucius Malfoy went to Azkaban. Does it have any impact on fertility? The bonds? If so, it probably wouldn’t be allowed, but it doesn’t seem likely that Dementors would leave you in a good condition for begetting more children.
- Magical people are “genetically incompatible” with Muggles starting when they turn forty. THAT’S NOT HOW GENETICS WORKS.
What can we learn from this?
Overall, it seems like Darth Marrs had an idea of what style of world he wanted and tried to patch it to make it make sense. But he stopped after one set of patches, ending up with something that only bears up under five minutes of scrutiny, if that. This might be better than average, but it’s still lazy or inept, and I can’t tolerate it.
If you want bulletproof worldbuilding, you need to be adversarial about it. You need to be able to ask in one moment “how do I make this world into one that I want?” and in the next “how might people living in this world break it?” You have to turn the pillars of your universe into problems to be solved and then try to solve them.
Or if that’s too much, you can simply say: there are people working on these problems, but they’ve encountered difficulties and have no working results yet.
Darth Marrs didn’t, and the story suffers for it.
This post is about GURPS. It’s a tabletop roleplaying game, vaguely similar to D&D.
Enchanting in GURPS is a moderately debated topic.
The cost of entry for enchanting is Magery 2 and ten spells from different colleges. Then you need the Enchant spell at effective skill 15, plus skill 15 for whatever other spells you want to enchant on an item. That’s only 35 character points, and it’s normal to start with 100-150. So far, so good.
Enchanting costs energy points. There are two ways to enchant: quick and dirty, or slow and sure. With quick and dirty enchantment, you spend your own energy in the form of fatigue points to create an item quickly. With slow and sure enchantment, you use ambient magic instead.
Assuming your energy reserves are large enough and you buy level 20 on the Recover Energy spell, you can enchant 528 points of magic items per day using the Quick and Dirty method. This requires you to have at least 48 points of FP / Energy Reserve available.
You can enchant magic items to produce any effect you could create with a spell. There are a bare handful of spells you can enchant for 50 energy. Useful spells tend to start around 400 energy. To buy an Energy Reserve for enchanting, you must spend at least 1.5 character points per point of Energy Reserve — so if you want to enchant a vaguely useful spell with the Quick and Dirty method, you need to spend six hundred character points.
But wait! There’s Slow and Sure enchantment!
Slow and Sure enchanting doesn’t require any huge energy reserve. Instead, it requires time. Specifically, it requires one day per energy point of the item. Divide that by the number of people involved in the enchantment — oh, but reduce the effective skills for enchanting by one for every person you add. And you can’t interrupt the process without the enchantment regressing.
For instance, I’ve got a ton of downtime between campaign arcs. I decide to take my enchanter and make some sweet magic item. A Staff of Lightning, specifically. I must already know Lightning at skill level 15 or more to make this item. And at the end, I have a Staff. It cost me 800 days and $1200 to build.
How good is this?
When you know a spell at skill 15, you can cast it with one less energy point, but you need to say a few quiet words or make a small gesture to cast. If you are gagged and your fingers are bound, you can’t cast a spell at skill 15 — but you can use a magic item. So building the Staff of Lightning was a bit of a tradeoff, yes?
Not really. Your captors aren’t going to leave you a staff but bind your fingers and mouth. If you enchanted a Ring of Lightning, that would be more reasonable, though in a setting with magic items, you’ll probably be searched for jewelry. (Time to make a Necklace of Lightning instead and tie it around your thigh.) Spells, on the other hand, can’t be removed from you.
So that’s two disadvantages to the item — extra FP to cast, -5%; can be stolen, -30% — and one advantage — no signature, +20%. So it’s objectively worse than just casting the spell, according to the game’s builtin cost metrics.
I could alternatively have done self-study the whole time. During the enchantment process, I gained eight character points to be divided between Lightning and Enchant — probably evenly. Evening self-study earns me as many points again, but on any skills I want.
If I had gone for self-study alone, I could have gotten Lightning to skill 20. This would reduce my casting signature, just like building the magic item. 125% of the time to get +35% the advantage.
The Invisible Hand?
The only use for enchanting items is when you purchase them, not when you produce them, right?
You can trade the thirty points you spent on Very Wealthy and the twenty on Independent Income, and you save up for the better part of a year to buy that Staff of Lightning right out. But you could have spent those points to buy Magery 1 and Lightning at skill 15, with six other okay spells that you can try.
But points spent on Wealth get a superlinear payout. I could spend 75 points on Multimillionaire 1 and ten on Independent Income. This gets me enough starting cash to buy three magic items like a Ring of Lightning, and I can buy another every month. Good, yes? I do need to spend at least fifteen points on Magery, though — Lightning has an effect based on my level of Magery, and that’s not inherited from item creation.
So, I spent 100 points on a character who can cast three spells and gets an extra spell or two free per month. I could alternately have spent a hundred points on Magery 3 and a fair number of spells that I could use from the start of the campaign.
When should I enchant something for my party?
As far as I can tell, it makes sense to seek a magic item when you have a spell you must be able to cast, but you can’t spend the time it would require to learn that spell and can’t hire someone who knows it. (You have to be a mage to use most magic items, and you need to have access to the related college. So there’s no avoiding Magery.)
So presumably you are not a single-college mage, and the spell has a large number of prerequisites, and you’ve got a giant pile of cash.
But there’s another side to this: you need enough of a market for magic items that people have already produced the item you need. Since it’s pretty much the realm of multimillionaires to purchase magic items, that’s not really happening. As a GM, I strive to produce consistent worlds, so I could only allow a bare handful of magic items, crafted by tinkerers and people thinking more of their legacy than their own power.
Perhaps in advanced age, mages tend to take up either enchanting or teaching, so with a thousand mages in existence you tend to get another couple dozen magic items a year. But this still makes magic items rare and especially valuable.
In short, magic items are not a commodity, and you wouldn’t usually want to use one, so I’m not sure why they’re even in the game.
Making magic items better
The “can be stolen” limitation isn’t going away. We can reduce it by enchanting bracers, chokers, and rings instead of staves.
The extra FP cost is troublesome. Most of the interesting spells cost at least two FP. At skill 15, that’s a 50% reduction — you can cast the spell twice as often on your own. But we can address that by embedding powerstones.
An embedded powerstone gives you two extra points of use per day. (Double in a high mana environment.) So if you enchant up a ten-point powerstone — which requires knowing the Powerstone spell at level 15 — you can store twenty FP worth of item use. You need at least 20 FP to start with in order to cast Powerstone, though.
While this doesn’t fix the idea behind enchanting, you can add an Ally group of enchanters (6-10 individuals, appears fairly often, Duty to assist them with their enchanting, etc). Unfortunately, to take advantage of a group of enchanters, the leader of the enchantment needs to know the spell at skill 15 + the number of assistants. Everyone else needs the spell at skill 15 to contribute any appreciable amount of energy. So that won’t get you any magic items for spells you can’t cast, though it might get you a magic item in a few hours that gives you an effective +5 to skill on one spell (in exchange for costing more fatigue).
I need more power!
In a higher-tech environment, TL5 and above, you can use electricity to power spells with the Draw Power spell (Magic 180). You get ten energy points per kilowatt-hour of electricity. This makes quick and dirty enchanting much easier.
You do need at least 60 FP to maintain this spell for the full hour it takes to cast the most basic enchantment — or get a friend who knows Draw Power and Lend Energy, and they can restore energy to you while you enchant. (You could even enchant this into an item…)
Now you get ten energy points per hour of casting per kilowatt of generation. Get six portable generators off Amazon and you can draw all the power you need that way, for up to twelve hours of enchanting — more, if your friend refuels them for you.
If you’re looking at a magitech world, you can produce a windmill and power it by enchanting Wind (Magic 195). A moderately sized windmill could easily produce enough power for one person to enchant all day long with the Quick and Dirty method.
If you use this technique, you still need to add Power 2 to your magic items to make them useful to you. That will cost you ten hours.
With this technique, the Vigil spell (Magic 138), and a rotating team of people (or magic item) casting Lend Energy, you can produce a magic item worth over 3,000 energy points.
The fixed costs are the generator (which I’d put at $50,000 to $200,000, 5% maintenance per year), the Wind enchantment ($20,000 using default calculations, 5% maintenance per year), and the enchanting lab (wild guess $5,000 to $10,000; 20% maintenance per year). The labor costs are two Comfortable salaries for one hour per hundred points of enchantment, plus a surcharge over 12 hours. (A comfortable salary works out to $14/hour at TL5, $19/hour at TL6, etc.)
With this, a normal magic item at TL6 will cost $50 + $28 for every 100 energy points, with a margin for profit. (The rate increases around 1200 energy points.) A Staff of Lightning will probably retail for $350. Adding Power 2 to it will double the price.
That’s less than a broadsword. On the other hand, you can use this technique to produce broadswords with Shape Metal, which will reduce the cost of a sword. And there are all sorts of things you can do with magic: create food with it; create water, turn it into hydrogen fuel cells, and turn that hydrogen into Essential Fuel to power your spells; rings of Illusion Disguise and Warmth in lieu of clothing…
Can we save low-tech magic?
If you have a TL4-ish campaign, how do you make magic items worthwhile?
Add Power 1 by default
Right now, there are advantages to a few magic items even without Power 1. An Earring of Freedom or Ring of Blink helps when you’re trapped. But these tend to be marginal. You’re in a situation where you can’t use your innate magic freely enough, so you turn to a magic item instead.
But for most items, you’ll use them when you’re already free to use spells. If you enchanted the item, it’s worse than casting the spell. At least with Power 1, you get even with casting directly.
Base item power on Enchant
Right now, you need to know the spell at skill 15 in order to enchant it, and the power of the item is based on how well you know the equivalent spell. If we relaxed that and made it so that a high Enchant skill increases the quality of the item above your skill level with the spell, you have an incentive to enchant things.
For instance, I learned Lightning at skill 12, and I have Enchant at skill 25. I produce a Staff of Lightning that acts as if I’m casting with skill 19, perhaps (halfway between, round down).
Improve Slow and Sure speed
If Slow and Sure enchanting provides one energy point per hour rather than per day, you can afford magic items without being a multimillionaire. You can craft them in your downtime — your Staff of Lightning will only take you three months and change, being equivalent of two character points in self-study. But that’s still worse than just casting the spell, in most ways, and you spent probably 15 points on Enchant and five points on miscellaneous spells you wouldn’t otherwise get.
Split the party
If your party gets split often and there are a few essential mage spells, enchanting can ensure that nobody’s without those essential spells.
You might need to relax the ubiquitous “Only usable by mages” requirements, or give everyone Magery 0.
Cut energy costs
If you divide energy costs for magic items by a reasonable fraction, like 5x, you improve Quick and Dirty enchanting tremendously and make Slow and Sure enchanting feasible.
Add more energy sources
Paut is an expensive alchemical concoction that you can consume to get energy to spend on casting. There are alternate rules allowing rare materials to defray the energy costs of item creation.
You could rule that some fraction of the energy cost of an item can be paid with items, and you can price those items appropriately for your campaign. For instance, 80% of the item cost can come from mandrake and wolfsbane extracts and gold-inlaid obsidian, at a minimum of $1/point. That Staff of Lightning with Power 2 costs $1440 plus 360 days’ labor instead of 1800 days’ labor. You dropped the cost by 75% or more. That’s still only available for Wealthy people for now, but by TL6 they’ll be commonplace, even without turning electricity into enchantments.
Who needs humans?
Instead of enchanting one item, I enchant a golem to enchant items.
I might only be able to get one type of item from a golem. And they might only be able to do slow and sure enchanting. But imagine a giant warehouse with nothing but golems in it, each churning out magic items.
It might take a year to produce a decent golem, but they tend to last, don’t need rest, and don’t ask for wages. After ten years, I could have ten golems, each producing one item per year, for a total of 45 items produced. If you’re sticking with hand-crafting everything, you’ll only have ten items to show for it.
GURPS enchanting doesn’t afford feasible magic items until you mix in technology, but there are plenty of things you can do to make a plausible industry from it.
The United States has a strong male/female wage gap. Women make roughly 82% of what men make (among full time non-seasonal employees). An ideal wage gap would be one small enough not to be statistically significant.
When you control for factors like education, experience, and field, the wage gap drops significantly. Huzzah, job done, no more inequality! Yes?
Discrimination in hiring practices between different fields with different pay grades will produce wage inequality. In fact, there’s evidence that women joining a field in numbers reduces wages in that field.
Discrimination in education will reduce women’s ability to get jobs in fields that require education.
Discrimination in marketing jobs or the hiring process will reduce the likelihood that women will choose jobs in a field. For instance, if it’s common to meet over drinks when interviewing for a software development job, that’s effectively discrimination. The CDC is recommending that all women who are not on birth control eschew alcohol, for instance. Women are generally instructed to avoid alcohol in order to avoid rape. So try to avoid introducing alcohol in your hiring process.
Discrimination in parental leave and expectations of child rearing will result in women having fewer years of experience at a given age. This is even more significant because women are more likely to be in fields with low wages, so it makes more sense for women rather than men in heterosexual marriages to give up their jobs.
Discrimination in who is expected to be a primary caregiver outside of parental leave has another impact. Primary caregivers must be available to tend to sick children. They must have schedules that match their kids’ school schedules. They must have flexible schedules for when their children have a half day at school. This restricts the type of job that caregivers can hold and what companies they can work for. This sort of restriction competes with optimizing for wages, which, in a capitalist society, is the duty of every worker. This is bad enough in a heterosexual marriage, where it would be in theory possible to share work evenly between men and women. But over a quarter of children live with only one parent, and more than three fourths of single parents are women.
These are all real and important forms of inequality that people remove from their calculations when trying to derive a “real” wage gap from the raw numbers.
It’s sensible, for certain reasons, to control for these factors. If you’re only looking for a certain type of unfair compensation practice that’s common across many fields, this can be useful. If you’re deciding whether to stand on the deck of an aircraft carrier and declare “Mission Accomplished”, you should look at the raw numbers. And if you want to know where inequality is cropping up, you need to slice and dice the numbers six ways from Sunday instead of trying to control for a handful of traits. What’s clear is that we still have work to do.
I bought a season of a television show on Google Play and am watching it on PC, via the web interface. And it’s not great.
I want to watch the series in order, naturally. So of course the UI supports that; I can start watching episode 1, and when it finishes —
Oh, it doesn’t actually advance me to episode 2 at that point. It sticks a loading animation on top of the final frame and does nothing. I have to close the playback screen and manually select the next episode.
Well, that’s okay; at least it tells me which episodes I’ve watched, right? Well, turns out that’s a mobile-only feature. The web interface doesn’t show that information.
If I start watching an episode, though, I can at least see the title of it in order to find the next episode in the list, right? Well, actually, turns out that doesn’t work. I just finished watching episode 10, and it’s got the info for episode 7 up. (At least, I think it was episode 10. It might have been 9. Don’t know until I try it!)
Okay, that’s bad, but at least it’s easy to navigate to the shows I’ve purchased, right? It actually isn’t that hard — I’d prefer it if it showed those to you by default and let you go to a store page with an extra click, rather than showing you the store and then giving the option to look at just what you can watch right away. But in my case, I’ve purchased season 1 of the show, and when I go to “My movies & TV” and click on the show, it takes me to season 2, which I don’t even own.
I can watch stuff successfully, and that’s even on Linux, so bonus points for that. And I can watch on my Android tablet — without even installing a third-party app store. The Android version even has a little progress indicator to tell you how much of an episode you’ve watched, which is pretty handy the first time you watch something. (Can you reset those progress indicators? I doubt it. So it’s only good for the first binge.)
What do I want?
- Let me get to my library fast. Two clicks is the absolute maximum.
- When I go to a television show, if I came there from my library, show me the last season I’ve watched part of.
- Include next/previous links for seasons. There’s currently a dropdown, which, if I’m in season 4 of Stargate, isn’t so handy.
- Always, always show me where I am. Highlight the episode I’m watching in the episode list, and show the summary of the episode when I’m done watching it (instead of showing another episode’s summary).
- Always show which episode I’ve most recently watched, if I’m not watching something already.
- Maybe list when you’ve last watched each episode.
It’s not that hard. You use the product for two hours and these problems become obvious.
Now, I’m not faulting Google engineers here. Even people of Google quality could implement these changes within a few months. It’s product management that’s at fault, an emphasis on whitespace and a lack of UI elements over functionality. I hope they get over it eventually.
What else is there to the UI? Your main page on Movies & TV has a list of movies followed by a list of television episodes. The episodes are categorized by series, which is good. They’re ordered by purchase date, I believe. If you buy a whole season at once, though, they’re ordered from last episode to first. That…is stupid.
When you’re looking at a single season, you see each episode as a card, and the cards are shown in a grid four wide. A list would be easier to use — you’ve just got one dimension to worry about, and that gives you more width for titles, which are usually cut off. (The cards give you about 15 characters, so I can see titles such as “Auld Acquaint” and “Hurricane Fluff”.) If you used a list, you could also accordion out each episode.
There’s a little red checkmark on episode cards for episodes you own. On the mobile app, there’s also a red checkmark — but this indicates whether you’ve downloaded the item, not whether you own it. It’s not self-explanatory either way.
I think the key takeaway is that people who design these things must be forced to use them if you want anything vaguely usable. But maybe they did use it and still came up with this. Not sure. And maybe I should become a UI usability expert.