Skip to main content

Β· 15 min read

image-20230629004445045

Good Reads​

2023-06-23 How my online gaming addiction saved my Ph.D. – Advait Sarkar

Previously, this might have taken me weeks. With JavaScript, I built the prototype in hours. Using web technology had another advantage: it was easy to deploy the study as a website and therefore get many more participants than I would have normally gotten in a lab-based experiment. The study was completed within a month and was published at a good conference.

2023-06-19 Imaginary Problems Are the Root of Bad Software

In this blog post, the author discusses *imaginary problems* as the root of bad software and how they affect developers, managers, and clients. He:

  • Defines imaginary problems as problems that are designed to do something other than their intended purpose, and contrast them with real problems that have to be solved.
  • Shows how long chains of communication and boredom can create imaginary problems by changing, misunderstanding, or misrepresenting requirements and specifications.
  • Examines how corruption, inertia, and fear can keep imaginary problems alive by preventing or discouraging fixing real problems that threaten the status quo or the livelihoods of others.
  • Provides examples and data from various domains and projects to illustrate the prevalence and impact of imaginary problems, such as online banking, blockchain, and software development.
  • Concludes that imaginary problems are a vicious cycle that prevents software from being reliable, efficient, or user-friendly, and that everyone needs to stop creating and solving them, and start focusing on the real problems.

2023-06-17 Generating income from open source

Open source projects need to charge money for their work. The author argues that donations are not enough to sustain open source projects and maintainers should adopt different business models to generate revenue. The author suggests several ways to charge money for open source work, such as different licenses, pro features, hosted solutions, or paid support.

Examples of successful open source businesses. The author provides several examples of open source projects that have built profitable businesses around their work, such as Metafizzy, Sidekiq, Plausible Analytics, PostHog, Metabase, React Flow, Babel, curl and Filippo Valsorda. The author explains how each project offers value to its customers and what kind of pricing or support they have.

Advice for open source maintainers. The author gives some advice for open source maintainers who want to start charging money for their work, such as understanding the value they provide, packaging their product well, letting people discover their paid plans, giving something of value immediately after purchase and offering insurance that their project will be maintained. The author encourages maintainers to try different options and not be ashamed of asking for money.

2023-06-14 Finish your projects

This article is about the importance and challenges of finishing a project, especially in the open source community. The author shares his personal experience and insights on how to overcome the obstacles of work and fear that often prevent people from releasing their projects. He also encourages readers to take pride in their finished work and to honor their past and future selves by publishing their projects. He concludes by introducing himself and The ReadME Project, which aims to amplify the voices of open source developers.

2023-06-12 The Surprising Power of Documentation

  1. Documentation saves time and improves productivity across the company.
  2. Documentation eradicates guesswork and reinvention of the wheel.
  3. Documentation enables fast onboarding and helps newcomers navigate startup processes.
  4. Documentation reduces the reliance on meetings and promotes asynchronous communication.
  5. Documentation serves as a knowledge repository and facilitates learning from past decisions.
  6. A documentation-first culture breaks down hierarchical barriers and promotes knowledge sharing.
  7. Templates, guidelines, and user-friendly tools should be provided to facilitate documentation.
  8. Resistance to documentation should be addressed through engagement and modeling behavior.
  9. Documentation should be clear, concise, well-structured, and easily accessible.
  10. Startups should cultivate a love for documentation and make it a daily practice

2023-07-02 Hashing

Hash functions, key to many aspects of computing such as databases, data structures, and security, are explored in this piece. These functions take an input, often a string, and generate a number. If a good hash function is used, it will always return the same number for the same input, while minimizing 'collisions' where different inputs produce the same number. This article evaluates the performance of hash functions, highlighting their efficacy with random and non-random inputs. An effective hash function, like the widely-used murmur3, provides even distribution regardless of input. The 'avalanche effect' is another measure of a good hash function, where a single change in the input results in an average 50% change in the output bits. Understanding hash functions is essential in utilizing key-value pair storing data structures known as maps.

Books​

2023-05-07 A Programmer's Introduction to Mathematics

image-20230702155147644

Azure Active Directory​

2023-06-29 Demystifying OAuth, JWTs and Azure AD - Graeme Foster - NDC Oslo 2023 - YouTube

Good video by Graeme Foster about how AAD OAuth works with demos. Video starts from 16:50

Emacs​

2023-07-02 p3r7/awesome-elisp: 🏡️ A curated list of Emacs Lisp development resources

Awesome List

image-20230702150855336

TypeScript​

2023-07-02 The Concise TypeScript Book (Free and Open Source) by Simone Poggiali

image-20230702150659219

CSharp​

2023-06-29 Performance tricks I learned from contributing to open source .NET packages - Daniel Marbach - YouTube

danielmarbach/PerformanceTricksAzureSDK: Performance tricks I learned from contributing to the Azure .NET SDK github repository for this talk.

LINQ TO COLLECTION-BASED OPERATIONS

  • Use Array.Empty<T>() to represent empty arrays
  • Use Enumerable.Empty<T> to represent empty enumerables
  • Prevent collections from growing

HOW TO DETECT ALLOCATIONS?

  • Use memory profilers and watch out for excessive allocations of *__DisplayClass* or various variants of Action* and Func*

  • Use tools like Heap Allocation Viewer (Rider) or Heap Allocation Analyzer (Visual Studio)

  • Avoid excessive allocations to reduce the GC overhead

  • Think at least twice before using LINQ or unnecessary enumeration on the hot path

  • Be aware of closure allocations

  • Pool and re-use buffers

  • For smaller local buffers, consider using the stack

  • Be aware of parameter overloads

  • Where possible and feasible use value types but pay attention to unnecessary boxing

  • Move allocations away from the hot-path where possible

  • C# 9 - Improving performance using the SkipLocalsInit attribute - Meziantou's blog

C++​

2023-06-24 πŸ‘ƒ 60 terrible tips for a C++ developer

60 Dirty tips for dirty developers ;)

... and the list goes on and on

2023-06-24 Make your programs run faster by better using the data cache - Johnny's Software Lab

It covers the following topics and tips:

  • The concept and importance of cache memory and how it compensates for the difference in speed between processor and main memory.
  • The principles of temporal and spatial locality, which govern the behavior of real-world programs and affect the cache performance.
  • The tips and rules for better exploiting the data cache in different scenarios, such as:
    • Using arrays of classes or structs instead of values, to increase the cache utilization and reduce the cache misses.
    • Aligning the starting address of the array and the class data to the cache line size, to avoid splitting the data across multiple cache lines and to optimize the cache access.
    • Performing loop interchange on matrices, to move the loop over the innermost position and to eliminate column-wise accesses, which are costly for the cache.
    • Avoiding padding in classes and structs, to make sure they are correctly aligned and to reduce the cache overhead.
    • Sorting the variables in the declaration of the classes by size from largest to smallest, to guarantee that the compiler will not insert any padding and to optimize the cache access.
  • The tools and references available to help with the data cache optimization, such as pahole and StuctLayout, which can help with exploring and visualizing the paddings in the classes.

2023-06-15 ReactiveX/RxCpp: Reactive Extensions for C++

2023-06-14 Text Editor Data Structures - invoke::thought() - Cameron DaCamara

In The Beginning…

I am a strong believer in β€œexperiment and get things working as fast as possible”—essentially, a fail fast mentality. This is not to say that your first pass should ignore optimization, and I refuse to pessimize my code. That said, I started from the simplest possible representation of a text file to start: a giant string.

There are some pretty great properties of having a single string as your text buffer:

  1. It is the most compact possible representation.
  2. The algorithms for insertion and removal are simple.
  3. It is very friendly to the rendering process because you can slice up the string into views which can be independently rendered without additional allocation.
  4. Did I mention it is simple?

Here’s a short example of insertion and deletion:

image-20230702152940627

C

1993 ⭐ Object-oriented Programming with ANSI-C (1993) [pdf]

Retro document! but very well written

image-20230629003429585

2023-06-14 Leo Robinovitch @ The Leo Zone

image-20230629004711183

2023-07-01 Few lesser known tricks, quirks and features of C

There are some tricks, quirks and features (some quite fundamental to the language!) which seems to throw even experienced developers off the track. Thus I did a sloppy job of gathering some of them in this post (in no particular order) with even sloppier short explanations and/or examples (or quote of thereof).

2023-06-30 Structures in C: From Basics to Memory Alignment – Abstract Expression

Structures allow us to combine several variables to create a new data type. Some other languages support the same concept but call it β€œrecords”. If you come from object-oriented programming you can think about them as classes without methods.

image-20230702152138229

SIMD​

2023-07-02 Parsing time stamps faster with SIMD instructions – Daniel Lemire's blog

Standard:

#include <time.h>
#include <stdio.h>
int main() {
char buffer[15];
struct tm timeinfo;
time_t rawtime;
time(&rawtime);
gmtime_r(&rawtime, &timeinfo);
size_t len = strftime(buffer, 15, "%Y%m%d%H%M%S", &timeinfo);
buffer[14] = '\0';
puts(buffer);
}

SIMD:

 __m128i v = _mm_loadu_si128((const __m128i *)date_string);
v = _mm_sub_epi8(v, _mm_set1_epi8(0x30));
__m128i limit =
_mm_setr_epi8(9, 9, 9, 9, 1, 9, 3, 9, 2, 9, 5, 9, 5, 9, -1, -1);
__m128i abide_by_limits = _mm_subs_epu8(v, limit); // must be all zero
const __m128i weights = _mm_setr_epi8(
10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 10, 1, 0, 0);
v = _mm_maddubs_epi16(v, weights);
__m128i limit16 =
_mm_setr_epi16(99,99, 12, 31, 23, 59, 59, -1);
__m128i abide_by_limits16 = _mm_subs_epu16(v, limit16);
__m128i limits = _mm_or_si128(abide_by_limits16,abide_by_limits);
if (!_mm_test_all_zeros(limits, limits)) {
return false;
}
instructions per stamptime per stamp
standard C with strptime70046
SIMD approach657.9

Rust​

2023-06-16 Effective Rust

Effective Rust

35 Specific Ways to Improve Your Rust Code

David Drysdale

image-20230629004251225

Security​

2023-06-12 Desktop Linux Hardening | PrivSec - A practical approach to Privacy and Security

image-20230702153430958

ToC

Projects​

2023-06-23 Style your RSS feed

RSS is not dead. It is not mainstream, but it's still a thriving protocol, especially among tech users. However, many people do not know what RSS feeds are or how to use them. Most browsers render RSS as raw XML files, which doesn't help users understand what it's all about...

2023-06-15 TypeCell Notebooks

TypeCell is an open source Typescript live programming environment.

Running code has never been easier :)

this is what I was looking for

2023-06-15 TypeCellOS/TypeCell

2023-07-01 Announcing Hurl 4.0.0

Hurl is a command line tool powered by curl, that runs HTTP requests defined in a simple plain text format:

GET https://example.org/api/tests/4567

HTTP 200
[Asserts]
header "x-foo" contains "bar"
certificate "Expire-Date" daysAfterNow > 15
jsonpath "$.status" == "RUNNING" # Check the status code
jsonpath "$.tests" count == 25 # Check the number of items
jsonpath "$.id" matches /\d{4}/ # Check the format of the id

