sh

Coventry Rugby captain Jordon Poole on perfect start to the Championship

BBC CWR's Clive Eakin chats to the 27-year-old ahead of this weekend versus Caldy!




sh

Coventry beat Tigers in Premiership Rugby Cup

Championship leaders Coventry upset last year’s Premiership Rugby Cup runners-up Leicester Tigers as they storm to a 33-19 Pool B triumph at Welford Road.




sh

Council shaves £17.5m off budget deficit

Money saved after placing service commitments on hold has helped cut the expected deficit to £9.5m.




sh

Attempted murder charge after man hurt in shooting

A man in his 20s remains in hospital with serious facial injuries after shots were fired at a park.




sh

Abuse victim calls for ex-Bishop of Ely to resign

The Right Reverend Stephen Conway faces calls to stand down over the John Smyth abuse scandal.




sh

Apple to roll out ‘Battery Intelligence’ for iPhone, Amazon slashes price of 43inch Hisense smart TV to £228

The iPhone could finally show you how long it’ll take to finish charging. Code spotted in the second iOS 18.2 beta by 9to5Mac shows a new “BatteryIntelligence” feature that will let you […]

The post Apple to roll out ‘Battery Intelligence’ for iPhone, Amazon slashes price of 43inch Hisense smart TV to £228 appeared first on Tech Digest.




sh

EV deliveries rise in October as overall market shrinks

New car market falls by -6.0% in October, as businesses, fleets and private buyers register 9,241 fewer vehicles. Battery electric the only vehicles to see higher uptake as manufacturers subsidise […]

The post EV deliveries rise in October as overall market shrinks appeared first on Tech Digest.





sh

Should gay roles be played by gay actors?

Today’s social media controversy comes courtesy of former Doctor Who show-runner Russell T Davies who has gone on record in an interview that he believes gay roles should generally be played by gay actors. As you might expect, the response to this argument has been both immediate and strong. Some people have argued that it’s […]




sh

4 must-have assets that marketers should create to support sales activities

Peter Drucker, ‘the founder of modern management’ said:




sh

Introducing TODS – a typographic and OpenType default stylesheet

Introducing TODS, an open source typography and opentype default stylesheet. One of the great things about going to conferences is the way it can spark an idea and kick start something. This project was initiated following a conversation with Roel Nieskens (of Wakamai Fondue fame) at CSS Day, where he demonstrated his Mildly Opinionated Prose Styles (MOPS).

The idea is to set sensible typographic defaults for use on prose (a column of text), making particular use of the font features provided by OpenType. The main principle is that it can be used as starting point for all projects, so doesn’t include design-specific aspects such as font choice, type scale or layout (including how you might like to set the line-length).

Within the styles is mildly opinionated best practice, which will help set suitable styles should you forget. This means you can also use the style sheet as a checklist, even if you don't want to implement it as-is.

TODS uses OpenType features extensively and variable font axes where available. It makes full use of the cascade to set sensible defaults high up, with overrides applied further down. It also contains some handy utility classes.

You can apply the TODS.css stylesheet in its entirety, as its full functionality relies on progressive enhancement within both browsers and fonts. Anything that is not supported will safely be ignored. The only possible exceptions to this are sub/superscripts and application of a grade axis in dark mode, as these are font-specific and could behave unexpectedly depending on the capability of the font.

