Good reads
2023-01-29 Davide's Code and Architecture Notes - Server-side caching strategies: how do they work? - Code4IT
Cache-aside: cache and DB do NOT interact
Read-through: the cache knows how to query the DB
Write-through: the cache can write on the DB SYNCHRONOUSLY
Write-behind: the cache can write on the DB ASYNCHRONOUSLY
Further readings:
This whole article exists thanks to another interesting blog post I recently read and decided to extend a bit:
🔗 Caching Strategies In Practice | Rajeev
Both AWS and Azure provide a way to use caching on their systems.
AWS's caching functionality is called ElastiCache. They have published a nice guide of best practices for using distributed cache:
Similarly, Azure gives you a Redis instance. And they have also published their set of best practices:
🔗 Caching guidance | Microsoft Docs
Then, Alachisoft, the creators of NCache, has a nice section you might want to read.
🔗 Benefits of Read-through & Write-through over Cache-aside | Alachisoft
Finally, we've already talked about Caching in .NET: in particular, we've learned how to use the Decorator design pattern to add a caching layer to our applications:
🔗 How to add a caching layer in .NET 5 with Decorator pattern and Scrutor
This article first appeared on Code4IT 🐧
2023-01-26 Resilience and Waste in Software Teams – Jessitron
Keeping libraries and components up-to-date, keeping code readable, updating our automations, improving our observability, bringing other developers up to speed– these are a few of the tasks developers need to do regularly. Any one of these tasks could have no noticeable impact in the future, and any one of them could prevent the next big security incident. The most likely outcome of each is a smoothing of future work, a decrease in unpleasant surprise.
Last time I implemented a feature in the Honeycomb UI, I needed some React functionality that was only in the latest version. I looked at our package.json, and lo! We were on the latest version! I rejoiced, and my work proceeded.
Many of these tasks don’t make it onto the roadmap, because when I look at the overhead of creating a ticket, discussing it in planning, advocating for it–then I can’t. It isn’t worth that. I can’t justify any particular one. Instead, these are best done as we go. Oh look, this test is in the old framework, let’s update it. This name confused me, let’s change it. In the kitchen, I always wash the knives and put them away immediately as soon as I’m done chopping.
2023-02-04 I Hired 5 People to Sit Behind Me and Make Me Productive for a Month — Simon Berens
I decided it was time to try the nuclear option: having people physically sit behind me to keep me on task. And if I was going to do that I was going to do it right: they’d be there 16 hours a day and only leave for me to sleep. (I have an endlessly growing list of projects I want to make, books I want to read, and skills I want to learn, so productivity means a lot to me!)
2023-01-18 20 Things I've Learned in my 20 Years as a Software Engineer - Simple Thread
- I still don’t know very much
- The hardest part of software is building the right thing
- The best software engineers think like designers
- The best code is no code, or code you don’t have to maintain
- Software is a means to an end
- Sometimes you have to stop sharpening the saw, and just start cutting shit
- If you don’t have a good grasp of the universe of what’s possible, you can’t design a good system
- Every system eventually sucks, get over it
- Nobody asks “why” enough
- We should be far more focused on avoiding 0.1x programmers than finding 10x programmers
- One of the biggest differences between a senior engineer and a junior engineer is that they’ve formed opinions about the way things should be
- People don’t really want innovation
- Your data is the most important part of your system
- Look for technological sharks
- Don’t mistake humility for ignorance
- Software engineers should write regularly
- Keep your processes as lean as possible
- Software engineers, like all humans, need to feel ownership
- Interviews are almost worthless for telling how good of a team member someone will be
- Always strive to build a smaller system
Wow!
2023-02-02 Easter egg in flight path of last 747 delivery flight
Games
2023-01-20 Ain't it funny how the knight moves?
Retro
2023-01-29 A Calculated Move: Calculators Now Emulated at Internet Archive - Internet Archive Blogs
The X-Files
2023-02-02 Google layoffs Jan 20, 2023- California WARN public records
2023-01-18 What explains recent tech layoffs, and why should we be worried? Stanford News
jonathankoren: They’re laying people off because it’s cool to lay people off. Layoffs are social, not economical.
Videos
2023-02-05 Handling JWTs: Understanding Common Pitfalls - Bruce MacDonald, InfraHQ - YouTube
Ensure that the JWT is:
- signed with a strong algorithm (e.g. RS256)
- not expired
typ
claim is not set toNone
it is difficult to revoke a JWT, not until it expires. some teams use a block-list of revoked JWTs, but this is not a good solution.
2023-02-05 A mortal's guide to making a pig run faster - Richard Banks - NDC Sydney 2022 - YouTube
The talk about performance optimization in .NET Tools:
- PerfView https://github.com/microsoft/perfview
- BenchmarkDotNet https://benchmarkdotnet.org/
- Speedscope https://www.speedscope.app/
- DotNet Source Code https://source.dot.net/
An overview of modern authentication, SAML, OpenID Connect
Making a trading system "fast" cannot be an afterthought. While low latency programming is sometimes seen under the umbrella of "code optimization", the truth is that most of the work needed to achieve such latency is done upfront, at the design phase. How to translate our knowledge about the CPU and hardware into C++? How to use multiple CPU cores, handle concurrency issues and cost, and stay fast?
2023-01-29 "It's A Bug Hunt" - Armor Plate Your Unit Tests in Cpp - Dave Steffen - CppCon 2022 - YouTube
This talk is a detailed discussion of how to write unit tests that are good tests; that is, unit test cases that are complete, accurate, and thorough. We can think of unit tests as our laboratory equipment for carefully examining our code and measuring a particular property (existence of bugs) with care and precision; or we can think of them as bug-hunting gear that that keeps us safe when we have to venture into the dark and dangerous parts of our code base.
2023-01-29 KEYNOTE - Emotional Code - Kate Gregory ACCU Conference 2019 - YouTube
Programmers, it turns out, are human beings. This means they not only feel emotions, they leave traces of those emotions behind in their code. Kate will show you why that is so, and what you can do about it.
Projects
2023-02-02 muxinc/meet: A meeting app built on Mux Real-Time Video.
Mux Meet is a video conferencing app powered by Mux Real-Time Video, written in React, using the Next.js framework.
2023-01-28 Broider: Pixel Art CSS Borders
2023-01-20 Kody Tools – I developed 300 tools in 6 months
Great job!
2023-02-10 Markably Online Markdown Editor
This is awesome work, but it is not possible to simultaneously edit HTML / Markdown and switch between modes.
C#
2023-02-05 Generating Sample Data with Bogus
dotnet add package Bogus
Bogus is a library that works with C#, F# and VB.NET that can be used to create repeatable, fake data for applications. It is somewhat a port of a similar library Bogus.js. It accomplished this by creating generators (called Fakers) that have a set of rules for generating one or more fake objects. Built-into Bogus is a set of generalized rules for common data categories (i.e. Addresses, Companies, People, Phone Numbers, etc.). Enough talk, let’s see how it works. The full repo is at:
C++
2023-02-02 A list of open source C++ libraries - cppreference.com
The objective of this page is to build a comprehensive list of open source C++ libraries, so that when one needs an implementation of particular functionality, one needn't to waste time searching on web.
2023-02-01 C++ Neural Network in a Weekend – Jeremy's Blog
Would you like to write a neural network from start to finish? Are you perhaps shaky on some of the fundamental concepts and derivations, such as categorical cross-entropy loss or backpropagation? Alternatively, would you like an introduction to machine learning without relying on “magical” frameworks that seem to perform AI miracles with only a few lines of code (and just as little intuition)? If so, this article was written for you.
2023-01-27 When Should You Learn Machine Learning using C++? by Ahmed Hashesh Embedded House Medium
This article is part of a series that address the implementation of Machine learning algorithms in C++, throughout this series, We will be implementing basic Machine learning algorithms using C++ features.
- When Should You Learn Machine Learning using C++?
- Data Preprocessing And Visualization In C++.
- Machine Learning Data Manipulation Using C++.
- Naive Bayes From Scratch using C++.
- Linear Regression Implementation In C++.
- The 8 Books Each C++ Developer Must Read.
- The 9 Books Each Machine Learning Developer Must Read.
GameDev
2023-02-02 ⚙️ Math Breakdown: Anime Homing Missiles - Little Polygon Game Dev Blog
I designed and prototyped the missile attack! The math was clever and I want to show-off!
Let’s talk about cubic bezier curves, perlin noise, and rotation minimizing frames.