Monthlog 03: January 2020
- 1928 words
- 10 min
Happy New Year!
This is the 03 installment in my 'Monthlog' - a public list of blog posts, announcements, software, libraries, videos and podcasts that catch my attention each month. I hope that regular readers will skim through the listings and find one, or multiple, things that pique their interest.
Note: Posts are not ordered in any particular way. If you find an article you think I might like, send it to me via one of the messaging channels on my homepage.
John Calhoun: Why Can't we Settle on a Single Application Structure In Go - If you are new to go, within your first 50 to 200 hours, this blog post will help you understand some basics of Go project structuring. The first in a series that covers various common Go repository structures.
Pull Based CD Pipelines for Security - Kubernetes focused but general to most CICD processes. Encourages replacing automated CD deployments reliant on a push to Docker, K8s, etc. with a GitOps based pull. Discussion on r/kubernetes
Happy Nu Year: Nushell's Year in Review - An overview of where Nushell started and where it's heading.
Nushell v0.8 - Various improvements, notably all calls of
.unwrap() have been removed which should make Nushell less prone to panics and more graceful in error handling.
Discussion or r/rust
Financial Plan - Spotted in HN new. A short post with some interesting details on retirement planning and income maximization as a Software Engineer.
Want to make good business decisions? Learn causality - Understand causality and what it means for making informed decisions. Discussion on HN
Grafana: Introducing Tanka - Grafana announces a new Kubernetes configuration definition tool, an alternative to Helm. There's so much going on with Kubernetes. I used Kubernetes, Istio, and Helm back in 2018 and the beginning of 2019, but have since dropped the cluster as I moved to serverless. It feels like so much is changing, things are getting simpler, and Kubernetes itself is stabilizing, but the best practices for things like configuration definitions are still evolving. Discussion on HN
Five Years of Btrfs - Always interested to see updates on the CoW (Copy on Write) Cold War between ZFS, Btrfs and to a lesser extent, XFS. I've been running Btrfs on a single Nvme drive in an Intel NUC for about 7 months now without issue, I have really enjoyed the process and the subvolume features are quite useful. I'd recommend checking out Btrfs for any new desktop or server Linux installs. Discussion on HN
Atlassian: Git Flow Workflow - The Git Flow workflow. I've used this heavily before for many of my personal projects, decided recently to brush up on the workflow. I personally enjoy the develop vs master separation and I think it makes a lot of sense in terms of minimizing merge conflicts and allowing earlier merges into the cutting edge tree.
Six Famous Companies Using Elixir - I gave Elixir a go in late 2018 and found it to be quite an interesting and easy to use language. Seeing how some top companies, including Pinterest, use Elixir in production lends credibility to the production readiness of the language. Discussion on r/elixir
The Actix Web drama
Those of you familiar with Rust or following the r/rust subreddit will have noticed the apparent drama surrounding Actix Web.
Through the second half of January a chain of blog posts, Github issues, and Reddit discussions stirred up a heated discussion surrounding the use of Rust's
unsafe mechanism within the Actix project.
In particular, people in the Rust community were disappointed by the author's decision to close pull requests that aimed to make Actix safer by avoiding undefined behavior (UB).
The issue eventually came to a resolution, but I think it's a great case study to remember and a lesson for everyone involved in consuming or maintaining open source projects.
The following blog posts are in chronological order.
Smoke-testing Rust HTTP Clients - It begins. By this point in time, there had been a few minor controversies surrounding Actix Web. This post highlighted the issues of insecurity and, mostly unintentionally, kicked off the most recent round of Actix Web drama. Discussion on r/rust
The Actix Web Repository is Cleared - The Actix Web author, after enduring a few unnecessary and entirely unhelpful personal attacks, decided to delete the Actix repos.
A sad day for Rust - This post from Steve Klabnik does a brilliant job of highlighting the general struggles of open source, through the lens of the unfolding Actix Web situation. Discussion on r/rust
The Future of Actix Web - The Actix Web author decides to forge a path forward for the project. A new maintainer is announced. Discussion on r/rust
Microservices: A Retrospective - One of the greatest presentations I have seen on the state of and history of microservices. It provides a critical analysis of the proposed benefits of Microservices and the ways in which those implementing Microservice architectures have often failed to achieve those benefits. I absolutely love this talk.
Microservices + Events + Docker = A Perfect Trio - Rewatching this a year after my first viewing. Even if you're not implementing microservices or have no interest in learning about them, microservices can teach you a lot about best practice software development techniques, particularly for achieving scale.
Invest Like the Best: Investing Pre-Company w/ Matt Clifford - I had never heard of this type of investing, providing a grant to individuals before they have a business or even an idea. Great thoughts on the value individuals can bring even though they may lack a solid plan.
All Hands on Tech: Why 2020 is the year of Kubernetes w/ Kelsey Hightower - Relatively short, compared to the next two. A higher level conversation surrounding the evolution of Kubernetes and the value it currently provides to those who chose to run it.
Software Engineering Daily: Kubernetes Progress w/ Kelsey Hightower - 1 hour long and touching on all things Kubernetes with Kelsey's unique perspective from the Google Cloud Side.
Go Time: Cloudy with a chance of Kelsey Hightower - Kelsey's doing the rounds this month. The most laidback of the four Kelseycasts, general ideas around the design of Kubernetes. I'm starting to feel like Kubernetes is the operating system of the compute cloud.
Software Engineering Daily: Kubernetes Progress w/ Kelsey Hightower - Another one. I have no idea why I listened to 4 hours of Kelsey Hightower talking about Kubernetes.
Software Engineering Daily: Amazon EC2 w/ Dave Brown - A great look at the history of some Amazon Compute products and how cloud providers optimize VM's and minimize latency.
Software and Libraries
htmlq - 'Like jq, but for HTML.' Enables querying HTML by selectors like id and tag. Has not been updated in 8 months. Written in Rust.
The Unison Programming Language - A really interesting new language that provides one killer, as far as I know, previously unseen feature. I don't think this language will go mainstream but some of the ideas pioneered here might make it into future mainstream languages. The scratch based code editing, ie. you have no code directory, completely changes the developer ergonomics and, in my mind, poses the largest barrier to adoption of this language. Discussion on HN
Tanka - 'Flexible, reusable and concise configuration for Kubernetes.' From Grafana, announcement linked above. If I need to start back up a Kubernetes cluster I'll definitely look at this vs Helm. Grafana is a tool I love and Grafana has also put out a lot of great open-source tools recently such as Loki. It will be interesting to see whether this can garner any adoption. See tanka.dev
Tonic: Rust GRPC with Async/Await - Amazing to see usable and fast Rust libraries using async/await. It sounds like a lot of people are waiting on better async/await based libraries to make the leap to full Rust on the server. Tonic releasing as v0.1 with async/await is going to change the game. v0.1 Announcement. Discussion on r/rust
BoringTun - 'Userspace WireGuard® Implementation in Rust.' Cloudflare is definitely embracing Rust and Open Source. Wireguard is great, I use it, and the potential improvements that might come from a Rust based implementation, over the default wireguard-go userspace implementation, seem worthwhile. Progress seems to have ceased since November 2019.
Slog - 'Structured, contextual, extensible, composable logging for Rust' Having spent a lot of time writing Go over the past few years, I began to look for a configurable logger a bit like logrus. Slog seems to be a standout, with 808 stars.
Cargo Lichking - 'Automated license checking for Rust.
cargo lichking is a Cargo subcommand that checks licensing information for dependencies.'
License checking is always a pain but an important part of open sourcing any project, this tool seems to make Rust license checking easier.
Recommended Sources to Follow
Below are a few media sources and voices I follow.
- Matthias Endler: Rust developer and host of 'Hello, Rust!'
- Paul Graham: Member of YC, offers insightful well written posts about business and software.
- Victor Zhou: Recent Princeton CS Graduate publishing informative guides with some focus on Machine Learning.
- Francesc Campoy: Gopher and JustForFunc host.
- Deterministic.Space - Pascal Hertleif's blog (g/KillerCup): Mostly Rust stuff.
- This Week In Rust - Rust news every week.
- EthHub Weekly - Weekly Ethereum updates, a quick paragraph summarising each headline.
- The Changelog: 'Conversations with the hackers, leaders, and innovators of software development.'
- Software Engineering Daily: Daily conversations covering anything Software Development related.
- Linux Unplugged: A Jupiter Broadcasting show. Relaxed, focused on Linux but touches on all things Unix and Open Source.
- Invest Like the Best: Finance and investing podcast often featuring Crypto.
- Y Combinator: Conversations with Y Combinator founders.
- Into the Ether: 'Focusing on all things Ethereum, the leading blockchain for decentralized applications.'