image-20230702151808375

2023-06-30 Introduction - mdBook Documentation

mdBook is a command line tool to create books with Markdown. It is ideal for creating product or API documentation, tutorials, course materials or anything that requires a clean, easily navigable and customizable presentation.

  • Lightweight Markdown syntax helps you focus more on your content
  • Integrated search support
  • Color syntax highlighting for code blocks for many different languages
  • Theme files allow customizing the formatting of the output
  • Preprocessors can provide extensions for custom syntax and modifying content
  • Backends can render the output to multiple formats
  • Written in Rust for speed, safety, and simplicity
  • Automated testing of Rust code samples

This guide is an example of what mdBook produces. mdBook is used by the Rust programming language project, and The Rust Programming Language book is another fine example of mdBook in action.

Who wrote this?​

2023-06-11 I Created Clippy - YouTube

2023-07-02 kevan atteberry

This guy made a monster! Just kidding, Clippy will be awesome! The character is there, now it needs AI! #ms

2023-06-11 Inside Task Manager with the Original Author - YouTube

2023-07-02 Dave's Garage - YouTube

How Task Manager was born, how it works, and insider secrets to using it! For information on my book, "Secrets of the Autistic Millionaire": https://amzn.to/3diQILq #ms 2023-06-11 How To Launch Nuclear Missile - YouTube

Workplace​

2023-07-01 Leveling Up in Job Interviews for Software Engineers

2023-07-02 How you can ~1.5x your salary through negotiation

Videos​

2023-06-26 Email vs Capitalism, or, Why We Can't Have Nice Things - Dylan Beattie - NDC Oslo 2023 - YouTube

Dylan is amazing speaker ;) fun conversation about the history of email, current limitations and how it works.

2023-06-17 Don't Talk to the Police - YouTube

I saw it years ago! I remember this video.

image-20230629004031212

Β· 11 min read

Good Reads​

2023-06-05 Anything can be a message queue if you use it wrongly enough - Xe Iaso

image-20230608155314182

Dependency Injection​

2023-06-07 Dependency Injection

image-20230608155040126

2023-06-07 Dependency Injection Design Pattern in C# - Dot Net Tutorials

image-20230608155111606

2023-06-07 Dependency injection - .NET | Microsoft Learn

image-20230608155152188

2023-06-02 The work is never just β€œthe work” | Dave Stewart

Last year I took on what seemed like a short, easy-to-deliver project, which over the course of a year turned into the kind of β€œnight of the living dead” slog and because of a variety of factors has never been easy to estimate.

With the latest phase finally delivered, I wanted to conduct a detailed postmortem to understand why my perception of the actual work was so off, and in the process reevaluate everything I know about assumptions and estimation.

In the rest of the article I’ll deep dive my own shortcomings around estimation, as well as present a framework to plan and visualise estimates, hopefully helping both of us clear those lurking feelings of confusion and guilt.

Table of contents:

image-20230608161215972

2023-05-30 Factories in Space - Making products for Earth and space

Introduction to in-space manufacturing, in-space economy and alternatively new space economy. Related fields include microgravity services, space resources, in-space transport services, orbital economy, cislunar economy, Moon & Mars economies and dozens more.

Overview of commercial microgravity applications. Both for terrestrial use and in-space use. Listing and analysing potential business opportunities to make unique profitable materials and products in microgravity.

Factories in Space is the largest public database of companies active in the emerging in-space economy and in-space manufacturing fields.

image-20230608161812944

How the things work​

2023-06-04 πŸ”¨ GPS – Bartosz Ciechanowski

Global Positioning System is, without a doubt, one of the most useful inventions of the late 20th century. It made it significantly easier for ships, airplanes, cars, and hikers to figure out where they are with high degree of accuracy.

One of the most exciting aspects of this system are the satellites surrounding Earth. Here’s a current constellation of active satellites, you can drag the view around to see it from different angles:

image-20230608160152904

2023-06-03 The Pluto Scarab β€” Hash Functions

Hash Functions

Hash functions are functions that map a bit vector to another bit vector, usually shorter than the original vector and usually of fixed length for a particular function.

There are three primary uses for hash functions:

  1. Fast table lookup
  2. Message digests
  3. Encryption

Fast Table Lookup

Fast table lookup can be implemented using a hash function and a hash table. Elements are found in the hash table by calculating the hash of the element’s key and using the hash value as the index into the table. This is clearly faster than other methods, such as examining each element of the table sequentially to find a match.

Message Digests

Message digests allow you to compare two large bit vectors and quickly determine if they are equal. Instead of comparing the vectors bit-by-bit, if the hash values of each bit vector are available you can compare the hash values. If the hash values are different, the original vectors must be different. If the hash values are the same then the original vectors are very likely to be the same if the hash function is good.

Message digests can use either cryptographic or non-cryptographic hash functions. If the purpose of the message digest is to determine if the original message has been tampered with, you would need to use a cryptographic hash function. If you just want to quickly tell if it’s the same as another file with a different name (assuming the hash values have already been computed), you can use a non-cryptographic hash function.

Encryption

Encryption is the transformation of data into a form unreadable by anyone without a secret decryption key. Hash functions play an important role in encryption because it is their properties that cause the encrypted data to be unreadable and the original data to be unrecoverable from the encrypted data without the decryption key.

image-20230608160538570

Fun​

2023-06-02 Fold 'N Fly Β» Paper Airplane Folding Instructions

image-20230608160715423

Mental Health​

2023-05-15 Taxonomy of procrastination

ADHD and procrastination

What I’d like to understand is: Is there a failure mode from having too much willpower?

There’s an angle on this that seems promising at first. People who have ADHD have β€œlow willpower”. This is claimed to be a result of some kind of dopamine (or norepinephrine) dysfunctionβ€”either producing too little, or having low-sensitivity receptors. So is there a problem associated with having β€œtoo much” dopamine? Perhaps yesβ€”the dopamine hypothesis is that an overly sensitive dopamine system (or taking lots of meth) causes schizophrenia.

As a cartoon, we might think that:

LOW DOPAMINE ↓ LOW CONFIDENCE IN PREDICTIONS ↓ FORGET HOMEWORK PLAY VIDEO GAMES

And:

HIGH DOPAMINE ↓ EXTREME CONFIDENCE IN PREDICTIONS ↓ HALLUCINATIONS

Nice theory, right? Trouble is, people with ADHD are also much more likely to develop schizophrenia. So this doesn’t make sense, nothing makes sense.

The Era of AI​

2023-06-07 Why AI Will Save The World - Marc Andreessen Substack

In our new era of AI:

  • Every child will have an AI tutor that is infinitely patient, infinitely compassionate, infinitely knowledgeable, infinitely helpful. The AI tutor will be by each child’s side every step of their development, helping them maximize their potential with the machine version of infinite love.

  • Every person will have an AI assistant/coach/mentor/trainer/advisor/therapist that is infinitely patient, infinitely compassionate, infinitely knowledgeable, and infinitely helpful. The AI assistant will be present through all of life’s opportunities and challenges, maximizing every person’s outcomes.

...

2023-06-05 GPT best practices - OpenAI API

Strategy: Write clear instructions

Tactic: Include details in your query to get more relevant answers

In order to get a highly relevant response, make sure that requests provide any important details or context. Otherwise you are leaving it up to the model to guess what you mean.

WorseBetter
How do I add numbers in Excel?How do I add up a row of dollar amounts in Excel? I want to do this automatically for a whole sheet of rows with all the totals ending up on the right in a column called "Total".
Who’s president?Who was the president of Mexico in 2021, and how frequently are elections held?
Write code to calculate the Fibonacci sequence.Write a TypeScript function to efficiently calculate the Fibonacci sequence. Comment the code liberally to explain what each piece does and why it's written that way.
Summarize the meeting notes.Summarize the meeting notes in a single paragraph. Then write a markdown list of the speakers and each of their key points. Finally, list the next steps or action items suggested by the speakers, if any.

2023-04-17 Understanding Large Language Models - by Sebastian Raschka

image-20230608162353839

Projects​

2023-06-08 axodox/axodox-machinelearning: This repository contains a C++ ONNX implementation of StableDiffusion.

(Windows Only)

This repository contains a fully C++ implementation of Stable Diffusion-based image synthesis, including the original txt2img, img2img and inpainting capabilities and the safety checker. This solution does not depend on Python and runs the entire image generation process in a single process with competitive performance, making deployments significantly simpler and smaller, essentially consisting a few executable and library files, and the model weights. Using the library it is possible to integrate Stable Diffusion into almost any application - as long as it can import C++ or C functions, but it is most useful for the developers of realtime graphics applications and games, which are often realized with C++.

2023-06-08 axodox/unpaint: A simple Windows App for generating AI images with stable diffusion.

2023-06-04 This Site is no longer Solar Powered... For Now | Andrew JV Powell

2023-06-04 We are now Solar Powered | Andrew JV Powell

Oh no!

image-20230608155824844

2023-06-03 wader/fq: jq for binary formats - tool, language and decoders for working with binary and text formats

image-20230608160248445

2023-06-02 adamritter/fastgron: High-performance JSON to GRON (greppable, flattened JSON) converter

2023-06-02 Sharing WebSocket Connections between Browser Tabs and Windows | Bright Inventions

2023-06-02 How to draw any regular shape with just one JavaScript function | MDN Blog

2023-05-04 GitHub - taviso/123elf: A native port of Lotus 1-2-3 to Linux.

2023-04-18 JSLinux

Windows 2000

2023-04-18 atrosinenko/qemujs: Qemu.js source code with proof-of-concept machine-code-to-WASM JIT.

2023-05-16 robdelacruz/lkwebserver: Little Kitten Webserver

Little Kitten Web Server

A little web server written in C for Linux.

  • No external library dependencies
  • Single threaded using I/O multiplexing (select)
  • Supports CGI interface
  • Supports reverse proxy
  • lklib and lknet code available to create your own http server or client
  • Free to use and modify (MIT License)

C++​

2023-06-07 Modern Image Processing Algorithms Overview & Implementation in C/C++

Implementing modern image processing algorithms in C requires a solid understanding of image representation, data structures, and algorithmic concepts. Uncompressed image data are typically stored as matrices or multidimensional arrays, with each element representing a pixel's intensity or color value. C provides the necessary tools to access and manipulate individual pixels efficiently, making it ideal for algorithm implementation. Most of the algorithms featured here except the patented SIFT & SURF are already implemented in the open source, embedded, computer vision library SOD, and already in production use here at PixLab or FACEIO.

image-20230608154148144

2023-04-18 Geometry Central

Geometry-central is a modern C++ library of data structures and algorithms for geometry processing, with a particular focus on surface meshes.

Features include:

  • A polished surface mesh class, with efficient support for mesh modification, and a system of containers for associating data with mesh elements.
  • Implementations of canonical geometric quantities on surfaces, ranging from normals and curvatures to tangent vector bases to operators from discrete differential geometry.
  • A suite of powerful algorithms, including computing distances on surface, generating direction fields, and manipulating intrinsic Delaunay triangulations.
  • A coherent set of sparse linear algebra tools, based on Eigen and augmented to automatically utilize better solvers if available on your system.

SIMD​

2023-06-02 Cornell Virtual Workshop: SIMD Parallelism