In order to preview some of the TODS features, you can check out the preview page tods.html and toggle TODS.css on and off. (This needs more work as the text is a bit of a mish-mash of examples and instructions, and it's missing some of the utility classes and dark mode. But that’s what open source is for… feel free to fork, improve and add back into the repo.)

Walkthrough of the TODS.css stylesheet

You can download a latest version of the stylesheet from the TODS Github repo (meaning some of the code may have changed a bit).

Table of contents:

  1. Reset
  2. Web fonts
  3. Global defaults
  4. Block spacing
  5. Opentype utility classes
  6. Generic help classes
  7. Prose styling defaults
  8. Headings
  9. Superscripts and subscripts
  10. Tables and numbers
  11. Quotes
  12. Hyphenation
  13. Dark mode/inverted text

1. Reset

Based on Andy Bell’s more modern CSS reset. Only the typographic rules in his reset are used here. You might like to apply the other rules too.

html {
  -moz-text-size-adjust: none;
  -webkit-text-size-adjust: none;
  text-size-adjust: none;
}

Prevent font size inflation when rotating from portrait to landscape. The best explainer for this is by Kilian. He also explains why we still need those ugly prefixes too.

body, h1, h2, h3, h4, h5, h6, address, p, hr, pre, blockquote, ol, ul, li, dl, dt, dd, figure, figcaption, div, table, caption, form, fieldset {
  margin: 0;
}

Remove default margins in favour of better control in authored CSS.

input,
button,
textarea,
select {
  font-family: inherit;
  font-size: inherit;
}

Inherit fonts for inputs and buttons.

2. Web fonts

Use modern variable font syntax so that only supporting browsers get the variable font. Others will get generic fallbacks.

@font-face {
  font-family: 'Literata';
  src: url('/fonts/Literata-var.woff2') format('woff2') tech(variations),
       url('/fonts/Literata-var.woff2') format('woff2-variations');
  font-weight: 1 1000;
  font-stretch: 50% 200%;
  font-style: normal;
  font-display: fallback;
}

Include full possible weight range to avoid unintended synthesis of variable fonts with a weight axis. Same applies to stretch range for variable fonts with a width axis.

For main body fonts, use fallback for how the browser should behave while the webfont is loading. This gives the font an extremely small block period and a short swap period, providing the best chance for text to render.

@font-face {
  font-family: 'Literata';
  src: url('/fonts/Literata-Italic-var.woff2') format('woff2') tech(variations),
       url('/fonts/Literata-Italic-var.woff2') format('woff2-variations');
  font-weight: 1 1000;
  font-stretch: 50% 200%;
  font-style: italic;
  font-display: swap;
}

For italics use swap for an extremely small block period and an infinite swap period. This means italics can be synthesised and swapped in once loaded.

@font-face {
  font-family: 'Plex Sans';
  src: url('/fonts/Plex-Sans-var.woff2') format('woff2') tech(variations),
       url('/fonts/Plex-Sans-var.woff2') format('woff2-variations');
  font-weight: 1 1000;
  font-stretch: 50% 200%;
  font-style: normal;
  font-display: fallback;
  size-adjust:105%; /* make monospace fonts slightly bigger to match body text. Adjust to suit – you might need to make them smaller */
}

When monospace fonts are used inline with text fonts, they often need tweaking to appear balanced in terms of size. Use size-adjust to do this without affecting reported font size and associated units such as em.

3. Global defaults

Set some sensible defaults that can be used throughout the whole web page. Override these where you need to through the magic of the cascade.

body {
    line-height: 1.5;
    text-decoration-skip-ink: auto;
    font-optical-sizing: auto;
    font-variant-ligatures: common-ligatures no-discretionary-ligatures no-historical-ligatures contextual;
    font-kerning: normal;
}

Set a nice legible line height that gets inherited. The font- properties are set to default CSS and OpenType settings, however they are still worth setting specifically just in case.

button, input, label { 
  line-height: 1.1; 
}

Set shorter line heights on interactive elements. We’ll do the same for headings later on.

4. Block spacing

Reinstate block margins we removed in the reset section. We’re setting consistent spacing based on font size on primary elements within ‘flow’ contexts. The entire ‘prose’ area is a flow context, but so might other parts of the page. For more details on the ‘flow’ utility see Andy Bell’s favourite three lines of CSS.

.flow > * + * {
  margin-block-start: var(--flow-space, 1em);
}

Rule says that every direct sibling child element of .flow has margin-block-start added to it. The > combinator is added to prevent margins being added recursively.

.prose {
  --flow-space: 1.5em;
}

Set generous spacing between primary block elements (in this case it’s the same as the line height). You could also choose a value from a fluid spacing scale, if you are going down the fluid typography route (recommended, but your milage may vary). See Utopia.fyi for more details and a fluid type tool.

5. OpenType utility classes

.dlig { font-variant-ligatures: discretionary-ligatures; }
.hlig { font-variant-ligatures: historical-ligatures; }
.dlig.hlig { font-variant-ligatures: discretionary-ligatures historical-ligatures; } /* Apply both historic and discretionary */

.pnum { font-variant-numeric: proportional-nums; }
.tnum { font-variant-numeric: tabular-nums;    }
.lnum { font-variant-numeric: lining-nums; }
.onum { font-variant-numeric: oldstyle-nums; }
.zero { font-variant-numeric: slashed-zero;    }
.pnum.zero { font-variant-numeric: proportional-nums slashed-zero; } /* Apply slashed zeroes to proportional numerals */
.tnum.zero { font-variant-numeric: tabular-nums slashed-zero; }
.lnum.zero { font-variant-numeric: lining-nums slashed-zero; }
.onum.zero { font-variant-numeric: oldstyle-nums slashed-zero; }
.tnum.lnum.zero { font-variant-numeric: tabular-nums lining-nums slashed-zero; }
.frac { font-variant-numeric: diagonal-fractions; }
.afrc { font-variant-numeric: stacked-fractions; }
.ordn { font-variant-numeric: ordinal; }

.smcp { font-variant-caps: small-caps; }
.c2sc { font-variant-caps: unicase; }
.hist { font-variant-alternates: historical-forms; }

Helper utilities matching on/off Opentype layout features available through high level CSS properties.

@font-feature-values "Fancy Font Name" { /* match font-family webfont name */

    /* All features are font-specific. */
    @styleset { cursive: 1; swoopy: 7 16; }
    @character-variant { ampersand: 1; capital-q: 2; }
    @stylistic { two-story-g: 1; straight-y: 2; }
    @swash { swishy: 1; flowing: 2; wowzers: 3 }
    @ornaments { clover: 1; fleuron: 2; }
    @annotation { circled: 1; boxed: 2; }
}

Other Opentype features can have multiple glyphs, accessible via an index number defined in the font – these will be explained in documentation that came with your font. These vary between fonts, so you need to set up a new @font-font-features rule for each different font, ensuring the font name matches that of the font family. You then give each feature a custom name such as ‘swoopy’. Note that stylesets can be combined, which is why swoopy has a space-separated list of indices 7 16.

/* Stylesets */
.ss01 { font-variant-alternates: styleset(cursive); }
.ss02 { font-variant-alternates: styleset(swoopy); }

/* Character variants */
.cv01 { font-variant-alternates: character-variant(ampersand); }
.cv02 { font-variant-alternates: character-variant(capital-q); }

/* Stylistic alternates */
.salt1 { font-variant-alternates: stylistic(two-story-g); }
.salt2 { font-variant-alternates: stylistic(straight-y); }

/* Swashes */
.swsh1 { font-variant-alternates: swash(swishy); }
.swsh2 { font-variant-alternates: swash(flowing); }

/* Ornaments */
.ornm1 { font-variant-alternates: ornaments(clover); }
.ornm2 { font-variant-alternates: ornaments(fleuron); }

/* Alternative numerals */
.nalt1 { font-variant-alternates: annotation(circled); }
.nalt2 { font-variant-alternates: annotation(boxed); }

Handy utility classes showing how to access the font feature values you set up earlier using the font-variant-alternates property.

:root {
    --opentype-case: "case" off;
    --opentype-sinf: "sinf" off;
}

/* If class is applied, update custom property */
.case {
    --opentype-case: "case" on;
}

.sinf {
    --opentype-sinf: "sinf" on;
}

/* Apply current state of all custom properties, defaulting to off */
* { 
    font-feature-settings: var(--opentype-case, "case" off), var(--opentype-sinf, "sinf" off);
}

Set custom properties for OpenType features only available through low level font-feature-settings. We need this approach because font-feature-settings does not inherit in the same way as font-variant. See Roel’s write-up, including how to apply the same methodology to custom variable font axes.

6. Generic helper classes

Some utilities to help ensure best typographic practice.

.centered {
    text-align: center;
    text-wrap: balance;
}

When centring text you’ll almost always want the text to be ‘balanced’, meaning roughly the same number of characters on each line.

.uppercase {
    text-transform: uppercase;
    --opentype-case: "case" on;
}

When fully capitalising text, ensure punctuation designed to be used within caps is turned on where available, using the Opentype ‘case’ feature.

.smallcaps {
    font-variant-caps: all-small-caps;
    font-variant-numeric: oldstyle-nums;    
}

Transform both upper and lowercase letters to small caps, and use old style-numerals within runs of small caps so they match size-wise.

7. Prose styling defaults

Assign a .prose class to your running text, that is to say an entire piece of prose such as the full text of an article or blog post.

.prose {
    text-wrap: pretty;
    font-variant-numeric: oldstyle-nums proportional-nums;
    font-size-adjust: 0.507;
}

Firstly we get ourselves better widow/orphan control, aiming for blocks of text to not end with a line containing a word on its own. Also we use proportional old-style numerals in running text.

Also adjust the size of fallback fonts to match the webfont to maintain legibility with fallback fonts and reduce visible reflowing. The font-size-adjust number is the aspect ratio of the webfont, which you can calculate using this tool.

strong, b, th { 
    font-weight: bold;
    font-size-adjust: 0.514; 
}

Apply a different adjustment to elements which are typically emboldened by default, as bold weights often have a different aspect ratio – check for the different weights you may be using, including numeric semi-bolds (eg. 650). Headings are dealt with separately as the aspect ratio may be affected by optical sizing.

8. Headings

h1, h2, h3, h4 { 
    line-height: 1.1; 
    font-size-adjust: 0.514;
    font-variant-numeric: lining-nums; }

Set shorter line heights on your main headings. Set an aspect ratio for fallback fonts – check for different weights of headings. Use lining numerals in headings, especially when using Title Case.

h1 {
    font-variant-ligatures: discretionary-ligatures; 
    font-size-adjust: 0.521;
}

Turn on fancy ligatures for main headings. If the font has an optical sizing axis, you might need to adjust the aspect ratio accordingly.

h1.uppercase {
    font-variant-caps: titling-caps;
}

When setting a heading in all caps, use titling capitals which are specially designed for setting caps at larger sizes.

9. Superscripts and subscripts

Use proper super- and subscript characters. Apply to sub and sup elements as well as utility classes for when semantic sub/superscripts are not required.

@supports ( font-variant-position: sub ) {
    sub, .sub {
        vertical-align: baseline;
        font-size: 100%;
        line-height: inherit;
        font-variant-position: sub;
    }
}

@supports ( font-variant-position: super ) {
    sup, .sup {
        vertical-align: baseline;
        font-size: 100%;
        line-height: inherit;
        font-variant-position: super;
    }
}

If font-variant-position is not specified, browsers will synthesise sub/superscripts, so we need to manually turn off the synthesis. This is the only way to use a font’s proper sub/sup glyphs, however it’s only safe to use this if you know your font has glyphs for all the characters you are sub/superscripting. If the font lacks those characters (most only have sub/superscript numbers, not letters), then only Firefox (correctly) synthesises sup and sub – all other browsers will display normal characters in the regular way as we turned the synthesis off.

.chemical { 
    --opentype-sinf: "sinf" on;
}

For chemical formulae like H2O, use scientific inferiors instead of sub.

10. Tables and numbers

td, math, time[datetime*=":"] {
    font-variant-numeric: tabular-nums lining-nums slashed-zero;    
}

Make sure all numbers in tables are lining tabular numerals, adding slashed zeroes for clarity. This could usefully apply where a time is specifically marked up, as well as in mathematics.

11. Quotes

Use curly quotes and hang punctuation around blockquotes.

:lang(en) > * { quotes: '“' '”' '‘' '’' ; } /* “Generic English ‘style’” */
:lang(en-GB) > * { quotes: '‘' '’' '“' '”'; } /* ‘British “style”’ */
:lang(fr) > * { quotes: '«?0202F' '?0202F»' '“' '”'; } /* « French “style” » */

Set punctuation order for inline quotes. Quotes are language-specific, so set a lang attribute on your HTML element or send the language via a server header. Note the narrow non-breaking spaces encoded in the French example.

q::before { content: open-quote }
q::after  { content: close-quote }

Insert quotes before and after q element content.

.quoted, .quoted q {
    quotes: '“' '”' '‘' '’';
}

Punctuation order for blockquotes, using a utility class to surround with double-quotes.

.quoted p:first-of-type::before {
    content: open-quote;
}
.quoted p:last-of-type::after  {
    content: close-quote;
}

Append quotes to the first and last paragraphs in the blockquote.

.quoted p:first-of-type::before {
    margin-inline-start: -0.87ch; /* Adjust according to font */
}
.quoted p {
    hanging-punctuation: first last;
}
@supports(hanging-punctuation: first last) {
    .quoted p:first-of-type::before {
        margin-inline-start: 0;
    }
}

Hang the punctuation outside of the blockquote. Firstly manually hang punctuation with a negative margin, then remove the manual intervention and use hanging-punctuation if supported.

12. Hyphenation

Turn on hyphenation for prose. Language is required in order for the browser to use the correct hyphenation dictionary.

.prose {
    -webkit-hyphens: auto;
    -webkit-hyphenate-limit-before: 4;
    -webkit-hyphenate-limit-after: 3;
    -webkit-hyphenate-limit-lines: 2;

    hyphens: auto;
    hyphenate-limit-chars: 7 4 3;
    hyphenate-limit-lines: 2;    
    hyphenate-limit-zone: 8%;
    hyphenate-limit-last: always;
}

Include additional refinements to hyphenation. Respectively, these stop short words being hyphenated, prevent ladders of hyphens, and reduce overall hyphenation a bit. Safari uses legacy properties to achieve some of the same effects, hence the ugly prefixes and slightly different syntax.

.prose pre, .prose code, .prose var, .prose samp, .prose kbd,
.prose h1, .prose h2, .prose h3, .prose h4, .prose h5, .prose h6 {
    -webkit-hyphens: manual;
    hyphens: manual;
}

Turn hyphens off for monospace and headings.

13. Dark mode/inverted text

Reduce grade if available to prevent bloom of inverted type.

:root {
  --vf-grad: 0;
}

@media (prefers-color-scheme: dark) {
  :root {
    --vf-grad: -50;
  }
}

* {
  font-variation-settings: "GRAD" var(--vf-grad, 0);
}

Not all fonts have a grade (GRAD) axis, and the grade number is font-specific. We’re using the customer property method because font-variation-settings provides low-level control meaning each subsequent use of the property completely overrides prior use – the values are not inherited or combined, unlike with font-variant for example.

There are probably better ways of doing some of these things, and the preview page is rather lacking at the moment. Please let me know on Github, or better still fork it, edit and resubmit.

Read or add comments




sh

Back-row stars, a Puma sensation & more Premiership talking points

The back-row contenders come front and centre, Harlequins have a new Puma on the loose and more Premiership talking points




sh

Ealing beat Saracens in Premiership Rugby Cup

Championship highfliers Ealing beat Premiership side Saracens 29-19 in the opening round of the Premiership Rugby Cup.




sh

Woman, 70, wins triathlon world championship title

Judy Orme won the 2024 World Triathlon Championships in her 70-74 age group category in Spain.




sh

'It's hard to leave abusive relationships'

Police officer and domestic violence survivor Sharon Baker features in a documentary by the Queen.








sh

Is British public life dominated by men?

Today in the Guardian, features writer Kira Cochrane has produced a story that is already being widely quoted on the numbers (or lack thereof) of visible women in the media. "In a typical month, 78% of newspaper articles are written by men, 72% of Question Time contributors are men and 84% of reporters and guests on Radio 4's Today show are men. Where are all the women?"

On the one hand, this story is decently written and based on a sound idea. Not least because rather than write an article on lazy assumptions of representations, it goes to the bother of looking at whether the actual numbers match up with the perceptions of the author. This is a good place to start in any conversation about representation and is often overlooked in media or social commentary.

That said, there is a huge difference between "counting numbers" and "producing statistics". Or, indeed, evidence. My problem is not with the article per se, which after all is simply a feature for the Life & Style section of the Grauniad, but rather with the reception it's had on Twitter and elsewhere as if it is le dernier cri in proof. The article is an improvement on most other articles of its kind. But it is also at best a beginning of something that could, and should, be examined further in a way which is compatible with well-designed research.

But the widespread acclaim indicates there is a danger of not taking the piece any further, and adopting its conclusions wholesale as if it was a well-designed in-depth study. It's not (yet). It could be. For example, the article starts with "In a typical month" - to be unimpeachable, you must establish in what way the months selected were "typical".

Because the numbers match so closely with the author's a priori assumptions, care should be taken to assure the reader that the shows selected do not comprise a skewed sample. (Actually, this should be done anyway.) We need to know what the spread of shows on television and radio are that are considered topical, political, or sufficiently serious. Why was Question Time included, and Loose Women excluded? I don't think one is especially more in-depth or topical than the other. Why is Have I Got News For You considered, which is a comedy show, and Moral Maze not, which is a serious radio programme featuring many regular women panellists and guests? Or the Radio 4 News Quiz, hosted by Sandi Toksvig and featuring many women as guests? What about Women's Hour?

Size, as ever, matters. What are the audience sizes for the shows, since clearly that is important? So, too, does sampling. Since it's presumably not practical or useful to count all appearances on all media, there needs to be a way of assuring that the ones considered in such a study comprise a representative sample of media, audience types, and audience sizes. This is something almost no examination of media topics outside academia bother to do (and many inside don't do it either). But if the shows can not be shown to be representative, the stud's conclusions could be accused of being skewed, and the results not taken seriously.

