Skip to content

Instantly share code, notes, and snippets.

Nicolas uucidl

Block or report user

Report or block uucidl

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile

Techniques of persuasion.

Has had a bad rap throughout ages. Appears necessary in democratic societies. Preserved under authoritarian systems for justice and theology, and for elite groups. In western republic democracies, mainly practiced by professional politicians (elective nobility) and lawyers. Porosity between the two groups.

More and more essential in the companies that want to emphasize group problem solving and collaboration. Practiced without knowing it, in a dry style, by engineers via their communications and documentations.


  • Magic/Mysterium. In classical times it was clear that it takes time to develop know-how. Practice. Initiation. Hence roles of schools as safe space for learning and practice.
  • Eloquence
uucidl / repro.c
Last active Aug 20, 2017
Reproduction of an optimizer bug with Visual Studio 2017
View repro.c
/* Repro optimizer issue with Visual Studio 2017 */
/* @language: c99 */
# Visual Studio 2015 (working)
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\cl.exe
cl.exe -Fe:repro.exe repro.c -nologo -FC -EHsc -Z7 -Oi -GR- -Gm- -O2 -Z7 -W4 -WX -DEBUG
View adl_barrier_idiom.cpp
// What you do when you want to prevent ADL from kicking in, and force your
// users to use fully qualified names.
namespace module
struct Foo { int a, b; }; // struct defined in one namespace
namespace functions
void Flaggerbify(Foo* foo); // function defined in another
uucidl /
Last active Sep 1, 2017
Maintaining APIs: Resist adding that boolean parameter!

Resist adding that boolean parameter!

Also known as: “The Boolean Trap” “Boolean parameters are wrong”

Consider a trivial software interface with one entry point proc:

// Transforms a value (type T0) into another value (type T1) with effect E0
T1 proc(T0);
View cursors.cpp
// Passing container explicitely to all its functions, and using typed cursors (i.e. indices)
// rather than all-knowing iterators (i.e. pointers) allows to use the same return type for
// iteration, look-up etc.. regardless of what's going to happen next.
// Downsides:
// A cursor requires an indirection when looking at the data in the debugger.
// I.e. a `char*` member shows you directly what you should be looking at,
// whereas if you have the pos, you need the container and to use debugger expressions
// to see the content.
uucidl /
Created Apr 28, 2017
Symbols; Symbol Server on Windows
uucidl / 00array.h
Last active Dec 14, 2017
Opaque struct example
View 00array.h
#pragma once
/* @language: c11 */
#include <stddef.h>
#include <stdint.h>
#if defined(__cplusplus)
#define ARRAY_ALIGNAS alignas(8)
uucidl /
Last active Sep 25, 2019
The Problem Of UI (User Interfaces)

Asynchronous updates are somewhat useful to distribute computations.

However this makes behavior composition hard (callback/promise etc) and callstacks start losing their effectiveness when a crash occurs, since scope is unclear.

You can’t perform that action at this time.