SIMD stands for "Single Instruction Multiple Data," and is one of several approaches to parallelism found in modern high-performance computing.

Vector instructions are a primary example of SIMD parallelism in modern CPUs. For instance, the vector add instruction is a single instruction (add) that acts on multiple data (vectors) to yield a vector of sums. Given the two vectors (1, 2, 3, 4) and (5, 6, 7, 8), the vector result (6, 8, 10, 12) is produced in a single operation. This operation is illustrated in the diagram and linked video below.

image-20230608160855199

WebGPU​

2023-05-04 cohost! - "I want to talk about WebGPU"

image-20230608162813856

WebGPU is the new WebGL. That means it is the new way to draw 3D in web browsers. It is, in my opinion, very good actually. It is so good I think it will also replace Canvas and become the new way to draw 2D in web browsers. In fact it is so good I think it will replace Vulkan as well as normal OpenGL, and become just the standard way to draw, in any kind of software, from any programming language. This is pretty exciting to me. WebGPU is a little bit irritatingβ€” but only a little bit, and it is massively less irritating than any of the things it replaces.

image-20230608162731777

Seattle​

2023-06-07 Free apps and online maps for walking tours of Seattle - Greater Seattle on the Cheap

image-20230608154629268

Offline docs​

2023-06-01 freeCodeCamp/devdocs: API Documentation Browser

2023-06-08 DevDocs API Documentation

image-20230608161536705

Β· 11 min read

image-20230528164321688

2023-05-28 Ditherpunk β€” The article I wish I had about monochrome image dithering β€” surma.dev

image-20230528163845673

Good Reads​

2023-05-28 zakirullin/cognitive-load: 🧠 Cognitive Load Developer's Handbook

Cognitive load

Cognitive load is how much a developer needs to know in order to complete a task.

We should strive to reduce the cognitive load in our projects as much as possible.

The average person can hold roughly four facts in working memory. Once the cognitive load reaches this threshold, a significant effort is required to understand things.

*Let's say we've been asked to make some fixes to a completely unfamiliar project. We were told that a really smart developer had contributed to it. Lots of cool technologies, fancy libraries and trendy frameworks were used. In other words, the previous author had a high cognitive load in his head, which we are yet to recreate.*

image-20230528163230728

Inheritance nightmare

We're tasked to change a few things for our admin users: 🧠

AdminController extends UserController extends GuestController extends BaseController

Ohh, part of the functionality is in BaseController, let's have a look: 🧠+ Basic role mechanics got introduced in GuestController: 🧠++ Things got partially altered in UserController: 🧠+++ Finally we're here, AdminController, let's code stuff! 🧠++++

Oh, wait, there's SuperuserController which extends AdminController. By modifying AdminController we can break things in the inherited class, so let's dive in SuperuserController first: 🀯

Prefer composition over inheritance. We won't go into the details - there are plenty of articles on the subject.

Complicated if statements

if val > someConstant // 🧠+
&& (condition2 || condition3) // 🧠+++, prev cond should be true, one of c2 or c3 has be true
&& (condition4 && !condition5) { // 🀯, we're messed up here
...
}

Introduce temporary variables with meaningful names:

isValid = var > someConstant
isAllowed = condition2 || condition3
isSecure = condition4 && !condition5
// 🧠, we don't need to remember conditions, there are descriptive variables
if isValid && isAllowed && isSecure {
...
}

2023-05-28 Modern work requires attention. Constant alerts steal it - Stack Overflow Blog We often describe working with focused attention as a flow state. As described in the book Flow: The Psychology of Optimal Experience by Mihaly Csikszentmihalyi, a flow state allows one to become fully engaged and focused on the task at hand. It leads to better results and greater happiness. But it can only happen when you have the attention to focus fully on whatever it is that lies before you. Why can’t we focus at work? The contemporary workspace, whether in-person or remote, is full of demands on your attention. We have chat programs, email inboxes, and project management apps all throwing notifications our way. In offices, you have other people tapping you on the shoulder and creating general noise (and woe betide those in open offices). Working remotely avoids some of these, but places the entire communication burden on chat and email applications with their little red notifications. These apps promise asynchronous communications, but that doesn’t always happen in practice.

2023-05-24 How to start a Go project in 2023 | Ben E. C. Boyter

I previously wrote about starting a Go project in 2018. A lot has changed since I wrote that and I had been wanting to write an updated version. What follows should be enough for anyone new to Go to get started and ideally start them being productive.

Quick links:

2023-05-24 google/comprehensive-rust: This is the Rust course used by the Android team at Google. It provides you the material to quickly teach Rust to everyone.

This repository has the source code for Comprehensive Rust πŸ¦€, a multi-day Rust course developed by the Android team. The course covers all aspects of Rust, from basic syntax to generics and error handling. It also includes deep dives on Android, bare-metal, and concurrency.

Fun​

2023-05-26 The Fastest Maze-Solving Competition On Earth - YouTube

image-20230528164810343

The Era of AI​

image-20230528164106815

2023-05-28 πŸ‘ƒ imartinez/privateGPT: Interact privately with your documents using the power of GPT, 100% privately, no data leaks

Run GPT on your local machine!

Ask questions to your documents without an internet connection, using the power of LLMs. 100% private, no data leaves your execution environment at any point. You can ingest documents and ask questions without an internet connection! The supported extensions are:

  • .csv: CSV,
  • .docx: Word Document,
  • .doc: Word Document,
  • .enex: EverNote,
  • .eml: Email,
  • .epub: EPub,
  • .html: HTML File,
  • .md: Markdown,
  • .msg: Outlook Message,
  • .odt: Open Document Text,
  • .pdf: Portable Document Format (PDF),
  • .pptx : PowerPoint Document,
  • .ppt : PowerPoint Document,
  • .txt: Text file (UTF-8),

2023-05-26 #002 - Donald Trump β€’ The Joe Rogan AI Experience

Disclaimer: This video depicts a fictional podcast between Joe Rogan and Donald Trump, with all content generated using AI language models. The ideas and opinions expressed in the podcast are not reflective of the thoughts of Joe Rogan or Donald Trump. The content portrayed in this video is purely for entertainment purposes

image-20230528164943445

2023-05-13 upscayl/upscayl: πŸ†™ Upscayl - Free and Open Source AI Image Upscaler for Linux, MacOS and Windows built with Linux-First philosophy.

Upscayl lets you enlarge and enhance low-resolution images using advanced AI algorithms. Enlarge images without losing quality, it's almost like magic!

image-20230528172155972

2023-05-06 🎨 nadermx/backgroundremover: Background Remover lets you Remove Background from images and video using AI with a simple command line interface that is free and open source.

BackgroundRemover is a command line tool to remove background from image and video using AI, made by nadermx to power https://BackgroundRemoverAI.com. If you wonder why it was made read this short blog post.

image-20230528172101528

2023-05-29 FastStone Image Viewer, Screen Capture, Photo Resizer ...

Not an AI, but helps a lot with managing Stable Diffusion results

image-20230528172353739

Projects​

2023-05-28 BlockNote - Javascript Block-Based text editor | BlockNote

A beautiful text editor that just works. Easily add an editor to your app that users will love. Customize it with your own functionality like custom blocks or AI tooling.

image-20230528163701665

Podcasts​

- πŸ™Š 2023-05-26 Podcast – You Are Not So Smart

image-20230528165130113

- πŸ™Š 2023-05-26 All Podcasts | Manager Tools

image-20230528165206461

Work​

2023-05-28 Ask HN: Engineering managers, how do you onboard new hires? | Hacker News

avinassh

  1. A week before their joining, we ship the laptop
  2. I'd have a calendar ready for them, which gives an overview of what they will be doing for the next three months
  3. First week goes into setting up the tooling on the machine. Someone from the product team gives an overview and entire product walkthrough. Next, they spend some to play with the product as a user. This week also involves the initial orientation session.
  4. We use Golang heavily, however, the people joining might not know it. The second week goes into doing the tour of Go.
  5. Third week they spend on onboarding tutorial that shows how to write a small service, generate APIs, build, and deploy it in our infra.
  6. Fourth week they will spend shipping a really small feature to the production.
  7. Since day one, they'd have assigned a buddy who becomes their go-to person. Buddy also explains them about the culture, how things typical done here etc. The buddy also creates a new slack channel just for them, where they can interact.
  8. They pair with the buddy in the initial weeks, where buddy is the driver.
  9. First three months, they'd spend working on a feature along with someone which also involves some good amount of pair programming.

Tehnix

  • Before you start we send an onboarding plan: As detailed as we can for the first 7 days (e.g. onboarding call, intro to this or that, pairing up with another Engineer), and much more high-level of expectations after 30 days and after 3 months

  • Everyone has an "onboarding buddy": This is an Engineer on their team and makes sure the other Engineer feels like it's their responsibility to spend time getting the new Engineer up-to-speed

  • If you're fully remote we try to fly you into our HQ (Copenhagen, Denmark) for the first week. We've had overwhelmingly good feedback on how big of a difference this makes in establishing connections and making people feel a lot more comfortable with the colleagues much earlier on.

  • We focus on giving you a lot of context initially: The organization, the team and their purpose, meeting up with your manager weekly so they can fill in the gaps continuously, intro to the overall tech infrastructure

  • We dive into the specifics via work: Finding smaller projects that are well scoped to get you into the various corners of the teams' domain

  • We knowledge share a lot via PR Reviews: Onboardees always add two people on the PRs to maximize knowledge sharing over speed initially. After a month or two they go down to just the regular 1 person and they themselves also start reviewing code

  • From then on: We freestyle, but have a continuous focus on learning. At this point, people are so unique and varied that we adjust on to their learning style, gaps, etc.

Everyone in the team is quite communicative. One thing we explicitly focus on is for new people to get comfortable asking in public channels instead of via DMs. This comes naturally to some, but not to others and they need some nudging and you showing off how its safe to do.

There's many more things we do, but those are some of the important parts of the top of my head :)

EDIT: Some context around our environment. We have our own CLI tool to quickly setup a dev environment as well as using GitHub Codespaces as a fallback. There's strong coverage of CI for checking everything is good, and things are deployed very often. We try to automate most of our flows, at least as much as we can to keep friction low, but also to minimize "things you need to just know".

C​

2023-05-25 xorvoid

SectorC: A C Compiler in 512 bytes

SectorC (github) is a C compiler written in x86-16 assembly that fits within the 512 byte boot sector of an x86 machine. It supports a subset of C that is large enough to write real and interesting programs. It is quite likely the smallest C compiler ever written.

2023-05-22 Memory Allocation

One thing that all programs on your computer have in common is a need for memory. Programs need to be loaded from your hard drive into memory before they can be run. While running, the majority of what programs do is load values from memory, do some computation on them, and then store the result back in memory.

In this post I'm going to introduce you to the basics of memory allocation. Allocators exist because it's not enough to have memory available, you need to use it effectively. We will visually explore how simple allocators work. We'll see some of the problems that they try to solve, and some of the techniques used to solve them. At the end of this post, you should know everything you need to know to write your own allocator.

image-20230528170203659

Research on RSS readers​

I haven't found the one that I like yet.

2023-05-26 Tiny Tiny RSS

2023-05-26 yang991178/fluent-reader: Modern desktop RSS reader built with Electron, React, and Fluent UI

