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.

Image for post
Image for post

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 install anything. …

Coding literacy is only part of the story

Image for post
Image for post

Let’s get one thing out of the way: You (or your children) do not need to know how to code. In fact, many of the products people will try to sell you in the name of code literacy are really just glorified games. They can be fun. You’ll probably learn something. But they won’t help you to write code any more than solving crosswords teaches you how to write a novel.

Maybe you think that understanding code is crucial because our world revolves around algorithms that are constantly making broad, life-shaping decisions for us, usually without telling us what they’re doing. And that’s true! But learning to write code is at best a complementary art to understanding the ways that technology rules our lives. If you’re coming from a non-technical background, you might get just as much insight — or more — from books that explain technologies like artificial intelligence, or reporting that studies the rabbit hole effect and filter bubbles. If you just want to understand how wafers of silicone and 1s and 0s eventually come to life as functioning hardware and, eventually, Fortnite, this book by legendary developer Charles Petzold lays it out without skipping the hard parts. …

There’s a right way and a wrong way to make copies of custom objects

Image for post
Image for post

It should be simple. You have a small object. Maybe something like this, defined here with object literal syntax:

const student = {
studentId: '445-13-196',
firstName: 'Tazie,
lastName: 'Yang',
dateOfBirth: new Date(1995, 8, 15)

Let’s say you want to make an exact duplicate. You already know that you can’t just copy your object to a new variable:

// This is doomed to fail
const studentCopy = student;

After all, custom objects in JavaScript are reference types. (There are no C-like structs.) When you assign one object variable to another, you simply copy the reference. …

Microsoft is planning its next release in the open

Image for post
Image for post
The fog recedes

Much has been written about .NET 5 — the final step in Microsoft’s quest to rebuild .NET as a cross-platform, open-source project. But .NET 5 was also the first step in something else — Microsoft’s new release cadence. For the foreseeable future, Microsoft promises us a new version of .NET every November, every year.

The most significant goals for .NET 6 are already set. Many of them target improvements that didn’t make it into .NET 5, like a next-generation Xamarin that lowers the barriers between desktop and native mobile development, and better integration between the many different Windows UI toolkits. …

It’s that time of year again, when we toast 2020 and look forward to 2021. This year, I suspect we’ll do more of the latter than the former.

Over at Young Coder, we released some blazingly popular reads in 2020. Here are the ones that topped the charts:

  1. This year’s runaway success was Mozilla: The Greatest Tech Company Left Behind. It’s the story of how we’re losing one of the most influential tech companies of the past two decades.
  2. As software developers, we sometimes spend so much time keeping up with the new that we forget to learn from the past.

Open-source software for .NET still lingers under Microsoft’s long shadow

Image for post
Image for post

Most of the time, .NET is my platform of choice. It’s versatile, consistent, and well-tooled. It’s rarely glamorous. Yes, we get excited about the latest C# innovation, and there are occasional hot technologies (Blazor now, Silverlight in the distant past). But if a hotshot developer says .NET is a for people who work at banks — well, they’re not entirely wrong.

There’s nothing wrong with being boring sometimes. Line-of-business applications run the world. But it becomes a problem when the corporate side of Microsoft technology gets in the way of the progress we really want to see. …

Why I treat some of JavaScript’s OOP features with extreme caution

Image for post
Image for post

There’s no shortage of programming languages in the world. There are old-fashioned procedural languages (like COBOL), and classic object-oriented languages (like Java). There are functional languages — very on-trend right now — and multiparadigm languages like C#, which give you a certain amount of flexibility to choose.

And then there are confused languages, like JavaScript.

Too harsh? How else to describe a language that survived for 15 wildly successful years and then — a mere 5 years ago — abruptly added classes to the language?

I know what you’re thinking. Classes are just syntactic sugar. JavaScript is all about prototypes under the covers, and classes are just a bit of window dressing to satisfy the object-lovers. And that’s true, up to a point. But in practice, the introduction of classes gave us two overlapping models with uneven support. Were you in the habit of using closures to store private data in a constructor function pre-ES6? Then you might have a hard time with classes, which currently have no native support for private members. Used to creating property procedures with defineProperty()? Well, now you have property procedures which neatly wrap some of that functionality, but not all of it. Want to create custom objects with inheritance hierarchies? …

Hidden meanings for your favorite programming terms

Image for post
Image for post
© Young Coder

Sooner or later, most developers discover that a little bit of jargon goes a long way. Why call someone’s code good when you can say it’s clean or elegant? Why complain that the boss is rambling off-topic when you can just say that they’re raising an orthogonal issue? (It’s low-key shade, and it burnishes your geek credentials.)

In other words, a few carefully chosen codewords can go a long way.

This is the dark power of tech jargon. Programming terms don’t always mean what they’re supposed to mean. Like when the VP of engineering looks at your code and asks why it’s stateful when she really means Why is this bad? Or when they ask you, on Friday evening, what the test coverage is for the brilliant code routine you just wrote, which really means Are you working on the weekend?

Modern techniques that don’t have hidden pain points

Image for post
Image for post

Plenty has changed in JavaScript over the last five years, and the humble array is the perfect example. We used to spend our time writing iterative logic with loops and flags, hunting for values, or laboriously copying elements from one array to another. Now, destructuring, spread syntax, and a neat set of modern methods that use function-based processing. Applied well, these features can help us write clearer, more concise code — code that’s more likely to survive future cycles of development without accruing difficult-to-spot bugs. Applied poorly, and it’s just a mishmash of new buzzwords and old habits.

Recently, I’ve written about my work to update some creaky JavaScript from years past. Surprisingly, modernizing the array-handling code has been the most fun. Here are some of the techniques I’ve used. …

Microsoft made big promises about its dramatic platform reboot. So how did they do?

Image for post
Image for post
Photo by PxHere

In a year full of unexpected disruptions, you could be excused if you missed Microsoft’s massive milestone. But here were are — as of November 10th, .NET 5 is an official release, replacing both .NET Core and the .NET Framework.

As we explained last year, .NET 5 isn’t just a bundle of new features. It’s the conclusion of a major effort to port .NET to a cross-platform, open source architecture. Essentially, it’s a mission to rebuild .NET, without disrupting the developers who currently rely on it for mature, deployed applications. The change isn’t without risk. …


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