Full Width [alt+shift+f] Shortcuts [alt+shift+k]
Sign Up [alt+shift+s] Log In [alt+shift+l]

Words and Buttons Online

Words and Buttons...
Either your estimates suck or your job does This page uses polynomial modeling to show why software engineering tasks are often impossible to...
a year ago
Words and Buttons...
The Real C++ Killers (Not You, Rust) All the “C++ killers”, even these which I wholeheartedly love and respect like Rust, Julia, and D,...
11 months ago
48
11 months ago
All the “C++ killers”, even these which I wholeheartedly love and respect like Rust, Julia, and D, help you write more features with fewer bugs, but they don't much help when you need to squeeze the very last FLOPS from the hardware you rent. As such, they don’t have a...
Words and Buttons...
A smooth and sharp image interpolation you probably haven't heard of An image interpolation that gives us a continuous and smooth image, where every interpolated value...
9 months ago
48
9 months ago
An image interpolation that gives us a continuous and smooth image, where every interpolated value only depends on the four neighboring pixel values. The image becomes smooth, but sharp features remain sharp.
Words and Buttons...
Static typing isn’t free. Where do you think the C++ angry mob comes from? Type inference works like logic deduction so any program in a statically typed language is two...
a year ago
44
a year ago
Type inference works like logic deduction so any program in a statically typed language is two programs. The first one is the thing you sell, and the second – is a model that undergoes some sort of verification every time you run a compiler. This second program, although, often...
Words and Buttons...
Rational interpolation Rational interpolation is a step forward from polynomial interpolation towards rational splines....
11 months ago
43
11 months ago
Rational interpolation is a step forward from polynomial interpolation towards rational splines. With rational interpolation, you can build functions that run through a set of points and also have vertical asymptotes whenever you want. With this capability, you can now model...
Words and Buttons...
Why is it ok to divide by 0.0? This explains why the division by zero in floating point numbers is ok.
over a year ago
Words and Buttons...
[Renovated] Even if you can't write assembly like a poet, you can read disassembly like a hunter This is a very concise introduction to x86 disassembly. It shows that you probably have all the...
a year ago
30
a year ago
This is a very concise introduction to x86 disassembly. It shows that you probably have all the skills to start reading disassembly right now even if you thought it was too complicated for you. It really isn't, see it for yourself.
Words and Buttons...
[Renovated] Interactive guide to homogeneous coordinates Why would you care about homogeneous coordinates, whatever they are? Well, if you work with...
over a year ago
28
over a year ago
Why would you care about homogeneous coordinates, whatever they are? Well, if you work with geometry: 3D-graphics, image processing, physical simulation, — the answer is obvious. Knowing the mathematics behind your framework enables you to write more efficient code. But even if...
Words and Buttons...
Challenge your performance intuition with nanosecond sorting If the operation you want to speed-up already runs in a few nano-seconds, your reasoning about...
over a year ago
26
over a year ago
If the operation you want to speed-up already runs in a few nano-seconds, your reasoning about algorithmic complexity probably wouldn't apply. The most effective algorithms become mediocre while the useless rise from the oblivion to shine and amaze. One of these algorithms is the...
Words and Buttons...
[Renovated] Outperforming everything with anything It's about 100 lines of Python code that generate a linear solver in LLVM intermediate language...
over a year ago
26
over a year ago
It's about 100 lines of Python code that generate a linear solver in LLVM intermediate language outperforming C and C++ solutions. Originally published in mid 2018, now completetly rewritten.
Words and Buttons...
SWInE: Simplicial Weight Interpolation and Extrapolation I stole exactly three ideas from other people, made them work together, and gave that compilation a...
over a year ago
26
over a year ago
I stole exactly three ideas from other people, made them work together, and gave that compilation a funny name. I had my fun playing with the concept but the conclusion I had to put into my thesis was: “SWInE is rather promising”. In academic language, this means “useless”....
Words and Buttons...
Why did I write Geometry for programmers This is not an interactive page, it has zero didactic value. It does explain why Words and Buttons...
over a year ago
25
over a year ago
This is not an interactive page, it has zero didactic value. It does explain why Words and Buttons has been stagnant for a while though. I have been writing a book. Why? Well, visit and see.
Words and Buttons...
Circles and lines vs. polynomial splines Usually, when you want to make a parametric curve, you should go for a polynomial spline. But...
over a year ago
25
over a year ago
Usually, when you want to make a parametric curve, you should go for a polynomial spline. But sometimes, for the reasons mentioned only in the second half of this page to keep you intrigued, you are not satisfied with polynomials. You have to look elsewhere. This page shows you...
Words and Buttons...
Check if your performance intuition still works with CUDA An interactive quiz about microoptimizations in CUDA. 10 rounds, two pieces of code per each, you...
over a year ago
24
over a year ago
An interactive quiz about microoptimizations in CUDA. 10 rounds, two pieces of code per each, you get to guess which is the faster.
Words and Buttons...
Yet another floating point tutorial I still think that reexplaining some obscure concepts with different words (and buttons) might help...
over a year ago
24
over a year ago
I still think that reexplaining some obscure concepts with different words (and buttons) might help someone understand floating point numbers better. To do fewer mistakes, to make things faster, to create better software in general.
Words and Buttons...
The simplest possible smooth contouring algorithm The algorithm that takes a distance function and makes a smooth contour out of it in three steps.
over a year ago
Words and Buttons...
SymPy makes math fun again It's a Python library that does the boring part of math for you. Moreover, it does it fast,...
over a year ago
24
over a year ago
It's a Python library that does the boring part of math for you. Moreover, it does it fast, accurate, and without angst. In other words, it is everything I'm not.
Words and Buttons...
[Renovated] Mathematical analysis explained with Python, blood, and TNT A brief introduction to mathematical analysis with a little SymPy on the side. The page explains how...
over a year ago
24
over a year ago
A brief introduction to mathematical analysis with a little SymPy on the side. The page explains how to disassemble a function, and how to assemble it back from the derivatives.
Words and Buttons...
[Renovated] NURBS is just an acronym NURBS stands for the non-uniform rational basis spline. There are three separate concepts. This...
over a year ago
23
over a year ago
NURBS stands for the non-uniform rational basis spline. There are three separate concepts. This guide walks you through these concepts one by one.
Words and Buttons...
What can we learn from sexaplication on nuclear power plants Component redundancy is used heavily in safety-critical and mission-critical systems for reliability...
over a year ago
23
over a year ago
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...
Words and Buttons...
Can we use lemniscates for ultra-cheap vector graphics? This depicts an old idea of using multifocal lemniscates to draw arbitrary curves. In somewhat...
over a year ago
23
over a year ago
This depicts an old idea of using multifocal lemniscates to draw arbitrary curves. In somewhat limited scope, this may be indeed an economical alternative to splines.
Words and Buttons...
[Renovated] Polynomial approximation and interpolation This explains approximation and interpolation, how to use polynomials for that, and how to make both...
over a year ago
Words and Buttons...
Complex numbers and conformal mapping This explains the geometry of complex numbers. Explains conformal transformations, introduces...
over a year ago
23
over a year ago
This explains the geometry of complex numbers. Explains conformal transformations, introduces analytic functions, and shows that analytic complex functions are conformal. And using the connection between the geometry and the analysis explains it all in just some five minutes.
Words and Buttons...
Yet another alternative to floating point numbers This shows how computeable intervals written in rational bounds may not only account for the input...
over a year ago
23
over a year ago
This shows how computeable intervals written in rational bounds may not only account for the input error but keep computational error under control as well.
Words and Buttons...
Simple image vectorization Vectorization is when you take some minecraft-style raster image and make a crisp vector picture out...
over a year ago
22
over a year ago
Vectorization is when you take some minecraft-style raster image and make a crisp vector picture out of it. The algorithm describes shows how bilinear interpolation, polynomial approximation, differential analysis, and iterative algorithms work together to solve a practical...
Words and Buttons...
[Renovated] Logic programming in C++ When you write in C++ you actually write in two languages at once. First is C++, and the second one...
over a year ago
22
over a year ago
When you write in C++ you actually write in two languages at once. First is C++, and the second one is the invisible Prolog. If written properly, the second program is helpful. However, if being neglected, it turns your code into an untangleable mess of incomprehencibles...
Words and Buttons...
[Renovated] Estimating floating point error the easy way Unforeseen floating point error is the source of the most unpleasant bugs. The bugs that come and go...
over a year ago
22
over a year ago
Unforeseen floating point error is the source of the most unpleasant bugs. The bugs that come and go unpredictably. The bugs that don't reproduce on unit-tests and lay low through the integration phase only to be seen by your most important customer.
Words and Buttons...
[Renovated] Challenge your performance intuition with C++ magic squares Let's play a game. There will be twelve rounds, each round is a match between two solutions. Or...
over a year ago
22
over a year ago
Let's play a game. There will be twelve rounds, each round is a match between two solutions. Or rather between their execution times. Using your intuition and best judgment, please estimate their relative performance.
Words and Buttons...
Lagrange polynomial as a gateway drug to basis splines This explains Lagrange polynomial: why does it run through all the points, what is the basis...
over a year ago
22
over a year ago
This explains Lagrange polynomial: why does it run through all the points, what is the basis polynomial, and how come it's a polynomial in the first place.
Words and Buttons...
[Renovated] Interactive explanation of marching cubes and dual contouring Marching cubes and dual contouring are often used for mesh generation. This explanation shows how...
over a year ago
22
over a year ago
Marching cubes and dual contouring are often used for mesh generation. This explanation shows how they work, what are their differences, similarities, and limitations.
Words and Buttons...
Using logical operators for logical operations is good A folow up on a guessing game with C++ operators. Let's redo a few rounds. The benchmark is the...
over a year ago
22
over a year ago
A folow up on a guessing game with C++ operators. Let's redo a few rounds. The benchmark is the same, the questions are the same. The compiler is the same. The only thing that changes is the platform. This is now CHIP with ARMv7.
Words and Buttons...
Sine and cosine Interactive mnemonics and changeable snippets.TL&DR: Sine is like S and cosine is like C. You can...
over a year ago
22
over a year ago
Interactive mnemonics and changeable snippets.TL&DR: Sine is like S and cosine is like C. You can make things like O or 8 by using them both.
Words and Buttons...
Error codes are not numbers. But they are. Can we exploit that? People do it with different feelings. Sometimes with pride for a clever solution, sometimes with...
over a year ago
21
over a year ago
People do it with different feelings. Sometimes with pride for a clever solution, sometimes with guilt for an obscure hack. Which is odd since there is nothing particularly hacky about it. The ISO/IEC 14882 is ok with it. The IEEE 754 is ok with it. So why is it a hack and not a...
Words and Buttons...
Arctangent scale. It's like the logarithmic scale but infinite With arctangent used as a scale, we can show any function on a screen. And not just a fragment of it...
over a year ago
Words and Buttons...
Programmer's introduction to linear equations [republished in Ukrainian] The same as https://wordsandbuttons.online/programmers_introduction_to_linear_equations.html only in...
over a year ago
Words and Buttons...
[Republishing] Redundant stories about redundancy Component redundancy is used heavily in safety-critical and mission-critical systems for reliability...
over a year ago
21
over a year ago
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...
Words and Buttons...
Partial order and non-Boolean logic Non-Boolean logics are rare but not extinct. Interval logic is one example. Sometimes, you can...
over a year ago
21
over a year ago
Non-Boolean logics are rare but not extinct. Interval logic is one example. Sometimes, you can implement a logic you want within total order or partial order but sometimes even that isn't enough and you need an even more general relation. With operator overloading, you have the...
Words and Buttons...
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...
over a year ago
Words and Buttons...
Image darning It's about a feature that cleans up dirt stains from aged newspapers. I called it darning because of...
over a year ago
21
over a year ago
It's about a feature that cleans up dirt stains from aged newspapers. I called it darning because of how it works.
Words and Buttons...
Challenge your performance intuition with C++ operators A guessing game with C++ operators, context, and disassembly.
over a year ago
Words and Buttons...
Trippy polynomials in arctangent scale This shows the global properties of polynomials, their derivatives, and explains how the Maclaurine...
over a year ago
20
over a year ago
This shows the global properties of polynomials, their derivatives, and explains how the Maclaurine and Taylor series work all with animated plots in arctangent scale.
Words and Buttons...
[Renovated] Programmer's guide to linear equations This is an introduction to linear equation systems. It explains linear dependency, under- and...
over a year ago
20
over a year ago
This is an introduction to linear equation systems. It explains linear dependency, under- and over-specification, direct and iterative solvers. The guide should give you enough knowledge to find a proper solution for your task but not enough to implement one efficiently yourself.
Words and Buttons...
Lexical differential highlighting instead of syntax highlighting “Lexical” since it doesn't need true syntax analysis, primitive tokenization and filtering are...
over a year ago
20
over a year ago
“Lexical” since it doesn't need true syntax analysis, primitive tokenization and filtering are enough. And it's “differential” because it aims to highlight the difference between lexemes. Ideally, the smaller the lexical difference, the greater the color difference should be. ...
Words and Buttons...
[Renovated] Interactive introduction to iterative algorithms An interactive explanation of how iterative algorithms work. This explains convergence and the exit...
over a year ago
20
over a year ago
An interactive explanation of how iterative algorithms work. This explains convergence and the exit condition problem on an oversimplified linear system solver.
Words and Buttons...
A picture is worth a thousand tags This shows how a picture can be turned into an HTML table. With this, you can not only have nicer...
over a year ago
19
over a year ago
This shows how a picture can be turned into an HTML table. With this, you can not only have nicer tables or uglier pictures, but you can have something that is both at the same time.
Words and Buttons...
Binary search The page contains interactive plots to play with different strategies and distributions.
over a year ago
Words and Buttons...
Honeycomb texture generator It generates a seamless black and white honeycomb texture. There are a few options in the UI but if...
over a year ago
19
over a year ago
It generates a seamless black and white honeycomb texture. There are a few options in the UI but if you need more, there is some changeable code too. If you need more freedom, just get this thing on Github.
Words and Buttons...
[Renovated] Can you tell an assembly language when you see one? An interactive quiz featuring several obscure high-level languages and assembly variants.
over a year ago
Words and Buttons...
Interactive mnemonics for dot and cross vector products Dot and cross vector products are absolutely essential for everything three-dimensional. Whatever 3D...
over a year ago
19
over a year ago
Dot and cross vector products are absolutely essential for everything three-dimensional. Whatever 3D thing you do: graphics, printing, physical simulation, — as soon as you want anything beyond what your framework provides, you have to do some vector magic, and these are your...
Words and Buttons...
Bi-whatever transformations An interactive explanation of how polynomial transformations such as trilinear or biquadratic or...
over a year ago
19
over a year ago
An interactive explanation of how polynomial transformations such as trilinear or biquadratic or even linear-cubic work, and how to craft your own that fits your particular task the best.
Words and Buttons...
[e-book] So You Think You Know C? And TenMore Short Essays on Programming Languages Can’t say that running away from complexity was a smart thing to do. It was definitely not the most...
over a year ago
19
over a year ago
Can’t say that running away from complexity was a smart thing to do. It was definitely not the most productive way to create software. The journey, however, has taught me a few things so it was not a complete waste of time either. This book is a reflection of these lessons. It...
Words and Buttons...
[Renovated] Programmer's guide to polynomials and splines This is a brief introduction into polynomials. From how to make a polynomial run through your set of...
over a year ago
19
over a year ago
This is a brief introduction into polynomials. From how to make a polynomial run through your set of points to how to make it into a spline.