Here’s something useful for any young person in your life. (Or something useful for yourself, if you’ve ever said “Explain it to me like I’m 10.”)

I’ve just released A Tiny Introduction to JavaScript, a free PDF ebook that teaches kids how to code.

Here’s what makes this book unique:

  • It’s 100% free. (Or pay-what-you-can, if you’re in a particularly generous mood.)
  • It teaches real JavaScript code. There’s no walking zombies through a maze or edu-tainment here.
  • Each chapter is built out of tiny examples. And all the examples are in online CodePen projects. That means you don’t need to…

Microsoft loves Linux, but won’t make the investment for desktop apps

It’s tempting to see the history of Microsoft and the open-source Linux operating system as the story of two sworn enemies cautiously making peace. Microsoft — the company that once called Linux a cancer run by communists — has spent the better part of the last decade boosting the open-source ecosystem. They’ve welcomed Linux into programming tools like VS Code, cloud environments like Azure, and server products like SQL Server. …

Two reasons that it is, and one reason that it isn’t

Love it or hate it, Visual Basic was an iconic programming language that changed the idea of who can write code. I say was, because even though Visual Basic is still alive, it’s slid into a sad twilight period of minimal innovation and gradual irrelevance. And while Microsoft is investing in several thriving languages (C#, TypeScript, and F# come to mind), it no longer seems interested in pursuing Bill Gates’ old dream of a programming language for non-specialists.

Back when VB was thriving, it was often singled out as a good starting place for beginners. Today, if you ask what…

Don’t let lazy evaluation trip up your JavaScript logging code

Made with Icons8

Let’s start with something straightforward. Here’s a JavaScript snippet that creates a small array of numbers, then changes it. The array is logged to the console, both before and after the change:

const numbers = [2, 3, 4, 5];
// Square the numbers
for (let i = 0; i<numbers.length; i++) {
numbers[i] = numbers[i]**2;

A more careful approach would use to process the array instead of a for...of loop. (That way your changes would be applied, non-destructively, to a new array.) But there’s a reason I’ve chosen this approach. …

How Project Reunion, WinUI, and .NET MAUI fit together

Microsoft’s erratic product naming strategy is legendary. My favorite example is Microsoft account, with its hodgepodge of company brands. (It was Microsoft Passport, then .NET Passport, then Microsoft Passport Network, then Windows Live ID. I may have missed a few.)

I’d like to say that — somewhere on the way to reinventing itself with a collection of cross-platform, open-source developer products — Microsoft changed its ways. But that would be wishful thinking. And nowhere is the problem clearer than in the world of Windows apps, where .NET 6 is poised to add even more buzzwords to an already crowded field…

Do old programmers really fall out of favor?

Made with Icons8

You’ve probably heard the stories. Developers that can’t get their resumes read… until they lop off their old work history. Uneasy relationships between coders and the hip managers that are a couple of decades younger. Developers being sidelined by young teams when they don’t commit to red-eye coding assignments. Skilled programmers moving into management just to protect their careers. Plastic surgery (!) to hide the evidence of life’s vicissitudes.

But take away the hysteria, and what’s left — an expansive problem that spans the entire tech industry, or just a small subset of ordinary human politics and bad behavior?

The big picture


Microsoft’s C# language debate reveals some interesting ideas

One of the perennial benefits of open-source software is being able to watch software projects evolve in real time. The C# language is no exception. You can follow its steady forward march on GitHub, and explore its current set of candidate features.

Now, before we go any deeper into the future of C#, it’s important to note the usual disclaimers. These features are all under active discussion, and there’s no guarantee that C# 10 is the version where they’ll appear. …

What if we wrote the honest truth about software development?

It’s been nearly a decade since massive technical books ruled the programming world. Back then, 1,000 pages of dead tree pulp was the most logical way to learn about a new technology (and impress other developers with your office bookshelf). It didn’t hurt if you needed to prop open a janky door, either.

Microsoft is serious about expanding Blazor’s reach

Not long ago, Blazor WebAssembly — Microsoft’s runtime for C# in a web browser—was just a creative experiment. Coming from Microsoft, a business that’s abandoned more interesting ideas than most companies have ever created, it was hard to know what to expect. But then Blazor graduated to a real project, then a production-ready release, and all in record time. And now it looks like more experiments from Steve Sanderson’s blog are about to make a similar leap. This time, the excitement surrounds a just-announced product called Blazor Desktop.

It all started in mid-February, when Microsoft released the first preview of…

Don’t get tied up by these multithreading myths

Master of multiple threads

Multithreading — the act of doing different work at the same time, either on different CPUs or in tiny slivers of time on the same CPU — is notoriously tricky. In a desktop environment with a language like Java or C#, you need to carefully guard against different threads changing the same bits of data at once, or — almost as bad — one thread stalling while another thread locks a shared object.

But JavaScript isn’t like that. It forces you to use carefully regimented asynchronous patterns. You can’t spin up threads on your own or shut them down. …

Matthew MacDonald

Teacher, coder, long-ago Microsoft MVP. Author of heavy books. Join Young Coder for a creative take on science and technology. Queries:

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store