Decoding Leather Products: From Genuine to Synthetic | February 23 2026, 18:11

Today I learned how the hierarchy of leather products is actually structured. Everyone knows that faux leather is completely synthetic; it’s a layer of polymer on a fabric base. There is also cheap leather, often labeled as Genuine Leather, which technically remains an animal-derived product. It turns out to be the lower, looser layer of the hide, which on its own lacks strength or aesthetics, so it’s turned into a sort of sandwich, encased in a thick layer of plastic (polyurethane) with embossing. Essentially, cheap leather is split or compressed leather scraps (Bonded leather or bi-cast/tri-cast), glued together with plastic. It’s essentially akin to plywood or particle board.

How such leather is produced: 1) Leather scraps and waste are taken 2) they are shredded into small fibers 3) mixed with a binder – polyurethane or latex – resulting in a mass similar to pulp 4) this mixture is evenly distributed on a substrate, which typically serves as fabric or paper material 5) a roller or plate with a pattern mimicking natural leather is then pressed onto the surface of the mixture, creating a texture reminiscent of real leather. 6) After drying, a protective coating is applied to enhance the strength, wear resistance, and appearance of the material.

Expensive leather is called Aniline or Full Grain. Essentially, it is made from the top part of the hide (which is exposed to air on the animal). It is dyed with transparent dyes, and contains no plastic. Nubuck or suede is part of the hide which, excuse me, comes in contact with the flesh.

Many also judge the quality of leather by its smell, thinking that a distinctive aroma is the main sign of authenticity and high class. This is easily mistaken. The scent we associate with expensive leather is often the result of chemists’ work. Manufacturers of cheap bonded leather products use special fragrance sprays that mimic the smell of expensive tanning. Real high-quality leather, such as vegetable-tanned leather, smells more like wood, oak bark, or mimosa, because these substances are used in its processing.

Another professional secret concerns the edges of the product. If you see that the edge of a bag or belt is neatly filled with a thick layer of “rubber” or paint so that the structure of the layers is not visible, this is often not done for design’s sake. Such a technique helps to conceal that very plastic sandwich which makes up the material. Craftsmen working with truly high-quality Full Grain leather often leave the cuts open or just slightly polish them with wax, because they have nothing to hide — the fiber structure of such leather is equally dense throughout its thickness.

Exploring Algorithmic Stylization in Plotter Art: A CMYK Fractal Journey | February 01 2026, 04:18

Now that I have a plotter, I am fully experimenting with ways of algorithmic image stylization. To achieve what is attached, a Minimum Spanning Tree algorithm was used. Essentially, it converts an image into stochastic rasterization – that is, where it’s darker, there are more dots, and then connects the dots with lines so that all points are connected in a single network, the total length of all lines is minimal, and there are no closed loops (meaning it’s precisely a “tree” with branches, not a “web”).

And this is what I do with each of the CMYK channels, then combine the result into a color picture. On this picture, there seem to be no other colors except for these four CMYK ones, but in reality, there is a bit because some smoothing has crept in.

Printing such on a plotter, of course, is difficult, I will be waiting forever, but I am getting the hang of it, I have already printed the first color picture (it turned out so-so. Well, the first pancake is always lumpy. Comments below)

Designing 3D Volleyball Training Tools on the Fly | January 01 2026, 21:21

What I did on the plane to/from vacation and sometimes in between: 3D visualization and editing volleyball schemes for Nadya (she’s a coach). This court in the attached image freely rotates, players can be placed on it, and the ball and player paths are shown – all in 3D.

The ball’s trajectory is calculated so that it does not cross the net when moving from A to B (Bezier formula). Players can take several poses – right now there are hastily made poses for serve, attack, block, pass/receive. Interestingly, in the code: I had to write a bit of “volleyball brains”. The system itself calculates the ball’s trajectory through Bezier curves so that it always passes over the net. Moreover, the height of the launch depends on the type of action: for an attack, the ball “launches” from a higher point than for a pass. I also added auto-rotation: the 3D model itself turns its face to where, according to the scheme, it needs to pass or run.

The longest and most difficult task was creating the 3D model of a female volleyball player. To generate a realistic volleyball player, I used the tripo3D service. It gave me a model in a neutral pose (for free). Theoretically, you can then use Blender and the Rigify plugin to attach an armature to it and move its arms and legs, which would recalculate the model.