The title of the article, with its unexplored "why?" also presents the danger of interpreting an outcome as if it is the same as the opportunity. Why, indeed, should there be more women on Question Time, when the percentage of female MPs is only 22%? This surely this is a problem that needs to be addressed at root level (why are there not more women in government, considered for such positions, or running for them?) and not by whingeing about token women on politics shows.

The reaction to women going on some of these shows can be extremely negative, which makes other women considering whether to appear think twice. Remember when Fern Britton appeared on Question Time, and the furore over her opening her mouth on topics other than what we thought she should talk about? I was asked to go on QT last year and turned it down because I expected much the same reaction. Would a similarly placed man in media have had the same dismissive reception as Britton, particularly from women like Amanda Platell perceiving them as "lightweight"?

Similarly, the format of the Today programme on Radio 4 is extremely off-putting. Would you like to be shouted at for two minutes first thing in the morning on a show that prides itself on manufacturing controversy, or have a reasonable discussion over on Women's Hour? That, incidentally, is the question more-or-less as it has been put to me by the PR folks at Orion in the past. Come on, it's not even a contest which most women (and men) would choose given the option.

Age is also part of the mix. As one twitter correspondent (@petehague) commented, "I think that the entire debate misses the point that experienced commentators represent past gender policies ... i.e. if you want to get a professor of economics on TV, your selection is influenced by undergraduate gender balance decades ago." And not only the undergrad balance, but especially the percentage making it through study to professorships. David Starkey and his ilk are still rocking up peddling their schtick because, well, the women with the best and most cogent arguments to counter him are not at his level of academic or media experience yet. This phenomenon is almost certainly at work outside the academia bubble as well. And given the continuation of the trend in which women for various reasons choose family or life balance over single-minded pursuit of their careers, it may well never happen.

