jack: (Default)
General thoughts on large changes:
* Having three ages with only some things carried over between them actually works really well. If you do well on the victory tracks on one age it helps in the next age, but it's not impossible to catch up. And it's meaningful to pivot from science one age to conquering in another age to economics in another.
* Adding hexes to cities is simpler and meaningful, but confusing to people used to earlier Civ games. Each tile has a natural yield. When you grow the city (when you get a new pop) into that tile, it gets the appropriate improvement. Hexes adjacent to city tiles (within 3 of the centre) don't produce any yield but count as controlled by the city. (That's where you can expand into) Placing buildings also grows the city. Building count as urban hexes, they all need to be contiguous with the centre.
* Gaining influence spent for diplomatic actions works really well. It makes investing in diplomacy meaningful, for warlike civs as well as friendly ones. It makes a difference which civs you butter up, but you can't infinitely butter up a civ that doesn't like you. And influence is used during war to influence war exhaustion, so a more/less popular war makes a real difference.
* There is a soft cap on the number of settlements which I like. It's less runaway victory/failure than how many settlers you can build. But it's less dramatic when building a settler isn't A Big Deal.
* Independent powers make a bit more sense. There are villages which can be hostile (like barbarians) or can be befriended (when they become city states). Late in the age you get auto-hostile ones who act like barbarians. It feels more organic.
* I like mixing and matching leaders and civs, and mixing and matching different civs appropriate to the region between ages.
* They got rid of rock-paper-scissors units. But overall the balance of military seems fairly good. I really enjoy it when I have good unique milirary units, like horse archers (just always OP), or elephants with machine gun mounts (Siam FTW) 🙂
* Some of the victory tracks are really fun. In modern age, economic requires connecting a rail network and processing factory resources. In exploration age, military/expansion track rewards settlements in foreign lands, extra if conquered, extra if your religion, so it can reward a variety of play. But some feel more unfinished, just "do X amount of Y".

Read more... )
jack: (Default)
Ultimate edition of Innovation (photo on FB), with tweaked rules and all the expansions. I didn't know there were *any* expansions.

I assumed the expansions would be more variety of base cards, but no, instead they're *all* add ons which add a new sort of card to each age. The cards from each expansion are drawn in a different way, and act differently, but can be melded into the player board somehow like base cards.

So far the extras only come up every so often, but matter when they come up.

I can't believe the new edition added a new age, age 11, prudence, after age 10, the information age. But it *does* seem to fit. More powerful than age 10, but less wildly accelerating. I guess they can add a new age every 15-20 years when real world society has moved on far enough...

This game was with cities. I *again* relied on mathematics to skip through ages, but this time managed to score just enough to get the achievements first rather than second as I went. The game ended when I got computers, internet, and a couple more cards that meld and execute a card from age 10, catapulting my board into three age 10 cards, one age 9, and one age 1.
jack: (Default)
Smoke LARP festival in London for two days.

Game 1 about dysfunctional committee running a large LARP event. This was hilarious and cathartic for a lot of people. Everyone had a character, the auteur overcommitted to the vision, the overly emotional over verbose writer, etc, etc who are over the top. And it's so easy to run with -- whenever someone asks "We can tear the fittings down for extra costumes?" you can say "Yes, obviously!"

Game 2 about Superheros matching Nemeses speed-dating style on a reality TV show style. The characters were all hilarious.

Game 3 about the Greek Gods running a gameshow, spiralling slowly out of control. 13/10 for Binney as the overworked madcap Hades. My favourite moment was seeing Hades getting increasingly many semi-anonymous requests handed over from the GM, and as Poseidon writing out a note in the same style and handing it over. And not discovering until the end that Hades had just taken it on board and "More death! Put Hecate in charge! Don't trust Odin! MORE SQUID!!!" had blended in perfectly with all the other notes and he'd gone on to do all those things. And second favourite when hades was waving the post-it representing the necronomicon for an unspecified plan, taking it and helpfully tearing it up before handing it back.

Game 4 Canterbury Tales. Set just before the End of the Wars of the Roses when the tales had just been printed. I had to leave early, with my fate hanging on the outcome, when we'd just heard a rumour that Henry had been slain and Richard captured by Henry's forces. It turned out later that Henry's widow and a putative Edward V Prince in the Tower had both proclaimed themselves, potentially leading to turmoil. But I'm pleased they both had a good chance, and that probably removed the problems hanging over my character from the previous politics 🙂
jack: (Default)
TIL more about VeggieTales. I had heard they avoided depicting Jesus as a vegetable. But apparently they specifically (a) will not show Jesus as a vegetable and (b) do not show the vegetables as having a redemptive relationship with Christ.