However, in reality, this approach does not work well: the AI-generated model contains a large number of geometric errors, which the renderer forgives but Rigify does not. They can be roughly divided into two types — incorrect polygon normals and issues with non-manifold geometry, which are significantly more challenging to fix. Inside the body, there may be “floating” clusters of polygons or intersecting surfaces. When Rigify tries to calculate weights (which bone affects which part of the skin), this internal noise confuses the algorithm, and as a result, the weights are distributed chaotically (for example, moving the arm might start pulling the mesh on the stomach). Plus, the model is slightly asymmetrical.

Non-manifold is a geometry error where the topology of an object ceases to be correct in terms of a three-dimensional body: edges may belong to more than two polygons, polygons may only touch at vertices or edges without a common volume, and “hanging” surfaces or zero thickness may appear inside the model. Such geometry formally does not describe a closed volume, causing problems with rigging and deformations. Moreover, the model needs to be simplified because millions of polygons are not needed for rendering in real-time in a browser.

I fixed these using MashLab, additionally refining by hand (“with a file”). In the end, the model turns out slightly different from the original almost everywhere. The original model had “skin” in the form of textures – the face, shirt, and shorts had to be colored. How to transfer all this to a simplified model? For that, there’s a special operation in Blender called Baking. This also involves some tricks. In the end, it didn’t transfer perfectly, but perfection isn’t necessary yet.

Next, we attach the armature to the “joints”, and after about three hours of figuring out why everything does not work as it should, it finally worked. I made four poses, and now each circle (player) can be told which pose it is in.

I’ll also need to make dynamic changes to the uniform colors – that shouldn’t be difficult. There’s also an idea to transfer poses from photographs – this is more complicated, but generally feasible. Using MediaPipe/AlphaPose, you can detect key points in 2D, then some models like HMR/HybrIK can “lift” flat coordinates into 3D space, outputting relative joint rotation angles. The resulting data can be attempted to be projected onto a Rigify skeleton. Since the proportions of the generated volleyball player and the person in the photo may not match, that’s exactly why Inverse Kinematics (IK) is used. This part is quite complex, but overall it’s not strictly necessary – just interesting to figure out and make something functional.

Video in the comments

Crafting a Custom Volleyball Play Editor | December 23 2025, 21:39

Tomorrow is the flight to Costa Rica, and here I am creating (or created) a volleyball playbook editor for Nadya. As a coach, she prepares for her sessions and leaves behind hundreds of pages of text with diagrams on each page. The text is handwritten, and theoretically, it’s simple to convert to a digital format, but converting the diagrams into high-quality vector format is exhaustive—there are so many. So, I decided to make the software yesterday. And today, the first version is ready to use. This is a diagram editor, somewhat remotely similar to a diagram editor. Also got to dig into the fabric framework.

The process looks like this. Gemini/ChatGPT through an API can convert hand-drawn diagrams into a structure that my program understands. Then we open this file in the program, and tweak a bit if necessary. Or maybe even redraw from scratch – for simple diagrams, it’s even easier. There are four types of objects – player, cone, target, text. Any can be connected with arrows, solid or dashed, labeled with text or numbers or not, in any chosen color, straight or curved. If you touch an object with the mouse, all connected arrows will follow.

The result can be saved in a file. You can open a template and based on it create something new. You can generate a Python script – yesterday it was still relevant, today generally not needed anymore – high-resolution SVG/PNGs are made directly from this app (yesterday they were made separately in Python).

It’s clear why you wouldn’t just ask Gemini/ChatGPT to do something for ready-made vector editors: firstly, they are too flexible and limiting LLM’s imagination is quite difficult. As a result, you get stylized, unusable images. Here, instead, there is a framework consisting of four objects and that’s all, LLM knows about it and only generates what can be represented with them. Secondly, this framework operates with objects, not elementary vector primitives.

Overall, this is the first step towards my idea of an automatic diagramming system based on descriptions. Where you give an LLM a diagram description, and it consistently generates what is written in the description, and if you make any corrections, they will be taken into account during regeneration.

From Freezer to Fridge: A DIY Cooling Hack | December 19 2025, 00:56

Today I sold a refrigerator. It has a story. The essence of it is that it’s not a refrigerator, although it looks like one. It’s a freezer. And it freezes on average to minus 18 degrees. I bought it second-hand, thinking it was a refrigerator. The buyer also came today thinking it was a refrigerator.