Finally, we must ask why it is women in media, even ones like say, Laurie Penny, who seem committed to an ideal of being a political writer, end up doing pieces about dating and handbags. Is it because when such assignments are offered, writers would rather take the job than turn it down? And does this, over time, contribute to an impression that anyone who has done so is destined to "lack gravitas"? There is a pink ghetto even - no, especially - at the Guardian. Isn't it ironic that Cochrane's piece is in the Life & Style section, rather than, say, Comment Is Free? On the same day when a man's thoughts on his Movember 'tache does get a spot in CiF?

So in short, while I broadly agree with Cochrane's thesis that it would be nice to see more women on shows like Question Time and Have I Got News For You, I'm not sure the critical applause is warranted. Yet. And I don't think it constitutes "proof" much at all apart from being about those shows on those days. Interesting? Yes. Generalisable to all media at all times? No. The difference between anecdotes and sampling is subtle (perhaps too much so for most media) but crucial.

You may be wondering why this matters on an issue in which most people are in agreement. It matters because if an argument is seen to be slapdash or half-baked, it throws the conclusions into doubt regardless of how worthy they are. It matters because for there to be change it's important to know the real and not imagined extent of the problem. And it matters because if something is worth doing, it's worth doing right. There's a germ of an interesting idea in there. The real question is what is to be done with it?




