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

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

Microsoft spent 7 years trying take over the design world. Few remember.

Image for post
Image for post
Today, a commemorative t-shirt is all that remains of Expression Studio

Every good tech company watches its competitors closely, searching for innovations that might overturn the current order. And if anyone holds the Silicon Valley record for corporate paranoia, it’s Microsoft. In the fifty years since the company was established, they’ve never stopped nervously eyeing their competitors, and rushing out new products to try to steal emerging niches.

Sometimes Microsoft failed, but mostly they succeeded. In the distant 1980s, when booting up a computer was a thumb-tapping ritual of patience, Microsoft conquered software pioneers WordPerfect, Lotus, and Harvard Graphics, because office software was where the business customers were. In the 1990s, they launched the mediocre Internet Explorer browser and ruled the web with it for years, because Netscape had mused about a world of browser-based computers that wouldn’t need Microsoft operating systems. In the early 2000s, Microsoft shadowed Sony and introduced the Xbox, just in case the future world would revolve around gaming systems and entertainment rooms. …


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