And here I realize that minus 18 degrees is not at all what I need.

Well, I am a Solution Architect. I didn’t want to dig into it, I just drove to Lowe’s and bought a simple blinker. It turns on and off according to schedule whatever is plugged into it. I stuck a radio thermometer inside (I had one) and adjusted the blinking frequency (20 minutes) so that the internal temperature was on average +4 degrees Celsius. The radio thermometer showed that the temperature fluctuations were very small – nominally plus or minus 0.5 degrees from +4, even less. And so it worked for me for some months until I realized that I just didn’t need it.

Sold it today with the adapter. It’s gone to the people.

The Surprising Origins of the Word “Tumbler” for Drinking Glasses | October 05 2025, 15:32

In our language, glasses are called tumblers. I decided to find out why, because a tumbler is essentially an acrobat.

There are two mutually exclusive theories. According to one, the original tumbler glasses had a rounded or slightly convex bottom, which allowed them to “rock” or “tumble” (to tumble), but not tip over completely. So, a tumbler in this sense is kind of like a “weeble.” According to the other, they were specifically made so they could not be put down on the table open, because, say on a ship, they could tip over and the valuable rum would spill out.

Introducing the AI-Powered Text-to-Diagram Generator | September 30 2025, 20:57

While working on a book, I realized what kind of product I’m missing. It’s an AI diagram generator based on textual descriptions.

The idea is that the master document for the diagram is text. This textual description can be (and should be) quite detailed, so the generated diagram exactly matches the author’s vision. The diagram itself is not edited. That is, it can be edited – moving circles around, but ideally, after making changes, the system should update the text, generating from which will result in what the user adjusted.

The result — the diagram — should correspond as closely as possible to the description. If it does not match the description because, for example, it’s impossible to make a triangle with three obtuse angles, the system should do its best and provide a verbal response about what didn’t work. The user can then modify the task so that the system complies and produces the diagram correctly.

But then we understand that the author might have randomly achieved something that they liked with their flawed text. And if regenerated, it might turn out differently, and not necessarily better. Therefore —

You could ask the system to generate a diagram description from the diagram, which, if inputted back into the diagram generator, would result exactly in what the description was generated from. Yes, this description would be more verbose and complex, but it would more reliably describe the result.

So, from this point, you are no longer working with the diagram. You are working with text. If a diagram is needed — you simply compile the text into a diagram and it turns out as needed. But you don’t even work directly with the text. You work with this diagram-description text through an LLM, asking it to add some block, and the text changes, but changes in a way that everything doesn’t suddenly shift.

The final diagram should be in an object form, from which raster (PNG) or vector (SVG, EPS) images can be created.

It would also be great if such a system could take existing diagrams or diagram templates so that it could borrow styles and existing conventions on how to display what.

So, these are my fantasies. If anyone has ideas on how to implement this — let’s discuss 🙂

Inside the High-Tech World of USB-C Cables: More Than Just Wires | September 22 2025, 22:50

It turns out USB-C cables are sometimes whole computers inside the odd form factor of a wire. Watching a video where guys from Adam Savage’s dissected an Apple Thunderbolt 4 cable ($130) using a CT scanner, explaining its internals, and comparing it to a similar cable for $12.

The cable connector contains a complex system that includes a full-fledged processor, two power supplies, and many other components. The processor splits data into multiple parallel streams and converts them into differential signals that travel through twisted, intertwined pairs of wires. The system sends two signals simultaneously, but in mirror-opposite directions. This helps protect the signal from interference (from vacuum cleaners, mobile phones, etc.). Indeed, the circuit board inside is nine-layered.

On the internal circuit board, there are interesting serpentine/wavy tracks with sizes in fractions of a millimeter. It turns out, Apple engineers intentionally made them longer to match the overall length with the neighboring longer tracks (because they include turns). This is necessary for the signals to reach the processor absolutely simultaneously, down to the nanosecond.

The cable itself inside is made up of many individually shielded smaller coaxial cables. There are more than a dozen of them.

The cheap cable lacks this smart electronics, no active components inside. It just has connectors and wires.

But the coolest thing – the guys post such scans in the video description as a link to a viewing program. There you can rotate and examine everything on your own. I’ll put it in the comments