sh

Why Scotland should not make sex work illegal

UPDATE: MSPs have voted that Grant's bill will have to go to consultation and will not be fast-tracked. Which is good news. But the fight is not over, and expect more to come when the consultation hits.

At the same time that the Moratorium 2012 campaign kicks off in London, spearheading a common-sense approach to sex work, there appears a bid in Scotland to try to make prostitution illegal. Just to recap: soliciting, running a brothel, and kerb crawling are already illegal (as too are trafficking and sexual exploitation of children). Exchanging sex for money at this point is not. Not yet.

Labour MSP Rhoda Grant claims "Scotland should become an unattractive market for prostitution and therefore other associated serious criminal activities, such as people trafficking for sexual exploitation, would be disrupted." Grant is, unfortunately, badly informed and wrong. I'm going to keep this one short and sweet because the points are pretty straightforward...

Scotland does not have a sex trafficking epidemic

Sex trafficking is the excuse frequently given these days to harass and criminalise sex workers. Problem is, it's not remotely the "epidemic" they would have you believe. If you're not already up to speed on the whys and wherefores, I highly recommend reading Laura Agustin's work on this. Or if I may be so cheeky to suggest you could also buy my book. 

Specifically, it is not happening in Scotland“In Scotland, to the best of my knowledge, we don't have a conviction for human trafficking,” said police constable Gordon Meldrum. Meldrum had previously claimed research “proved” the existence of 10 human trafficking groups north of the border, and 367 organised crime groups with over 4000 members. “We had one case which was brought to court previously but was abandoned. My understanding is it was abandoned due to a lack of evidence, essentially.” Strange how the evidence seemed to disappear precisely when someone was asked to produce all these fantasy baddies, isn't it? 

It's not only Scotland where the trafficking hype falls flat though: investigation throughout the UK has comprehensively failed to find any supposed sex trafficking epidemic.

Not convinced by the evidence? Then consider this: criminalising sex workers and their clients removes the most reliable information sources police have for investigating abuses. Police don't have a great track record on this: In interviews by the Sex Workers Project with 15 trafficking survivors who experienced police raids, only one had been asked by law enforcement if she was coerced, and only after she was arrested. SWOP-NYC make this case clearly.

Criminalising sex work has been shown in Scotland to make criminal activity worse

Criminalisation has all kinds of effects on the behaviour of sex workers, but unfortunately, none of those effects are good. Fear of police forces sex workers to get into clients’ cars quickly, and possibly be unable to avoid dangerous attackers posing as clients. When vigilantes and police roam the pavements, sex workers wait until the wee hours to come out, making them more isolated and vulnerable to harm.

Such an approach can also result in a transfer of activity from streetwalking to other ways of getting money. High-profile crackdown results in repeated arrests of prostitutes, which translate to fines that sex workers, now burdened with criminal records, are unable to pay except by more prostitution or by fraud, shoplifting, and dealing drugs.

Take Aberdeen, for instance. From 2001 onward, the city had an established tolerance zone for sex workers around the harbour. That ended with passage of the Prostitution (Public Places) (Scotland) Act in 2007. In the following months the city centre experienced an influx of streetwalkers and an increase in petty crimes.

Quay Services, which operates a drop-in centre for streetwalkers, reported that sex workers became more afraid to seek assistance, and the number of women coming to the centre dropped to “just a handful”. There was also evidence that displacing sex workers led to more activity in the sex trade, not less – convictions for solicitation tripled.

This kind of ‘crime shuffling’ takes prostitution out of one area and dumps it on another. It only resembles an improvement if you fail to look at the full picture.

Prohibition never works

