Pull to refresh
64K+

*nix *

A hub abot UNIX like OSs

39,87
Rating
Show first
Rating limit
Level of difficulty

Your Desktop Anti‑Detect Setup Doesn't Survive Mobile

Reading time4 min
Reach and readers5K

When I added mobile personas to a browser that already had desktop ones working, I assumed the work was mostly string substitution: swap the user agent, set touch points to 5, shrink the viewport, done. That assumption survived about a day.

Mobile fingerprints aren’t a variant of desktop fingerprints. They’re a different set of constraints, and most of the desktop toolkit either doesn’t apply or actively gives you away. Here’s what I ran into, in the order it hurt.

Read more

Anatomy of a Broken Benchmark Runner: How Seven AI Models Fixed (or Didn't Fix) run-code.sh

Level of difficultyMedium
Reading time11 min
Reach and readers3.4K

There is a question quietly buried inside every task handed to a language model, and it rarely gets asked out loud. Do you trust one model? Do you go looking for the best model? Do you run several models side by side and keep whatever each of them happens to catch? Or — one turn further still — do you hand that whole pile of partial answers to yet another model and ask it to combine them into one? Each answer sounds reasonable on its own. Each is also, on its own, incomplete.

The goal here is to actually run that experiment rather than assume how it comes out. A single broken bash script, with seven distinct bugs of varying severity, is the test case, and the research runs in two rounds.

Round one: one model, unaided. Four models — Sonnet 5, HY3, Qwen3-Max, DeepSeek-V4-Flash — each fix the script working alone, with no knowledge of what the other three are doing. That's the first framing: one model, fixing only what it personally notices.

Best of the four. Once all four independent attempts exist side by side, the next question follows on its own: if you had to ship just one of these four scripts, which is best? Table 1 works that out below — though "best" here will turn out to mean "most complete," not "complete." Even the strongest single script among the four leaves real bugs unresolved.

Round two: each model selects the best from all four. That incompleteness is why a second round exists at all. Seven more models — ling-3.0-flash, Mistral-Medium-3.5, Nemotron-3-Super-120B, Qwen3-Max, DeepSeek-V4-Flash, Gemini Pro, dots-studio-3-note — are each shown the same four fixed scripts from round one and given the same job: pick out whichever fix, from whichever of the four sources, is genuinely the best solution to each bug, and assemble those choices into a single script.

Who actually combined best. All seven believe they've picked the best pieces. That's exactly the open question this round is built to test: does the model whose combination is objectively the strongest also turn out to be the one whose combination reads as the strongest — or does a different one of the seven, working from the exact same four inputs, put together something better than the obvious pick? Table 2 is where that gets settled, not here.

Read more

Сray: Resurrection

Level of difficultyMedium
Reading time12 min
Reach and readers7K

There are things in the IT industry whose even existence has become a beautiful myth.

The knowledge described in this article is extremely rare, as it has previously been held by individuals with an academic degree, special training, and, most importantly, access to the necessary equipment.

Read more

What OpenWrt router to buy in 2025?

Level of difficultyEasy
Reading time22 min
Reach and readers7.1K

I write a lot about OpenWrt and often get questions about which router to get for this OS. Last year I already did a review of routers best suited for OpenWrt. Back then, the selection wasn't very large, but now things have changed for the better. That's why I've made a new, up-to-date breakdown for those who don't know which router to choose.

A router, like any other device, should be bought to fit your needs. For example, Linux users are used to buying laptops specifically for Linux, not just the first one they see. It's the same here: if you need OpenWrt, you should also choose a router wisely, and not hope that custom firmware will turn a 700-ruble router into a gem.

In 2023 and 2024, interesting routers have appeared that are already supported by the OpenWrt project. These routers are based on ARM processors. Such routers have been released by several companies, and their number will only increase going forward.

Read more

A Quick Guide to Setting Up SNMPv3

Reading time7 min
Reach and readers4.3K

Setting up a v3 user on the server-side agent for the default Linux snmpd (net-snmp package). Out of scope: SNMP traps and read-write (rw) users.

SNMP version 3 allows packet transmission in encrypted form, making it safe to transfer telemetry over public networks without the risk of exposing either authentication information (analogous to a community string) or the data stream itself, which is encrypted using a symmetric algorithm with a shared key.

Let me figure it out →

Rabbit Testing: A Multifaceted Approach to Quality Assurance

Level of difficultyMedium
Reading time4 min
Reach and readers3.3K

In the fast-paced world of software development, ensuring the quality and reliability of applications is crucial. With the ever-increasing complexity of software systems, it becomes essential to adopt a comprehensive and structured approach to testing. One such approach can be encapsulated in the acronym "RABBIT," where each letter stands for a distinct branch of testing. This multifaceted strategy covers various testing methodologies that together create a robust framework for quality assurance. This article explores each branch of RABBIT testing in detail, providing insights into their significance, implementation, and appropriate use cases.

Read more

Starfive visionfive 2: home cookbook

Reading time10 min
Reach and readers5.7K

Recently I have bought starfive visionfive-2 SoC for my own experiments, honestly speaking
I am striving to work with risc-v. After some time I decided to share my experience. Here my bulletpoints:

Small preparation USB-to-Serial connector Write image to microSD/SSD Set boot mode settings

Boot Update bootloader Build kernel Native build Pod build Cross-build on amd64: fast and handy

Chroot to risc-v system from amd64 and install packages

Bonus 1: run qemu with risc-v

Bonus 2: build deb packages for risc-v

Bonus 3: kernel build script

Conclusions

Read more

Structure of Linux driver for single-board computer

Level of difficultyEasy
Reading time5 min
Reach and readers2.5K

Hello my name is Dmitry. Recently I wrote article "Building firmware for Orange PI i96 (Orange PI 2g-iot) from scratch" . If you haven't read it yat, I highly recommend. And there I noticed that in order to build firware on current kernel, I have to rewrite drivers wirh new archetecture "Device tree". In this article I have revelate how I do it.

Read more

Building firmware for Orange PI i96 (Orange PI 2g-iot) from scratch

Level of difficultyEasy
Reading time14 min
Reach and readers4.1K

Hellow my name is Dmitry. Once I bought "Orange PI i96", but unfortunately producer not update it firmvere very long. Last firmwere kernel version is 3.10.62 but kernel current at time this article writing (russian version) is 6.5.1. And so I decide build my own firmware from scratch, and do it from sourse completely.

Read more

Memory consumption of .NET applications on Linux

Level of difficultyMedium
Reading time12 min
Reach and readers11K

In this article, I will cover the memory consumption of .NET applications on Linux. Firstly, we will try to understand the idea of virtual memory. Then, we will examine the memory statistics that Linux provides, such as RSS (Resident Set Size), VmData, RES (Resident Memory Size), and SWAP. Following that, we will delve into specifics related to the .NET.

Read more

Writing an interpreter (virtual machine) for a simple byte-code + JIT compilation

Level of difficultyMedium
Reading time10 min
Reach and readers3.6K

There are two articles on Russian, the author of which writes a virtual machine (interpreter) for executing a simple bytecode and then applies different optimizations to make this virtual machine faster. Besides that, there is a compiler of a simple C-like language into this bytecode. After reading this article and getting familiar with the compiler, I thought that it would be interesting to try writing a virtual machine for this language that would be able to apply JIT-compilation to this bytecode with the libjit library. This article describes the experience of doing that.

I found several articles online that describe the usage of this library, but those that I saw, describe the compilation of concrete programs with libjit, while I was interested in compiling arbitrary bytecode. For people interested in further reading, there is an official titorial, a series of articles and a series of comparisons (in Russian).

The implementation was done in C++ because we aren`t playing games here. All my code is in my repository. The "main" branch has just the interpreter of the PigletVM bytecode; "labels-with-fallbacks" has a partial JIT compilation implementation (that doesn`t support JUMP instructions), "full-jit" has fully working JIT-compilationl; "making-jit-code-faster" makes code generated by JIT work faster and "universal-base-vm*" branches merge the interpreter and JIT-compilation implementations, by implementing a base generalised executor, which can be used for different implementations of PigletVM (both the interpreter and libjit compilation)