The show shows some vegetables living on a kitchen counter. Those characters then morph into a Christian-friendly story, either an old testament bible story, or a contemporary "someone learns an important lesson about goodness" story. So you have Larry the vegetable transplanted into a Biblical Joseph role. In the story, God exists. But the plain vegetables aren't Christian. Because the creators think that Jesus died for *humanity* and any other intelligent species was not fallen (like Angels) or not been saved (like Demons) or had its own relationship with God (like Narnia).

And even in the story, none of the characters are ever Jesus, because that would seem disrespectful. What does happen in the later series is that the characters portray nativity plays, where a unnamed non-Christian baby vegetable acts as a non-Jesus baby human character, who is pretending to be baby Jesus. Also in the early series there's a couple of nativity stories with a crib, but you only see golden light from the crib. Or sometimes a swaddled form, but not whether it contains a doll, vegetable, human and/or god :)

https://justinkuiper.substack.com/p/highlights-from-the-comments-on-the
jack: (Default)
Image

Play online: https://cartesiandaemon.github.io/rusttilegame/programming_release.html

Drag instructions onto the flowchart and press space or click the map to start executing. On later levels click the map while executing to increase the speed.

Since my last post I added some more programmer-y levels up to level 15, cleaned up some of the earlier levels, and improved a bunch of UI things like saving which levels you've unlocked. Most easily played on web, on either desktop or mobile, but you can clone the source and build for windows or linux too. (https://github.com/CartesianDaemon/rusttilegame I should compile a windows binary to download too if that would be useful for anyone.)

If you do play, it would be really helpful to hear how far you got. And if you have time, which levels were easy, which were hard, what was nice or difficult about the UI, etc.
jack: (Default)
I made ten levels for the programming puzzle game I wrote in rust!

Play online at the link: https://cartesiandaemon.github.io/rusttilegame/programming_release.html

It's clunky in several places but you can successfully play! Drag the instructions onto the flowchart. Press space to start the crab robot moving. Get them to the exit.

Leave the tab open, there's not yet any save :)

It's currently best played in a browser on a PC. (It works on mobile except that you need a spacebar. You can also build an exe for windows or Linux if you want, repo https://github.com/CartesianDaemon/rusttilegame)

Image
jack: (Default)
rust tile game

I split my rust tile game into two. That was a slog but very satisfying. The base engine stores a map with objects, each game specialises the objects and the interaction logic. Originally "push blocks, avoid enemies" and I want to add "follow user's flow-chart like program" instead.

That's compile-time templating not run-time polymorphism. Rust made me realise that for many many purposes those are conceptually incredibly similar. I think the difference is, almost all the types in the engine need to be templated on game-specific data because an Engine containing a Map containing an Obj they likely all need to be compiled knowing how many bytes Obj's Property struct uses.

git shortcuts

I also updated my git shortcuts with something I wanted to add for ages:

`git extract commithash path1 path2`

Rebases a commit on the current branch, to split the changes in those paths out into a separate commit. I often find myself accidentally combining a comment change in a different place, or wanting to separate out a piece of functionality which is all in one module, and it seems to take half a dozen steps to do it manually.

I made a bunch of shortcuts for me, common ones:

g a: git add, but add everything if no paths are given
g c: git commit
g d: diff, sometimes with some extra info
g dh: diff to HEAD
g l: log of current branch from fork point
g ls: log, showing file names with --stat
g lp: log, showing diff with -p
g r: rebase onto given branch, *or* else rebase interactive from current fork point.
g t: Add a tag with current branch name and date and comment
jack: (Default)
To catch the last possible September afternoon, next weekend we'll be in the garden of the Green Dragon down by the river from about 1pm-5pm.

The pub opens from 12pm including Lebanese street food so some people may arrive earlier.

Everyone is welcome, including partners and children if you think they'd enjoy it. If you're not in Cambridge, you're very welcome but I don't expect you, we'll make time any time you are here! :)
jack: (Default)
> Social

Ely peacock's tearoom. Buying physical books! K birthday and 20,000 leagues under the sea.

Poly Meet. Main munch, DS munch.

Dinner with Rachel's family.

Capybaras and As You Like It with Tim, Pearl, and Tim's parents.

