ACCU World of Code
-
Learn C++ by Example: Chapter 7
I have been sharing some details about my latest book “Learn C++ by Example”, and gave an overview of chapter 6 last time.You can buy my book directly here: http://mng.bz/AdAQ – or just go look at the table of contents. You can also buy …
-
Learn C++ by Example: Chapter 7
I have been sharing some details about my latest book “Learn C++ by Example”, and gave an overview of chapter 6 last time.You can buy my book directly here: http://mng.bz/AdAQ – or just go look at the table of contents. You can also buy …
-
Rust 101 – 33: Exercises for module D (q3)
Following through an exercise using a trait object with dynamic dispatch to choose different behaviour at runtime. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Uns…
-
Rust 101 – 33: Exercises for module D (q3)
Following through an exercise using a trait object with dynamic dispatch to choose different behaviour at runtime. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async This section (Trait objects): 28: Dynamic dispatch, 29: Object safety, 30: Patterns, 31: Exercise D1, 32: Exercise D2, 33: Exercise D3 Links: … Continue reading Rust 101 – 33: Exercises for module D (q3)
-
Learning General relativity at a rudimentary mathematical level
For the longest time, I have wanted to have an understanding of Einstein’s theory of General relativity at a rudimentary mathematical level. Because General relativity has never been a mainstream topic in undergraduate physics, there are almost no books at this level. Also, the mathematics of General relativity is based on tensor calculus, which until […]
-
Elected to the Matrix Foundation Governing Board!
I am really excited to say I was elected to the Governing Board of the Matrix Foundation! I was really surprised because there were lots of people standing, and the quality of the candidates was very high, but I am one of the lucky ones. I hope I can d…
-
Elected to the Matrix Foundation Governing Board!
I am really excited to say I was elected to the Governing Board of the Matrix Foundation! I was really surprised because there were lots of people standing, and the quality of the candidates was very high, but I am one of the lucky ones. I hope I can do a decent job of helping … Continue reading Elected to the Matrix Foundation Governing Board!
-
Rust 101 – 32: Exercises for module D (q2)
Trying out the typestate pattern by tracking the state of a 3D printer by changing our type instead of updating a variable whenever it changes. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and paralleli…
-
Rust 101 – 31: Exercises for module D (q1)
Some good patterns to follow in your code e.g. “newtype”, “typestate” and one to avoid. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section (Trait obj…
-
Playing Value Poker in the Dagons’ Den
Teams are quick to assign effort estimates to stories so why not estimate value? – how else can you prioritise by business value?
The post Playing Value Poker in the Dagons’ Den first appeared on Allan Kelly.
-
Learn C++ by Example: Chapter 6
I have been sharing some details about my latest book “Learn C++ by Example”, and gave an overview of the chapter 5 last time.You can buy my book directly here: http://mng.bz/AdAQ – or just go look at the table of contents. You can also buy i…
-
Rust 101 – 30: Good patterns and not so good
Some good patterns to follow in your code e.g. “newtype”, “typestate” and one to avoid. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section (Trait obj…
-
Rust 101 – 29: Trait objects and object safety
Trying to explain why the rules for object safety are the way they are, and how to create and use a trait objects. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Uns…
-
Distribution of program sizes
Program size, in lines of code (LOC), used to be a topic of conversation among developers and managers. Program size is an issue when computer memory is measured in kilobytes. Large programs would be organized into overlays such that only small subsets needed to be held in memory at any time, i.e., programmer defined memory […]
-
I wrote a C++ book!
I’m very proud to announce that my first book just got released on The Pragmatic Programmers! The book is called “C++ Brain Teasers“, and is part of their Brain Teasers series. The book consists of 25 short C++ programs, and the point is to guess what the output is, and why the language works like … Continue reading I wrote a C++ book!
-
Rust 101 – 28: Dynamic dispatch
Explaining how to hold on to something even when we don’t know its exact type, just what trait it implements. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe T…
-
Learn C++ by example: Chapter 5
I started to share some details about my latest book “Learn C++ by Example”, and gave overviews of the first few chapters previously.You can buy my book directly here: http://mng.bz/AdAQ – or just go look at the table of contents. You can als…
-
Learn C++ by example: Chapter 5
I started to share some details about my latest book “Learn C++ by Example”, and gave overviews of the first few chapters previously.You can buy my book directly here: http://mng.bz/AdAQ – or just go look at the table of contents. You can als…
-
New home for my videos: video.infosec.exchange
Huge thanks to Micah Scott for hosting my videos on diode.zone until recently. My videos are moving to video.infosec.exchange/a/andybalaam – please update all your feeds. (Thanks to Jerry Bell for running that – please donate!) You can follow this blog…
-
Tool live in 2024
Forgive me father, for it has been six months since my last gig.To be fair, my last gig was The Darkness and they played badly and we ended up next to some idiots in the crowd, so we left well before the end. A week or so before that was My Dying Bride…
-
Focus on flow
People can be so productive in the state of flow, but creating flow in an organization is harder, there are more moving parts. Luckily we can improve our ability to see and reason about flow.
The post Focus on flow first appeared on Allan Kelly.
-
Learn C++ by Example: chapter 4
I started to share some details about my latest book “Learn C++ by Example”, and gave an overview of the chapter three last time last time.You can buy my book directly here: http://mng.bz/AdAQ – or just go look at the table of contents. You can al…
-
Learn C++ by Example: chapter 4
I started to share some details about my latest book “Learn C++ by Example”, and gave an overview of the chapter three last time last time.You can buy my book directly here: http://mng.bz/AdAQ – or just go look at the table of contents. You can al…
-
Help get CppQuiz to C++23 and win a book!
CppQuiz.org is currently using C++ 17 for explanations and needs porting to C++ 23. I’d really appreciate your help! As a thank you, three contributors will get a copy of my upcoming book C++ Brain Teasers. How do I help? All the questions from the site have been exported to https://github.com/knatten/cppquiz23. Full instructions are in … Continue reading Help get CppQuiz to C++23 and win a book!
-
Learn C++ by Example: chapter 3
I promised to share some details about my latest book “Learn C++ by Example”, and gave an overview of the first two chapters last time.You can buy my book directly here: http://mng.bz/AdAQ – or just go look at the table of contents. You can also buy i…
-
Learn C++ by Example: chapter 3
I promised to share some details about my latest book “Learn C++ by Example”, and gave an overview of the first two chapters last time.You can buy my book directly here: http://mng.bz/AdAQ – or just go look at the table of contents. You can also buy i…
-
PayloadOffset_t: A small type design challenge
Recently, I had to make a relatively small design decision – which type to use for a small range of values. As usual in C++, there were a number of […] The post PayloadOffset_t: A small type design challenge appeared first on Simplify C++!.
-
Learn C++ by Example: chapters 1 and 2
I thought I’d share some details about my latest book “Learn C++ by Example”.You can buy it directly here: http://mng.bz/AdAQ – or just go look at the table of contents. You can also buy it from Amazon: https://amzn.to/4dMJ0aG People were asking for s…
-
Learn C++ by Example: chapters 1 and 2
I thought I’d share some details about my latest book “Learn C++ by Example”.You can buy it directly here: http://mng.bz/AdAQ – or just go look at the table of contents. You can also buy it from Amazon: https://amzn.to/4dMJ0aG People were asking for s…
-
Why I won’t link to AI resources
I received a very kind email today from someone who had found my page Resources for year 6 teachers on coding and programming helpful, and wanted to suggest another link for me to add, about AI resources. I’m sure it was a helpful and useful link, but …
-
Rust 101 – 27: Exercises for module C (q2)
Implementing a simplified form of Mutex. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section (Concurrency and parallelism): 24: Parallelism, 25: Threa…
-
Rust 101 – 26: Exercises for module C (q1)
Searching across multiple documents in parallel with Rayon. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section (Concurrency and parallelism): 24: Par…
-
Choosing who to vote for in the 2024 UK General Election
Update: I just discussed this with my son and I really want to emphasise: It does make a difference who is in power. The previous Labour government significantly improved primary education and many other public services. Don’t lose hope! Here are the c…
-
In search of flow
Every team is in search of flow. The Featureban game is great at illustrating flow, now I have a new video and workshop to simulate a Kanban system and flow.
The post In search of flow first appeared on Allan Kelly.
-
Rust 101 – 25: Threads, Mutexes, channels, Send and Sync
How to spawn threads and deal with lifetimes, how to send or share state across threads, and what Send and Sync mean. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, …
-
First get small, next get broad
You can’t beat thinking small for delivery, but you need to think broad when thinking about what is needed. But thinking small and broad is hard.
The post First get small, next get broad first appeared on Allan Kelly.
-
Rust 101 – 24: Parallelism and Rayon
What concurrency and parallelism are, a brief intro to Rayon, and a quick note on closures. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section (Concu…
-
Visual Lint 8.0.14.371 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: Updated the contents of the generated analysis command line for compatibility with CppCheck 2.14.0. Updated the PC-lint …
-
Visual Lint 8.0.14.371 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: Updated the contents of the generated analysis command line for compatibility with CppCheck 2.14.0. Updated the PC-lint …
-
Rust 101 – 23 Exercises for module B (q3)
Testing, benchmarking and optimising a small program that plays FizzBuzz. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section (Building applications):…
-
Rust 101 – 22 Exercises for module B (q2)
Building a command-line quiz application to bed in our knowledge about crates, modules and serialisation. All done using test-driven development. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and paralle…
-
Rust 101 – 21 Exercises for module B (q1)
Going through an exercise on serialization with serde. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section (Building applications): 18: Dependencies, …
-
All agile initiatives are flawed (and thats good)
Agile is a lot like democracy. Every single agile transformation initiative is flawed. For many that is a good thing, because it means we can see the things that need fixing
The post All agile initiatives are flawed (and thats good) first appeared on Allan Kelly.
-
RESTful Behaviour Guide
I’ve used a lot of existing Representational State Transfer (REST) APIs and have created several of my own. I see a lot of inconsistency, not just between REST APIs but often within a single REST API. I think most developers understand, at a high level…
-
RESTful Behaviour Guide
I’ve used a lot of existing Representational State Transfer (REST) APIs and have created several of my own. I see a lot of inconsistency, not just between REST APIs but often within a single REST API. I think most developers understand, at a high level…
-
ACCU 2024 trip report
I went to the ACCU conference this year. I was speaking on the last day, which I managed to put out of my mind for a while and went to several other sessions.We started with a keynote from Herb Sutter about safety in C++. He’s spoken an…
-
ACCU 2024 trip report
I went to the ACCU conference this year. I was speaking on the last day, which I managed to put out of my mind for a while and went to several other sessions.We started with a keynote from Herb Sutter about safety in C++. He’s spoken an…
-
Naming Functions: When Intent and Implementation Differ
Most of the time these days when I get into a conversation about naming it tends to be about tweaking the language, perhaps because I think there is a much better term available, or the author is a non-native speaker and they’ve transliterated the name…
-
Naming Functions: When Intent and Implementation Differ
Most of the time these days when I get into a conversation about naming it tends to be about tweaking the language, perhaps because I think there is a much better term available, or the author is a non-native speaker and they’ve transliterated the name…
-
Rust 101 – 20: Unit, integration and benchmark tests
How to write unit tests in your Rust code, and some quick pointers on writing integration and benchmark tests. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe …
-
Standing for the Matrix Governing Board
I have decided to stand for election to the Matrix Governing Board, which is a brand new body which advises and oversees the work of the Matrix Foundation. I will stand as an Individual Member, not representing a company or project. Contents: Purpose …
-
Rust 101 – 19: Creating a nice API
Tips and rules for writing good APIs that are easy for other people to use. Try to make them Unsurprising, Flexible, and Obvious. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait obje…
-
Rust 101 – 18: Dependencies and Cargo.toml
How to describe details of your Rust project with a Cargo.toml file, and how to find and add dependencies (other people’s code). Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objec…
-
Rust 101 – 17: Exercises for module A3 (part 2)
Finishing off the exercises on Rust traits, designing a customised version of Vec. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section (Traits and gen…
-
A Review: Abaddon’s Gate
James S. A. CoreyISBN-13 : 978-1841499932Abaddon’s Gate takes a while to get going. About half the book to get going. It’s all new character introductions and building. The second half is more exciting, but drawn out. Chrisjen Avasarala is totally …
-
A Review: Abaddon’s Gate
James S. A. CoreyISBN-13 : 978-1841499932Abaddon’s Gate takes a while to get going. About half the book to get going. It’s all new character introductions and building. The second half is more exciting, but drawn out. Chrisjen Avasarala is totally …
-
Automated backups from Signal to Nextcloud
DON’T DO THIS: the Signal app has the ability to make daily backups of your messages, and when you choose a folder to backup into, you can choose “Nextcloud” as the device, then choose a Nextcloud folder to back up to. Don’t do that. Although the above…
-
Rust 101 – 16: Exercises for module A3 (part 1)
Going through some exercises on Rust traits, designing a customised version of Vec. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section (Traits and ge…
-
One import per line is best
Rust has a feature where if you import two things from the same module you can abbreviate it like this: use mypkg::{MyStruct1, MyStruct2}; If you prefer, you can keep them separate, like this: use mypkg::MyStruct1; use mypkg::MyStruct2; I do prefer. St…
-
Randomness
I gave a talk called “What is a Random number and why should I care?” a few times last year. It evolved each time, but I was fundamentally trying to decide whether I could define “randomness” properly. My first attempt was at ACCU. Unfortunately, …
-
Randomness
I gave a talk called “What is a Random number and why should I care?” a few times last year. It evolved each time, but I was fundamentally trying to decide whether I could define “randomness” properly. My first attempt was at ACCU. Unfortunately, …
-
Core Guidelines are not Rules
There is a difference between guidelines and rules. Boiling down guidelines to one-sentence rules has drawbacks that make your code harder to understand. The famous quote by Captain Barbossa from […] The post Core Guidelines are not Rules appeare…
-
Rust 101 – 15: Lifetime bounds
This time we tackle one of the most tricky areas for a new Rust programmer: lifetimes. The key point is that when we add lifetime bounds (‘a or similar) to a function signature, this is not to help Rust compile our function: it’s to help Rust understan…
-
Rust 101 – 14: Some standard library traits
A tour of some of the most interesting traits in the standard library including Add etc. to overload operators, Sized, Sync and Send for telling the compiler special things about your type, Clone and Copy for copying things, Into and From for convertin…
-
A Review: Machine Vendetta
Machine VendettaAlastair ReynoldsISBN: 978-0316462846Machine Vendetta is the final Revelation Space novel we’re getting and the final part of the Dreyfus trilogy and it could have been a lot better. Unlike the previous book in the series, there was o…
-
A Review: Machine Vendetta
Machine VendettaAlastair ReynoldsISBN: 978-0316462846Machine Vendetta is the final Revelation Space novel we’re getting and the final part of the Dreyfus trilogy and it could have been a lot better. Unlike the previous book in the series, there was o…
-
REMEMBRANCE.md – Tombstones for git projects
There is something wrong with the idea that git gives you confidence to delete. As so often this is from the perspective of the individual programmer. Sure, you can delete your code and you can retreive it. Well done you, but you are relyi…
-
REMEMBRANCE.md – Tombstones for git projects
There is something wrong with the idea that git gives you confidence to delete. As so often this is from the perspective of the individual programmer. Sure, you can delete your code and you can retreive it. Well done you, but you are relyi…
-
Rust 101 – 13: Type Parameters and Associated Types
Following on from video 12, looking at how to add type information to traits, to make them flexible enough to describe generic code with different types, for example how to add a u32 to a u64 and return a u128, without defining a whole new trait for ev…
-
Rust 101 – 12: Traits
Explaining what a trait is, and how to use it. A trait is a bit like an Interface in Java or Go, or an Abstract Base Class in C++ or Python, but it can be used to define behaviour at compile-time as well as at run-time. We go through an example of why …
-
Melati Day – Twenty Five Year Anniversary
Happy Melati Day! On February 16th 2000 WilliamC made the first commit to Melati. https://github.com/Melati/Melati/commit/7a6fb6762cdbb835b4ff1aeb987bf1671cc598bd The name … Indonesia’s national flowers: the melati (small white…
-
Melati Day – Twenty Five Year Anniversary
Happy Melati Day! On February 16th 2000 WilliamC made the first commit to Melati. https://github.com/Melati/Melati/commit/7a6fb6762cdbb835b4ff1aeb987bf1671cc598bd The name … Indonesia’s national flowers: the melati (small white…
-
Our Star Baker
Just over 14 years ago I posted the eulogy I wrote for my father on this blog (So Long and Thanks For All the Onions) mostly because I had just started writing and this blog gave me the confidence to write. Sadly, a month ago my mother passed away too …
-
Our Star Baker
Just over 14 years ago I posted the eulogy I wrote for my father on this blog (So Long and Thanks For All the Onions) mostly because I had just started writing and this blog gave me the confidence to write. Sadly, a month ago my mother passed away too …
-
Rust 101 – 11: Exercises for module A2
Going through some exercises on Rust ownership, references, slices and error handling. Series: Language basics, More syntax, Traits and generics, Building applications, Concurrency and parallelism, Trait objects, Async, Unsafe This section (More synta…
-
[Fixed in FF 123] Deleting an Indexed DB store can be incredibly slow on Firefox
Update: as confirmed in the bug I logged, this was fixed in Firefox 123! See also: Keep your Indexed DB keys and values small if you want good performance! and Don’t store arrays of numbers in Indexed DB – use base64 instead. We had performance problem…
-
Five Element Maven Version Numbering System (N5)
The Five Element Maven Version Numbering System (N5) addresses the problem of wack-a-mole Maven dependency management: through the combination of excessive modularisation, microservices fervour, XML Declarative Project Object Models and non-uni…
-
Five Element Maven Version Numbering System (N5)
The Five Element Maven Version Numbering System (N5) addresses the problem of wack-a-mole Maven dependency management: through the combination of excessive modularisation, microservices fervour, XML Declarative Project Object Models and non-uni…
-
Don’t store normal arrays of numbers in Indexed DB – use UInt8Array instead
Following on from Keep your Indexed DB keys and values small if you want good performance!, here is another thing I’ve learned about Indexed DB performance (in July 2024): Update: Thanks to richvdh, we now know UInt8Array is much better than base64! If…
-
Rust 101 – 10: Strings
What a String is in Rust, and how they differ from &str. Strings are resizeable arrays of bytes that are guaranteed to be in UTF-8 format. &strs are references to chunks of bytes that are also guaranteed to be in UTF-8 format. If you want to le…
-
Keep your Indexed DB keys and values small if you want good performance!
In our work recently on Element Web (specifically attempting to replace our encryption code with our cross-platform Rust implementation) we’ve noticed some strange behaviour with the performance of our Indexed DB queries. We’ve been aware of some slowd…
-
Maven Version Versions and a Regex Block Refactoring of Sequential Identifier
In the first post in this series I had thought about the need for a globally unique incrementable artifect id, in the next post I not only designed but tested a proposal for such a globally unique artifact id and how to change it. A t…
-
Maven Version Versions and a Regex Block Refactoring of Sequential Identifier
In the first post in this series I had thought about the need for a globally unique incrementable artifect id, in the next post I not only designed but tested a proposal for such a globally unique artifact id and how to change it. A t…
-
Rust 101 – 9: Vecs, Boxes and slices
Explanation of some of the most commonly used types in Rust: Vecs, which store lists of items, Boxes that allow us to own things that we keep on the heap, and slices that are a way of referring to parts of Vecs or arrays without owning them. Series: L…
-
Rust 101 – 8: Writing methods using impl blocks
This time we discuss how to add methods to structs and enums, using impl blocks. Methods work similarly to other languages, but it might be a surprise that they can be defined inside separate blocks, and in fact they can be defined in multiple differen…
-
Maven version schema change
I proposed a new versioning scheme to yield a unique version string for each artifact in our highly modularised Maven java application. Currently we are running a classic SemVer semantic verioning system. The only shortcoming I can see wit…
-
Maven version schema change
I proposed a new versioning scheme to yield a unique version string for each artifact in our highly modularised Maven java application. Currently we are running a classic SemVer semantic verioning system. The only shortcoming I can see wit…
-
Rust 101 – 7: Error handling with panic and Result
We learnt about enums and generics last time, which means we’re ready to talk about Result, which is a really nice way of handling errors in Rust, that allows you to be very explicit about what went wrong, but also with a very compact syntax using the …
-
A Review: A Storm of Swords, Part 2: Blood and Gold
A Storm of Swords, Part 2: Blood and Gold (A Song of Ice and Fire, Book 3)by George R.R. MartinISBN-13: 978-0007447855At least George R. R. Martin is consistent. I didn’t really enjoy the second part of this book any more than the first. The Red Wedd…
-
A Review: A Storm of Swords, Part 2: Blood and Gold
A Storm of Swords, Part 2: Blood and Gold (A Song of Ice and Fire, Book 3)by George R.R. MartinISBN-13: 978-0007447855At least George R. R. Martin is consistent. I didn’t really enjoy the second part of this book any more than the first. The Red Wedd…
-
A review of Zen and the Art of Motorcycle Maintenance
Zen and the Art of Motorcycle Maintenance by Robert PirsigISBN-13 : 978-0099786405 Zen and …
-
A review of Zen and the Art of Motorcycle Maintenance
Zen and the Art of Motorcycle Maintenance by Robert PirsigISBN-13 : 978-0099786405 Zen and …
-
Letter to my MP: using starvation as a weapon
Dear Ben Spencer, The behaviour of Hamas on 7th October and afterwards is inexcusable, and is rightly condemned by our government. I believe that the ongoing behaviour of the Israeli government in response to these attacks is inexcusable, and should be…
-
Unique versions as pitons out of Maven Dependency Hell
The whole Maven ecosystem, and more, follows the Semantic Versioning proposal from @mojombo who made a success of being right about most things. Even Oracle use it (no more ojdbc.jar for them). The problem Semantic Versioning addressed was th…
-
Unique versions as pitons out of Maven Dependency Hell
The whole Maven ecosystem, and more, follows the Semantic Versioning proposal from @mojombo who made a success of being right about most things. Even Oracle use it (no more ojdbc.jar for them). The problem Semantic Versioning addressed was th…
-
Santa Circles 0.3 is out!
Santa Circles 0.3 is all new and shiny! santacircles.artificialworlds.net (It’s a secret-santa-style gift exchange web site.) Don’t worry, it looks exactly how it did last year, except there is a tiny “Forgot password?” link you can click if you need …
-
Don’t forget to set the home directory for Emacs on Windows
I’m currently rebuilding my main Windows machine after it had become close to unusable. Given that I upgraded it multiple times from Windows 7 all the way to Windows 11 without ever reinstalling the OS, this shouldn’t have come as a major s…
-
How to install WSL on Windows 11 without a default distribution
On my Windows machine, I’ve mostly moved from using separate virtual machine products like Hyper-V or Virtualbox to have access to a Linux machine to using WSL. The PC is dual-boot with a separate Linux install anyway, but sometimes I just want t…
-
A Review: Prelude to Foundation by Isaac Asimov
Prelude To FoundationAsaac AsimovISBN-13 : 978-0008117481Although, as a child and teenager, I’ve heard an abridged audiobook many times and read Prelude to Foundation the first time more than two decades ago, I loved it more than I can describe and…