se

Upgrade for Member Services System

The Planetary Society is upgrading systems that will offer us many new capabilities and features that will enhance your membership experience.




se

Why Taylor-Serrano deserves top billing over Tyson-Paul carnival

How the inclusion of Katie Taylor v Amanda Serrano on the bill legitimises the carnival of Mike Tyson v Jake Paul in Texas




se

Schmidt Bros. Carbon Carving Set




se

Brabus 1000 All Gray Sedan




se

Barbour Ladies Pendle Beanie & Scarf Gift Set




se

Christmas serving board in progress.

Christmas serving board in progress.




se

Partizan set up

well, we made it safe and sound. James Morris has done a fantastic job on the Lonely mountain.
My figures are on the board and will be joined by many others tomorrow from other collections.

 The 'really useful boxes' certainly earned their name today.



  • lord Of The Rings
  • lord Of The Rings.

se

War of the Roses Basing

The men of Lord Hastings' Retinue struggle through the mud of Tewkesbury.

Vallejo thick mud was the perfect solution for the grim battle conditions of the war. Adding snow to this layer would look fantastic but would rather limit the battles. I think a generic muddy field is a good all rounder for this brutal conflict.



I broke my usual 69x60mm basing after seeing a friend's and decided to copy it. Partly because the cheapness of plastics allows for bigger units. I also have quite a few old Perry miniatures from the old days of Foundry. These old lead figures are great for sprinkling amongst the ranks to add character. The above photo shows the effect of these old sculpts. They have to be mounted on plastic bases etc to bring them up to the height of the newer plastics. The mud is great for covering these and making everyone level.
As the Vallejo mud was drying, I cut up some thin brush bristles and pushed them into the mixture. These make for great arrows and really helps to give the bases a War of the Roses look and feel.
The mud is also great for splashing up the legs and clothes of the soldiers. It's quite subtle but helps to  set them in the scene.


The mud isn't quite dry yet and there are a couple more things to do before they are finished. Layers of 'Rutted field' from Luke's APS should look good over the mud, as well as patches of static grass. Also the arrows will need some white goose fletching on them.


 These new bases are 80x60mm and give a more realistic look to a unit. I got a bit carried away with these bases and they grew to 10 men per base.

The figures In these units are a mix of old Foundry, Perry's plastics and Forlorn Hope metal figures. They all mix together well and make for characterful formations.



  • War of the Roses

se

Scott L. Burson: Comparison: FSet vs. Sycamore

[BULLETIN: Quicklisp now has the latest version of FSet.]

Sycamore, primarily by Neil Dantam, is a functional collections library that is built around the same weight-balanced binary tree data structure (with leaf vectors) that FSet uses.  While the README on that page comments briefly on the differences between Sycamore and FSet, I don't feel that it does FSet justice.  Here is my analysis.

Dantam claims that his library is 30% to 50% faster than FSet on common operations.  While I haven't done comprehensive micro-benchmarking, a couple of quick tests indicates that this claim is plausible.  A look through the internals of the implementation confirms that it is clean and tight, and I must commend him.  There may be some techniques in here that I could usefully borrow.

Most of the performance difference is necessitated by two design choices that were made differently in the two libraries.  One of these Dantam mentions in his comparison: FSet's use of a single, global ordering relation implemented as a CLOS generic function, vs. Sycamore's more standard choice of requiring a comparison function to be supplied when a collection is created.  The other one he doesn't mention: the fact that FSet supports a notion of equivalent-but-unequal values, which are values that are incomparable — there's no way, or at least no obvious way, to say which is less than the other, and yet we want to treat them as unequal.  The simplest example is the integer 1 and the single-float 1.0, which have equal numerical values (and cl:= returns true on them), but which are nonetheless not eql.  (I have a previous blog post that goes into a lot more detail about equality and comparison.)  Since Sycamore expects the user-supplied comparison function to return an integer that is negative, zero, or positive to indicate the ordering of its arguments, there's no encoding for the equivalent-but-unequal case, nor is there any of the code that would be required to handle that case.

Both of these decisions were driven by my goal for the FSet project.  I didn't just want to provide a functional collections library that could be called occasionally when one had a specific need for such a data structure.  My ambition was much grander: to make functional collections into a reasonable default choice for the vast majority of programming situations.  I wanted FSet users (including, of course, myself) to be able to use functional collections freely, with very little extra effort or thought.  While Lisp by itself reaches a little bit in this direction — lists can certainly be used functionally — lists used as functional collections run into severe time complexity problems as those collections get large.  I wanted the FSet collections to be as convenient and well-supported as lists, but without the time complexity issues.

