JOHN MEANEY

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.



29.4.24

NEW NOVEL: TRISTOPOLIS CHASM

 From award-winning author John Meaney comes a thrilling tale of Tristopolis, a Gotham-like city beneath perpetually dark skies, where the bones of the dead fuel the reactor piles, indentured wraiths power the elevators, and daylight never shines.

A missing-person case has Donal Riordan searching for a crime lord while wraiths try to stop him, but every clue brings him closer to a different kind of danger aimed right at the heart of Tristopolis. The city must be protected – but what will be the cost?

I really, really loved writing this one! Hope it works for you...

11.4.24

NEW PILOTS STORY

Something of a YA story, in fact.

Jonquil is a fourteen year old with a secret, living in the city of New Vane that floats in the orange skies of planet Molsin. What should have been an ordinary school trip to the zoo becomes something far more deadly, with many lives at risk.
 

Can the daughter of undercover Pilots keep her secret? Or will she fail to survive the day?

An exciting hard-SF story, set in the Pilots universe, from award-winning author John Meaney.

Available on Amazon now.