JOHN MEANEY

25.6.25

PRAISE FROM TWENTY YEARS AGO

 Reproduced from Lou Anders' blog:

As Paul Goat Allen writes in B&N's Explorations newsletter, "Science fiction fans looking for the next big genre classic need look no further than the Nulapeiron Sequence, a highly cerebral sci-fi trilogy by British author John Meaney that has been (deservedly) compared to Frank Herbert's epic masterwork, Dune... Meaney's Nulapeiron Sequence (Paradox, Context, and the forthcoming Resolution) is a landmark work for multiple reasons: 1) Unparalleled world building: The world of Nulapeiron is one of the most vividly described and utterly unique realms ever imagined in the history of science fiction; 2) Plot density: Like Nulapeiron's multi-leveled society, the story of Tom Corcorigan has innumerable layers, dozens of secondary themes, and subplots; and 3) Readability: Fans of hard science fiction will not be able to put this sweeping and thought-provoking saga down. Although there are no sandworms or spice on Nulapeiron, readers will inevitably compare this unforgettable epic with Frank Herbert's classic."

Why mention this now? The Nulapeiron trilogy hasn't appeared in ebook form outside North America before now, and it's past time to rectify that.





Coming soon!


27.1.25

New Case & Kat book!

 

The IACS agency works the interzone between cyber and physical espionage. Case and Kat are top operatives: ex-special forces technologists and seasoned martial artists – he in hardcore karate, she in MMA – equally adept at coding and physical action.

In a Paris dojo, a Russian operator targets Case, while an ally begs for help... but what are their real agendas? And when the real threat arises, can anyone save thousands of innocent lives?

From award-winning author John Meaney comes another mission for Case and Kat, drawing on Meaney’s own lifelong experience of hardcore martial arts and leading-edge computing, including the world of cyber security.

14.1.25

WORLD LOGIC DAY

Yes, it's a thing, and it's today. Or to put it more formally:

(∃d ∙ d ∈ Dates ∧ d = World Logic Day) ∧ d = today

Making some assumptions about a predefined Dates set (or type, in programming-speak) and a formally defined element (or instance) called today.

A big shout-out, on a personal basis, to Professor Jim Davies of the University of Oxford, who taught me formal specifications using Z (meaning symbolic logic and set theory) when I started my MSc studies back in the day. (I eventually graduated with a distinction, which pleased me immensely.) It utterly transformed the way I thought about software design.

While most people don't use formal specifications to design systems unless any bug is likely to kill people (e.g. flight control software), every modern software engineer uses automated unit tests (e.g. JUnit for Java), and every test case is actually an exercise in Hoare logic: setting up a pre-condition, executing code, and checking that the result is equal to the expected post-condition.

The difference is that in formal specifications, the pre- and post-conditions would be generalised expressions rather than specific values.

Way to go! So different from writing code using pencils and pre-printed stationery, which I absolutely remember doing (although my first experience of coding, 50 years ago, was a remote dumb terminal with a screen and keyboard: as good as it got back then). The future is here, and it's great.

Logic underlies all rational thinking and civilisation itself, so what could be more deserving of celebration?

And to everyone, a benediction from someone truly associated with logical thinking.

Live long and prosper.





7.10.24

WONDER WOMAN

My 70-year-old wife Yvonne has run over 90 half marathons or longer this year alone (including 3 ultra marathons, one being 57 miles and another 50 miles). Around Easter time she ran 16 half marathons in 12 days. This picture was taken in July, at an event in Suffolk with ZigZag Running:



She's a big fan of the old poem that begins: "When I grow old, I shall wear purple..." In Yvonne's case, that's usually purple leggings or running shoes.

 No wonder I love her.




20.7.24

OUTAGE... and the world of software engineering

The main John Meaney website is out of commission, but all is well in my world otherwise. Hope you're doing OK too, everyone. 

Since I live in the software engineering world when I'm not writing books, I find the CrowdStrike incident... interesting. These days, you expect testing to be automated (i.e. programs are used to test programs) in well established ways.

Those ways involve testing frameworks, such as JUnit or Cucumber for Java (there are others), or mocha or chai for JavaScript, depending on which level of testing you're aiming at.

Beyond that, running the tests can be embedded in the larger process of deploying to a live environment (production).

And that's for anything, even if it's a relatively small number of users. When your software is destined to be deployed on millions of devices, there are ways of mitigating against problems that escaped your test programs also, before the whole world gets your update.

(Before setting this post live, I used a preview feature to check it. And that's for a little old post with minimal consequences if there's an error.)

Software engineer David Farley asks the relevant questions here, if you're interested: https://youtu.be/MwjQVAwIATE?si=6_XMQSKzBMbNgX-N

And retired Microsoft software engineer Dave Plummer gives a really detailed analysis here: https://youtu.be/wAzEJxOo1ts?si=F2zGY3NIrwwJDPK7

By the way, all of the titles in my Case & Kat series, including the shorter pieces, are terms lifted directly from the world of software engineering:

cover image of Destructor Function

 Destructor Function - how you get rid of an object you don't need anymore, if you're coding in C++.

 

cover image of Strategy Pattern

Strategy Pattern - one of the original so-called Gang of Four design patterns: how to switch behaviour in an object dynamically, at runtime.

 

cover image of Concurrent Execution

Concurrent Execution - executing code in parallel: one of the trickiest things to get right in software design and implementation.

 

cover image of Breakpoint Insertion

Breakpoint Insertion - something you do in an IDE (code editor) before or while running code in debug mode, so it will stop at a breakpoint and you can see what the variable values are at this point.


cover image of Runtime Exception

Runtime Exception - error occurring only when you run the code: the compiler couldn't identify it beforehand.

And I haven't run out of jargon to use for new titles, either...

There will be more from the world of Case & Kat.