ACCU World of Code
-
Mini-rust in Rust 012: Parsing with backtracking
We’ve built a toy parser, but it’s not going to last us. We need to make it a bit more proper. Specifically, we need to be able to look ahead, and then backtrack. You can find the source code at codeberg.org/andybalaam/milk and more of my stuff at art…
-
Comments in Code: Just Don’t Do It
How we use comments in code has come up a couple of times for me this week and when I looked, I realised we hadn’t captured anything in the my teams’s coding guide lines, so I added something: Uncle Bob Says: “It is well known that I prefer code t…
-
New year: out with the old
My first blog of 2025, and following my annual procedure I have created a new archive for this year’s posts. Then I reviewed all posts that didn’t get published last year. Among all the posts you will have enjoyed last year there are half as many again which didn’t get published. Half a dozen have […]
The post New year: out with the old first appeared on Allan Kelly.
-
A Quick Look at Something New
One of the capabilities of PC-lint Plus which we’ve not included in Visual Lint so far is the collection of analysis metrics. We’re pleased to be able to say that that is now changing, and that a new display (the “Analysis Metrics” Display) is in the w…
-
Extracting information from duplicate fault reports
Duplicate fault reports (that is, reports whose cause is the same underlying coding mistake) are an underused source of information. I sometimes email the authors of a paper analysing fault data asking for information about duplicates. Duplicate information is rarely available, because the authors don’t bother to record it. If a program’s coding mistakes are […]
-
Mini-rust in Rust 011: Parsing an assignment plus expression
Last time we lexed an assignment statement. This time: parsing it, so we’re ready to execute it! You can find the source code at codeberg.org/andybalaam/milk and more of my stuff at artificialworlds.net
-
Changing development culture and practices: LLM edition
The popular perception of creating software systems is that it mainly involves writing code. In the 1950s, management treated writing code as a clerical task that just mapped the detailed requirements specified by someone with knowledge of the problem to something a computer could execute. Job titles reflected this division of labour, e.g., coder/programmer, systems […]
-
Routine competance
My daughters created a Gingerbread House, as they have for a decade. They can now do it with such routine, practiced ease that it hardly seems like a challenge, but the compenance is built upon layers of memory, and tempered with focus and care.
-
Mini-rust in Rust 010: Lexing an assignment
We’re ready to lex a proper statement: specifically a “let” statement that will give a variable its value. You can find the source code at codeberg.org/andybalaam/milk and more of my stuff at artificialworlds.net
-
Riverblade Online Store Changes
Since starting in 2004, Riverblade has used the MyCommerce (then called “Share-It”) ecommerce platform to implement our online store and sell licences on our behalf. Throughout that period MyCommerce have generally been responsive to us and provided us…
-
My 2024 in software engineering
Readers are unlikely to have noticed something that has not been happening during the last few years. The plot below shows, by year of publication, the number of papers cited (green) and datasets used (red) in my 2020 book Evidence-Based Software Engineering. The fitted red regression lines suggest that the 20s were going to be […]
-
Booker prize winner, Orbital – Great idea, poorly realised
Orbital: Winner of the Booker Prize 2024Samantha HarveyISBN-13 : 978-1529922936This book wasn’t for me. It’s a great idea, but it’s poorly realised. This is not a novel and not a textbook. I don’t think it knows what it is. It’s a bit all over the …
-
Mini-rust in Rust 009: Handling parsing errors
Our parser kinda works, but it needs some work to be less terrible. We’ve realised we did a few things in awkward or wrong ways, so let’s fix them before they get out of hand. You can find the source code at codeberg.org/andybalaam/milk and more of my…
-
Small business programs: A dataset in the research void
My experience is that most of the programs created within organizations are very short, i.e., around 50–100 lines. Sometimes entire businesses are run using many short programs strung together in various ways. These short programs invariably make extensive use of the functionality provided by a much larger package that handles all the complicated stuff. In […]
-
A review: Nonviolent Communication: A Language of Life: Life-Changing Tools for Healthy Relationships
Nonviolent Communication: A Language of Life: Life-Changing Tools for Healthy Relationshipsby Marshall RosenbergISBN: 978-1-892005-28-1I was sitting in an Amazon Web Services workshop and, as an after lunch ice breaker, the workshop leader asked us to …
-
Mini-rust in Rust 008: Refactoring our parser
Our parser kinda works, but it needs some work to be less terrible. We’ve realised we did a few things in awkward or wrong ways, so let’s fix them before they get out of hand. You can find the source code at codeberg.org/andybalaam/milk and more of my…
-
Visual Lint 8.0.15.372 has been released
Visual Lint 8.0.14.371 has been released. This is a maintenance update for Visual Lint 8.0, and includes the following changes: Corrected the handling of project/build variables such that definitions of the following form are expanded correctly, with…
-
Good enough reliability models: still an unknown
Estimating the likelihood that a software system will operate as intended, for some period of time, is one of the big problems within the field of software reliability research. When software does not operate as intended, a fault, or bug, or hallucination is said to have occurred. Three events need to occur for a user […]
-
So you think you can lead a team?
What: So you think you can lead a team?When: 27th & 28th February 2025 Where: nor(DEV):con, The Kings Centre, 63-75 King St, Norwich, NR1 1PHMore Info: https://nordevcon.com/Get tickets: https://ti.to/norfolkdevelopers/nordevcon-25Software engineer…
-
Mini-rust in Rust 007: Evaluating an operation
Now that we can parse things, let’s evaluate them. By the end of this, we should be able to use our little language as a mini-calculator (only for adding up so far though). You can find the source code at codeberg.org/andybalaam/milk and more of my st…
-
Christmas books for 2024
My rate of book reading has picked up significantly this year. The following are the really interesting books I read, as is usually the case, most were not published in this year. I have enjoyed Grayson Perry’s TV programs on the art world, so I bought his book “Playing to the Gallery: Helping Contemporary Art […]
-
Mini-rust in Rust 006: Parsing an operation
We’re finally ready to parse things! Our lexer can do almost enough to allow us to handle “3 + 5”, so we’ll make that ready, and then parse that expression into a syntax tree. You can find the source code at codeberg.org/andybalaam/milk and more of my…
-
Core message – succeeding with OKRs
OKRs are mechanism for agreeing shared goals, communicating goals and driving action, to work everyone on the team should be included and everyone is responsible.
The post Core message – succeeding with OKRs first appeared on Allan Kelly.
-
Message order in Matrix: right now, we are deliberately inconsistent
After lots of conversations with Element colleagues about message order in Matrix, and lots of surprises for me, I wanted to write down what I had learned before I forgot, and also write down some principles I think we should try to follow. A lot of th…
-
Unravelling Conflict
An interesting question came up at a meet-up I recently attended, where they were discussing approaches to coaching and mentoring. The question was not overly interesting by itself, but the roller-coaster of a journey as we got to the essence of the re…
-
21 Algol 60 compilers in 1962
The specification of ALGOL 60 was published in May 1960. Unlike today, where the creators of a new language release the source of a corresponding compiler, people were expected to write their own compiler. The June 1962 paper: The Replies to the AB14 Questionnaire lists implementation details on 21’ish compilers (it’s not clear whether some […]
-
Mini-rust in Rust 005: Making our lexer an iterator
Our lex function returns an iterator, but in the implementation we were faking it. Let’s do it properly. You can find the source code at codeberg.org/andybalaam/milk and more of my stuff at artificialworlds.net
-
Meeting C++ 2024
I went to Berlin again to speak at Meeting C++. The conference has been going for a while now, and has been in Berlin for 10 years. I first went in “before times”, in 2019, because Jens invited me to keynote. I went back last year, partly for the …
-
Using CoPilot-Like Tools is Not Pairing
Ever since the rise of LLM based tools like ChatGPT and CoPilot there have been quips made about how great it makes as a pairing partner. The joke is because these tools are passive and won’t trash your code, or disagree with your approach, or smell of…
-
The Norden-Rayleigh model: some history
Since it was created in the 1960s, the Norden-Rayleigh model of large project manpower has consistently outperformed, or close runner-up, other models in benchmarks (a large project is one requiring two or more man-years of effort). The accuracy of the Norden-Rayleigh model comes with a big limitation: a crucial input value to the calculation is […]
-
Mini-rust in Rust 004: Refactoring our lexer
Refactoring our lexer, so all the awful things we did to make the tests pass are behind us. You can find the source code at codeberg.org/andybalaam/milk and more of my stuff at artificialworlds.net
-
Patterns for Highly Autonomous Teams & Team Energy Theory
Three patterns for highly autonomous teams and a new theory of team change
The post Patterns for Highly Autonomous Teams & Team Energy Theory first appeared on Allan Kelly.
-
Visiting CppCast
I recently had the pleasure of being the guest of the week on CppCast! I chatted with Phil and Timur about CppQuiz.org‘s recent move to C++23, my book C++ Brain Teasers, and a bit about safety, the future of C++, and more. You can listen to the …
-
Writing OKRs masterclass online in January
My online Writing OKRs Masterclass is back in January learn how to write OKRs, understanding what makes good OKRs and what to avoid!
The post Writing OKRs masterclass online in January first appeared on Allan Kelly.
-
Putnam’s software equation debunked
The implementation of a project has a lifecycle that starts and finishes with zero people working on it. Between starting and finishing, the number of staff quickly grows to a peak before slowly declining. In a series of very hard to obtain papers during the early 1960s (chapter 5), Peter Norden created a large project […]
-
Mini-rust in Rust 003: Much prettier errors
More of the very basic structure of our interpreter: making the error messages from the lexer point at the exact line of code, in a pretty way. You can find the source code at codeberg.org/andybalaam/milk and more of my stuff at artificialworlds.net
-
Winterfylleth live at The Dome
As I’ve said before, I completely fell in love with Winterfylleth at Bloodstock one year. They played again, on the main stage, a few years later and released that performance as a live album and it’s one of my favourites. We went to Manchester to see …
-
Indented vs non-indented if-statements: performance difference
To non-developers discussions about the visual layout of source code can seem somewhat inconsequential. Layout probably ought to be inconsequential, being based on experimental studies that discovered how source should be visually organised to minimise the cognitive effort consumed by developers while processing it. In practice software engineering is not evidence-based. There are two kinds […]
-
Mini-rust in Rust 002: Errors while lexing
Continuing writing our mini-rust in Rust. Figuring out how to throw an error when lexing goes wrong. You can find the source code at codeberg.org/andybalaam/milk and more of my stuff at artificialworlds.net
-
How do I combine OKRs with KPIs?
To combined OKRs and KPIs start by understanding what you KPIs are
The post How do I combine OKRs with KPIs? first appeared on Allan Kelly.
-
Employment in the software business: we know nothing
Tens of millions of people get paid to work on the creation and maintenance of software systems, by companies employing thousands of developers to those employing a single developer (in the UK there are almost 300K registered software companies; 5% of registered companies). This huge ecosystem is almost completely ignored by the software engineering research […]
-
Mini-rust in Rust 001: Lexing an int
Introducing my new series: writing a little Rust-like language in Rust. It will be an interpreted language, and (for now at least) it will try to work as much like real Rust as possible. Maybe one day it will be a useful language, but for now it’s pure…
-
Mini-rust in Rust 001: Lexing an int
Introducing my new series: writing a little Rust-like language in Rust. It will be an interpreted language, and (for now at least) it will try to work as much like real Rust as possible. Maybe one day it will be a useful language, but for now it’s pure…
-
The first agile transformation failure
The first agile transformation failure was 15 years before the manifesto.
The post The first agile transformation failure first appeared on Allan Kelly.
-
AI for the Rest of Us
I spoke at AI for the Rest of Us last week. This new 2-day event happened in London, and wanted to help attendees understand what AI is about and how to use it, in plain language. Some talks also considered potential issues, including b…
-
C compiler conformance testing: with ChatGPT assistance
How can developers check that a compiler correctly implements all the behavior requirements contained in the corresponding language specification? An obvious approach is to write lots of test cases for each distinct behavior; such a collection of tests is known as a validation suite, when used by a standard’s organization to test compilers/OS interfaces/etc. The […]
-
Rust 101 – 53: Exercises for module G (q4)
Creating a custom Python extension in Rust. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe, FFI This section (FFI): 49: FFI, 50: Exercise 1, 51: Exercise 2, 5…
-
Rust 101 – 52: Exercises for module G (q3)
Using cargo-bindgen to generate bindings, automating what we need to do to use existing C code inside a Rust project. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, …
-
Rust 101 – 51: Exercises for module G (q2)
Trying out calling Rust code from with a C program (should help with calling Rust from any compiled-to-native language too). Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, …
-
Rust 101 – 50: Exercises for module G (q1)
Calling C code from Rust, Rust code from C-family languages, using cargo-bindgen, and creating Python extensions. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsa…
-
Rust 101 – 49: Foreign function interfaces (interacting with other languages)
Calling C code from Rust, Rust code from C-family languages, using cargo-bindgen, and creating Python extensions. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsa…
-
19 years of blogging
As you may have noticed, I recently upgraded my blog from WordPress to Zola. This means that my home computer does the work of rendering the pages to HTML once, and my web server only has to provide the rendered HTML to your browser. This should mean t…
-
Deployment is important
I just evaluated and installed software for providing comments and statistics for this blog. Here are my experiences of the deployment process: A Python comment system. Uses one of the 17 outdated installer/packaging systems for Python (none of which…
-
Rust 101 – 48: Exercises for module F (q3)
Implementing our own Result type that has a specific memory layout, so it can be used by Roc code. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section…
-
Rust 101 – 47: Exercises for module F (q2)
Wrapping a C function with safe Rust code. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section (Async): 42: Why unsafe?, 43: Meaning of unsafe, 44: Un…
-
Modelling estimate/actual including uncertainty in the estimate
What is an effective technique for modelling the relationship between the time estimated to implement a task and the actual time taken to implement that task? A regression model is the obvious approach. However, an important assumption made by the commonly used regression techniques is not met by estimate/actual project data The commonly used regression […]
-
Little book of workflow management
I have a confession to make. I recently published a series of articles not on this blog, and not even in my newsletter. I wanted to try something a bit different. I wanted to try writing short descriptions of the working techniques agile teams use but without using the word agile, referring to software development, […]
The post Little book of workflow management first appeared on Allan Kelly.
-
Heads-up: moving away from WordPress
This is an early warning: I am actively working to move this blog away from WordPress, to a static site created using Zola. I am planning to keep as many URLs working as humanly possible, and the RSS feed URL should be unchanged. (With any luck, the pe…
-
Heads-up: moving away from WordPress
This is an early warning: I am actively working to move this blog away from WordPress, to a static site created using Zola. I am planning to keep as many URLs working as humanly possible, and the RSS feed URL should be unchanged. (With any luck, the permalinks inside will also be unchanged, but I … Continue reading Heads-up: moving away from WordPress
-
if statement conditions, some basic measurements
The conditions contained in if-statements control all the decisions a program makes, yet relatively little is known about their characteristics. A condition contains one or more clauses, for instance, the condition (a && b) contains two clauses that both need to be true, for the condition to be true. An earlier post modelled the number […]
-
Rust 101 – 46: Exercises for module F (q1)
Coding up a linked list based on raw pointers in Rust. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section (Async): 42: Why unsafe?, 43: Meaning of un…
-
Rust 101 – 46: Exercises for module F (q1)
Coding up a linked list based on raw pointers in Rust. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section (Async): 42: Why unsafe?, 43: Meaning of unsafe, 44: Undefined behaviour, 45: Unsafe types, 46: Exercise 1 Links: Slides: Rust 101 – module F Exercises: … Continue reading Rust 101 – 46: Exercises for module F (q1)
-
MC/DC a step towards safety critical Open source software
Open source projects and safety critical software are at opposite ends of the development process spectrum. From the user perspective, when an Open source project becomes very widely used within its application domain, there is a huge incentive to run it within safety critical domains. How might software that was not originally developed using a […]
-
Crafters Meetup: Architecture Kata
Last time I wrote about the monthly Cambridge Software Crafters Meetup which I started attending almost a year ago. In that post I briefly mentioned the Architecture Kata session which I found particularly interesting as I’ve never done anything like t…
-
How Symbols Work and Why We Need Them
My talk “How Symbols Work and Why We Need Them” from C++ on Sea is finally out on YouTube! Knowing how symbols work and how they are used can be very useful. Not only when solving linker errors but also when consuming or creating libraries, and even when creating executables. But most importantly, it is … Continue reading How Symbols Work and Why We Need Them
-
Modeling program LOC growth with recurrence equations
Models predicting the growth, in lines of code, of a program are based on the assumption that future growth follows the same pattern of behavior as past growth. One such model is the recurrence relation: , where: is LOC at time , is the LOC carried over from release , and is the LOC added […]
-
Infected Rain at The Underworld
Infected Rain are one of those bands I thought I really ought to be into. A modern, European metalcore band with female vocals, what’s not to like? But I just couldn’t get on with the Ecdysis album. I persevered and when the band released a few tracks …
-
Rust 101 – 45: Unsafe types and examples
Looking through some of the types of code you will be working with if you’re doing unsafe Rust, and some of the unsafe types you might want to use. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and paral…
-
Rust 101 – 45: Unsafe types and examples
Looking through some of the types of code you will be working with if you’re doing unsafe Rust, and some of the unsafe types you might want to use. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section (Async): 42: Why unsafe?, 43: Meaning of … Continue reading Rust 101 – 45: Unsafe types and examples
-
A Review: Cibola Burn
by James S. A. CoreyISBN: 78-0356504193In some ways Cibola Burn is a lot like Abaddon’s Gate, it’s slow to get going. It takes about half the book, however the second half of the book is really good. One way in which it is different from the stories w…
-
Embracing shared leadership
The idea of shared leadership better describes modern work teams and resolves problems around self-organising and self-managing teams
The post Embracing shared leadership first appeared on Allan Kelly.
-
SoCraTesUK 2024
I attended the International Software Craft and Testing Unconference UK just outside Oxford last week for the first time. I have been aware of this for a while but hadn’t had the chance to attend before. I had been to another conference which had a sin…
-
Discussing new language features is more fun than measuring feature usage in code
How often are the features supported by a programming language used by developers in the code that they write? This fundamental question is rarely asked, let alone answered (my contribution). Existing code is what developers spend their time reading, compilers translating to machine code, and LLMs use as training data. Frequently used language features are […]
-
Debugging an early NetBSD kernel panic
Tried to install NetBSD in an AMD64 VM with little success. Although the NetBSD loader worked fine, as soon as it transferred control to the NetBSD kernel, the VM immediately rebooted with no diagnostics appearing on the console that would give a hint…
-
CppQuiz.org is now on C++23
If you’re not familiar with https://cppquiz.org, it is, as its name suggests, a C++ quiz site. Each quiz is a full C++ program, and your task is to figure out what the output is. But the real value often lies in the explanation, which goes into detail about why the answer is what it is. … Continue reading CppQuiz.org is now on C++23
-
Rust 101 – 44: Undefined behaviour
If you write unsafe Rust, you need to reason about “undefined behaviour”. We talk through what that means, and try to develop an intuition about why we can’t predict how our program will behave if we don’t follow the rules. Series: Language basics, Mo…
-
Rust 101 – 44: Undefined behaviour
If you write unsafe Rust, you need to reason about “undefined behaviour”. We talk through what that means, and try to develop an intuition about why we can’t predict how our program will behave if we don’t follow the rules. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, … Continue reading Rust 101 – 44: Undefined behaviour
-
Number of statement sequences possible using N if-statements
I recently read a post by Terence Tao describing how he experimented with using ChatGPT to solve a challenging mathematical problem. A few of my posts contain mathematical problems I could not solve; I assumed that solving them was beyond my maths pay grade. Perhaps ChatGPT could help me solve some of them. To my […]
-
Ten Minutes with Winterfylleth
Would you travel for over 4 hours to spend less than 10 minutes with one of your favourite bands just to get their latest album signed and a photograph? I DID! Although, someone came from Germany, so it wasn’t the longest anyone travelled.I don’t think…
-
Why I’m talking about Modern Management
We need an updated management model. Outdated, and plain bad, management are are a problem. Modern management includes agile, good jobs, psychological safety and more.
The post Why I’m talking about Modern Management first appeared on Allan Kelly.
-
Massing saving on Succeeding with OKRs in Agile this week
Succeeding with OKRs in Agile – massive price cut for this week only
The post Massing saving on Succeeding with OKRs in Agile this week first appeared on Allan Kelly.
-
Measuring non-determinism in the Linux kernel
Developers often assume that it’s possible to predict the execution path a program will take, for a given set of input values, i.e., program behavior is deterministic. The execution path may be very complicated, and may depend on the contents of certain files (e.g., database…), but it’s deterministic. There is one kind of program where […]
-
C++ Brain Teasers Book Launch September 10 (live+streaming)
On September 10 there will be a book launch event for my book C++ Brain Teasers organized by Oslo C++ Users Group at NDC TechTown in Kongsberg. The event starts with food and mingling at 18:00, and the book launch starts at 18:30. Check out the event at Meetup.com for more details. The event will … Continue reading C++ Brain Teasers Book Launch September 10 (live+streaming)
-
Rust 101 – 43: The two meanings of “unsafe” in Rust
The unsafe keyword in Rust means two things: “You must read the docs!” or “I promise I read the docs and followed the rules!”. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects…
-
Rust 101 – 43: The two meanings of “unsafe” in Rust
The `unsafe` keyword in Rust means two things: “You must read the docs!” or “I promise I read the docs and followed the rules!”. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section (Async): 42: Why unsafe?, 43: Meaning of unsafe Links: Slides: Rust 101 … Continue reading Rust 101 – 43: The two meanings of “unsafe” in Rust
-
Rust 101 – 42: Why do we need unsafe?
There is a special mode in Rust programs called unsafe – why do we need it? Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section (Async): 42: Why unsaf…
-
Rust 101 – 42: Why do we need unsafe?
There is a special mode in Rust programs called unsafe – why do we need it? Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section (Async): 42: Why unsafe? Links: Slides: Rust 101 – module F Exercises: artificialworlds.net/presentations/rust-101/exercises/F-safe-unsafe/mod.html The course materials for this series are … Continue reading Rust 101 – 42: Why do we need unsafe?
-
Cambridge Software Crafters Meetup
Despite living pretty close to Cambridge I’ve never actually worked there. For the past 25 years I’ve commuted to London because it was easier and faster than getting to Cambridge [1]. The daily rates for contract programmers in the finance industry mi…
-
Employees: growth driver or cost to trim?
Bad jobs are depressing and costing our company more money than they save. Good jobs are a growth driver for companies and make for happier employees.
The post Employees: growth driver or cost to trim? first appeared on Allan Kelly.
-
Survival of CVEs in the Linux kernel
Software contained in safety related applications has to have a very low probability of failure. How is a failure rate for software calculated? The people who calculate these probabilities, or at least claim that some program has a suitably low probability, don’t publish the details or make their data publicly available. People have been talking […]
-
PJ Harvery – more talent than I was expecting.
My wife is a massive PJ Harvery fan, but I always found her squeaky, out of tune, unable to play and talentless. And to be fair, some of her songs on some of her albums do sound like that. For one reason or another, we missed PJ Harvery at the Roundhou…
-
A Review: Chapterhouse Dune
By Frank HerbertISBN-13 : 978-1473233812Here ends a journey which turned out to be more stubborn determination than enjoyment. As I’ve mentioned before, I first started reading the Dune books as a young teenager after loving the Lynch adaptation of…
-
1970s: the founding decade of software reliability research
Reliability research is a worthwhile investment for very large organizations that fund the development of many major mission-critical software systems, where reliability is essential. In the 1970s, the US Air Force’s Rome Air Development Center probably funded most of the evidence-based software research carried out in the previous century. In the 1980s, Rome fell, and […]
-
Crypta at The Underworld 2024
When it comes to sound, the Underworld in Camden can be a bit hit and miss and tends to be more miss with heavier bands. I struggled to hear the guitars clearly for Born of Osiris last year and it was the same for both Perpetual Paradox and Phobetor, w…
-
Rust 101 – 41: Exercises for module E (q2b)
Writing a mini client to connect to our async Rust chat server. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section (Async): 34: What is async?, 35: F…
-
Rust 101 – 41: Exercises for module E (q2b)
Writing a mini client to connect to our async Rust chat server. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async This section (Async): 34: What is async?, 35: Futures, 36: async/await, 37: Runtimes, 38: Exercise E1a, 39: Exercise E1b, 40: Exercise E2a, 41: Exercise E2b Links: Slides: … Continue reading Rust 101 – 41: Exercises for module E (q2b)
-
Rust 101 – 40: Exercises for module E (q2a)
Writing a little chat server in async Rust. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section (Async): 34: What is async?, 35: Futures, 36: async/aw…
-
Rust 101 – 40: Exercises for module E (q2a)
Writing a little chat server in async Rust. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async This section (Async): 34: What is async?, 35: Futures, 36: async/await, 37: Runtimes, 38: Exercise E1a, 39: Exercise E1b, 40: Exercise E2a, 41: Exercise E2b Links: Slides: Rust 101 – module … Continue reading Rust 101 – 40: Exercises for module E (q2a)
-
Rust 101 – 39: Exercises for module E (q1b)
Writing a one-shot queue using async Rust, this time with a little less help. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section (Async): 34: What is…