There is a lot of talk in the political sphere about the need for “evidence based policy”. This means rejecting approaches that are moralistic and manipulative. Sex workers have suffered the tragic consequences of prejudicial social attitudes that lead to bad policy. The prohibition approach has not worked. It will never work. The people who endorse this view are putting people in danger and should not be guiding public opinion any longer. Disliking sex work is not a good enough argument to justify criminalising it. Is there any public interest served by preventing adults from engaging in a consensual transaction for sexual services? No, there is not.

Bit like the war on drugs: making the business profitable only to criminals, awaiting the inevitably grim results, then claiming that it’s the drugs themselves, not the laws, wot caused it. Few reasonable people believe that line of argument when it comes to drugs. Why does anyone believe it when it comes to sex?

Moral disapproval is a bad basis for policymaking. I don't find the idea of taking drugs at all appealing, but I don't assume my own preferences should be the basis for law.

The condescension heaped on people who do sex work is embarrassingly transparent. All this mealy-mouthed, 'oh but we want to help them, really’. How’s that again? By saddling people with criminal records and taking away their children? Do me a favour.

As well as the happy prostitutes there are unhappy sex workers in need of support. Society should protect the unwilling and underage from sexual exploitation and provide outreach for those who need and want it. We already have laws and services for that. Maybe the laws should be more intelligently enforced and the services better supported. But prosecuting the victimless crimes does neither of these. It helps no one.

The potential existence of abuses does not mean such work should be automatically criminalised if for no other reason than doing so makes the lives of people in sex work worse, not better. Criminalisation is the very opposite of compassion. Rhoda Grant is hiding behind an "end demand" approach that will not achieve what she claims it will, but will punish sex workers and send those with already chaotic lives further into a downward spiral. If that isn't punishing them with no hope for change then I don't know what is.

It's time we started acting like grownups and stopped pretending that making something illegal makes it cease to exist.




sh

Should Mia Freedman Apologise?

I went to Australia last month as a guest of the Opera House for the All About Women symposium.  As part of the event, I agreed to do some media appearances on ABC, including the Drum and Q&A.

All About Women was a fantastic day and I feel privileged to have met so many interesting and talented people there, including people I would put in the category of genuine modern heroes

As for Q&A… this is the Australian equivalent of Question Time, so I went anticipating a varied panel with a wide variety of opinions jostling to be heard. I was told Tony Jones was a strong moderator, so I went expecting him to rein in the conversation if things went off-piste. This was to be Q & A's first all-woman panel and expectations were high. The topics they circulated beforehand indicated I was in for a grilling while everyone else got softball. I went, not to put too fine a point on it, loaded for bear.

I thought it went pretty well. Opinions differed. Points of view were exchanged. Margaret Thatcher died. All in all, a good night. The producers seemed very pleased with the outcome.

So imagine my surprise, weeks later, that fellow guest Mia Freedman is still flogging her commentary about the appearance as content on her site MamaMia. The topic: should she apologise for continually insulting sex workers?

During the show Mia kept falling back on sloppy, ill-thought, and pat little lines that were easily countered. I found to my surprise a lot of common ground with Germaine Greer, hardly known as a fan of sexual entertainment, on the fact that conditions of labour and not sex per se are the most pressing issue for sex workers worldwide right now. Then in comes Mia with her assumptions about the people who do sex work (men AND women) and the people who hire them (men AND women). With Tony backing her up. So much for the disinterested moderator, eh? Maybe he felt bad for her. I don't know.

Here's the thing. I agree with Mia on this: I don't think she should apologise.

Why not? Because if she did it would be insincere. My first impression when we met backstage was that she was insincere, and damn it, a successful lady editor like her should have the guts to be true to herself and stand by her opinions no matter what they are.

Because the general public needs to see what kinds of uninformed nonsense that sex workers who stick their heads above the parapet get every single day.

Because for every 100 people who visit her site, there is one who is both a parent AND a sex worker, who knows what she is saying is nonsense. Yes, that's right Mia: sex workers raise families too. It's almost as if we're people.

Because she is a magazine editor who cares deeply about hits and attention, and clearly this is delivering on every level.

Because the sort of people who think sex workers should be topics of discussion rather than active participants are fighting a losing battle.

Keep digging, Mia. I ain't gonna stop you. Keep writing off other people simply because they didn't have the privileges you did or didn't make the same choices you did, and you can't accept that. Get it off your chest, lock up your children, whatever you think you need to do. Perhaps you have some issues about sex you want to work out in public, or this wouldn't be the biggest issue on your agenda weeks after the show went to air?

Mia, you have my express permission not to apologise. No, don't thank me… I insist.




sh

News roundup: 11-11-11! insertAdjacentHTML, classes in JavaScript?, twilight of Flash and Silverlight, Yahoo! Cocktails

Listen to the podcast for November 11, 2011 insertAdjacentHTML Mozilla has a nice overview of insertAdjacentHTML, a DOM function that's intended to supplement innerHTML. It's a bit less destructive and plays nicely with content that's already in the DOM. For instance, whereas innerHTML completely blows away whatever is inside the ...




sh

“That’s how we silence them”: Verstappen’s stunning Brazil win from start to finish | Formula 1

From pre-race confusion to post-race joy, from 17th on the grid to a stunning win, here's how Max Verstappen's Brazilian Grand Prix unfolded on his radio.




sh

Every way Verstappen can clinch the championship at the Las Vegas Grand Prix | Formula 1

Max Verstappen is poised to clinch the 2024 drivers' championship if he finishes ahead of Lando Norris one more time. Here's how he can seal a fourth title at the next race.




sh

Bortoleto pushed for 2025 F1 debut to avoid missing a year of racing | Formula 1

Gabriel Bortoleto said he was determined not to sit out a year of racing in 2025 after Sauber confirmed he will make his debut for them in Formula 1 next year.




sh

Monza crash ‘made me mentally stronger’ – Antonelli | RaceFans Round-up