2023-05-26 stringer-rss/stringer: A self-hosted, anti-social RSS reader.

2023-05-26 πŸ‘ƒ Athou/commafeed: Google Reader inspired self-hosted RSS reader.

Talks​

2023-05-22 Developer Tools That Shouldn't Be Secrets Christian Heilmann GOTO 2022 - YouTube

image-20230528170557079

Slides 2023-05-22 More devtools secrets Console.log to show variable name in the output, instead of console.log(x), put curly braces console.log({x}) so the output will be an object with one property.

2023-05-22 Dear Console,… - a collection of code snippets to use in the browser console

image-20230528170512157

See ya!

Β· 6 min read

image-20230521155535651

Good reads​

2023-05-21 Why is OAuth still hard in 2023? | Nango Blog

Which parameters do they require in the authorize call?

  • For Jira, the audience parameter is key (and must be set to a specific fixed value). Google prefers to handle this through different scopes but really cares about the prompt parameter. Meanwhile, somebody at Microsoft discovered the response_mode parameter and demands that you always set it to query.

Problem 1: The OAuth standard is just too big and complex

Problem 2: Everybody’s OAuth is different in subtle ways

Problem 3: Many APIs add nonstandard extensions to OAuth

Problem 4: β€œinvalid_request” β€” debugging OAuth flows is hard

Problem 5: Cumbersome approvals to build on top of APIs

Problem 6: OAuth security is hard and a moving target

As attacks have been uncovered, and the available web technologies have evolved, the OAuth standard has changed as well. If you’re looking to implement the current security best practices, the OAuth working group has a rather lengthy guide for you. And if you’re working with an API that is still using OAuth 1.0a today, you realize that backwards compatibility is a never-ending struggle.

Luckily, security is getting better with every iteration, but it often comes at the cost of more work for developers. The upcoming OAuth 2.1 standard will make some current best practices mandatory and includes mandatory PKCE (today only a handful of APIs require this) and additional restrictions for refresh tokens.

2023-04-24 🍏 Some mistakes I made as a new manager

I had an unusually hard time becoming a manager: I went back and forth three times before it stuck, mostly because I made lots of mistakes each time. Since then, as I had to grow my team and grow other folks into managing part of it, I’ve seen a lot of other people have varying degrees of a rough time as wellβ€”often in similar ways.

Three strategies helped me through it:

  • I was open with my manager when I was feeling downβ€”sometimes I’d even explicitly ask him for a pep talk. Because he had a higher-level, longer-term perspective and had been a manager for longer, he was often able to point out ways I was having a big impact without noticing.
  • I asked people for feedback. I found that if I just asked β€œdo you have any feedback for me?” people often wouldn’t, but if I asked more granular questionsβ€”β€œwas that meeting useful?”—I would usually learn a lot from it. (See also Β§ angsting.)
  • I built up other sources of fun and validation. For a long time, my work was the primary thing that helped me feel good about myself. Diversifying that to include more of friends, relationships, hobbies, Twitter likes, etc. smoothed out the ups and downs.

2023-04-06 C Strings and my slow descent to madness - by Diego Crespo

image-20230521163258690

2023-05-18 User Driven UI

From the author of Juice! We use software to solve a problem. When someone chooses a new software product. Instead of solving their problem, we give them another. To learn the UI (User Interface). If the software is at a certain level of complexity, new users will only learn parts of it or not use it at all.

image-20230521164105204

Fun​

2023-05-21 Space Elevator

image-20230521161143791

2023-04-19 Water3D

image-20230521161324067

2023-04-19 The Man Who Lives In A Clock - YouTube

image-20230521161631545

2023-04-16 πŸ’— Cheat Sheet - Cube Tutorial

This page is a summary of all the steps and algorithms on one page. Only the algorithms are listed here without any explanation. It is intended as a quick reference when you just need a reminder on the algorithms to solve the cube. Visit the previous pages for detailed descriptions.

image-20230521162403558

C++​

2023-05-21 Introduction - Learn WebGPU for C++ documentation

image-20230521160311709

C#​

2023-04-16 5 useful extensions for Task T in .NET

Fire and forget

public static void FireAndForget(
this Task task,
Action<Exception> errorHandler = null)
{
task.ContinueWith(t =>
{
if (t.IsFaulted && errorHandler != null)
errorHandler(t.Exception);
}, TaskContinuationOptions.OnlyOnFaulted);
}

Retry

var result = await (() => GetResultAsync()).Retry(3, TimeSpan.FromSeconds(1));

OnFailure

await GetResultAsync().OnFailure(ex => Console.WriteLine(ex.Message));
  1. Timeout
await GetResultAsync().WithTimeout(TimeSpan.FromSeconds(1));
  1. Fallback
var result = await GetResultAsync().Fallback("fallback");

Mental Health​

2023-04-24 Opening up about my ADHD. Diagnosed at 34, I hope my story can… | by Kyle Gordon | Medium

It would be a mistake to write a blog about ADHD without having a summary at the beginning. I know I would need one. So here it is :

I’ve always had focus issues but I misdiagnosed them as problems related to energy. Through school and career I found that the only reliable way for me to motivate myself was to generate stress and consume an unhealthy amount of caffeine. At first doing work just before it’s due, and later in life harnessing it in a more healthy manner by faking early deadlines. Late 2021 I got sick and I couldn’t drink caffeine anymore and stress caused me a good deal of pain. Thought my career was over, so I turned to my doctor and she sent me to be evaluated for ADHD and Bipolar. Turns out I have ADHD and the medication has given me a new lease on life. Please, if you relate to my story at all, pursue help.

2023-04-18 GitHub - Fillyosopher/Reading-Helper: A dead-simple Bookmarklet and Chrome Extension implementation of something like Bionic Reading

image-20230521161754590

Work​

2023-04-25 πŸ‘·β€β™€οΈ derwiki/layoff-runbook

Layoff Runbook

Being laid off can be overwhelming and it's easy to miss important tasks. This runbook will help make sure you stay on track.

image-20230521160427477

Other?​

2023-04-13 The Car Mechanics Video Course from How a Car Works

image-20230521163140730

Talks​

2023-05-20 Code Red: The Business Impact of Code Quality β€’ Adam Tornhill β€’ GOTO 2022 - YouTube

May the code be with you

2023-05-20 Engineering Documentation β€’ Lorna Jane Mitchell β€’ GOTO 2022 - YouTube

2023-05-20 DiΓ‘taxis

2023-05-20 Vale.sh - A linter for prose

Β· 9 min read

image-20230519222354132

Good Reads​

2023-05-13 Story: Redis and its creator antirez

image-20230519220434419

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.

2023-05-07 Scaling up the Prime Video audio/video monitoring service and reducing costs by 90% - Prime Video Tech

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.

2023-05-20 Grokking Simplicity: Taming complex software with functional thinking by Eric Normand - Summary & Notes | Christian B. B. Houmann

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:

  1. Make a copy
  2. Modify copy as you like
  3. 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 returning array[0]. You can convert the dropping of the 0th element to copy-on-write quite trivially as well: make a copy, use shift 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

image-20230519214402784

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.

Download myhouse.wad

2023-05-20 Street Fighter II, paper trails

image-20230519221418804

2023-04-28 Delphi 11 and C++Builder 11 Community Editions Released!

Great News!

image-20230519223847733

Projects​

2023-05-20 Map of GitHub

Apache Spark in Bigdatia!

image-20230519214008555

Thank you, Vu!

2023-05-20 pixpaint

how do I describe this? A very weird paint?

image-20230519215010177

2023-05-07 πŸš€ Modern CSS Solutions

image-20230519221822276

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!

image-20230519223605755

The Era of AI​

image-20230519220124716

2023-05-20 smol-ai/developer: with 100k context windows on the way, it's now feasible for every dev to have their own smol developer

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 situation

this 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, like create-react-app, or create-nextjs-app, this is basically create-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-15 brexhq/prompt-engineering: Tips and tricks for working with Large Language Models like OpenAI's GPT-4.

2023-05-20 Image Creator from Microsoft Bing

image-20230519220654935

2023-04-26 βž• Transformers from Scratch

Markov chain transition model

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. image-20230519221305831

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?

image-20230519220000643

2023-05-07 Click 😢 (https://clickclickclick.click/)

Click.

image-20230519222509298

2023-05-03 Eyecandy - Visual Technique Library

image-20230519222917445

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

image-20230519222744523

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 ;)

Β· 11 min read

Good Reads​

2023-04-09 How to stop ruminating - by George Sudarkoff

Rumination is when our minds latch onto a story and just won’t let go, going on and on about it. It’s exhausting! Distracting yourself is fairly common advice, but it’s a bit like trying to ignore a splinter. Maybe it’ll get dislodged from your body and get washed down the drain when you’re showering. But until that happens, it keeps reminding you about itself. Worse yet, it might get inflamed and cause more problems down the line.

Here’s a more productive approach that allowed so many of my clients to get lasting relief from rumination:

  1. Pay attention to the triggers.
  2. Examine the stories you’re telling yourself, and identify the cognitive distortions your mind might be employing.
  3. Don’t believe everything you think.
  4. Practice self-compassion.
  5. Realize that it’s a practice.

2023-04-08 How to Design Programs, Second Edition

image-20230413180756782

2023-04-03 How To Do Hard Things - No Small Plans - Every

Russ Harris, author of several popular ACT books, offers a framework of 7 "R"s that can help support action in its early stages:

  • Reminders - using apps, timers, or other means to remind us of the new behavior
  • Records - keeping track of our behavior throughout the day
  • Rewards - giving ourselves positive reinforcement for engaging in a behavior
  • Routines - building the new behavior around an existing daily habit
  • Relationships - finding a friend to do the new behavior with, or who you can talk to about the progress you’re making
  • Reflecting - taking time to reflect on the progress you’re making through journaling, discussion with a friend, or in your mind
  • Restructuring - making changes to the environment to make it easier to do the new behavior – i.e., throwing out unhealthy food or preparing at night for a morning run

2023-04-06 The real "must have" tools for programmers - James Dunne

In no particular order, the best tools for taking care of your mind are:

  1. Quality sleep
  2. Hydration
  3. Exercise
  4. Family and social time
  5. Notebook and pen

How the things work?​

2023-04-07 How does database sharding work?

2023-04-07 Database β€œsharding” came from UO? – Raph's Website image-20230413181213837

2023-04-03 Database Sharding Explained

This article explains what database sharding is, how it works, and the best ways to use it. It also talks about the potential server architectures and data layout. The article is written in a clear and concise manner with examples and comparisons to help readers understand the concept of database sharding better.

image-20230413185111688

2023-04-01 Clocks and Causality - Ordering Events in Distributed Systems

image-20230413183701886

Projects​

2023-03-31 🚩 Making an OBS 'Mute' Indicator - Parts Not Included

image-20230413183819265

Tools​

2023-04-14 Personal color test-μΌ€μ΄ν…ŒμŠ€νŠΈ

Do it! Very funny!

image-20230413182111917

2023-04-13 Phind: AI search engine

2023-04-13 Show HN: GPT-4-powered web searches for developers | Hacker News

image-20230413174234177

Career advice​

2023-04-04 How to be a -10x Engineer

