Encore uses static analysis and code generation to reduce the boilerplate you have to write, resulting in an extremely productive developer experience.
Lip Gloss takes an expressive, declarative approach to terminal rendering. Users familiar with CSS will feel at home with Lip Gloss.
I love how much love is going in to terminal UIs these days 👏
Mat Ryer just finished a complete rewrite of his popular BitBar mac menu bar appusing Wails (which you may have heard about on Go Time) and there are hundreds of pre-built plugins for you to choose from. ✨
I wouldn’t advise obsessing over your GitHub stats, but if you’re going to do it anyway… might as well do it with this rad looking terminal UI! 😆
In other jobs, we’ve used docker and it’s worked out just fine (for the most part… there was that time the RedHat filesystem on our prod server got mysteriously hosed – maybe it wasn’t docker’s fault.) But no, the reason we don’t use docker is because we don’t need it. Literally. Writing golang web services and static html embedded with with golang 1.16’s new //embed directive, we end up with a single deployable binary.
As a self-sustaining startup, we have limited resources to devote to tasks. We chose golang exactly for this reason. It sure would be nice if we could spend a couple weeks building the perfect CI/CD pipeline, an elegant deployment process, along with pretty dashboards. But we have software we need to ship in order to get users in order to drive subscriptions. Anything that doesn’t directly serve that goal is a complication. So at best, docker is a complication. A 9 million LoC complication that brings its own bugs and its own idiosyncrasies.
I’m not here to tell you whether or not you should use Docker. I don’t know what you should do. What I do know, is that you (all) need to make your own decisions based on your needs.
That’s why I like this piece by the team behind MeeZee Workouts. They share their decision and why they made it. Add this to your knowledge base for your next big decision.
Authelia is an open-source authentication and authorization server providing 2-factor authentication and single sign-on (SSO) for your applications via a web portal. It acts as a companion of reverse proxies like nginx, Traefik or HAProxy to let them know whether queries should pass through. Unauthenticated users are redirected to Authelia Sign-in portal instead.
The new release of Owncast –the self-hosted, open source live streaming server– opened up its first set of 3rd party APIs. So not only can you run your own live streams and own your content, but you can build bots, integrate it in to 3rd party services and be super creative in encouraging chat engagement in new ways.
Looks pretty slick.
Imagine a world where Git and MySQL got together and had a baby. They would name that baby, Dolt.
Dolt is a SQL database that you can fork, clone, branch, merge, push and pull just like a git repository. Connect to Dolt just like any MySQL database to run queries or update the data using SQL commands. Use the command line interface to import CSV files, commit your changes, push them to a remote, or merge your teammate’s changes.
All the commands you know for Git work exactly the same for Dolt. Git versions files, Dolt versions tables.
The authors also created DoltHub where you can host and share your Dolt databases.
While I was trying to identify why my-Go-based project took more than three times to execute than a similar Bash script (for a code-path that amounted to just a few
stderr writes), I found that many of the Go packages (including some in the built-in library) have quite “heavy” static initializers, which due to how Go initialization works are always executed regardless if I use them for a particular code-path or not.
Also, with the newly introduced
GODEBUG=inittrace=1 in Go 1.16 developers can now investigate the cost of static initializers of their dependencies, thus I wanted to raise the awareness of this issue.
Go Time’s Mat Ryer breaks out the acoustic for all the Generics haters out there:
A musical message for #golang people thinking of leaving because the Go Generics proposal was official accepted. (Spoof of You’ll Be Back from Hamilton.)
If you like this, you’ll be happy to hear we
conned invited Mat on to JS Party this week and threatened him asked him to create some jingles for our regular segments. If you don’t like it, please travel back in time and skip that last sentence.
monsoon is a so-called command-line HTTP enumerator: A tool that iterates over a list of values, for example a word list or a range of integers, and sends one HTTP request per item towards a given server.
The team behind monsoon enumerated some common examples in their introductory blog post.
MacDriver is a toolkit for working with Apple/Mac APIs and frameworks in Go
It’s made of 3 layers: bindings for Objective-C, framework packages like
webkit, and a bridge system that makes it easier to integrate with native macOS systems like menus, windows, etc, in a separate process. Lots to like here!
Now you can live that Terminal Life and that WSB Life at the exact same time. 👌
With walrus, you can backup services like MySQL, PostgreSQL, Redis, etcd or a complete directory with a short interval and low overhead. It supports AWS S3, digitalocean spaces and any S3-compatible object storage service.
One of the main problems a database storage engine has to solve is how to deal with data in disk that is bigger than the available memory. A way databases solve this issue is through memory-mapped files and a system call called mmap. Discover what mmap is and how you can make use of it in Go.
SMTP should be blocked on public networks.
Email technology offers no effective means to stop phishing, so it’s been a runaway success for the attackers, and a disaster for millions of victims.
Sunsetting SMTP is clearly necessary and feasible. So, I’ve drafted a protocol called TMTP and I’d like to tell you about it.
JuiceFS is an open-source POSIX file system built on top of Redis and object storage (e.g. Amazon S3), designed and optimized for cloud native environment. By using the widely adopted Redis and S3 as the persistent storage, JuiceFS serves as a stateless middleware to enable many applications to share data easily.
NPM provides an easy way to publish and distribute Node JS packages for both code dependencies as well as global command-line tools. This article demonstrates how it can be used to publish and distribute binaries written in Golang.
Smug automates your tmux workflow. You can create a single configuration file, and smug will create all required windows and panes from it.
This is inspired by tmuxinator, which I’ve been using for years but has gotten a bit flaky on me with recent macOS upgrades. I can highly recommend the overall workflow, and will be giving this a try real soon. 💯
sops is an editor of encrypted files that supports YAML, JSON, ENV, INI and BINARY formats and encrypts with AWS KMS, GCP KMS, Azure Key Vault and PGP.
k6 is a modern load testing tool, building on Load Impact’s years of experience in the load and performance testing industry. It provides a clean, approachable scripting API, local and cloud execution, and flexible configuration.
We are in a time where the open source tooling and developer story around Apple’s new M1 chip is all over our feeds. Among these was this interesting benchmark. It even highlights where a somewhat older Intel can still beat the M1, such as highly optimized crypto. In general, if your code relies on the Go parts more than native optimized code the M1 looks like a performance win.
Maddy Mail Server implements all functionality required to run an email server. It can send messages via SMTP (works as MTA), accept messages via SMTP (works as MX) and store messages while providing access to them via IMAP. In addition to that it implements auxiliary protocols that are mandatory to keep email reasonably secure (DKIM, SPF, DMARC, DANE, MTA-STS).
It replaces Postfix, Dovecot, OpenDKIM, OpenSPF, OpenDMARC and more with one daemon with uniform configuration and minimal maintenance cost.
IMAP storage is still in beta, but this is one to watch as it could dramatically simplify your infrastructure.