In the round-up: Monza crash 'made me stronger'- Antonelli • Perez staying at Red Bull - reports • Esterson fills empty Trident F2 seat



  • RaceFans Round-up
  • Andrea Kimi Antonelli

sh

Listen to a spooky Halloween electronic music show tonight – that obvs features me

If you are home alone tonight on Halloween and fancy something spooky and electronic to listen to, please allow me to direct you to the annual Homebrew Electronica horrorthon! Promising “spooky bangers, creepy electronica and twisted soundscapes for Halloween night”,...





sh

Lawmakers shouldn’t take vows of silence

There is no excuse for non-disclosure agreements about public spending




sh

What web creators should know about our March 2024 core update and new spam policies

Today we announced the March 2024 core update. This is designed to improve the quality of Search by showing less content that feels like it was made to attract clicks, and more content that people find useful. We also shared that we have new spam policies to better handle the practices that can negatively impact Google's search results. In this post, we'll go into more detail for creators about both the update and the spam policies.




sh

Improving Search Console ownership token management

This post discusses an update to Search Console's user and permissions to improve the accuracy and reflect the actual state of unused ownership tokens.




sh

Configure your shipping and returns directly in Search Console

This post discusses a new and easier way to add shipping or return information directly in Search Console.




sh

TR?ICTIO Invoicing System development approaches the finish line

As some of you already know, the TR?ICTIO Invoicing System is a simple invoicing platform focusing on freelance translators. I have been developing the system for about 12 months and after extensive personal testing and actual use in my business, as … Continue reading




sh

Trados Studio – Powershell Trilogy Part 1

It’s been 11-years since I have written about the PowerShell Toolkit that was originally created by the development team in SDL.  Back then I was able to fumble my way through setting it up, editing a few files, and automating the creation of a project in Trados Studio.  In all the time since then it’s … Continue reading Trados Studio – Powershell Trilogy Part 1




sh

Congratulations Dr. Malinda Kaushalye Kapuruge!


It gives me great pleasure to post extremely belated (he completed in October last year!) congratulations to Dr. Malinda Kaushalye Kapuruge on his completing his Ph.D. in Computer Science from Swinburne University in Australia. Kau's thesis topic was "Orchestration as Organization: Using an organisational paradim to achieve adaptable business process modelling and enactment in service compositions" and was supervised by Prof. Jun Han and Dr. Alan Colman. Kau's going to stay on in Swinburne as a Research Scientist for some time.

Kaushalye worked in WSO2 for 2 years from 2006 to 2008 before going to grad school to pursue his Ph.D. work. Congratulations and good luck!

(I'm going to post a few catch up congratulations so I can be up to date :-).)




sh

WSO2 Workshops in Europe

If any of you are interested in Identity, Security and Entitlement and how these fit into a SOA, Cloud and Enterprise Architectures, then I'd recommend you taking a look at our workshop that we are running in London, Paris, Zurich and Frankfurt.

PS I think I'm meant to be the one on the left with St. George's flag!






sh

CommsHack

Yesterday the University of Portsmouth Computing Society held a "Comms Hack" - basically a hackathon sponsored by Twilio.

Unfortunately the Twilio guy had a problem and couldn't physically attend, but it all worked out. I could only be there for about an hour at the beginning and then another hour and half later. It took me a while to think of an idea, and eventually I started coding in python to build a simple text weather service. The idea is to text in your city (e.g. "GB Portsmouth") and then you get the latest weather. When the weather changes you also get updates.

I really wanted to use MQTT because I love it :-)

I ended building a system of about 5 concurrent processes all talking via topics:

  • One process polls openweather for weather data, and then reformats it slightly (e.g. changing Kelvin to Celsius!), and posts to a topic /weather/{country}/{city}
  • Another process listens for webhooks from Twilio and then resends as MQTT messages to /sms/
  • There is a process that listens for messages on /phone/{number} and texts those via Twilio to the phone number
  • The final process listens for subscription messages, and also keeps track of the latest weather data. When a new subscriber comes in or the weather for a city changes, it republishes it to the /phone topic.
It actually works pretty well - the only things that might be good additions are that:
a) I only get the weather from a fixed set of cities. This could be enhanced by automatically adding new cities to the subscribe list
b) You get the weather as a JSON string via text :-) 

What I liked best about this model is the loosely coupled nature of the coding. I could add and test each part independently. Similarly it would be easy to add a different type of subscription by creating a new process. Another cool aspect is how easy it is to monitor and debug just by subscribing to the various topics in MQTT. Testing is nice and easy too because you can write mosquitto_pub command-line tests.

I'll leave it running for a couple of days (or until my Twilio balance runs dry!). If you want to try it, text one of "GB Oxford", "GB Portsmouth", "GB Southampton" or "GB London" to 01143031705. I have to warn you - I haven't yet implemented an unsubscribe!

The code is (in usual hackday style messiness) here




sh

Translating notary terms 3: How to translate the names of Spanish public-form notarial acts into English

This post looks at how to translate the names of the two* main types of public-form Spanish notarial acts, escrituras públicas and actas notariales. It also identifies handy language to use in translations of them. Escritura pública An escritura pública records an act executed before a notary. How you translate the name of an escritura […]




sh

How to translate de una parte and de otra parte into English (contract translation tip 9)

How should you translate into English the terms de una parte and de otra parte that you find at the start of Spanish contracts?   What’s the job of de una parte and de otra parte in a Spanish contract? If you’ve read a couple of Spanish contracts, this seems obvious. But there is a […]




sh

Five things your translator should know when translating legislation into English

Translating the legislation or regulations of a country, company or university into English requires certain skills and know-how. This post lists five things your translator should know when translating legislation into English. 1. How to apply English drafting conventions Conventions on headings, numbering, referencing and capitalisation differ from one legal language to another. For instance, […]