Nullify the output of 10 engineers.

Change requirements as far into development as possible. To avoid blame, obfuscate requirements from the start.

Create 400 hours of busywork.

Ask your team to perform tasks that resemble work. Common examples include presentations, diagrams, and ticket management. Create pointless rituals.

Create 400 hours of burnout/turnover.

Be thankless. Foist blame. Sow confusion. Get angry. Cause others to work overtime.

Hold 10 engineers hostage in a technical discussion.

Let engineers discuss ideas. Encourage them to pursue elegance over pragmatism. Ensure nobody has the authority to make any decisions.

Job / Codding interviews​

2023-04-11 yangshun/tech-interview-handbook: πŸ’― Curated coding interview preparation materials for busy software engineers

2023-04-14 Software Engineer interviews: Everything you need to prepare | Tech Interview Handbook

image-20230413175517858

2023-04-07 πŸ‘‰ trekhleb/javascript-algorithms: πŸ“ Algorithms and data structures implemented in JavaScript with explanations and links to further readings

ADHD​

2023-04-07 Comics Dani Donovan: ADHD Comics

image-20230413180953539

2023-04-07 Brain pls work

ADHD-friendly Pomodoro web app image-20230413181054337

2023-04-07 Show HN: ADHD-friendly Pomodoro web app | Hacker News

Web​

2023-03-24 Laying Out a Print Book With CSS | Ian G McDowell's Blog

Basic Layout

It still looks like a web-page, it’s time to apply some print conventions. The chapter headings need some room, and maybe a sweet underline. The body text should be a column, with indented paragraphs. That kind of stuff.

A note on my CSS: Yes, I’m all over the place with my units (Inches! Pixels! Points! Ems!), and there’s no rhyme or reason to the order of my declarations. In my defense: it doesn’t matter. I’m not going to prod with this. No one’s going to be stuck maintaining it. And, god willing, I’ll never have to extend it. But you’re welcome to clean it up for use in your own project.

h2 {
text-align: center;
font-family: "Jost";
margin-top: 1.4in;
margin-bottom: .9in;
font-weight: 300;
display: inline-block;
/* Pad box to position the "underline" that's rendered using the border */
padding: 0.1in 0.2in;
border-bottom: 1px solid;
line-height: 1em;
font-size: 15pt;
}

p {
margin:0;
text-indent: 1.5em;
font-size: 12pt;
line-height: 14.3pt;
text-align: justify;
text-justify: inter-word;
word-spacing: -.7px;
}

p:first-child {
text-indent: 0;
}

.chapter {
text-align: left;
}

image-20230413184732342

= C ? C : C++​

2023-04-06 C Strings and my slow descent to madness - by Diego Crespo

image-20230413182346735

2023-04-14 πŸ”₯ Words and buttons online

Redundant stories about redundancy

Component redundancy is used heavily in safety-critical and mission-critical systems for reliability improvement. But outside this niche, it's surprisingly little known in the world of software. Which is a shame since it's a simple but economical idea. It costs nothing to keep in mind, and it saves you a lot on hotfixes and emergency repairs.

#programming

Challenge your performance intuition with C++ sine

One more interactive quiz. This time, it's all about the sine function. Which one is faster and when?

#programming #quizzes

Yet another alternative to floating-point numbers

This shows how computable intervals written in rational bounds may not only account for the input error but keep computational error under control as well.

#mathematics #programming #quizzes

Why is it ok to divide by 0.0?

This explains why dividing by zero in floating-point numbers is ok.

#mathematics #programming

Error codes are not numbers. But they are. Can we exploit that?

An interactive explanation of how we can use floating-point NaNs as error code holders in C++.

#demos #mathematics #programming

Software​

2023-04-14 Software Project Checklist - Hix

Education for free!​

2023-03-25 CSE325 Lecture Videos - YouTube

Low-Level C Programming – CSE 325 Lecture Videos

πŸ“’ 2023-04-13 Ask HN: What are some of the best university courses available online for free? | Hacker News

Herb Gross's ultra-classic old-school chalkboard delivery of "Calculus of Complex Variables, Differential Equations, and Linear Algebra" should not be missed:

https://youtu.be/BOx8LRyr8mU

It turns out he also produced a complete series on the precursor material, "Single Variable Calculus" as well, which I only just now discovered:

https://ocw.mit.edu/courses/res-18-006-calculus-revisited-si...