Run DnD (Lovely people. Second and fourth wednesdays, now changing to second and penultimate wednesdays).

Colin and Kirsten wedding blessing in Synagogue, and Ceilidh.

Mathsjam

Coton Manor Garden with Mum and Rachel to see FLAMINGOS!

Kerry and Simone BBQ.

Hosted grantchester meadows picnic. About 12 lovely people. A little swimming. Next time, clear directions to location, somewhere with shade, somewhere with less deep mud on river bottom.

Jamaican vege dinner at metamours'. So Clover, Mao.

> Creative Hobbies

Updates to open source running app Fitocracy. For my use an in PR. Add pace as well as speed. Add average speed current interval.

DnD planning. Experimenting with a scenario across a few sessions for less prep.

Musing on Space Opera RPG. Musing on Vampires Ball and coffee shop LARPs.

Made butterscotch brownies.

> Exercise

Managed several consecutive runs without much breathing difficulties. Feel like I'm getting a proper workout in my legs and body again.

2x jog to parkrun and back (not early enough to actually do parkrun). 1-2x lido.

> Countryside

Walking with Claudia

Pootled in river by Hauxton nature reserve

> Misc

Sharpen knife.

Dealt with roof patching people.

Watching fantastic four first steps. Reading many web serials, physical books. Playing Slay the Spire and Starvaders.
Solving LOK puzzle book with Rachel.

Struggle with WFH. Maybe need a break before trying again.
jack: (Default)
It works! I added a toggle to the running app I use Fitocracy to display paces instead of speeds.

The first time I've done anything on a regular android app, and the first time I've really edited an open source project.

Fitocracy was the only app that could show me current speed, average speed, and average speed for less than the whole run without unrealistic hoops. But i was annoyed the speeds were in speeds, not paces.

Hopefully that is just what I need myself. I will try to get it into the original project too as it seems like a worthwhile improvement.
jack: (Default)
Come join me for a picnic to celebrate late summer bank holiday (Monday Aug 25th), by the river at Grantchester. About 1pm until we get bored.

Bring general picnic things, anything you're likely to want. I will bring some general things to get us started.

If the weather is hot some people may also swim.

ETA: In fact, we'll aim for the start of Grantchester Meadows, down from the end of Newnham: https://www.openstreetmap.org/?mlat=52.190558&mlon=0.104398#map=17/52.191079/0.103732
jack: (Default)
Swam 2mi downstream from Grantchester to the rollers. That's half a mile further than I did to the canoe club at the Slow Swim.

I was out of practice, muscles were v tired but it was v nice to do. I could have gone farther with another little sit down.

I'd been interested to see if I could do that last stretch into town. It's not really good swimming, more punts and more concrete edges, but it was easy to do. I hadn't realised it was only half a mile.

I have previously swum down from Hauxton Mill to Byron's Pool, and Byron's pool to Grantchester. I guess that adds up to 4.5mi of Granta and Cam, compared to ~20mi length of the Cam (excluding the Great Ouse below the Little Ouse and the Granta above Hauxton Mill)
jack: (Default)
Hm. I'm still not sure about writing `2.` but if you have to use floats then I think I came around to preferring to write `2.0` over writing `2`.
jack: (Default)
Hook

Weather-beaten fighter Ludari is still seeking his home city, the legendary first city Uru, which was mysteriously lost to the timeline, accompanied by the happy-go-lucky carnival rogue Slide and grizzled leather-studded anarchist bard Scunt. Their friend and intermittent adventuring companion prehistoric dinosaur ranger Lucy Dikenesh told Ludari that her BiL heard some sort of rumour of an even older city reminiscent of Uru, and Ludari insists this is a good time to visit Lucy's family, even though Lucy begs off.
 
But when they arrive in the jungle near Lucy's family's village, they immediately meet Lucy's sister, one of the young elders of the tribe, who implores their help. Her sweetheart and babydaddy (but not coparent) Maku has disappeared on a recent hunt, can they find him?

Challenges

The jungle has many dangers from poisonous plants, roving dinosaurs, and capricious spirits. The village have a traditional song, recorded in knotted-cord writing often carried like rosaries, recounting the main survival prohibitions. Lucy tries to drill the song into Ludari and Slide, but Scunt takes the "remember the warnings" challenge and runs with it, coining the punk power ballard version "♫ DO NOT EAT THE BERRIES ♫" which becomes a complete hit amongst the party and later the village.