sh

Choice of Classifiers in Hierarchical Recognition of Online Handwritten Kannada and Tamil Aksharas

In this paper, we propose a novel dexterous technique for fast and accurate recognition of online handwritten Kannada and Tamil characters. Based on the primary classifier output and prior knowledge, the best classifier is chosen from set of three classifiers for second stage classification. Prior knowledge is obtained through analysis of the confusion matrix of primary classifier which helped in identifying the multiple sets of confused characters. Further, studies were carried out to check the performance of secondary classifiers in disambiguating among the confusion sets. Using this technique we have achieved an average accuracy of 92.6% for Kannada characters on the MILE lab dataset and 90.2% for Tamil characters on the HP Labs dataset.




sh

Enterprise Microblogging for Advanced Knowledge Sharing: The References@BT Case Study

Siemens is well known for ambitious efforts in knowledge management, providing a series of innovative tools and applications within the intranet. References@BT is such a web-based application with currently more than 7,300 registered users from more than 70 countries. Its goal is to support the sharing of knowledge, experiences and best-practices globally within the Building Technologies division. Launched in 2005, References@BT features structured knowledge references, discussion forums, and a basic social networking service. In response to use demand, a new microblogging service, tightly integrated into References@BT, was implemented in March 2009. More than 500 authors have created around 2,600 microblog postings since then. Following a brief introduction into the community platform References@BT, we comprehensively describe the motivation, experiences and advantages for an organization in providing internal microblogging services. We provide detailed microblog usage statistics, analyzing the top ten users regarding postings and followers as well as the top ten topics. In doing so, we aim to shed light on microblogging usage and adoption within a globally distributed organization.




sh

Climat : la justice néerlandaise donne raison à Shell face aux ONG

Climat : la justice néerlandaise donne raison à Shell face aux ONG




sh

Last supermoon of 2024 to shine over Central Alberta this week - Central Alberta Online

  1. Last supermoon of 2024 to shine over Central Alberta this week  Central Alberta Online
  2. 4 of 4: Last supermoon of the year to light up Canadian skies  Global News Toronto
  3. Beaver Moon 2024: See the final 'supermoon' of the year rise next to the 'Seven Sisters'  Livescience.com
  4. See 2024’s Final ‘Supermoon’ And ‘Fireballs’: The Night Sky This Week  Forbes
  5. How and when to catch the last supermoon of 2024  National Post




sh

Senators make short work of listless Leafs in a flat Battle of Ontario - The Globe and Mail

  1. Senators make short work of listless Leafs in a flat Battle of Ontario  The Globe and Mail
  2. Tavares on Maple Leafs’ lifeless loss to Senators: ‘We should be disappointed’  Sportsnet.ca
  3. Ullmark records first shutout of season as Senators smother Maple Leafs  TSN
  4. TAKEAWAYS: Ottawa Senators draw first blood in Battle of Ontario  Ottawa Citizen
  5. Wednesday FTB: Lose to the Sens, why not?  Pension Plan Puppets




sh

British writer Samantha Harvey wins Booker Prize for space novel Orbital - Al Jazeera English

  1. British writer Samantha Harvey wins Booker Prize for space novel Orbital  Al Jazeera English
  2. Samantha Harvey’s ‘beautiful and ambitious’ Orbital wins Booker prize  The Guardian
  3. Samantha Harvey wins the Booker prize for “Orbital”  The Economist
  4. British writer Samantha Harvey’s space-station novel ‘Orbital’ wins 2024 Booker Prize  CNN
  5. Booker Prize Is Awarded to Samantha Harvey’s ‘Orbital’  The New York Times





sh

Justin Welby resigns as archbishop of Canterbury over abuse scandal - Al Jazeera English

  1. Justin Welby resigns as archbishop of Canterbury over abuse scandal  Al Jazeera English
  2. Church of England head resigns over handling of sex abuse scandal  CTV News
  3. The four bishops at risk from child abuse cover-up report  The Telegraph
  4. The archbishop and the abuser  The Economist
  5. Archbishop of Canterbury Justin Welby resigns in abuse fallout: All to know  Al Jazeera English




sh

Insurrection à Washington - Assaut du Capitole: culpabilité pour l'homme photographié dans le bureau de Nancy Pelosi

(Belga) Un Américain, qui avait été immortalisé les pieds sur une table dans le bureau de la cheffe démocrate Nancy Pelosi lors de l'assaut sur le Capitole, a été reconnu coupable lundi de plusieurs délits.

Après une courte délibération, les jurés ont déclaré Richard Barnett, 62 ans, coupable, entre autres, d'entrave à une procédure officielle, vol et intrusion dans un bâtiment officiel avec une arme dangereuse (un bâton de marche capable d'envoyer des décharges électriques). Le 6 janvier 2021, il avait envahi, comme des centaines de partisans de l'ex-président républicain Donald Trump, le siège du Congrès au moment où les élus certifiaient la victoire du démocrate Joe Biden à la présidentielle. Il avait été photographié par l'AFP dans le bureau de la cheffe de la chambre des représentants, Nancy Pelosi, les pieds sur un meuble. Le cliché avait fait le tour du monde et permis à la police de l'interpeller rapidement. Selon le dossier d'accusation, ce partisan de la mouvance complotiste Qanon avait laissé un message insultant à la démocrate et volé une enveloppe qu'elle avait signée. Pendant son procès, il s'était montré défiant, assurant avoir été "poussé à l'intérieur" du Capitole par la foule. Sa peine sera prononcée en mai. En attendant, il reste assigné à résidence avec un bracelet électronique. En deux ans d'enquête, plus de 950 participants à cette attaque ont été arrêtés, et près de 200 condamnés à des peines de prison. (Belga)