Read more

Making Java 8 aware of Let's Encrypt root certificate

Level of difficultyEasy
Reading time3 min
Reach and readers5.1K

When using older version of Java with not updated truststore, you may face an error while connecting to web hosts, that Java is unable to find a valid certification path to the requested target.

This happens because JRE truststore is unaware of the new root certificate that is being used by Let's Encrypt nowadays. Below I tried to clarify detail behind this issue and how to solve it. I hope newcomers might find this material helpful.

Read more

Wi-Fi internet radio from a router with station switching capability

Level of difficultyMedium
Reading time8 min
Reach and readers4.5K
Wi-Fi интернет-радиоприёмник.
ChatGPT was not used in writing this article.
The animated image uses the webp file format instead of gif.
In this article, you will find a complete description of how to make a Wi-Fi internet radio receiver from a router that can play mp3 streams from internet radio stations.
It is also possible to switch between two internet radio stations. We will use OpenWRT firmware installed on the router to create a Wi-Fi internet radio. It is possible to complete this project without using a soldering iron. All the components can be placed inside the router to create a finished device — a Wi-Fi internet radio.
To make this, you will need:
Read more →

Wie ich ein einfaches Monitoring von Kanälen mit Benachrichtigungen an Slack ohne Erfahrung gemacht habe