The party lament the absence of their ranger friend who has the only survival skill above 2 and knows the village members well, but they lean on their social skills, common sense, and physically restraining Scunt from provoking village members, spirits and dinosaurs from attacking her to successfully navigate deeper into village territory, avoiding threats more serious than a pile of sleeping rainbow feathered foot-tall cute therapods (their similarly-sized cousins amplify the cuteness with a mesmerising gaze, as do their larger cousins).

The Plot Complications

The party unravel the story of Maku Guphin. He led an important hunt to try to alleviate the last few years' lean hunting, which was ruined by a young overearger hunter called Twinnech. Maku and Twinnech were hunt-lovers and Maku offered himself for judgement to the village's protector spirit the Spindlebeast, to save Twinnech from doing the same.

The party explore options, considering alternative sacrifices, and have a horrific realisation. The Spindlebeast likes sacrifices with meat but also magical reagents. They're familiar with the rainbow mesmerising dinosaurs. They have a familiar for scouting, they have detect magic, they have a variety of skills which complement the local hunters and could make a significant addition to the village's hunt, with more than enough to offer as sacrifice.

But neither the GM nor the players had expected the session to bring in "the party need to kill the cute animals", so that's a new experience for us all! I would never have made them do that on purpose, but when the players found the proposal it seemed inevitable, and we all agreed, the dinosaurs are hunted anyway, it's silly to pretend they're not, and better to save the human.

The Finale

The players rush through a frantic day of hunting, expedited by rapid-resolving a lot of attempts with one or two summary rolls without playing out the "So we have a big sack, the prey are over there, is this going to work...?" They sneak back to the shrine just before dusk when the hunters have left and supplicate the Spindlebeast for Maku's return.

Ludari leads the braveness charge in putting himself forward for judgement for the proposal. The Spindlebeast expresses its frustration at the lean hunting and Maku's stubbornness, but accepts their offering. There is much partying and singing back in the village, and new songs and clues to bring to future sessions.
jack: (Default)
Question on Reddit, "Can you take your hairdresser/barber license to another country?"

Answer, "No, other countries than the US don't require hairdressers/barbers to be licensed."

UK does often require the shop to get a licence from the local council, so it can be inspected for health safety. There's probably other details I don't know.

But it's a reminder to look at what other countries do and see if it's better or worse. Sometimes it's better -- I like British plugs for preventing accidental electrocution. But if you say "we have to do X else Y" and no-one else does X and don't have any more difficulty with Y then maybe you can just not bother and it will be ok.

Sometimes I'm seized with doubt. Can people just do this without needing any permission? But often, yes, there's been no need to regulate it so you just can unless it's banned.
jack: (Default)
Stupid tech questions.

At work the source tree has a bunch of different components. A couple are "big" like the FPGA image, and the whole device image which includes that, plus a linux distro which includes some of the other components as well. The other components are mostly "small", small individual C/C++ programs or python packages.

The small components are mostly managed by conan package manager. This is ever so useful for assuring that each explicitly lists its dependencies and doesn't just depend on lots of header and source files from elsewhere in the source tree. But we are not using most of the functionality of a package manager -- everything in the source tree is assumed to be compatible, nothing depends on an earlier version of anything else or anything.

In effect the package management (a) is an easy way to install the latest thing on a different computer, as is done during the automated tests which interface with real hardware and (b) a convenient way of caching results between different builds. This doesn't matter that much for most of the components which use the package manager, but does matter for the FPGA image which takes 40 minutes to build, and is usually downloaded from jenkins rather than built fresh.

What I don't like is that there's no way to say "build everything necessary". You need to know all the individual components to build, or the sequence of jenkins jobs to trigger. And as there have been more added, I think it's got less convenient to build all the ones which could have been affected by a change, and to make sure you haven't missed any.

The other concern is that at the moment, "packages" built locally or from main are usually identified by a "release" number, but that is not always different. Whereas other builds identify packages by a git hash, which we would like to use in more places, but doesn't make it clear which is "the latest".

This is not all how we want it to be! It was put together for valid reasons but not planned in advance.

What I want is... a way of building all the different components that need to be built. With some (but not necessarily conmplete) ability to figure out prerequisites, or "which things have changed". Which is effectively... a build system. It feels like it should be obvious what build system to use, but I'm not finding it obvious yet!

Like, that could be make. But one requirement is that it's easy to say "the linux/windows version of this python package depends on the linux/windows version of this C++ package" and "the fragle configuration of the device image depends on the blah configuration of the fpga" and Make doesn't easily support that sort of parameterised target. I think?