This professor has a great delivery and a ton of enthusiasm for the subject material, (but you can't just watch it, to absorb it you have to take notes, maybe recreate the examples in Python or something).

MIT's 16.687 - Private pilot ground school. If you want to become a private pilot or start your career, this is the place to begin. The professors are approachable and the content is comprehensive. https://ocw.mit.edu/courses/16-687-private-pilot-ground-scho... all of the videos for the lectures are available on Youtube - https://www.youtube.com/playlist?list=PLUl4u3cNGP63cUdAG3v31...

avinassh 1 day ago | prev | next [–] Intro to Database Systems by Andy Pavlo - https://www.youtube.com/watch?v=oeYBdghaIjc&list=PLSE8ODhjZX...MIT 6.824 Distributed Systems by Robert Morris - https://www.youtube.com/watch?v=cQP8WApzIQQ&list=PLrw6a1wE39...

Syllabus and coursework for the database course: https://15445.courses.cs.cmu.edu/fall2022/schedule.html

It looks really good

It looks interesting and relevant!

Edit: link to course planning and labs https://pdos.csail.mit.edu/6.824/schedule.html

"The Making of Modern Ukraine" by Timothy Snyder: https://www.youtube.com/playlist?list=PLh9mgdi4rNewfxO7LhBoz...

As Prof. Snyder mentions in his introductory lecture, it is kind of wild that there are zero other classes, at any American university, focusing specifically on Ukraine given its importance in the current geopolitical climate.

Prof. Snyder is a great lecturer and the dynamics that shape Ukraine are fascinating and useful for understanding European history more broadly.

I really liked The Theoretical Minimum lectures on classical and quantum mechanics by Leonard Susskind (suggestion: google up the guy, he’s cool) at Stanford. You can buy books, but the lectures are all free on YouTube.

Classical mechanics playlist can be found here https://youtube.com/playlist?list=PL47F408D36D4CF129 and then there’s quantum mechanics available too, should be easily discoverable. And also there’s just https://theoreticalminimum.com/

gilbert strang's linear algebra https://youtube.com/playlist?list=PL49CF3715CB9EF31D. he has a few other linear algebra themed courses on there. very good because (1) he’s an incredible teacher, and (2) linear algebra is beautiful

The Science of the Solar System (Planetary Astronomy)

by Caltech Professor Mike "plutokiller" Brown

https://www.coursera.org/learn/solar-system

I really liked this course. Here's the blurb:

Learn about the science behind the current exploration of the solar system in this free class. Use principles from physics, chemistry, biology, and geology to understand the latest from Mars, comprehend the outer solar system, ponder planets outside our solar system, and search for habitability in our neighborhood and beyond. This course is generally taught at an advanced level assuming a prior knowledge of undergraduate math and physics, but the majority of the concepts and lectures can be understood without these prerequisites. The quizzes and final exam are designed to make you think critically about the material you have learned rather than to simply make you memorize facts. The class is expected to be challenging but rewarding.

It is also taught at Caltech, see https://mikebrown.caltech.edu/teaching/science-solar-system

Databases by prof. Widom, from Stanford. Currently the course is at edX, and split into 5 mini-courses. Everything in the course is well thought out and apparently polished and perfected over years of teaching practice and experience. There is nothing useless in the video lectures, and the course homework probes every topic from the lectures.

https://online.stanford.edu/courses/soe-ydatabases-databases

Songwriting, at Coursera, from Berklee College of Music. The guy just sits in a dark room, and explains the process of writing lyrics to songs. He just explains it very well.

https://www.coursera.org/learn/songwriting-lyrics

Financial Markets by Robert Shiller https://oyc.yale.edu/economics/econ-252

Seattle​

2023-04-09 Seattle Space Needle Panocam | Space Needle

image-20230413180419206

2023-04-13 Secret Seattle - Your Complete Guide To Things To Do In Seattle

image-20230413184439180

Β· 9 min read

Good Reads​

2023-03-24 Juice

Juice is the non-essential visual, audio & haptic effects that enhance the player's experience. For example, the delightful chimes sound that plays when Mario collects a mushroom. The 1UP text that appears is essential.

image-20230325093907002

2023-03-23 GOTOphobia considered harmful (in C)

The main points of this article are:

  • The fear of using the goto statement in programming is called "gotophobia" and is usually caused by misunderstanding and lack of context.
  • Dijkstra's "go to statement considered harmful" was written in the 60s when goto was the main method of flow control, but now programmers tend to avoid using goto even when it's appropriate.
  • Using goto over short distances with well-documented labels can be more effective, faster, and cleaner than other constructs.
  • The article presents some situations and patterns where goto could be an acceptable choice and discusses goto-less alternatives and their potential drawbacks.

The article:

  • GOTOphobia considered harmful (in C)
  • Resources
  • Error/exception handling & cleanup
  • Restart/retry
  • Less trivial example
  • Common code in switch statement
  • Nested break, labeled continue
  • Simple state machines
  • Jumping into event loop
  • Optimizations
  • Structured Programming with go to Statements

2023-03-18 The Contentious Art of Pull Requests - DEV Community

image-20230325113726597 This article discusses the benefits and downsides of code reviews and pull requests. The author argues that git has greatly improved the code review process, but also acknowledges that developers can be snarky and opinionated. The author shares their own β€œPull Request Rules” to help mitigate these downsides, including defining/enforcing code styling in the linter and being cautious when making bold statements on someone’s pull request. See also from this series: Codility === Sadness - DEV Community

2023-02-27 Writing an engineering strategy. Irrational Exuberance

A guide on how to write an effective engineering strategy that aligns with the business goals and communicates clearly to stakeholders.

strategy, strategy, strategy, strat...

Fun / Games​

2023-03-25 Floor796

Animated isometric madness

image-20230325112439688

Retro​

2023-03-16 After Dark Screensavers in CSS

image-20230325123928664

image-20230325123939176

2023-03-16 Rotating Sandwiches – that's it

And they rotate!

image-20230325124044861

2023-03-16 Lander

Lander, a lunar lander style web game

image-20230325124131127

2023-03-16 Digger

image-20230325124235221

2023-03-25 Wolfenstein 3D

2023-03-16 midzer/wolf4sdl: Emscripten-Port of Wolfenstein 3D and Spear of Destiny

image-20230325124412750

C++​

2023-03-24 ww898/utf-cpp: UTF-8/16/32 C++11 header only library for Windows / Linux / MacOs

C++ UTF library with permissive licensing (MIT). Used in Far2L

2023-03-18 CppCon 2018: Bob Steagall β€œFast Conversion From UTF-8 with C++, DFAs, and SSE Intrinsics” - YouTube

Slides: 2023-03-18 CppCon2018/Presentations/fast_conversion_from_utf8_with_cpp_dfas_and_sse_intrinsics at master Β· CppCon/CppCon2018 Code: 2023-03-18 BobSteagall/utf_utils: My work on high-speed conversion of UTF-8 to UTF-32/UTF-16 Bob Steagall's blog: 2023-03-18 The State Machine – All Your C++ Are Belong To Us

C#​

2023-03-20 How Async/Await Really Works in C# - .NET Blog

This article provides an in-depth look at the history, design decisions, and implementation details of async/await in C# and .NET.

// To make a method asynchronous, add the 'async' keyword before its return type
// and change its return type to 'Task' or 'Task<T>' if it returns a value of type T
public async Task MyAsyncMethod()
{
// Use the 'await' keyword before calling an asynchronous method
// This will make the method wait for the asynchronous operation to complete
// before continuing execution
await SomeAsyncMethod();

// You can also use 'await' with a Task object
Task myTask = SomeAsyncMethod();
await myTask;

// You can use 'await' in a loop to wait for multiple asynchronous operations
foreach (var item in myCollection)
{
await SomeAsyncMethod(item);
}

// You can use 'Task.WhenAll' to wait for multiple asynchronous operations to complete
Task[] tasks = myCollection.Select(item => SomeAsyncMethod(item)).ToArray();
await Task.WhenAll(tasks);
}

Web​

2023-03-18 Create and download text files using JavaScript β€” Amit Merchant β€” A blog on PHP, JavaScript, and more

function saveTextAsFile(textToWrite, fileNameToSaveAs, fileType) {
let textFileAsBlob = new Blob([textToWrite], { type: fileType });
let downloadLink = document.createElement('a');
downloadLink.download = fileNameToSaveAs;
downloadLink.innerHTML = 'Download File';

if (window.webkitURL != null) {
downloadLink.href = window.webkitURL.createObjectURL(
textFileAsBlob
);
} else {
downloadLink.href = window.URL.createObjectURL(textFileAsBlob);
downloadLink.style.display = 'none';
document.body.appendChild(downloadLink);
}

downloadLink.click();
}

image-20230325114215224

Typescript​

2023-03-19 ⭐ Functional Programming with TypeScript - YouTube

image-20230325113234262

GPT Prompts​

ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT, ChatGPT,

2023-03-18 f/awesome-chatgpt-prompts: This repo includes ChatGPT prompt curation to use ChatGPT better.

2023-03-18 humanloop/awesome-chatgpt: Curated list of awesome tools, demos, docs for ChatGPT and GPT-3

2023-03-18 yokoffing/ChatGPT-Prompts: ChatGPT and Bing AI prompt curation

2023-03-18 promptslab/Awesome-Prompt-Engineering: This repository contains a hand-curated resources for Prompt Engineering with a focus on Generative Pre-trained Transformer (GPT), ChatGPT, PaLM etc

2023-03-15 A weapon to surpass Metal Gear - Xe Iaso

2023-03-14 cogentapps/chat-with-gpt: An open-source ChatGPT app with a voice

2023-03-14 GPT-4

Copilot prompt samples / cheat sheet​

2023-03-01 Using Copilot to review code and fund Open-Source projects : GithubCopilot

A Reddit post that introduces a new project called Copilot Reviewer, which uses GitHub Copilot to automatically generate code reviews and donate the proceeds to open-source projects.

2023-03-01 ❀ Using Copilot to Review Code And Fund Open-Source Projects

You are a senior web developer with lots of experience writing full-stack applications. Your main job is to do code reviews, i.e. to spot in code diffs the potential bugs, or refactorings that could make the code more secure, performant, or maintainable. Your comments are cheerful, informative, and take the shape of suggestions, not orders. Let me give you a diff to comment on.

2023-03-01 11 GitHub Copilot Examples : Can A.I. Actually Help You Code? - MLK - Machine Learning Knowledge

An article that showcases 11 GitHub Copilot examples that demonstrate how the AI-powered tool can help you code faster and better. It covers various use cases such as writing tests, documentation, algorithms, web apps, data analysis and more.

2023-03-01 8 things you didn’t know you could do with GitHub Copilot The GitHub Blog

A blog post that reveals some of the hidden features and tips for using GitHub Copilot effectively. It includes how to use different languages, frameworks, libraries, APIs, snippets, comments and more with Copilot.

2023-03-01 1 week with GitHub Copilot: Building an app using only Copilot - LogRocket Blog

A blog post that documents the experience of building a full-stack web app using only GitHub Copilot as a guide. It describes the challenges, surprises and learnings from using the AI assistant for every step of the development process.

2023-03-01 Why Use GitHub Copilot And Copilot Labs: Practical Use Cases for the AI Pair Programmer - DEV Community

A blog post that explains why GitHub Copilot is a useful tool for developers of all levels and backgrounds. It also introduces Copilot Labs, a new feature that allows users to experiment with different scenarios and domains with Copilot.

LLAMA​

2023-03-17 antimatter15/alpaca.cpp: Locally run an Instruction-Tuned Chat-Style LLM

2023-03-15 ggerganov/llama.cpp: Port of Facebook's LLaMA model in C/C++

2023-03-15 setzer22/llama-rs: Run LLaMA inference on CPU, with Rust πŸ¦€πŸš€πŸ¦™

Azure Active Directory​

2023-03-18 ⭐ Azure Active Directory - Security Overview - msandbu.org

After working with Azure AD for a looong time I always forget how complex it has gotten over the years, with all the new features and capabilities that have been introduced.

Therefore, I decided that I wanted to create an overview of the endpoints/integrations/connections/features in the ecosystem. Mostly for myself but hopefully it can be useful for others as well to get a glimpse at all the features in the service. I will be during the next couple of weeks be adding information about the different endpoints and services here as well so that people can get a bit more detailed description of the unique features as well.

Download the VISIO Here –> https://bit.ly/3fTEZHK

Download the PNG Here –> https://bit.ly/3T5NT3y

Archived image (right click / open in new tab to make larger): img

image-20230325114051664

Tools​

2023-03-17 johnkerl/miller: Miller is like awk, sed, cut, join, and sort for name-indexed data such as CSV, TSV, and tabular JSON

image-20230325123715554

2023-03-14 Release scrcpy v2.0 Β· Genymobile/scrcpy

pronounced "screen copy"

This application mirrors Android devices (video and audio) connected via USB or over TCP/IP, and allows to control the device with the keyboard and the mouse of the computer. It does not require any root access. It works on Linux, Windows and macOS.

image-20230325125015581

Emacs​

2023-03-12 emacs-tw/awesome-emacs: A community driven list of useful Emacs packages, libraries and other items.

Emacs / Windows remap CapsLock to Ctrl​

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00

Video processing​

2023-03-23 mifi/lossless-cut: The swiss army knife of lossless video/audio editing

LosslessCut aims to be the ultimate cross platform FFmpeg GUI for extremely fast and lossless operations on video, audio, subtitle and other related media files. The main feature is lossless trimming and cutting of video and audio files, which is great for saving space by rough-cutting your large video files

image-20230325102905129

Watch me!​

2023-03-17 How Discord Stores Trillions of Messages | Deep Dive - YouTube

Video review for article How Discord Stores Trillions of Messages

In 2017, we wrote a blog post on how we store billions of messages. We shared our journey of how we started out using MongoDB but migrated our data to Cassandra because we were looking for a database that was scalable, fault-tolerant, and relatively low maintenance. We knew we’d be growing, and we did!

We wanted a database that grew alongside us, but hopefully, its maintenance needs wouldn’t grow alongside our storage needs. Unfortunately, we found that to not be the case β€” our Cassandra cluster exhibited serious performance issues that required increasing amounts of effort to just maintain, not improve.

Almost six years later, we’ve changed a lot, and how we store messages has changed as well.

Β· 8 min read

Highlights​

2023-03-08 Rules for Radical Cpp Engineers - Improve Your C++ Code, Team, & Organization - David Sankel CppCon - YouTube

David Sankel is talking about politics and driving political change in your organization. The talk is based on Rules for Radicals - Wikipedia by Saul Alinsky.

image-20230311095214422 The Rules

  • "Power is not only what you have but what the enemy thinks you have."
  • "Never go outside the expertise of your people."
  • "Whenever possible go outside the expertise of the enemy."
  • "Make the enemy live up to its own book of rules."
  • "Ridicule is man's most potent weapon. There is no defense. It is almost impossible to counterattack ridicule. Also it infuriates the opposition, who then react to your advantage."
  • "A good tactic is one your people enjoy."
  • "A tactic that drags on too long becomes a drag."
  • "Keep the pressure on."
  • "The threat is usually more terrifying than the thing itself. "
  • "The major premise for tactics is the development of operations that will maintain a constant pressure upon the opposition."
  • "If you push a negative hard and deep enough it will break through into its counterside; this is based on the principle that every positive has its negative."
  • "The price of a successful attack is a constructive alternative."
  • "Pick the target, freeze it, personalize it, and polarize it. "

and Ella Jo Baker - Wikipedia

2023-03-11 Keynote - Building Teams Through Systems Thinking and Stories - Scott Hanselman - YouTube

image-20230311104148722

A fun talk which will improve your mood and charge your Tesla! a talk by Scott Hanselman that explores the role of the senior engineer as a colleague to an early-in-career engineer, the difference between learning how to code and learning how to think about systems, and the difference between mentorship and sponsorship. The video aims to facilitate a welcoming culture of learning and exploration and normalize not knowing the answer.

Good Reads​

2023-03-07 12 Habits of Successful Senior Software Developers Alex Hyett

  1. Not being afraid to ask questions
  2. Test your own code
  3. Being quick to ask for help
  4. Be reliable
  5. Question everything
  6. Automate everything
  7. Take ownership of your work
  8. Keep Learning
  9. Leave the code in a better state than you found it
  10. Get very good at solving problems
  11. See the big picture
  12. Think first, code last

2023-03-03 πŸ“Œ Demystifying bitwise operations, a gentle C tutorial andreinc

This article is an early draft tutorial on bitwise operations, a fundamental part of computer science. It explains how computers represent and manipulate data and the importance of bitwise operations in writing performance-critical code. image-20230311102558538

2023-03-03 Why Python keeps growing, explained The GitHub Blog

Python is the most popular programming language in the world. It’s used by millions of developers, and it’s the language of choice for many of the world’s most popular websites and applications. But why is Python so popular? Why does it keep growing? And what does the future hold for Python? In this post, we’ll explore the reasons why Python is so popular, and why it’s likely to keep growing in the future.

2023-03-03 Why Python keeps growing, explained Hacker News Discussion image-20230311103957174

2023-02-28 "Clean" Code, Horrible Performance - by Casey Muratori

An article and video that criticizes some of the common practices of β€œclean” code that can lead to poor performance and complexity in software development. image-20230311103937187

Projects​

2023-03-08 Free The Game Boy - Battery free Game Boy

This page is about the ENGAGE project, which is a battery-free, energy harvesting Game Boy that can play retro games using solar panels and button presses. The page describes the challenges and solutions of designing such a device.

image-20230311095042994

2023-03-11 Self hosting in 2023 - Grifel

Inspired by @JeffGeerling and his videos about creating a Pi Cluster I bought myself a second hand Raspberry Pi 4b 4GB for around 60$. There are of course alternatives to it, but I’ve had one of those running already for almost a year with literally 0 downtime. image-20230311100404270

30 Days​

2023-03-03 Asabeneh/30-Days-Of-Python

30 days of Python programming challenge is a step-by-step guide to learn the Python programming language in 30 days. This challenge may take more than100 days, follow your own pace.

2023-03-03 Asabeneh/30-Days-Of-JavaScript

30 days of JavaScript programming challenge is a step-by-step guide to learn JavaScript programming language in 30 days. This challenge may take more than 100 days, please just follow your own pace.

2023-03-03 swapnilsparsh/30DaysOfJavaScript

Projects made during the 30 days of the JavaScript challenge

2023-03-03 xeoneux/30-Days-of-Code

πŸ‘¨β€πŸ’» 30 Days of Code by HackerRank Solutions in C, C++, C#, F#, Go, Java, JavaScript, Python, Ruby, Swift & TypeScript. PRs Welcome! πŸ˜„

2023-03-03 Asabeneh/30-Days-Of-React

30 Days of React challenge is a step by step guide to learn React in 30 days. It requires HTML, CSS, and JavaScript knowledge. You should be comfortable with JavaScript before you start to React. If you are not comfortable with JavaScript check out 30DaysOfJavaScript. This is a continuation of 30 Days Of JS. This challenge may take more than 100 days, follow your own pace.

2023-03-03 ThinamXx/300Days__MachineLearningDeepLearning

I am sharing my Journey of 300DaysOfData in Machine Learning and Deep Learning.

2023-03-03 cHowTv/300days-of-hacking

This program is aimed at teaching young and aspiring hackers the skills they need to stand out in the pretesting community... Keep your eyes out for updates on this repo. Professionals/Beginners are welcomed to fork and contribute to the community...

C++​

2023-03-08 gabime/spdlog: Fast C++ logging library.

Very fast, header-only/compiled, C++ logging library.

2023-03-08 fmtlib/fmt: A modern formatting library

{fmt} is an open-source formatting library providing a fast and safe alternative to C stdio and C++ iostreams.

Some research about bringing Rust's Result in C++ code:

Azure​

2023-03-07 Tutorial: Use Azure Functions to process real-time data from Azure Event Hubs and persist to Azure Cosmos DB - DEV Community

a tutorial on how to use Azure Functions to process real-time data from Azure Event Hubs and persist it to Azure Cosmos DB. It demonstrates how to combine a real-time data ingestion component with a Serverless processing layer using a sample app.

If you want to ingest data from Event Hub to Cosmos DB, one possible solution is to use Azure Functions with an Event Hub trigger and a Cosmos DB output binding. This way, you can process real-time data from Event Hubs and persist it to Cosmos DB123.

To implement this solution, you need to:

Create an Event Hub namespace and an event hub

Create a Cosmos DB account, database and container

Create a Function App with an Event Hub trigger function

Configure the function settings with the connection strings for Event Hubs and Cosmos DB

Add a Cosmos DB output binding annotation to your function code

Write your function logic to process the event data and return a document object for Cosmos DB

Emacs​

2023-03-03 Use GNU Emacs

Use GNU Emacs. The Plain Text Computing Environment

image-20230311102014838

Markdown WYSIWYG editors​

Web and JavaScript​

2023-03-07 js-snow-bookmarklet/bookmarklet.js at master Β· wonderful72pike/js-snow-bookmarklet

Just a simple and fun bookmarklet! ❄ ❄

❄ ❄ ❄ ❄ ❄

❄ ❄ ____ ❄

❄❄ ❄ ❄ ❄❄

Workplace​

  • 2023-03-03 viraptor/reverse-interview: Questions to ask the company during your interview

    This is a list of questions which may be interesting to a tech job applicant. The points are not ordered and many may not apply to a given position or work type. It was started as my personal list of questions, which grew over time to include both things I'd like to see more of and red flags which I'd like to avoid. I've also noticed how few questions were asked by people I interviewed and I think those were missed opportunities.

Β· 8 min read

Good Reads​

2023-02-24 iggredible/Learn-Vim: Learning Vim and Vimscript doesn't have to be hard. This is the guide that you're looking for πŸ“–

It is a guide to learn the good parts of Vim, a powerful text editor. It covers topics such as starting Vim, editing text, moving around, searching, macros, registers, buffers, windows, tabs and more. Written in a clear and concise style with examples and exercises. The guide is suitable for beginners who want to learn Vim quickly and efficiently.

2023-02-16 The dangers behind image resizing

image-20230224220319609

Fun​

2023-02-18 World's Largest Photo of New York City

80k megapixel panorama photograph of New York City (2021) This is my screren! image-20230224212200512

2023-02-17 Rejected Emoji Proposals

image-20230224212723032 Oh, πŸ’©!

2023-02-24 If you drag an emoji family with a string size of 11 into an input with maxlength=10, one of the children will disappear.

image-20230224215602101

2023-02-24 Even hackers are reportedly getting laid off by organized crime groups

Games​

2023-02-21 I made a game, Tippy Coco

Tippy Coco is a free, open-source game by Chris Coyne (chriscoyne.com / @malgorithms). The inspiration for this game was Slime Volleyball, a 1999 Java Applet by Daniel Wedge & Quin Pendragon. I called an earlier version of this game They Came from the Ground.

The game is programmed in JavaScript (well, TypeScript) and uses simple HTML Canvas drawing.

Music in Tippy Coco is by my friend Christian Rudder, of the band Bishop Allen. "Rejected!" and "Slam!" and "Kiss" were voiced by Jennie, Cameron, and Abbott Coyne. And the character TippyCoco is named after our friends' dog, TippiCocoa. image-20230224205220716

Teaching the Machine!​

2023-02-23 Yann LeCun's Publications

A set of examples and publications I am currently following for Machine Learning exercise. I subconsciously do not trust these machine learners and now I am trying to figure out why :D.

2023-02-21 Mathematical notation for JavaScript developers explained

This article explains how to use mathematical notation in JavaScript, such as dot and cross symbols for scalar and vector products, sigma and pi symbols for summation and multiplication of sequences, bars for absolute value and norm of vectors, etc. It also provides code snippets that demonstrate how to implement these operations using built-in methods or libraries image-20230224205333395

2023-02-20 GitHub - PacktPublishing/Hands-On-Machine-Learning-with-CPP: Hands-On Machine Learning with C++, published by Packt

Got this! Amazon.com: Hands-On Machine Learning with C++: Build, train, and deploy end-to-end machine learning and deep learning pipelines eBook : Kolodiazhnyi, Kirill: Kindle Store image-20230224211403952

2023-02-18 Introduction to Machine Learning using C++ Engineering Education EngEd Program Section

The article aims to teach beginners how to use C++ for machine learning by providing a clear and concise tutorial with code examples. It also encourages readers to explore more advanced topics and applications of machine learning using C++

Yeah, I have asked BingGPT: πŸ“’ please summarize the article in your own words: extract main points and ideas as a list, write a short summary for each item.

Use more fluent language, pleasant to read.

https://www.section.io/engineering-education/an-introduction-to-machine-learning-using-c++/

C# and .NET​

2023-02-20 What is .NET, and why should you choose it? - .NET Blog

The article explains what .NET is and why developers should choose it as their platform for building applications. It highlights the benefits of .NET such as being free, cross-platform, open source, fast, secure, and supported by Microsoft and a large community. It also describes how .NET works as a unified platform that consists of multiple components such as languages, libraries, frameworks, tools, and runtimes. The article gives examples of different types of applications that can be built with .NET such as web apps, mobile apps, desktop apps, cloud services, games, IoT devices, and more. It also showcases some success stories of companies and developers who have used .NET to create innovative solutions for various domains.

Tools​

2023-02-19 danielgatis/rembg: Rembg is a tool to remove images background

Works! But Python. image-20230224211602513

2023-02-18 robinmoisson/staticrypt: Password protect a static HTML page

HN StatiCrypt uses AES-256 to encrypt your HTML file with your passphrase and return a static page including a password prompt and the javascript decryption logic that you can safely upload anywhere (see what the page looks like).

2023-02-18 How to Extract Images from a Video Using FFmpeg - Bannerbear

2023-02-18 Sweet Home 3D - Draw floor plans and arrange furniture freely

Sweet Home 3D is a free interior design application which helps you draw the plan of your house, arrange furniture on it and visit the results in 3D.

Need to get back to this tool to model the home of my dream! image-20230224212555479

2023-02-16 johansatge/jpeg-autorotate: πŸ“Έ Node module to rotate JPEG images based on EXIF orientation.

image-20230224220425002

2023-02-16 How To Build A Magazine Layout With CSS Grid Areas β€” Smashing Magazine

As a bonus, we will also touch on object-fit and aspect-ratio, which come in handy as well. image-20230224220537146

A Keypad to Control my Entire Desk Setup​

image-20230224215831575 2023-02-24 GitHub - davidz-yt/desk-controller: A Keypad to Control my Entire Desk Setup

2023-02-24 Work From Hype - YouTube

Security​

2023-02-21 Snort - Network Intrusion Detection & Prevention System

I just put it here, it is so cool

Snort is the foremost Open Source Intrusion Prevention System (IPS) in the world. Snort IPS uses a series of rules that help define malicious network activity and uses those rules to find packets that match against them and generates alerts for users.

Snort can be deployed inline to stop these packets, as well. Snort has three primary uses: As a packet sniffer like tcpdump, as a packet logger β€” which is useful for network traffic debugging, or it can be used as a full-blown network intrusion prevention system. Snort can be downloaded and configured for personal and business use alike.image-20230224205015067

2023-02-19 Security Event Triage: Detecting Malicious Traffic with Signature and Session Analysis Pluralsight

Pluralsight training where I've learned about S N O R T !

Good training.

Watch​

2023-02-23 a day in the life of an engineer working from home - YouTube

Oh, this is fun! 2023-02-19 if Apple made window blinds... - YouTube

2023-02-21 Standard C++ toolset - Anastasia Kazakova - Meeting C++ 2022 - YouTube

C++ is about to turn 40. Though the ecosystem was very diverse and incomplete for many years, it is getting better! In this talk, I will discuss: The typical β€œproject model - compiler - debugger” triad, and how it still depends on the area of usage (Embedded or Game Development). How the build systems and dependency managers are now more standard. How Clang affected the standard toolset in all areas, forming not only a baseline for compilers, but also formatters, code analyzers, and IDEs. How many code analyzers exist for C++ and why there is still room for improvement. How unit testing and code coverage solutions can be used effectively. And finally, how the language committee is learning to listen to and help standard toolset contributors.

Oh, Scala​

I just put it here

2023-02-16 From ES6 to Scala: Basics - Scala.js 2023-02-15 GitHub - alexandru/scala-best-practices: A collection of Scala best practices 2023-02-15 lauris/awesome-scala: A community driven list of useful Scala libraries, frameworks and software. 2023-02-15 Scalafix Β· Refactoring and linting tool for Scala 2023-02-14 zouzias/spark-hello-world: A simple hello world using Apache Spark 2023-02-14 sbt Reference Manual β€” Installing sbt on Windows 2023-02-14 lolski/sbt-cheatsheet: Simple, no-nonsense guide to getting your Scala project up and running 2023-02-14 marconilanna/scala-boilerplate: Starting point for Scala projects 2023-02-13 Hyperspace indexes for Apache Spark - Azure Synapse Analytics Microsoft Learn 2023-02-13 The Azure Spark Showdown - Databricks VS Synapse Analytics - Simon Whiteley - YouTube 2023-02-06 ossu/computer-science: Path to a free self-taught education in Computer Science!

Value Objects​

I am just to lazy to read this Some of this stuff could be totally wrong, and I agree and disagree with everything

2023-01-08 Value Objects Β· objc.io

2023-01-08 Java Value Objects in Action with Valhalla - JEP CafΓ© #15 - YouTube

2023-01-08 Value Objects Explained

2023-01-08 Value Objects - DDD w/ TypeScript Khalil Stemmler

2023-01-08 Value Object Refactoring Shaun Finglas

2022-12-28 Domain-Driven Design Reference

Β· 10 min read

These links got out of hand... I thought I should read more Hacker News... No, I should not read MORE Hacker News.

Good Reads​

2023-02-12 How a single line of code brought down a half-billion euro rocket launch

It’s Tuesday, June 4th, 1996, and the European Space Agency is set to launch its new Ariane 5 rocket for the first time. This is the culmination of a decade of design, testing and a budget spending billions of euros.

imgAriane-5 rocket in preparation for launch (Credits ESA 1996)

2023-02-10 Is Seattle a 15-minute city? It depends on where you want to walk

What makes this article interesting, besides the main content, are references to apps, maps and APIs from where the data got fetched.

This could be a pivotal year for mobility in Seattle. In the final week of January, Seattle won $25.7 million in federal grants to build safer streets, made transit free for 10,000 Seattle Housing Authority residents, and solicited public feedback on a major update to the city’s Comprehensive Plan. To transform this momentum into meaningful change, we need a catalystβ€”a coherent, powerful vision for moving around Seattle.

Consider the 15-minute city: first imagined by Carlos Moreno and most fully realized (so far) in Paris, this model describes a metropolis where residents can satisfy the full spectrum of their daily needs within a 15-minute walk or bike ride.

A diagram showing amenities that should be accessible in the 15-minute city.Concept diagram of the 15-minute city. Source: @re_visionuk

​ 2023-01-17 The Cab Ride I'll Never Forget Kent Nerburn

There was a time in my life twenty years ago when I was driving a cab for a living. It was a cowboy’s life, a gambler’s life, a life for someone who wanted no boss, constant movement and the thrill of a dice roll every time a new passenger got into the cab.

What I didn’t count on when I took the job was that it was also a ministry. Because I drove the night shift, my cab became a rolling confessional. Passengers would climb in, sit behind me in total anonymity and tell me of their lives.

Game(s)!​

2023-02-06 Flappy Birdle - Flappy Bird meets Wordle by AE Studio

image-20230212194026617

Apache Spark, SQL, BigData​

2023-02-12 Spark SQL Shuffle Partitions - Spark By {Examples}

In this Apache Spark Tutorial, you will learn Spark with Scala code examples and every sample example explained here is available at Spark Examples Github Project for reference. All Spark examples provided in this Apache Spark Tutorial are basic, simple, and easy to practice for beginners who are enthusiastic to learn Spark, and these sample examples were tested in our development environment.

2023-02-12 SQL Window Functions: Ranking

This is an excerpt from my book SQL Window Functions Explained. The book is a clear and visual introduction to the topic with lots of practical exercises.

Ranking means coming up with all kinds of ratings, starting from the winners of the World Swimming Championships and ending with the Forbes 500.

We will rank records from the toy employees table:

β”Œβ”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”¬β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚ id β”‚ name β”‚ city β”‚ department β”‚ salary β”‚
β”œβ”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”Όβ”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚ 11 β”‚ Diane β”‚ London β”‚ hr β”‚ 70 β”‚
β”‚ 12 β”‚ Bob β”‚ London β”‚ hr β”‚ 78 β”‚
β”‚ 21 β”‚ Emma β”‚ London β”‚ it β”‚ 84 β”‚
β”‚ 22 β”‚ Grace β”‚ Berlin β”‚ it β”‚ 90 β”‚
β”‚ 23 β”‚ Henry β”‚ London β”‚ it β”‚ 104 β”‚
β”‚ 24 β”‚ Irene β”‚ Berlin β”‚ it β”‚ 104 β”‚
β”‚ 25 β”‚ Frank β”‚ Berlin β”‚ it β”‚ 120 β”‚
β”‚ 31 β”‚ Cindy β”‚ Berlin β”‚ sales β”‚ 96 β”‚
β”‚ 32 β”‚ Dave β”‚ London β”‚ sales β”‚ 96 β”‚
β”‚ 33 β”‚ Alice β”‚ Berlin β”‚ sales β”‚ 100 β”‚
β””β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”΄β”€β”€β”€β”€β”€β”€β”€β”€β”˜

playground β€’ download

Table of contents:

2023-02-12 Apache Spark Coreβ€”Deep Diveβ€”Proper Optimization Daniel Tomes Databricks - YouTube

Optimizing spark jobs through a true understanding of spark core. Learn: What is a partition? What is the difference between read/shuffle/write partitions? How to increase parallelism and decrease output files? Where does shuffle data go between stages? What is the "right" size for your spark partitions and files? Why does a job slow down with only a few tasks left and never finish? Why doesn't adding nodes decrease my compute time?

image-20230212142755335

2023-02-11 How to Train Really Large Models on Many GPUs? Lil'Log

In recent years, we are seeing better results on many NLP benchmark tasks with larger pre-trained language models. How to train large and deep neural networks is challenging, as it demands a large amount of GPU memory and a long horizon of training time.

However an individual GPU worker has limited memory and the sizes of many large models have grown beyond a single GPU. There are several parallelism paradigms to enable model training across multiple GPUs, as well as a variety of model architecture and memory saving designs to help make it possible to train very large neural networks.

2023-01-25 Event Hubs ingestion performance and throughput Vincent-Philippe Lauzon’s

Here are some recommendations in the light of the performance and throughput results:

  • If we send many events: always reuse connections, i.e. do not create a connection only for one event. This is valid for both AMQP and HTTP. A simple Connection Pool pattern makes this easy.
  • If we send many events & throughput is a concern: use AMQP.
  • If we send few events and latency is a concern: use HTTP / REST.
  • If events naturally comes in batch of many events: use batch API.
  • If events do not naturally comes in batch of many events: simply stream events. Do not try to batch them unless network IO is constrained.
  • If a latency of 0.1 seconds is a concern: move the call to Event Hubs away from your critical performance path.

Let’s now look at the tests we did to come up with those recommendations.

Projects​

2023-01-13 GitHub - sickcodes/Docker-OSX

Run macOS VM in a Docker! Run near native OSX-KVM in Docker! X11 Forwarding! CI/CD for OS X Security Research! Docker mac Containers. image-20230212185800760

2023-02-12 Vanilla List The Vanilla JavaScript Repository

a directory of "vanilla" JavaScript controls and plugins. image-20230212142409931

2023-02-12 Design Patterns in TypeScript

image-20230212142534711

2023-02-12 Nevin1901/erlog: Minimalist log collector

ErLog is a minimalist log collection service. You can either forward structured logs from existing log libraries (eg: zerolog or winston), or use the collector to forward structured logs from stdout or stderr (coming soon).

2023-02-10 DSchroer/dslcad: DSLCad is a programming language & interpreter for building 3D models.

DSLCAD is a programming language & interpreter for building 3D models.

Inspired by OpenSCAD, it has a language and 3D viewer to simplify the modeling experience.

screenshot

2023-02-10 Logic Gate Simulator Academo.org - Free, interactive, education.

A free, simple, online logic gate simulator. Investigate the behaviour of AND, OR, NOT, NAND, NOR and XOR gates. Select gates from the dropdown list and click "add node" to add more gates. Drag from the hollow circles to the solid circles to make connections. Right click connections to delete them. See below for more detailed instructions.

2023-02-12 GitHub - brycedrennan/imaginAIry: AI imagined images. Pythonic generation of stable diffusion images.

AI imagined images. Pythonic generation of stable diffusion images.

"just works" on Linux and macOS(M1) (and maybe windows?). image-20230212193735159

image-20230212193755182

Work and Planning​

2023-02-10 Why backlogs are harmful, why they never shrink, and what to do instead

Do you remember your backlog ever shrinking? Of course you don’t. Backlogs never shrink.

Backlogs never shrink because the list of things we’d eventually like to do never shrinks, and that’s what backlogs are: a bunch of unimportant tasks that we’ll *eventually* get to, but not today.

2023-02-10 How to build an in-house on-call training program - Blog

A critical element of a successful SRE team is maintaining an on-call schedule. Engineers need to be at the ready on a predetermined rotation to fix issues on existing services and infrastructure as they arise.

Having an on-call schedule is only part of the equation. Your SRE and DevOps engineers need to be trained in how to actually resolve issues. A complete training program ensures that proper procedure becomes second nature for your team, so that they can arrive at resolutions as quickly as possible.

Let’s take a closer look at why these programs are necessary, what an effective in-house, on-call training program generally looks like, and how to leverage one to train and mentor new members of your SRE team.

2023-01-09 8 Hard Truths I learned when I got laid off from my SWE job Steven Buccini

I got laid off from a software engineering job in April of 2020.

I haven’t talked about this publicly for a variety of reasons, including Hard Truth #6 (Honesty Can Only Hurt You). And everything worked out for me in the end.1 So why even bother publishing a post about my experience, and why now? I got laid off in April 2020 when all the talking heads were saying a recession was inevitable. Sound familiar?

Health β€οΈβ€οΈβ€οΈβ€οΈπŸ–€β€‹

2023-01-10 MuscleWiki: Find exercises that work specific muscles

image-20230212190916413

Retro​

2023-01-17 BYTE MAGAZINE: Early computer publication

BYTE Magazine archives

image-20230212185526498

2023-01-13 History of Web Browser Engines from 1990 until today

Huge timeline image!

Funny​

2023-02-11 10 Programmer Stereotypes - YouTube

image-20230212143216385

Wisdom!​

2023-02-08 Ask HN: How do you deal with information and internet addiction? Hacker News

labrador 12 hours ago | next [–]

I handle it by collecting quotes that tell me to knock it off. I've since started to focus on just the things I really care about:

The purpose of knowledge is action, not knowledge.
― Aristotle

Knowledge isn't free. You have to pay attention
― Richard Feynman

"Information is not truth"
― Yuval Noah Harari

If I were the plaything of every thought, I would be a fool, not a wise man.
― Rumi

Dhamma is in your mind, not in the forest. You don't have to go and look anywhere else.
― Ajahn Chah

Man has set for himself the goal of conquering the world,
but in the process he loses his soul.
― Alexander Solzhenitsyn

The wise man knows the Self,
And he plays the game of life.
But the fool lives in the world
Like a beast of burden.
― Ashtavakra Gita (4―1)

We must be true inside, true to ourselves,
before we can know a truth that is outside us.
― Thomas Merton

Saying yes frequently is an additive strategy. Saying no is a subtractive strategy. Keep saying no to a lot of things - the negative and unimportant ones - and once in awhile, you will be left with an idea which is so compelling that it would be a screaming no-brainer 'yes'.
- unknown

Other ;)​

2022-12-30 Comprehensive Guide to Extremely Advanced-Level Clown Strategies - Google Docs

Someone wrote almost a book on how to play Clown in Dead by Daylight... respect! gg!