Level of difficultyEasy
Reading time3 min
Reach and readers1.2K

Arbeiten im technischen Support brachte zusätzlich zu allen Aufgaben die Pflicht mit sich, die Kommunikationskanäle zu überwachen. Dies wurde über den Grafana-Dienst realisiert, der die erforderlichen Metriken aus Zabbix bezog. Da die Art der Arbeit jedoch bedeutete, dass man nicht immer an seinem Arbeitsplatz sitzt, kam mir die Idee, dies ein wenig zu automatisieren und Benachrichtigungen auf das Telefon oder zum Beispiel in einen Messenger zu erhalten, falls ein Kommunikationskanal ausfällt. Allerdings hatte ich keinen Zugriff auf das Zabbix-System und auch keinen erweiterten Zugriff auf Grafana.

Read more

gookit/goutil — released v0.6.10, an extension library of common Go features

Level of difficultyMedium
Reading time5 min
Reach and readers1.3K

gookit/goutil An extended library of Go's common functionality. Contains: number, string, slice/array, Map, struct, reflection, text, file, error, time and date, test, CLI, command run, system information, formatting, common information acquisition, etc.

Read more

Exploring a possible implementation of non-blocking IO by writing a server on pure syscalls

Reading time11 min
Reach and readers3.7K

How do people usually write a server if they don't really care about performance? A program starts, then starts accepting incoming connections from clients and starts a new thread for each client, which is engaged in servicing this client. If you use framework, like Spring or Flask or Poco there, then it does something like this inside itself - the only difference is the threads can be reused, that is, taken from a certain pool. It's all quite convenient, but not too effective (and Spring is bad). Most likely, your threads serving clients do not live long and most of the time they are waiting either to receive data from the client or to send it to the client - that is, they are waiting for some system calls to return. Creating an OS thread is quite an expensive operation, as is context switching between OS threads. If you want to be able to serve a lot of customers efficiently, you need to come up with something else. For example, callbacks, but they are pretty inconvenient (though there are different opinions on this).

Another option is to use non-blocking I/O in combination with some kind of implementation of user-space threads (fibers). In this article I will show you how to write all this with your own hands.

Read more

Make first deb-src package by example cri-o

Reading time9 min
Reach and readers3.9K


Overview


Once every true-linux engineer gets a trouble: there is no any software in his distro or it's built without needed options. I am keen on the phrase: "Only source control gives you freedom".


Of course, you can build this software on your computer without any src-packages, directly (with simplification: configure, make, make install). But it's a non-reproducible solution, also hard for distribution.


The better way is to make distro-aligned package that can be built if needed and that produces lightly distributed binary-packages. It's about debian-source packages(debian,ubuntu,etc), pkgbuild (for arch), ebuild for gentoo, src-rpm for red hat-based, and many others.


I will use cri-o like a specimen.


Before reading the text below I strongly recommend to get familiarized with the official Debian policy manual placed here and debhelper manpage.


Also you will be required to setup some variables like DEBMAIL and DEBFULLNAME for proper data in changelog and other places.

Read more →

An Antidote to Absent-Mindedness, or How I Gained Access to an OpenShift Node without an SSH Key

Reading time6 min
Reach and readers5.9K

Typically when a Node falls out of the OpenShift cluster, this is resolved by simply restarting the offending element. What should you do, however, if you’ve forgotten the SSH key or left it in the office? You can attempt to restore access by using your wit and knowledge of Linux commands. Renat Garaev, lead developer at Innotech, described how he found the solution for this riddle and what was the outcome.

Read more

Introducing into calamares bootloader

Reading time13 min
Reach and readers9.3K


Overview


Sometimes all of us need to make a graphical installer for one's own linux distro. It goes without saying that you are able to use a distro-specific installer like Anaconda for RedHat-based or DebianInstaller for debian-based. On the other hand Calamares is a graphical installer which is not aligned with only one package manager.


I want to share my experience how to make a universal install solution with GUI. I did not find any complete article about it, hence, I reinvented the wheel.

Read more →

Windows and Linux (Fedora KDE): difference, configuration, dual-boot

Reading time31 min
Reach and readers4K

I reinstalled both Windows and Linux (Fedora) recently on a notebook PC, and I decided to write the summary article about my experience with both OS. I'm also going to describe how to configure each OS via command-line and set up a dual-boot system.

Read more
1