I could write a simple script to "build everything". I quite like that. But... surely writing a NEW build system isn't correct?

We could use one of the systems we have, like conan. But conan seems optimised to be a package manager installing prerequisites, not "rebuilding these directories". Bitbake seems very well designed for this but is designed for building embedded linux systems and is probably more heavyweight than we want. And atm each component is built from some command line, we don't really want conan build system invoking other conan build systems.

It might be simpler if we moved away from the packaging and used an old school "The outputs are HERE in the source tree. You use the ones in the source tree and build them if necessary." But I'm not sure.

There's a bunch of ways which would be fine but maybe not great. It feels like there must be some standard answer but I'm not sure what it is. Thoughts?
jack: (Default)
I've been learning rust by writing a simple tile-based puzzle game. To my immense pleasure, the simple game engine I was using, Macroquad, made it mostly easy to put the existing game on a website (as well as on linux, windows, and android, not all tried out.) So far there's no actual puzzles, but I really like the fish I drew (the crab is not mine).

Play online at:

https://cartesiandaemon.github.io/rusttilegame/tilegame.html

It runs on mobile browser, but it's a lot easier to control on a desktop browser. If you have a keyboard, control the crab with the arrow keys and try to get to the exit. You can also click/press the top part of the screen to move up, etc.

Rust (an an extra decade or so of experience) has been great for "if it compiles, it probably works"!

PS. See source on github: https://github.com/CartesianDaemon/rusttilegame
jack: (Default)
Acts 10-11

God: *shows Peter a vision of tasty animals*
Peter:
God: Eat!
Peter:
God: EAT!
Peter: God, what can you be trying to tell me?
God: *deep breath*

God: OK, here's *another* miracle.
God: *concentrates* I'm here to tell you... some men just arrived at your front door.
God: (helpfully) They're about to knock!

Apostles: Peter, is it true that you went to eat treif from a centurion's kitchen?
Peter: (quickly) God told me to do it.

Acts 11

Ex-Jerusalemite Jew: I was driven from Jerusalem by Saul's persection.
Ex-Jerusalemite Jew: He tortured Stephen to death.
Ex-Jerusalemite Jew: ...
Ex-Jerusalemite Jew: BUT HAVE YOU HEARD THE GOOD NEWS ABOUT JESUS!!?

Antioch Gentile: Pick me! Pick me!

Barnabus: Hi!
Antioch Christian: Hi!
Barnabus: Oh, you're not Jewish?
Barnabus: Well, I guess that's ok too.
Barnabus: Pretty good in fact.
Barnabus: Sorry I kind of hesitated there. At least I didn't need a divine revelation or something to get the point across, ha ha, right?

Barnabus: Would you like *some* more theological instruction?
Antioch Christian: Oh, yes please.
Barnabus: I know a guy.
Antioch Christians: Please, anyone. Well, as long as it's not Saul or someone.
Barnabus:
Barnabus: Let's go with "Paul".

Acts 12

Herod: *Executes some people*
Herod: *Looks around gauging the applause like a contestant on The Price is Right*
Herod: Lets arrest... Peter!

Peter: Hi.
Prisoner: That's a LOT of chains.
Peter: Yes.
Peter: It's ok. I'm going to pray to get out of here.
Prisoner: Good luck with that.
Peter:

Angel: Psst!
Angel: I'm here to break you out.
Angel: But put some clothes on, man!

Peter: What is going on?
Angel: You really need supernatural beings to spell things out to you in a lot of detail, don't you?

Peter: *narrates his escape*

Peter: Guess who's back!
Mary: It can't be him.
Peter: Don't piss about, Mary. Let me in quick before the soldiers come back.

Peter: Well, I guess it would only take one more thing to make today perfect.
Herod: *is eaten by worms*
jack: (Default)
Watching Star Wars Ashoka series. She's the jedi with three red head tentacles. I didn't know anything about her before. It's pretty decent.

The characters are decent. She parries a space fighter!! The space whales are cool. The villains are decent. The callbacks to Anakin work surprisingly well. The plot involves Thrawn who I know lots of people love.

Worldcon

Aug. 4th, 2024 12:40 pm
jack: (Default)
We are going to Worlcon in person in Glasgow. Travelling up Thursday, and there for most of the day on Monday.

I know of quite a few of you going, but who else is going? Are there any particular panels it would be good for me to consider going to?