— Or rather, I wanted them to be even more convenient than lists.  Before writing FSet, I had spent years working in a little-known proprietary language called Refine, which happened to be implemented on top of Common Lisp, so it was not unusual to switch between the two languages.  And I had noticed something.  In contrast to CL, with its several different predefined equality predicates and with its functions that take :test arguments to specify which one to use, Refine has a single notiion of equality.  The value space is cleanly divided between immutable types, which are compared by value — along with numbers, these include strings, sets, maps, and seqs — and mutable objects, which are always compared by identity.  And it worked!  I found I did not miss the ability to specify an equality predicate when performing an operation such as "union".  It was just never needed.  Get equality right at the language level, and the problem goes away.

Although FSet's compare generic function isn't just for equality — it also defines an ordering that is used by the binary trees — I thought it would probably turn out to be the case that a single global ordering, implemented as a generic function and therefore extensible, would be fine the vast majority of the time.  I think experience has borne this out.  And just as you can mix types in Lisp lists — say, numbers and symbols — without further thought, so you can have any combination of types in an FSet set, effortlessly.  (A project I'm currently working on actually takes considerable advantage of this capability.)

As for supporting equivalent-but-unequal values, this desideratum flows directly from the principle of least astonishment.  While it might not be too surprising for a set or map implementation to fail distinguish the integer 1 from the float 1.0, it certainly would be very surprising, and almost certainly a source of bugs in a compiler that used it, for it to fail to distinguish two uninterned symbols with the same name.  (I saw a macro expansion recently that contained two distinct symbols that both printed as #:NEW.  It happens.)  A compiler using Sycamore for a map on symbols would have to supply a comparison function that accounted for this; it couldn't just compare the package name and symbol name.  (You'd have to do something like keep a weak hash table mapping symbols to integers, assigned in the order in which the comparison function encountered them.  It's doable, but FSet protects you from this madness.)

Along with those deep semantic design choices, I've spent a lot of time on developing a wide and featureful API for FSet (an effort that's ongoing).  FSet has many features that Sycamore lacks, including:

  • seqs, a binary-tree sequence implementation that holds arbitrary Lisp objects (Sycamore ropes hold only characters, which is certainly an important special case, but why restrict ourselves?)
  • default values for maps and seqs (the value to return when the key is outside the domain is associated with the collection, not supplied at the call site; this turns out to be a significant convenience)
  • generic functions that operate on both lists and FSet collections, to shadow the CL builtins
  • the powerful map-union and map-intersection operations (I'll blog about these in the future)
  • more ways to iterate over the collections (the FSet tutorial has a good summary, about 3/4 of the way down)
  • speaking of the tutorial, FSet has lots more documentation

Let me digress slightly to give an example of how FSet makes programming more elegant and convenient.  Joe Marshall just put up a blog post comparing Go(lang) with Common Lisp, which is worth a read on its own; I'm just going to grab a code snippet from there to show a little bit of what programming with FSet is like.  Here's Joe's code:

 (defun collate (items &key (key #'identity) (test #'eql) (merger (merge-adjoin #'eql)) (default nil))
   (let ((table (make-hash-table :test test)))
     (dolist (item items table)
       (let ((k (funcall key item)))
         (setf (gethash k table) (funcall merger (gethash k table default) item))))))

 (defun merge-adjoin (test)
   (lambda (collection item)
     (adjoin item collection :test test)))

And here's what I would write using FSet:

 (defun collate (items &key (key #'identity))
   (let ((result (map :default (set))))
     (dolist (item items result)
       (includef (@ result (funcall key item)) item))))

(Well, I would probably move result outside the dolist form to make it clearer what the return value is, but let's go with Joe's stylistic choice here.)

For those who haven't used FSet: the form (map :default (set)) creates a map whose default is the empty set, meaning that lookups on that map will return the empty set if the key is not in the map.  This saves the includef form from having to handle that possibility.

My version makes assumptions, it's true, about how you want to collect the items with a given key; it doesn't give you other choices.  It could, but what would be the point?  It's already using a general set with better time complexity than lists, and saving you from having to write anything like merge-adjoin.  The extensible global equivalence relation means you're not going to need to supply a :test either.

I think the FSet-enhanced code is cleaner, more elegant, and therefore clearer than the plain-CL version.  Don't you agree?  Maybe you wouldn't say it's a huge improvement, okay, but it's a small example; in a larger codebase, I would argue, these small improvements add up.

* * * * *

To summarize: if you just want a library you can call in a few places for specific purposes, Sycamore might work better for you (but think hard if you're writing a comparator for symbols).  FSet can certainly be used that way, but it can be much more.  If you want to see one way in which Common Lisp can be made into a better language, without giving up anything that we love about it, I urge you to give FSet a try.

FSet has changed the way I write Lisp programs.  — an FSet user

(UPDATE: the magnitude of the performance difference between FSet and Sycamore surprised me, and inspired me to do some profiling of FSet.  It turned out that I could get a 20% speedup on one micro-benchmark simply by adding some inline declarations.  Mea culpa, mea culpa, mea maxima culpa; I should have done this years ago.   With that change, the generic function overhead appears to be the only significant cause of the remaining ~20% performance difference.  I tried creating a Sycamore set using a thin wrapper around fset:compare, and the resulting performance was very similar to that of FSet with its new inlines.)




se

"Dragons of Paris" and the Role of Time in the Mongolian Wizard Series

 .

The kind people at Reactor Magazine have posted my two latest Mongolian Wizard stories, one yesterday and the other today. Thursday's "Halcyon Afternoon" took place during a rare moment of peace for Franz-Karl Ritter. But in today's "Dragons of Paris," it's warfare as usual. 

Time has always been a little tricky in this series. The first story was clearly set in the Nineteenth Century but, though only a few years have passed, the series has now reached what is recognizably World War I. Mostly this occurred for reasons explained in "The Phantom in the Maze" and "Murder in the Spook House." (And which I anticipate giving me increasing difficulties in writing the next ten stories.) But also, in a more literary background sense, I wanted to cover the transition from a way of life now alien to us to something more modern, if not contemporary. 

So time may get a bit more slippery in the future. That's if, of course, the stories go in the direction I intend. Sometimes the fiction has its own ideas where it wants to go and the author can only follow along meekly in its wake.

You can read the story here. Or just go to the ezine and poke around. It's a good place to poke around.


Above: The illustration is by Dave Palumbo. I'm grateful for that.


*




se

My Halloween Season Story, "Unquiet Graves," in CLARKESWORLD

 .


 

I am always happiest when a story of mine comes into print. Today, I have the joy of introducing you to "Unquiet Graves," a seasonal tale of graveyard misbehavior and betrayal. Oh, and there's nothing supernatural about it at all.

You can read the story here. But if you're like me, you'll just go to Clarkesworld, look over the table of contents, and decide which story you want to read first. Mine by preference, but follow your whim.

 

And for those who like trivia . . .

I came up with the handheld's app many long years ago and it took forever to come up with a story for it. You'll notice that it is left unnamed in the story. That's because its secret name was "The Graveyard Reader." Which is the title of a well-known story by Theodore Sturgeon.  While I was writing the story, I thought of it as "The New Graveyard Reader." But Sturgeon's story and mine go off in totally different directions, and giving mine (or even the app) a title suggesting there was some implicit connection between the two would only cause confusion.

The title I finally came up with was derived from "The Unquiet Grave" by that most prolific of all poets, Anonymous. If you look it up, I suggest you do so after reading my story. It gives away some of the plot.


*

 





se

Why Virat Kohli, Jasprit Bumrah were missing from Perth nets; India ramp up privacy amid Manchester United-like security - Hindustan Times

  1. Why Virat Kohli, Jasprit Bumrah were missing from Perth nets; India ramp up privacy amid Manchester United-like security  Hindustan Times
  2. Virat Kohli in focus: Intense net session begins for upcoming Test series against Australia  The Times of India
  3. Virat Kohli in Australia for BGT: A timeline  India Today
  4. Black veil of secrecy: India begin training in privacy in Perth  ESPNcricinfo
  5. India to play intra-squad warm-up match at WACA on Friday ahead of Australia Tests but BCCI denies public viewing  Hindustan Times





se

knock knock buy house

Today on Married To The Sea: knock knock buy house


This RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see!




se

a what a horse

Today on Married To The Sea: a what a horse


This RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see!




se

take these pills

Today on Married To The Sea: take these pills


This RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see!




se

second notice

Today on Married To The Sea: second notice


This RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see!




se

do not curse

Today on Married To The Sea: do not curse


This RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see!




se

im on those golden teachers

Today on Married To The Sea: im on those golden teachers


This RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see!




se

okay joseph

Today on Married To The Sea: okay joseph


This RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see!




se

were supposed to use the earth

Today on Married To The Sea: were supposed to use the earth


This RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see!




se

sir please pull over

Today on Married To The Sea: sir please pull over


This RSS feed is brought to you by Drew and Natalie's podcast Garbage Brain University. Our new series Everything Is Real explores the world of cryptids, aliens, quantum physics, the occult, and more. If you use this RSS feed, please consider supporting us by becoming a patron. Patronage includes membership to our private Discord server and other bonus material non-patrons never see!















se

You Seem To Have Picked Up Another Pickup There, Buddy

One is never enough.




se

Protecting Itself From The Impending Cactus Attack

He'll just wait this one out. Cacti can't survive without water, right? ~NSHA




se

These New Years Cycles Confuse Me

Fun Fact: No-So-Handy Andy was also born on the year of the Dragon.




se

Not A Good Thing To See When Entering a Cab

Buses don't have seat belts. I don't see the problem.

~NSHA





se

Down fall to Cork in semi-final

Defending champions Cork beat Down 2-17 to 1-12 in the National League Division One semi-final at Croke Park.




se

Tropicana Field can be fixed by 2026, but Rays must play elsewhere in 2025

A detailed assessment of the hurricane damage to Tropicana Field concludes that the home of the Rays is structurally sound and can be repaired in time for the 2026 season, but not by 2025 Opening Day.




se

Joey Logano 1-on-1: Winning Cup Series championship is 'electric'

Joey Logano sat down with FOX Sports to discuss the wild pace-car wreck, the playoff format and the feeling of winning the title at Phoenix.




se

C.J. Stroud tops the list of best-selling NFL jerseys midway through 2024 season

Three quarterbacks lead the way in top NFL jerseys sales so far this season.




se

Providence's Oswin Erhunmwunse throws down a POWERFUL two-hand dunk vs. Hampton

Providence Friars' Oswin Erhunmwunse threw down a powerful two-handed dunk against the Hampton Pirates.




se

Deion Sanders talks Shedeur Sanders’ growth from last year to this season | Speak

Deion Sanders discusses the impressive growth of Shedeur Sanders from last season to this year, highlighting his development as Colorado’s QB and the strides he’s made on the field.




se

Bensley Joseph finds Corey Floyd Jr. for a TOUGH ALLEY-OOP dunk as Providence leads 47-43 vs. Hampton

Providence Friars' Bensley Joseph found Corey Floyd Jr. for a tough alley-oop dunk against the Hampton Pirates.




se

Tom Brady’s 3 Stars of Week 10: Lamar Jackson, Ja'Marr Chase, Leo Chenal | DIGITAL EXCLUSIVE

Tom Brady gave his 3 stars of Week 10 which included Baltimore Ravens QB Lamar Jackson, Cincinnati Bengals WR Ja'Marr Chase and Kansas City Chiefs LB Leo Chenal.




se

puh-lease/pur-lease

My obsession with the word please keeps leading me to new discoveries. This time: a spelling difference!

One particular use of please is to be dismissive of something someone else has said or done, as in: 

     Please! You don't really imagine we want to read about please again, do you?

But when people say that please, they often elongate the pronunciation, including putting a bit of vocal 'space' between the P and the L, creating a two-syllable please. And because people pronounce it with two syllables, they sometimes spell it with something syllable-indicating between the P and the L.

So I went looking for such spellings in the Corpus of Global Web-based English. Since I didn't know the exact spellings I was looking for, I put in various key letters/punctuation and asterisks after them, like pu*lea* and p-le*: the asterisks are wildcards that stand for any number of characters. So, pu*lea* gave me relevant results like puhlease and puuuleazz and irrelevant ones like purpleleaf. Sorting through the results (thanks to Becky Hunt for doing the table for me), we've got:

 

Examples

US

UK

puh

puh-leaze, puhleese, puhleez

168

39

pul

puleeze, pulease, puleasssse

30

8

puu

puulease, puuulleeeeezzz

7

0

pu-

pu-lease, pu-leeze

6

0

p-l

p-lease, p-leeease

0

3

pur

purlease, purleese, purleeze

0

25


The US column has a lot more of these spellings. That's to be expected—that 'dismissal' usage is more common in AmE and so the re-spelling of it will be too. But what's super-interesting is the contrast between the preferred AmE use of puh or pu to represent the first syllable versus the BrE-only use of pur.  

Echoes of a previous post! The one where I had discovered that when Americans say "uh" on British television, it gets close-captioned as "er" because an r after a vowel in English-English spelling does not signal the /r/ sound, but rather a kind of vowel quality. 

Purlease in BrE spelling does not indicate a different pronunciation from puhlease: it represents one way that a non-rhotic (non-/r/-pronouncing) speaker can represent the schwa sound that's been inserted in the elongated word. 

Not what I thought I'd discover when I started looking for please spellings, so a fun little extra for me! (And now you too!)




se

second-guess


Image from here



At the Bavard Bar in St Leonard's a few months ago, a Bavardier asked me if I'd noticed the difference between the US and UK meanings of second-guess. I hadn't! She felt that the US meaning was overtaking the UK meaning, but whose meaning is really whose? 






Here's what Oxford Languages says: 


But more than the one meaning is North American. The Oxford English Dictionary lists it, in any meaning, as 'originally and chiefly North American', with evidence of the 'anticipate' sense form 1941 and of the 'judge' sense from 1946. 

It looks like only the first of those meanings ('anticipate by guesswork') initially went to the UK, while that meaning perhaps lost steam in the US. The American Merriam-Webster dictionary lists the 'criticize' meaning first

For me, 'judge with hindsight' doesn't capture how I use second-guess. Here's me using it in The Prodigal Tongue, talking about the acts of faith we need to take in communicating:

when you’re talking with people from other places, you cannot second-guess every noun and verb you utter.

If we use a substitution test to see which of the definitions above fits with it, it's not very satisfying. 

  1. you cannot anticipate every noun and verb you utter
  2. you cannot judge with hindsight every noun and verb you utter

Neither seems to me to capture what I meant, which was something more like:

  • you cannot spend time doubting and re-thinking every noun and verb you utter

This sense of 'doubt' seems to come through when second-guess is used with a reflexive (-self) pronoun, as in I spend too much time second-guessing myself and, it turns out, there are about 2.5 times more second-guessing of oneself in the American part of GloWbE corpus as in the British part:

Wiktionary's definition might be more in line with my intuitions of the meaning. 

  1. (idiomatic) to vet or evaluate; to criticize or correct, often by hindsight, by presuming to have a better ideamethod, etc. quotations ▼
    Please don't try to second-guess the procedure that we have already refined and adopted.
    Once she began listening to her instincts and didn't second-guess herself the entire time, her artwork improved noticeably.

Their use of the originally BrE verb to vet seems to capture what I meant in my sentence: 'One cannot vet every noun or verb for its dialect-appropriateness before it comes out of one's mouth.'  I'm betting this usage has arisen by 'contamination' from a similar, but centuries-older phrase: have second thoughts about.

That's not to say I always use it in the 'vetting' way. Here's an example from an email I sent, replying to a question of whether students would like to join the staff in a reading group:

I don't think we should second-guess whether students would want to do it; I think we should just invite them.  

This one has more the 'anticipate' sense. I don't think I picked that up in the UK. Rather, I think the phrase does more than one thing for AmE speakers. 

So, is my fellow Bavardier right that things are changing in the UK?  Let's look in the News on the Web corpus, since that covers the past 14 years, whereas the GloWbE data were from 2012.  Using the same search string as I used in GloWbE (second-guess* *self), there is still 2.5 times more in the US subcorpus than in the British subcorpus. If we just search for second-guess* (without the *self), it's 2.2 times more in the US. 

But we can see it really picking up in BrE since 2017:


So it feels kind of 'new' in BrE. But while it's older in AmE, there's certainly a great increase in its use in the past few years. Perhaps it's that increase in the US that's allowed it to be picked up in the UK:



Rather than me second-guessing your thoughts on this, why don't you just tell us in the comments?




se

For Those Times When You Just Really Hate Something