Go github.com

A Go backend framework for rapidly creating APIs and distributed systems

Encore uses static analysis and code generation to reduce the boilerplate you have to write, resulting in an extremely productive developer experience.

The list of superpowers is impressive, to say the least. I know gophers tend to be skittish when they’re approached by a framework, though, so I’d love to hear more about this project on Go Time

Productivity github.com

Calendso – an open source Calendly alternative

Let’s face it: Calendly and other scheduling tools are awesome. It made our lives massively easier. We’re using it for business meetings, seminars, yoga classes and even calls with our families. However, most tools are very limited in terms of control and customisations. That’s where Calendso comes in. Self-hosted or hosted by us. White-label by design. API-driven and ready to be deployed on your own domain. Full control of your events and data. Calendso is to Calendly what GitLab is to GitHub.

We’ve been happy Calendly users for years, but I do like the idea of white-labeling and hosting on our own domain. Calendso is built with Next, React, Tailwind, & Prisma.

Calendso – an open source Calendly alternative

Tooling tinytools.directory

A collection of open source, experimental, tiny tools

700+ hand-selected tools across a range of categories such as writing, productivity, pixel art, and more. The headline link goes to the web interface, but you can also get at in rendered Markdown on the GitHub Repo.

Although I’ve mostly also included ‘standards’, this list has a focus on artful tools & toys that are as fun to use as they are functional.

The goal of this list is to enable making entirely outside of closed production ecosystems or walled software gardens.

Retool Icon Retool – Sponsored

Running a safe database migration using Postgres

logged by @logbot permalink

From Peter Johnston on the Retool blog:

A few weeks ago, I unintentionally took Retool down for 2 minutes when an out-of-control database migration tried to rewrite a mission critical data table. As my teammate and I cleaned up the mess—caused by incorrectly using transactions in the migration—I reflected on my last few years working with Postgres (officially PostgreSQL) and the different lessons I’ve learned when it comes to writing a safe database migration.

Database migrations aren’t easy; a migration that runs totally fine on your laptop may cause problems in production due to increased data and traffic volumes. And every time your app goes down, so does customer trust and revenue.

Over the last 3 years, our team at Retool has navigated a few pitfalls and fixed major issues related to migrations in Postgres. This post will highlight key lessons learned and what you can do to avoid making the same mistakes.

Try Retool’s FREE tier ~> retool.com/changelog

Marko Živanović markozivanovic.com

Screw it, I'll host it myself

Marko Zivanovic has had enough of letting other people own his data:

Owning your data is more than just having backup copies of your digital information. It’s also about control and privacy. It’s about trust. I don’t know about you, but I don’t trust a lot of services with my data (the ones I do are few and far between).

How does he replace all those hosted services?

I created a simple diagram to roughly show how my personal setup works. Before you say anything – I’m aware that there’s a group of people that wouldn’t consider my self-hosting as pure self-hosting. I’m using Vultr to host my web-facing applications and not a server in my house. Unfortunately, the current situation doesn’t allow me to do that (yet).

This all looks like a lot of work to pull off, but maybe it’s worth it?

Screw it, I'll host it myself

Practices ericlathrop.com

Idempotence now prevents pain later

Idempotence is the property of a software that when run 1 or more times, it only has the effect of being run once. I’ll describe a process I’m making at work, and describe the problems that idempotence will help avoid.

This is a nice, simple example (charging dormant customers a monthly fee) of how a slight change to the way you tackle a feature can make it idempotent, which is most definitely something you want your software routines to be.

JavaScript github.com

A form validation library that borrows its syntax from unit testing

You may have heard my little rant about WET form validation logic on the latest episode of The Changelog. Well maybe you didn’t, but Evyatar did. It prompted him to reach out and let me know about Vest, his declarative validation framework:

The idea behind Vest is that your validations can be described as a ‘spec’ or a contract that reflects your form or feature structure. Your validations run in production, and they are framework agnostic - meaning Vest works well with React, Angular, Vue, or even without a framework at all.

I dig the syntax! Here’s a taste:

import vest, { test } from 'vest';

export default vest.create('user_form', (data = {}, currentField) => {
  vest.only(currentField);

  test('username', 'Username is required', () => {
    enforce(data.username).isNotEmpty();
  });

  test('username', 'Username is too short', () => {
    enforce(data.username).longerThanOrEquals(3);
  });
});

Now all we need is a tool that will inspect our server-side logic and generate the equivalent Vest code. 😉

Linode Icon Linode – Sponsored

How to Configure NGINX

logged by @logbot permalink

Do you need a crash course in the basic NGINX parameters and conventions? This guide from Linode had you covered. Here’s a sample…

Directives, Blocks, and ContextsPermalink — All NGINX configuration files are located in the /etc/nginx/ directory. The primary configuration file is /etc/nginx/nginx.conf.

Configuration options in NGINX are called directives. Directives are organized into groups known as blocks or contexts. The two terms are synonymous.

Lines preceded by a # character are comments and not interpreted by NGINX. Lines containing directives must end with a ; or NGINX will fail to load the configuration and report an error.

By the way, Linode’s docs are open source.

Learn a16z.com

The NFT Canon

The NFT Canon is a go-to resource for artists and creators, developers, corporations and institutions, communities and other organizations seeking to understand or do more with non-fungible tokens.

It’s a curated list of readings and resources on all things NFTs (inspired by the a16z Crypto Canon), and is organized from the big picture of what NFTs are and why they matter, to how to mint, collect, and do more with them — including various applications such as art, music, gaming, social tokens, and others.

We will continue to update this as more people try out new things, share their work, or publish resources for learning about NFTs. If you have suggestions for quality pieces to add, let us know @a16z.

A good resource and primer for our upcoming NFT episode of The Changelog with Mikeal Rogers.

Evgenii Ponomarev evgenii.info

How to deal with pushback to your initiatives

This article covers three main reasons why other engineers may reject your technical initiative (such as refactoring, changing methodologies or switching tools):

  1. The proposed goals look unattainable
  2. They tried the first version and they didn’t like it
  3. They don’t agree that the problem is worth solving

For each of these reasons, there are tips you can use to drive your initiative forward.

Coronavirus github.com

A bot to notify you when vaccine appointments are available

Supports checking Hy-Vee, Cosentino’s stores (KC), Ball’s stores (KC), Rapid Test KC, and locations checked by VaccineSpotter (including Walmart, Walgreens, CVS, Costco).

Supports sending notifications to Slack, Discord, Microsoft Teams, Twilio, and Twitter.

Notifications are sent when a location has appointments. No more notifications are sent for that location until it becomes unavailable again.

0:00 / 0:00