6 April 2021

58 links · Tuesday

Your E-Mail Validation Logic is Wrong

Nope, you don't know how to validate an email address. Even if you think you'd get the domain part right, fuggeddabout the local part. Seriously.

The Three Un’s of Successful Founders

I’ve worked with scores of founders and companies over the years and I’ve come to make bright-line distinction between founders and managers.  Let me demonstrate it with a story. One da…

Portable Internet Behavior Bond

Makers of free apps, including apps with a free plan or trial period, are forced to spend an inordinate amount of time fighting abuse of their services. Twitter has to fight spam bots, multiplayer games deal with cheaters, dev platforms have people scamming CP…

Assembling An Atomic Brain?

As so neatly lampooned by xkcd, physicists have a reputation for being just a little reductionist at times. It’s a well-deserved critique in many cases — some sub-fields of our subject …

4 Non-standard Ways to Fix N+1 Queries in Rails

I'm not sure if the world needed another post about N+1 queries in Ruby on Rails. To make up for the cliche topic, I'll describe less common solutions to this problem. Read on if you want to learn how to reduce the number of cascading N+1 SQL queries without u…

How I Use My Free Azure Credit 💸

Microsoft has a program for all engineer employees to get some free Azure credit to play with. Having been with Microsoft for two summer internships I have accumulated two separate accounts with $150 of credit/month each. Growing up pinching pennies, I am not …

The Fastest, Safest PNG Decoder in the World

Summary: Wuffs’ PNG image decoder is memory-safe but can also clock between 1.22x and 2.75x faster than libpng, the widely used open source C implementation. It’s also faster than the libspng, lodepng and stb_image C libraries as well as the most popular Go an…

Programming is hard

Most beginners in programming eventually end up with the same ingratiating message: „Programming is easy, everyone can do it”, with some threatening message that people doing the gatekeeping should stop doing that. I’m here to tell you that that is not true. P…

Help us test payments in Signal

The latest Signal betas are rolling out today. Inside, you’ll find performance enhancements, a slew of bug fixes, improvements to the mute settings, and if you’re in the United Kingdom, you’ll see support for Signal Payments – a new feature that enables you to…

AsynkronIT/protoactor-dotnet

Proto Actor - Ultra fast distributed actors for Go, C# and Java/Kotlin - AsynkronIT/protoactor-dotnet

.NET April 2021 Updates – 5.0.5 | .NET Blog

Today, we are releasing the .NET April 2021 Updates. These updates contains reliability and other non-security improvements. See the individual release notes for details on updated packages. You can download 5.0.5 versions for Windows, macOS, and Linux, for x8…

Laying Out Pages | Web Browser Engineering

So far, layout has been a linear process that handles open tags and and close tags independently. But web pages are trees, and look like them: borders and backgrounds visually nest inside one another. To support that, this chapter switches to tree-based layout…

Local Development with Azure Service Bus

For teams new to Azure Service Bus, one of the first questions you have to answer is "how do I develop against this?" And it turns out the answer isn't that straightforward - because it's currently impossible to run Azure Service Bus outside of Azure. There's …

10 Things I Hate About PostgreSQL

Over the last few years, the software development community’s love affair with the popular open-source relational database has reached a…

C++ coroutines: Building a result holder for movable types | The Old New Thing

One of the pieces we need for the simple_promise we use to construct a coroutine is what we have been calling the “result holder”. This is basically a variant that starts out empty, and can atomically transition to holding either the result of a successful cor…

"I'll Finish It This Week" And Other Lies

A small group of postdocs, graduate students, and undergraduates inadvertently formed a longitudinal study contrasting expected productivity levels with actual productivity levels. Over the last nine months, our group self-reported 559 tasks, dates, and comple…

C# 9 pattern matching - Red Hat Developer

Discover new features for pattern matching in C# 9, including support for combining patterns in both if and switch, nesting patterns, and more.

Have I Been Facebooked?

Have I Been Facebooked? Check if your data was part of the Facebook April 2021 breach.

Dependency Injection Explained - Brian Lagunas

In today’s stream, I talk about the basics of dependency injection. Dependency injection is a very common software design pattern that implements inversion of control for resolving dependencies. What is a dependency? A dependency is an object that another obje…

Static methods considered evil?

Are static methods good or bad? Over the course of my career I did a full circle on this topic. In this article, I’ll try to describe this evolution and the reasoning behind it.

Announcing TypeScript 4.3 Beta | TypeScript

Today we’re excited to announce our Beta of TypeScript 4.3! To get started using the beta, you can get it through NuGet, or use npm with the following command: npm install typescript@beta You can also get editor support by Downloading for Visual Studio 2019/20…

Whiteboard-style Coding Interviews Might Not Be as Bad as You Think

Whiteboard-style coding interviews has a bad reputation, and within the software industry they are being perceived as "bad interview practice" in general. Despite this perception, many companies still hire software engineers through this interviewing process. …

ASP.NET Forums are Moving to Microsoft Q&A

We’ve listened to your feedback on how we can enhance the forum experience and bring together all .NET products into one unified platform. We are excited to announce Microsoft Q&A for .NET , in...

Predictive Coding has been Unified with Backpropagation - LessWrong

Artificial Neural Networks (ANNs) are based around the backpropagation algorithm. The backpropagation algorithm allows you to perform gradient descent on a network of neurons. When we feed training data through an ANNs, we use the backpropagation algorithm to …