Good Readsβ
2023-05-13 Story: Redis and its creator antirez
n the world of databases, Redis stands out as unique. Instead of the usual tables or documents that are the central focus of most databases, with Redis, you interact directly with low-level data structures such as linked lists and hash tables.
This is all thanks to the innovative design of Redis creator Salvatore Sanfilippo, known online as antirez. A master in system programming, antirez prefers to think in terms of data structures like lists, hashes, and sets. The higher-level data representations, such as tables or documents, just didn't suit his taste. When creating Redis, antirez was an amateur in the database field. But perhaps it was this lack of experience that allowed him to bring fresh ideas to the industry.
Me: Wow, Amazon, thank you for transparency!
At Prime Video, we offer thousands of live streams to our customers. To ensure that customers seamlessly receive content, Prime Video set up a tool to monitor every stream viewed by customers. This tool allows us to automatically identify perceptual quality issues (for example, block corruption or audio/video sync problems) and trigger a process to fix them.
NOTES ON Grokking Simplicity: Taming complex software with functional thinking by Eric Normand
Immutability
Copy-on-write
Implementing copy-on-write operations can help with immutability.
E.g. for adding items to arrays: slice the array (to copy), push the item to the array copy, and return the copied array.
Then you avoid modifying the original.
The basic steps of implementing copy-on-write are:
- Make a copy
- Modify copy as you like
- Return copy
Using copy-on-write, you convert write operation into read operations - you never modify the original data.
You can generalize most of these operations, so you don't have to implement copy & return every time you wish to modify something. Take for example this removeItems operation, which is the copy-on-write version of splice:
function removeItems(array, idx, count) {
const copy = array.slice();
copy.splice(idx, count);
return copy;
}How do you make something that both reads and writes copy-on-write? Take
Array.shift
for example. You can either split the function into read & write, or you can return two values from the function. The former is preferable.shift
shifts an array one to the left, i.e. it drops the 0 index element and then returns it. You can imitate the latter part of that operation by simply returningarray[0]
. You can convert the dropping of the 0th element to copy-on-write quite trivially as well: make a copy, useshift
on the copy, and then return the copy.And this is what the copy-on-write
shift
operation returning two values would look like:function shift(array) {
const array_copy = array.slice();
const first = array_copy.shift();
return {first, array: array_copy};
}
2023-04-24 Is Critical Thinking the Most Important Skill for Software Engineers? - The Pragmatic Engineer
I still remember being in a meeting where a Very Respected Engineer was explaining how they are building a project, and they said something along the lines of "and, of course, idempotency is non-negotiable." I didn't know what idempotency was, and thus I could not tell why it was non-negotiable. I looked around, and everyone was nodding: but I knew I was missing something.
Retroβ
2023-05-20 MyHouse.wad - WAD Releases & Development - Doomworld
Video:
2023-05-20 MyHouse.WAD - Inside Doom's Most Terrifying Mod - YouTube
Original post:
Excited to finally release this tribute map. Last August I lost a good childhood friend of mine and took it pretty hard. When I was visiting my hometown for his funeral, I connected with his parents who shared with me some of his old belongings. Among them was a copy of an old map of his backed up on a 3.5β floppy from high school. Thomas and I were into amateur Doom mapping in the early 00s but I had never seen this map of his prior to uncovering it on one of the old floppy discs. As a way of paying tribute to him and all the great memories we had together, I took the plunge and installed Doom Builder in order to polish up his map and add a few modern amenities just for convenience sake.
2023-05-20 Street Fighter II, paper trails
2023-04-28 Delphi 11 and C++Builder 11 Community Editions Released!
Great News!
Projectsβ
2023-05-20 Map of GitHub
Apache Spark in Bigdatia!
Thank you, Vu!
2023-05-20 pixpaint
how do I describe this? A very weird paint?
2023-05-07 π Modern CSS Solutions
2023-04-30 Internet in a Box - Mandela's Library of Alexandria
Internet-in-a-Box βlearning hotspotsβ are used in dozens of countries, to give everyone a chance, e.g. in remote mountain villages in India.
It works without internet β like a community fountain, but for the mind β wirelessly serving anyone nearby with a smartphone, tablet or laptop.
Now you too can put the internet in a box and customize it with the very best free content for your school, clinic or family!
The Era of AIβ
Human-centric & Coherent Whole Program Synthesis aka your own personal junior developer
Build the thing that builds the thing! a
smol dev
for every dev in every situationthis is a prototype of a "junior developer" agent (aka
smol dev
) that scaffolds an entire codebase out for you once you give it a product spec, but does not end the world or overpromise AGI. instead of making and maintaining specific, rigid, one-shot starters, likecreate-react-app
, orcreate-nextjs-app
, this is basicallycreate-anything-app
where you develop your scaffolding prompt in a tight loop with your smol dev.AI that is helpful, harmless, and honest is complemented by a codebase that is simple, safe, and smol - <200 lines of Python and Prompts, so this is easy to understand and customize.
2023-05-20 Image Creator from Microsoft Bing
2023-04-26 β Transformers from Scratch
CPPβ
2023-05-17 cpp-best-practices/cmake_template
"cmake_template" is a C++ Best Practices GitHub template designed for quick C++ project setups. Currently undergoing a major update, it enables Address Sanitizer, Undefined Behavior Sanitizer, treats warnings as errors, and performs static analysis using clang-tidy and cppcheck. It uses CPM for dependencies and provides a basic CLI example, testing examples, and a large Github action testing matrix. It requires cmake and a compiler to use. The project includes a simple usage example of FTXUI, featuring a game.
2023-05-10 DNedic/lockfree: A collection of lock-free data structures written in standard C++11
What are lock-free data structures? Lock-free data structures are data structures that are thread and interrupt safe without having to use mutual exclusion mechanisms. Lock-free data structures are most useful for inter process communication, but due to the efficiency of lockfree, it can safely be used for single threaded uses as well, making it good for general purpose use.
2013-12-25 How to make smaller C and C++ binaries
This blog post presents several techniques to make the binaries resulting from C or C++ compilation smaller with GCC (or Clang). Please note that almost all techniques are tradeoffs, i.e. a smaller binary can be slower and harder to debug. So don't use the techniques blindly before understanding the tradeoffs.
C#β
2023-05-20 qgindi/LibreAutomate: C# script editor and automation library for Windows
C# script editor and automation library for Windows.
Some features of the automation library:
- Automate desktop and web UI using keys, mouse and API. Find and click buttons, links, images.
- Launch programs. Manage files and windows. Transfer and process text and other data.
- Hotkeys, autotext and other triggers. Auto-replace/expand text when typing. Auto-close windows. Remap keys.
- Custom toolbars that can be attached to windows or screen edges. And menus.
- Custom dialog windows of any complexity can be created easily in code.
- All classes/functions are documented.
- The library can be used in other programs too. Can be installed from NuGet.
- Uses .NET 6.
Bashβ
2023-05-01 β dylanaraps/pure-sh-bible: π A collection of pure POSIX sh alternatives to external processes.
The goal of this book is to document commonly-known and lesser-known methods of doing various tasks using only built-in POSIX sh features.
What? O_Oβ
2023-05-20 j3s.sh
Why jes pets every cat?
2023-05-07 Click πΆ (https://clickclickclick.click/)
Click.
2023-05-03 Eyecandy - Visual Technique Library
Talksβ
2023-05-07 Migrations - The Hardest Actual Problem in Computer Science β’ Matt Ranney β’ YOW! 2022 - YouTube
Using **randomly generated ids** instead of auto-incrementing ones in your database can better protect your data from unauthorized access. Auto-incrementing ids can be easily exposed and guessed, allowing access to your authorization system. This can potentially give competitors insight into your user and order numbers. Implementing a more secure id generation system is a proactive way to maintain confidentiality.
2023-05-06 3 things I learned from Bill Gates #leadership #leadertok #leadershipd... | TikTok
2023-04-19 Lightning Talk: How to Win at Coding Interviews - David Stone - CppCon 2022 - YouTube
Repeat question and clarify the ambiguity
Write an interface
Use a hashmap ;)