-
A quick and dirty pelican search engine
2025-08-24
txtpelicandev
Static website are wonderful: they require very little maintenance, are usually very lightweight and don't require fancy environments. The problem is that they aren't really made for anything "dynamic", such as internal search engines. Some solutions exist, like Lunr, Pagefind and others, but they usually are compatible with other static website frameworks but not pelican (or at least, not without considerable work), and may require some amount of external tools. But search engines can be useful. So, on a slow day, I tried to make a self-contained search engine for Pelican, using nothing but vanilla templates and JS. You can see the simplified demo to look at the code here, and the real one with some nasty stuff here. The approach is as follow: make a page with a template, which contains a list of all the articles and desired attributes, including the whole (text) content, and use javascript to filter that. Clean (kinda) and simple. First, create a simple page in content/pages (or your page directory), here using RestructuredText (but you can use Markdown if you prefer, obviously): 1 Search (Demo) 2 ############# 3 4 :date: 2025-08-24 5 :template: custom/search_demo 6 :slug: search_demo 7 :lang: en 8 :status: published 9 :summary: 10 11 This is a simplified version of my pelican's search system for demo purposes Then, create a template under theme/templates/custom, for instance named search_demo.html to match the provided template above (yes, you can omit the .html). Let's start with your run of the mill stuff: 1 {% extends "base.html" %} 2 <!-- template: custom/search_demo.html --> 3 {% block content %} 4 <main class = "search"> 5 {% block content_title %} 6 {% endblock %} 7 <h1>{{page.title}}</h1> 8 <p class = "summary">{{ page.summary|striptags }}</p> 9 10 {{ page.content }} 11 12 </main><!-- /#content --> 13 {% endblock content %} Now, let's populate the page. For that purpose, we're going to create a loop with the jinja templating engine, which lists every article as a li element under a ul list. Because the script only use the actual text, we can get fancy and have titles, dates, categories, etc. Under the {{ page.content }}, put the following code: 1 <section class = "search"> 2 <ul id = "list"> 3 <!-- List articles by recent date --> 4 {% for article in articles|sort(attribute='date', reverse=True) %} 5 <li> 6 <!-- handle "save_as" url override --> 7 <a href = "{% if article.save_as %}{{ article.save_as }}{% else %}{{ article.url }}{% endif %}"><h3>{{article.title}}</h3></a> 8 <div class = "date">{{article.locale_date}}</div>{% if article.category %}<a class = "category" href="{{ SITEURL }}/{{ article.category.url }}">{{ article.category }}</a>{% endif %}{% if article.tags %}{% for tag in article.tags %}<a class = "tag" href="{{ SITEURL }}/{{ tag.url }}">{{ tag }}</a>{% endfor %}{% endif %} 9 <!-- don't show the whole article, but we need the whole content for search purposes --> 10 <p style = "max-width: 100ch; max-height: 4rem; overflow: hidden;"> 11 <!-- get article content, but strip any html or codes --> 12 {{article.content | striptags | escape }} 13 </p> 14 </li> 15 {% endfor %} 16 </ul> 17 </section> Now, if you generate your website, you should have a page under /search_demo containing everything on your website. To make it easier to use, the content of the articles is visually truncated: but the text is still here. Now, let's add a filtering system. First off, add a search field above the ul: 1 <div class = "search_field"> 2 <input type="search" placeholder="Search..." oninput="filterByName(event)"> 3 </div> And now, the actual code. As said in the comment, it's based on Chris Gustin's search snippet, except I changed its behavior, so it doesn't show anything unless you type something. You can put that script in a file if you want, but here for conciseness I just added a <script> tag, right above the <section>. 1 <!-- https://medium.com/@cgustin/tutorial-simple-search-filter-with-vanilla-javascript-fdd15b7640bf --> 2 3 <script> 4 function filterByName(event) { 5 const searchTerm = event.target.value.trim().toLowerCase(); 6 const listItems = document.querySelectorAll("ul#list li"); 7 8 listItems.forEach(function(item) { 9 10 // If the search bar is empty, display nothing instead of all the articles 11 if(searchTerm === "") { 12 item.style.display = 'none'; 13 } 14 else { 15 // set "display: none;" on all articles not containing the search terms 16 if (!item.innerText.toLowerCase().includes(searchTerm)) { 17 item.style.display = 'none'; 18 } 19 else { 20 item.style.display = 'revert'; 21 } 22 } 23 }) 24 } 25 </script> Now, the page shows nothing except the search field. But if you start typing, it should list the corresponding results. Performances are decent: my website has 800+ articles (albeit most of them just being a single image under art, but also some pretty big articles). The whole webpage with all the text I created in almost ten years is about 1MB. A big caveat however: right now, it's only able to search for full expressions, such as "sky is obscured", but not combined words like "obscured sky mont thou". You can download the whole template as is here: search_demo.html
-
Digital art
2025-08-19
projects
Bad mirror (Pi + WS281x) Digital graffiti (Pi + Wii) Hologram
-
proc.gen
2025-08-19
projects
Stellar ticket Draconic space monorail (p5.js) Aurorae experiment (p5.js)
-
Stellar ticket
2025-08-16
projects
About# I had access to a ticket printer, so I played around and came up to some kind of "modempunk stellar system detector output". I used a list of latin words from wikimedia that I pre-processed. The printer spat some questionable names pretty quickly. Files: [stellar_system.py] [requirements.txt] [latin.csv]
-
Elben
2025-08-14
projects
Content History Physical effect on Earth Moon cycle Exploration Life Altitude numbering Elben, as seen from earth during the day Elben is an ice giant and the third planet in our solar system. It is home to three major moons, including the Earth, the biggest among them, which is in quasi-orbit with Luna or the “Moon” itself, providing a sort of natural satellite to the Earth. It has a mass of 1.024 × 10^26 kg, and a radius of 24,622 km. As such, it has a gravity relatively close to that of earth at 1.14g. It’s situated 1.795 x 10 ^ 9km from the barycentre of the solar system. Scientist believe that Elben formed when binary system was weaker, then the habitable zone reached it, which would explain why an gaseous planet with volatiles such as methane, ammonia and water would be so close to its home stars. Its name is sometimes written as “Elbin”. History# Elben is for obvious reason, the first planet to be “discovered” in the solar system: it is clearly visible in the sky during the day, and sometimes creates crepuscular nights every time the earth passes behind it. <<>> Grey mother reading future in shape of clouds Physical effect on Earth# Among other things, Elben first and foremost effect are the eclipses: every 17 days approximately, the Earth is obscured by the planet which, depending on when during the day-night cycle is, can either creates mid-day nights lasting a few hours or nothing at all. These nights are characterized by slight greenish tints when transitioning to those nights due relatively colorless composition of the atmosphere of Elben and some impurities. The second effect is its magnetic field: as Earth magnetic field is relatively weak, and getting weaker as time passes, Elben’s one is the only defense against the powerful solar winds which its the system and might kill all life on Earth. Its mass also has a impact on tides, yielding a double-cycle tides with the moon. During “constructive” cycles, tides are stronger, or might barely happen during “destructive” cycles; conversely, the constructive tides might be more destructive to the ecosystem and to humans. It is speculated that part of Earth’s life might have been sowed from Elben, given its large discrepancies with the rest of the tree of life. Moon cycle# Due to the moon being in a resonance orbit with the Earth, acting as a quasi-satellite, the Moon cycles and Elben’s cycles are synchronized and opposite. Exploration# Up until the 1960s, very little was known from Elben atmosphere. While its general composition and structure was known, everything was observed from Earth’s ground, and satellites were barely providing better data. But in 1965, Elba II, following the first iteration failure, successfully orbited around Elben before being thrown away from the system by a unplanned gravitational swing. Later that year, Elba III successfully dove into the ice giant atmosphere, providing confirmation of the atmosphere composition before burning up.  Elba II before integration Elba IV has known a similar fate. In 1966, Elba V attempted to skim the atmosphere but burned before leaving it and fell deep into its core. Finally in 1967, Elba VII, following Elba VI scrubing due to manufacturing error, skimmed the atmosphere at a relative height of 120km, before leaving the planet and transmitting valuable data. The Oncro Exploration Program (OEP) sent a probe that same year, which slowly dove into the core while sending data to an orbiter. Six other probes were sent, and Oncro 3, 5 and 6 sent pictures of actual life in Elben atmosphere: countries around the world have since promised exploration programs to investigate further, following the cultural shock of discovering life on another astral body.  Elba III last photograph Speculations of human missions have been made, including within the atmosphere. However, the cost of sending a whole launcher to allow for return of the astronauts has been prohibitive so far. Several Spatial agency have speculated on building a space station around Elben, including possibly through international cooperation. Life#  [Elben’s life and exploitation](https://www.notion.so/Elben-s-life-and-exploitation-3a0fedb567734bcfb6410f2c8c9d5e2b?pvs=21) Altitude numbering# Altitude is based around the typical altitude at which the pressure is equal to that of earth, and dealt as a “depth” : above level altitude numbers are negative and below as positive <<issue with reaching core, but like earth, theorical>> [AGE OF THE INTREPIDS: skimming Elben Atmosphere ](https://www.notion.so/AGE-OF-THE-INTREPIDS-skimming-Elben-Atmosphere-7c60dc30563441edad71ff78739fa9f1?pvs=21) [Elben colonization](https://www.notion.so/Elben-colonization-bff42a648f1f4713bbf2600f75b259a1?pvs=21)
-
Planetary system
2025-08-05
projects
This article is still a work in progress. The Aper-Elvow system is the stellar system, currently home to the human civilisation. Structure# Aper-Elvow binary# The system revolves around two stars at its center. The main star, Aper, is a a F-type main-sequence star, with a mass of 2.32×10^30 kg and a radius of 1 239 485.2 km. Its companion, Elvow, is a brown dwarf, orbiting a barycentre contained within the main star. A large plasma arc with variable intensity links the two bodies. Each star center being at 0.04AU (from real earth value) from each other, with an orbital period of four (earth) days. data value mass 1.13 radius 1.78 age 6.60 Gy old surface temperature 5180F rotational period 46 days roche distance 6.61 Pora# More details to come 0.09 Earth mass Uroti# More details to come dwarf planet, 0.003 Earth mass, elliptical orbit Elben# Detailed article about Elben Elben is an ice giant and the third planet in our solar system. It is home to three major moons, including the Earth, the biggest among them, which is in quasi-orbit with Luna or the “Moon” itself, providing a sort of natural satellite to the Earth. It has a mass of 1.024 × 10^26 kg, and a radius of 24,622 km. As such, it has a gravity relatively close to that of earth at 1.14g. It is approximately situated 1.795 x 10 ^ 9km from the barycentre of the solar system. sometimes written Elbin 2 AU, mass of 1.024 × 10^26 kg, 2.57 years (938.6925 days) orbital period Major moons: a small moon (0.00506 AU, 1.67 orbital period, 0.018 earth mass, 0.378 radius) earth (harmony lock with large moon, faking orbital around) (0.0244 AU, 16.3 days orbital period, 1 earth mass, 1 earth radius) typical moon asteroid belt# More details to come Julvenel# Mass: 4.867 × 10^24 kg, distance to barycenter 4.00 AU Heavy atmosphere used to be in habitable zone, and has trace of civilisation and still some life, like risk of rain planets ambience Kabor# rings deformed by large elliptical moon large moon icy asteroid belt# More details to come Aro# More details to come Paro# More details to come Tranulk# rings earth bis, 0.7 earth mass, 0.003 AU from neptune Europa (subsurface ocean) Europa exploration Erfartris# More details to come large rocky planet kuiper belt# More details to come
-
Astronomy
2025-07-31
projects
Origin and myths# During ancient times, as nomads were legions. oracles were speaking of a god seeking its people. It was said, massive, heavy and also described as "one who moves very little" (translations vary among tribes). Yet, The prophecy narrated that "moving" it would be the challenge for its people, and that those who would have participated to its rise through history would be rewarded accordingly. As noamds were roaming, they found a geological anomaly: a huge rock which was roughly rhomboidal, sitting in the middle of a valley. Scientifically speaking, it is an iron-type meteorite which crashed on earth approximately two billions years ago, creating the said valley. It got submerged by the lands as erosion from near by mountains drained sediments, and reappeared when the bassin actually "re-opened" to the oceans through that same process, leaking the sediments over the course of millions of years. It is believed that due to the intermediary stages, as rain accumulated, it would also be the "black island" known in ancient texts from other civilisations. The Nomads settled nearby, and thus started the rise of Oplmek, city of the Great. We know very little on how long the task of raising the artifact took, but it probably went through several milleniums. We also ignore the actual process(es?) that got involved, nor the exact mass, as the rock extends below the surface. Those doubts led to a trend in geology and archeology that the stone was actually already vertical when it crashed, and only got revealed as the sand got drained from the bassin. An unknown regent would have then pretended that it was the act of his people to impose his power over the surrounding nations. This theory is quite popular as it is still compatible with the "black island" event, and is heavily backed up by the fact that the only traces of history around this miracle are oral tales and ancient reports from across the continent, but not from the site itself. This is the origin of a still ongoing religion known as "Uô". Organisation# The main church lies on top of the Rock, in the High District. For centuries, disciples were asked to reach for that sacred temple by climbing the various structures around the rock, including the growing city. It led to a hierarchy based on which path one used, as some were harder than others. A well known path was the South Face of the rock, which was the easiest and was basically very rough stairs created by farmers to access millenials trees that started to fracture the rock and grow. It is known nowaday as a plain but challenging hiking path. The North side, which is so inclined that it is actually tilted down, is the origin of a legend of "Hakan' Bil"; he or she was for centuries the only person who succesfully climbed that side. "Hakan' Bil" is now the title of the highest rank in the organisation: because of the original way of reaching that rank, there may be several Hakan' Bil at one time, or none. Nowaday, the process for reaching ranks is way more classical, through evaluation of the commitment of one and votes from "Uoas", the members of the cult. The church displays a rather atypical structure: it is composed of a black main tower situated in a corner of the top of the rock, from which extends a triangular roof covering the main room for the ceremonies. Under it, each disciple has his/her attributed place. The rest of the surface is occupied by the housing. Despite being a cult based upon a high place, the most prestigious quarters, inhabited by the highest ranks, are suspend houses on the East side of the Rock. The lowest suspended house used to be a prison which contained a garden, prisoners being used for the harvests. This task is now reduced to the maintenance of the now ornemental garden, which is done by the elders. A word on Oplmek# The city was for a long time mainly known as a religious hub: a fair part of the city's incomes was from an luxury alcool made out of the milleniums trees growing on the South side of the rock. Some wood could be found on the grey market as magical artifacts, but it was mainly kept for the Uoas as prt of a deal with the city for the inconvenience caused by the culture. The city now also include a lot of modern buildings, including the Iris, highest tower of the city and unavoidable element of the city skyline with its white colour. Some of those towers are build on the side of the huge rock, and the prices for the flats which have an adjacent wall with the Artifact skyrocket. Due to the sand retained, the main city is on a small hill: the rest of the valley is composed of farms, separated from the city by the historic wall. The mill which feeds the fields (and which uses bassins to retain water) is one of the oldest buildings of the city. Its conduct also now support the funicular for the tourists, and the rest of the path is made through a via ferrata. The fall# People living in the High District and in the vertical suburbs started to complain of the growing number of people esacalading their houses and destroying the precious trees. Because of that, it was decided 50 years ago by the city council to build an elevator on the West side. The goal was to ease the access to the religion and thus the influence of the city. Today's Historians are still fascinated of how a simple and concrete structure induced the fall of such a major religion. ##Today status As of today, three persons in the city's council defined themselves as Uoas, and its influence even affects general public culture through various references to a "black-ish monolith" of unknown power. Yet, it is mostly considered as folklore rather than a religion. The meteorite itself is considered as the potential source of life by some scientists: analysis shown very high rates of organic materials deep inside the monolith, even if we are unable to explain how a meteorite could contain such traces. This status is mostly what maintains Uô in the collective memory, even in a mostly atheist civilisation. 
-
3700
2025-07-29
projects
Astronomy# AstronomyWhere Elben and the earth are, and all that jazz Planetary systemThe planets around us I've been working here and there on that worldbuilding project for quite some time. It's still a Work In Progress, and will probably always be. The stories coming out of it aren't set in time for now, as the timeline has yet to be defined. Elben's system# ElbenOur grey mother's guts Elben's life and explorationWhen we dived down CALENDAR HERE In this setting, the Earth is a moon of Elben, an ice giant, exceptionally situated in the habitable zone. Itself orbit a binary star system composed of a fairly standard G2V star with a brown dwarf companion, a pretty common configuration in the universe. Earth still has a moon in the form of a quasi-moon in an harmonic orbit with it. The history is still a work in progress. Tales# Draw Together (Summer) : "Méduse aérienne (rouge)"Elben. La "mère grise" habille nos ciels depuis l'éternité ou presque : alors que la conquête spatiale était à ses balbutiements et les techniques encore peu sûres, il n'aura pas fallu longtemps […] Too much sky for a pilotYou leave what little ground you had: you better not look down, even if you don’t fear heights. Heights have meaning. Here, nothing makes sense. The sky really is, limitless. It’s too much sky for a pilot. the Uô cult[…] disciples were asked to reach for that sacred temple by escalading the various structures around the rock, including the growing city. It led to a hierarchy based on which path one used […] Svar Cheese Agreement[…] On October 19th, the Svar Cheese Preservation Symposium came to an agreement to reinject an external strain, despite the protectionism that fought against it for decades […] Monos class vessels[…] operated by a limited crew, as steam-power was used to activate the sails and other subsystems. "Monos class" was a lose marketing term which designated ships from various sizes […]
-
Moved
2025-07-29
projects
This page has been moved This page has been moved here because I'm an idiot who can't maintain a consistent structure.
-
Moved
2025-07-29
projects
This page has been moved This page has been moved here because I'm an idiot who can't maintain a consistent structure.
-
Draw Together (Summer) : "Méduse aérienne (rouge)"
2025-07-27
artdigitaldrawingsDrawTogetherlore3700
lore (fr)# Elben. La "mère grise" habille nos ciels depuis l'éternité ou presque : alors que la conquête spatiale était à ses balbutiements et les techniques encore peu sûres, il n'aura pas fallu longtemps avant que l'humanité explore les ciels infinis de la géante gazeuse autour de laquelle orbite notre berceau. Loin d'un désert voluptueux, les braves elbonautes découvrirent tout un nouveau pan de l'arbre de la vie... Ou plutôt un tout autre arbre, supposant une forêt phylogénétique, qui sera plus tard complétée par la vie sous-marine des océans souterrains de Tranulk. La vie "sur", ou plutôt "dans" Elben, consiste en diverses types de structures flottantes, du filament au ballon, formant des colonies qui profitent des éléments complexes créés par les orages pour survivre. Certaines de ces colonies pouvant atteindre plusieurs kilomètres de large, la navigation des divers bases d'Elben, malgré les systèmes météorologiques si grands qu'ils semblent statiques, nécessite de régulièrement éviter ces titans. N'hésitez pas à contacter l'Office de tourisme si l'aventure vous tente tout de même !
-
Running everywhere
2025-07-27
now
-
_DSC7976-_DSC7977_fused.jpg
2025-07-14
artthunderstorms
-
_DSC8017.jpg
2025-07-14
artthunderstorms
-
_DSC8028.jpg
2025-07-14
art
-
_DSC8039.jpg
2025-07-14
art
-
_DSC8041-1.jpg
2025-07-14
art
-
_DSC8057e.jpg
2025-07-14
art
-
_DSC7987.jpg
2025-07-12
artthunderstorms
-
_DSC7989.jpg
2025-07-12
artthunderstorms
-
Draw Together : "Nymphe nocturne (jaune)"
2025-06-29
artdigitaldrawingsDrawTogetherlore
lore (fr)# La place des Tisserands est devenue à sa manière un lieu incontournable de Tralgnos. Au milieu de gratte-ciels vertigineux, une statue de Haltone perce une place sinon austère. Cette nymphe, à la fois symbole des moissons, des actifs financiers, des phares et des drones est un véritable "miroir" social : là où certaines personnes voient en elle la figure du libre marché et du capitalisme dans ses formes les plus débridées, d'autres y voient un espoir de liberté. De fait, les manifestations qui rythment le calendrier fiscal finissent souvent par border sa statue d'un épais mélange de poudre noire et de gaz lacrymogène. Au soir du 41 de Parei 712, le mouvement des sans-noms affronte à nouveau la sécurité privée de la ville pour la troisième semaine consécutive, dénonçant une énième loi liberticide. Qu'importe ce qui en sortira, Haltone prévaudra.
-
CHIRP
2025-06-13
wiki
Content Personal settings Finding which port (Arch Linux) "Radio did not respond" Personal settings# These are settings for the radios and setup I use. It's probably not very useful to anyone else. port: USB serial (/dev/)ttyUSB0 Radio model: UV-S9X3 Finding which port (Arch Linux)# To find on which port the radio is connected, open a terminal and type journalctl -f -n 50, to see system log as they happen. Connect the cable, and look at the logs. You should have something like this: 1 Jun 13 01:35:41 niflheim kernel: usb 1-1: new full-speed USB device number 16 using xhci_hcd 2 Jun 13 01:35:42 niflheim kernel: usb 1-1: New USB device found, idVendor=1a86, idProduct=7523, bcdDevice= 2.64 3 Jun 13 01:35:42 niflheim kernel: usb 1-1: New USB device strings: Mfr=0, Product=2, SerialNumber=0 4 Jun 13 01:35:42 niflheim kernel: usb 1-1: Product: USB Serial 5 Jun 13 01:35:42 niflheim kernel: ch341 1-1:1.0: ch341-uart converter detected 6 Jun 13 01:35:42 niflheim kernel: usb 1-1: ch341-uart converter now attached to ttyUSB0 This last line [...] attached to ttyUSB0 is what you're looking for. Either select that option in "port", or select "custom" and enter /dev/ttyUSB0 "Radio did not respond"# Aside from typical troubleshooting (e.g. cable not seated properly, as it requires way more force than you may think), wrong selection of port can also trigger a Radio did not respond error.
-
Wordpress
2025-06-10
wikiwebdevelopmentnetwork
Content Security disable xmlrpc.php Security# disable xmlrpc.php# https://www.hostinger.com/fr/tutoriels/xmlrpc-php
-
Concilier fête et rage : réflexions sur les prides
2025-06-01
txt
Content Nos existences sont politiques La fête est politique Faire la fête à la fête La fête comme une force et non une fin Ahhh, juin… le soleil, les orages, et le traditionnel rendez-vous politique de l’année : la grande danse des débats circulaires sur la fête et la politique. On connaît la chorée : certainxs se plaignent que les prides en france sont pas assez politiques, les autres rétorquent que la fête, c’est déjà politique, et c’est vrai. Mais en attendant, les prides ressemblent vachement à des festivals mouvants, avec une couche de peinture arc-en-ciel. Alors les cortèges auto-proclamés “politiques” jouent des coudes avec des cortèges festifs mais-attention-politiques-aussi et si t’as un peu de chance ta compagnie aérienne favorite distribue des stylos aux couleurs chatoyantes. Le mois passe et c’est fini. Les semaines et mois avant ce défilé sont entrelacés de réunions chaotiques entre inter-orgas molles, structures politiques et groupements de faits revendicatifs, qui se sont écharpés dans des débats interminables sur quoi faire de la pride cette année. Et la réponse est généralement toujours la même, grosso merdo un copier-collé de l’année précédente, mais en appuyant plus encore sur “la situation politique inquiétante” ; pourtant par une magie insaisissable, plus le temps passe, moins les prides sont “impactantes”. Du coup cette année encore, y a des bruits de couloir qu’il y aura une contre-pride de nuit radicale révolutionnaire. Même si j'ai en vrai des opinions assez tranchées, j'essaye dans cet article d'aborder le sujet d'une manière plus sereine et nuancée. Il est nourri de toutes les expériences diverses et contradictoires que j'ai pu avoir. Mais c'est aussi le résultat de pleins de discussions que j'ai pu avoir ces dernières années avec des gens qui ont des rapports différents à la fête et aux prides, et j'essaye de faire honneur à l'énergie investie par ces personnes dans ces dicussions avec moi. J'espère que ça pourra alimenter les réflexions des unxs et des autres, et poser les bases d'un débat plus constructif. Nos existences sont politiques# Nos existences sont politiques. Chaque bouffée d’air que je prends sans ta validation, sans ta permission, est l’expression d’un refus de plier face à un système qui m’est hostile. Et le fait de reconnaître ça, de l'accepter et d'y faire face, c'est déjà faire de la politique. S'afficher plutôt que se cacher, c'est déjà revendiquer. Te revendiquer c'est la seule chose que t'es peut-être obligéx de faire (si t’es déjà sortix du placard), à moins de te renier complètement. Alors oui, ça c’est le discours de fond. Mais si tu me permets de danser avec les mots, je dirais pas que nos existences sont politiques : elles sont politisées. Elles le sont dans le sens où, notre présence dans l’espace public, notre acceptation et au fond notre droit de vivre est soumis à la chose politique, et donc sujet à débats dans le plus grand des calmes. Mais dire qu’elles sont politiques, dans le sens ou notre simple présence suffit à constituer un acte militant actif, ça sent l’arnaque : Gagnez des droits facilement et rapidement, sans efforts. Lutter est, par définition, difficile. Tout le monde n’a pas la même capacité à s’investir. Certainxs ont plus à perdre que d’autres, rien n’est gagné, et certainxs n’ont juste pas le choix de se battre avec le peu qu’iels ont à donner. Sauf que même si le fond de l’air pue la merde, le fait est que la situation n’est plus la même qu’il y a 50 ans. Le fait qu’on existe et qu’on est partixs pour rester quoi qu’il se passe, quoi qu’ils nous envoient dans la gueule, n’est même plus sujet à débats. On est visible, ça y est. Et ça en fait clairement chier certains. Il s’agit de rester sous les projecteurs. Sauf que, qu’est ce qu’on veut faire sur scène, maintenant qu’on y est ? Revendiquer son droit d'exister, espérer normaliser sa présence dans l'espace public c'est grosso modo là ou en sont les prides en France à quelques cortèges près ces dernières années. Une fois par an les gens peuvent pas ignorer notre existence : les queers sont en ville, et les fafs ont pas d’autre choix que de serrer les dents en attendant que ça passe. Au pire, ils ruminent des sujets tangentiels sur CNEWS. La fête est politique# Du coup plutôt que traverser les rues avec un un petit pins arc-en-ciel discret comme le reste de l’année, on profite de l’occasion pour célébrer. S’emparer des rues et crier fort qu’on est là : c’est un moment de liberté : on est entouréxs des nôtres. On crée une bulle où on peut paradoxalement cesser de se poser trop de questions. Juste, vivre et profiter. J’ai l’impression que c’est en partie la raison pour laquelle certainxs s’offusquent qu’on (r)amène de la politique politicarde dans les prides : on vient pourrir ce qui est perçu comme un des rares moments de joie pour certaines personnes avec nos histoires de revendications et de rapports de force. Pour beaucoup de personnes, les placardiséxs, les “juste-unx-alliéx-mais-jpeux-piquer-tes-docs” et le tout-venant queer, les prides sont des moments trop rares de sociabilisation. C’est en ça que la fête est politique : la fête c’est l’occasion de se rencontrer, d’échanger et de vivre un truc ensemble. Donc si on cherche à t’isoler et t’écraser, la “fête” est une de ces rares bouffées d’oxygène dans une vie sinon oppressante. La culture LGBTI+ est marquée par l’héritage des ballrooms ; si on parle de descente de keufs dans un bar, on est obligéxs de préciser lequel ; même les backrooms (pas celles de feldup, en tout cas aux dernières nouvelles) qui sont en soi juste des espaces “pour baiser” son emprises de revendications politiques et de lutte contre la répression et les diktats. Les vieux de la vieille dans nos communautés soulignent parfois que de nos jours, on oublie aussi de célébrer nos petites victoires et nos non-défaites. Peut-être qu'on devrait s'autoriser à décompresser un peu avant de sauter dans le combat suivant. Prendre le temps malgré l'urgence, faire du care collectif en soufflant un peu, construire des moments de vie positifs, c'est aussi politique. En fait, même les teufs pas spécifiquement LGBTI+ sont politiques : les free parties sont non-seulement des espaces de revendication de l’espace public et d’autonomie face à la machine consumériste, mais c’est aussi des espaces de solidarité et d’entraides basés sur des pratiques comme la Réduction des Risques et le care, et systématiquement traversés de réflexions sur les addictions, les VSS et les modes de distribution [1]. Ces teufs sont réprimées, les stacks confisqués, des gens mutiléxs voire même tuéxs. [1]ça a été accessoirement un coup à mon égo en y allant de voir que je pouvais me faire out-shlaguer. La preuve même, on pourrait faire une sociologie de la fête. Les formes que celle-ci prend dépendent de qui les fait : c’est bien qu’à un moment, y a quelque chose de politique qui se joue. Selon si t’es de la team canette sur les quais, teuf dans un hangar à l’abandon, ballroom, boîte de nuit, bar bobo ou soirée posée dans un appart du CROUS, ça en dit beaucoup sur ton origine sociale. Faire la fête à la fête# Sauf que le glissement est évident. À aseptiser ces espaces de toute politique autre que notre revendication d’exister, on finit par juste faire la fête. Ne reste plus qu'un mot d’ordre acide et percutant comme « les discriminations, ça suffit ! »[2] que tout le monde ignore. [2]La présence d’un point d’exclamation aura fait l’objet de deux réunions mouvementées confrontant soc-dems et centristes Malheureusement, c’est pas suffisant. C’est pas pour distribuer des cartes de qui a le droit de se prétendre “engagéx” pour nos droits, c’est juste un constat de la situation. Pride de Nuit de Lyon 2019 Ici à Lyon, le concept de pride est poussé dans ses retranchements. Fut un temps, la Lesbian and Gay Pride (LGP), une inter-orga de syndicats et d’associations, tenait la pride lyonnaise. La situation était catastrophique : la pride était en soi “politisée”, puisqu’elle était libérale. Après un cortège de tête sauvage en 2018, un accrochage en 2019, une discussion houleuse, des exclusions, une pandémie et un changement d’association, la pride lyonnaise s’affiche aujourd’hui comme foncièrement engagée, à coup de mots d’ordre qui font grincer la préfecture et de cortèges non-mixtes revendicatifs à la tête. Problème, si les cortèges à l’avant sont revendicatifs, mécaniquement, le reste l’est pas, ou peu. C’est pas faute que les personnes de l'orga ont essayé. Des associations opposées à tout ça ont même tentées d’organiser une sorte de “contre-pride” sous la forme d’une “Rue de l’Amour”, pour défendre vaillamment le droit de vendre nos luttes locales. Pourtant, la situation est bien pire dans d’autres villes. Célébrer l’amour. Merde. C’est donc ça les luttes “LGBTI+” ? À en croire les discours de certainxs, tout est gagné, on en est basiquement juste au stade du peaufinage. Encore un effort, et on aura fini de se faire absorber par le capitalisme. La fête comme une force et non une fin# Certes, Act-Up proclame que ▲DANSER = VIVRE. Mais Act-Up n'a pas fait que danser. Danser est peut-être nécessaire, mais ça ne suffit pas. On peut pas résumer cet héritage à une envie de fête. Certes, Stonewall était une émeute, comme on l’entend souvent dans les prides les plus politisées. Mais Marsha P. Johnson a fait plus que “lancer la première brique”. Elle était une force motrice dans sa communauté locale et promouvait l’entraide concrète et organisait la solidarité. L'affiche de la Pride de Nuit de Lyon 2022 Les concerts punks, en tout cas dans leur jus originel, s’appuient sur des réseaux de lieux alternatifs, des réseaux de communication et de distribution DIY, et constituent au delà de simples événements l’occasion de former des réseaux de solidarité dans des communautés ultra-précarisées. La pride en tant que fête, c’est certes un moment pour se ressourcer, mais c’est aussi un moment pour se rendre compte qu’on est pas seulx. C’est une manif quoi. On se rend compte qu’on a le pouvoir de prendre des trucs, plus que de les demander poliment, par le simple fait qu’on est nombreuxs. Et parce qu’on le peut et que ça les emmerdes, on se permet de faire ça dans la joie : parce que des moments où on se sent fortxs, y en a pas tant. C’est toute la raison de l’existence des prides de nuit notamment. La première à Lyon a eu lieu en mars 2018 en réponse à des agressions LGBTIphobes. Le but était de reprendre la rue, en particulier la nuit, certes, mais se faisant c’était aussi l’occasion de porter des revendications qui allaient au delà de ça. On peut discuter tout la journée de si “la fête est intrinsèquement politique”. Mais en vrai, quand on parle de “politiser la fête”, on parle de quelque chose de plus profond. Un des problèmes, c’est l’engagement, au sens primaire du terme. Pour qu’une manif soit le résultat d’un travail collectif, et porte ainsi une vraie dimension communautaire, il faut que les personnes qui s’y rendent soient plus qu’un chiffre. Or ces dernières années plus que jamais, le mode d’action est à la “consommation” d’événements militants, queer ou non. Pour beaucoup de gens, ces prides sont de fait, là, par la magie des choses, il n’y a pas grand chose à faire hormis y aller. On peut pas attendre de tout le monde de pouvoir grimper sur la barricade, mais c’est nécessaire de construire aujourd’hui un engagement collectif actif pour que nos luttes soient plus que des dates et des chiffres de préfecture. Parce qu’une pride, comme tous les mouvements, ça se construit. Certes dans le sens où ça se fait pas tout seul, mais aussi dans le sens où sa portée dépend entièrement de l’investissement de la communauté qu’elle représente. Et si vous avez la solution magique pour créer ça, on est un paquet de monde à chercher comment faire. Merci aux camarades avec qui j'ai eu de longues discussions sur le sujet alors que le jour s'éteignait autour d'une calouche Paris Is Burning (1990) — IMBD https://www.imdb.com/title/tt0100332/ Pourquoi une Pride de nuit à Lyon avant la Marche des Fiertés LGBT ? — Rue89Lyon https://www.rue89lyon.fr/2018/06/15/pourquoi-une-pride-de-nuit-a-lyon-avant-la-marche-des-fiertes-lgbt/ La Pride de nuit est-elle toujours la version radicale de la « Gay Pride » ? — Vice https://www.vice.com/fr/article/la-pride-de-nuit-est-elle-toujours-la-version-radicale-de-la-gay-pride/ Mort de Steve Maia Caniço à Nantes en 2019 : le commissaire Grégoire Chassaing relaxé — Le Monde https://www.lemonde.fr/societe/article/2024/09/20/mort-de-steve-maia-canico-a-nantes-en-2019-le-commissaire-gregoire-chassaing-relaxe_6325464_3224.html France : des violences policières lors d’une free-party à Redon — Amnesty International https://www.amnesty.fr/liberte-d-expression/actualites/france-violences-policieres-pendant-une-freeparty-redon Réforme des retraites : scènes choquantes d'une intervention de police devant un bar queer — Têtu https://tetu.com/2023/03/29/video-dixieme-journee-manifestation-contre-reforme-retraites-interpellation-police-bar-queer/ Des corps qui bougent — Delyo https://www.delyo.be/blog/rants/2025-02-19-des-corps-qui-bougent/ Manifestive Tekno Anti Rep le samedi 12 avril — Rebellyon https://rebellyon.info/Lyon-Manifestive-Tekno-Anti-Rep-28095
-
Trois jours dans l’enfer synthétique : la bataille numérique du 21 mai 2025
2025-05-29
txtIA
Content the murderin' cannons roar L’humour particulier de l’univers Sarah Connor ? Un jour pour rien Un diner en enfer (à emporter s’il vous plait) Épilogue : Le Charme discret de reddit Ahhh, tenir son propre serveur informatique. La promesse de la liberté numérique. La joie de voir son site web s’affiche n’importe où. Ce qu’on te dit pas quand tu t’engages sur les mers numériques, c’est qu’elles sont bien agitées. Engagez-vous, rengagez-vous, qu’ils disaient… Rien de bien nouveau. “De tout temps…” comme disent 95% des devoirs d’histoire géo, le web était rempli de scrapers, de bots, de scanners, qui prennent un malin plaisir à venir toquer à ta porte. Quel souvenir que celui de naïvement ouvrir un Raspberry Pi au monde, pour découvrir deux semaines plus tard qu’il peine à servir la moindre page web. Alors on regarde les journaux d’activité, on découvre avec effroi l’ampleur de désastre, et on apprend à protéger son rafiot. Caches, blacklists, et on découvre le débat sans fin sur les “WAF”. Sauf qu’une rumeur tourne depuis quelques temps dans les ports parmi les marins : un monstre d’un nouveau genre hanterait les hautes mers. Des aspirateurs de données, qui à l’image de leur sombres desseins, ne serait que bruit et désordre. Des “crawlers” motivés par l’IA. Malheureusement, celleux qui parlent sont des cassandres numériques : les quelques témoignages qui surgissent sont automatiquement décrédibilisés par celleux qui ne l’ont pas vécu : « non mais c’est juste des bots, tu viens de débarquer sur le web ou quoi ? », « suffit de mettre un fail2ban et— ». Alors voilà ma pierre à l’édifice. Les témoignages commencent à se multiplier, et avec un peu de chance, les gens finiront par y prendre au sérieux. Par souci d’accessibilité, je vais tenter ici de raconter ce qu’il s’est passé de la manière la moins technique possible, ou alors en expliquant. Les néophytes devraient pouvoir comprendre, et les “sachant-es” m’excuseront j’espère les quelques approximations techniques. Ça n'a pas vocation à être un post-mortem précis. Je vais aussi parler "d'IA" par souci de simplicité, mais qu'on s'entende, c'est un terme qui veut rien dire. C'est cet amalgame de technos de machine learning de nouvelle génération là. Les notes que j’avais prises à la base durant ce périple étaient assez sombres, et c’est pas non plus le but de faire déprimer. Donc je me suis un peu lâchéx sur les métaphores et la poésie. On s'occupe comme on peut. Ô toi qui navigues sur les mers numériques, ne prends pas mes mots à la légère. J’ai vu la bête immonde. Ta naïveté ne témoigne que d’une chose : ta chance insolente de ne pas l’avoir croisée ! Bon ok, peut-être pas autant que ça. Mention de tabac, d’alcool, traitement et détresse psy the murderin' cannons roar# 13 novembre 2024, captain’s logs. Ça fait déjà une dizaine d’années que je suis sur les mers. Parmi les serveurs que je gère, il y a celui d’une association. Un des services proposés par celle-ci, c’est un “Koha”. Un logiciel de bibliothèque qui permet aux personnes de découvrir des livres et archives, pour certains rares, et éventuellement savoir où elles peuvent les consulter ou les emprunter, le tout ouvert au grand public, car le but est aussi de faire découvrir. Autrement dit, de la donnée “structurée”. Et ça, ça en fait une cible de choix pour des entreprises peu scrupuleuses qui veulent exploiter ces données ou entraîner leur IA. Les voiles de ce bateau sont tissées de fils d’or et d’argent. Ce jour là, des utilisateurices se plaignent de grosses lenteurs sur le koha. Mais bon, c'est pas mon premier incident, donc quand je me rend compte que le site rame effectivement sévèrement, je tombe pas de ma chaise. Une vérification rapide confirme le diagnostic évident : les bots font la fête dans les “logs” pendant que les humains se mangent des chargements infinis. Des logs “web”, ça ressemble à ça (anonymisé par souci de sécurité), une liste des “gens” qui se connectent avec quelques infos : example.com 185.191.171.6 - - [22/May/2025:00:01:18 +0000] "GET /cgi-bin/koha/<a-long-query>" 200 3989 "-" "Mozilla/5.0 (compatible; SemrushBot/7~bl; +http://www.semrush.com/bot.html)" example.com 187.252.196.191 - - [22/May/2025:00:00:56 +0000] "GET /cgi-bin/koha/<a-long-query>" 200 3387 "-" "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_7_0 rv:4.0; nb-NO) AppleWebKit/534.23.4 (KHTML, like Gecko) Version/4.0.3 Safari/534.23.4" Ça fait peur quand on connaît pas, mais c’est pas aussi complexe que ça en a l’air. Dans l’ordre, on a : example.com le site (pour les techos, c’est des logs COMBINED) 185.191.171.6 une adresse IP, sorte de plaque d’immatriculation de votre PC/smartphone sur les internet [22/May/2025:...] la date "GET /cgi-bin..." la page web demandée, typiquement par une “méthode” "GET" suivi de par exemple de "/accueil" pour la page "example.com/accueil" quelques autres informations (code http, taille de la requête, etc) et un “User Agent” "Mozilla/5.0..." Ce “User Agent”, c’est en quelque sorte le “passeport” de votre navigateur web : en gros, si vous ouvrez une page sur un smartphone, votre navigateur informe bien gentiment le site web “Bonjour, C’est Safari depuis un appareil sous iOS” Et généralement, on sépare les connexions bienveillantes ou malveillantes via l’adresse IP, le User Agent (UA) ou les deux. Par exemple, on verra venir toquer à notre porte un User-Agent “GoogleBot” : lui typiquement, on préférera le laisser rentrer, pour que notre site soit listé dans les résultats de recherche de google. Inversement, des adresses IPs venues de centres de données aléatoires auront tendance à être mal vues : c’est possiblement quelqu’un qui a déployé un “bot” (pour de bonnes ou de mauvaises raisons) et qui scanne notre site. Le jeu donc, c’est à partir de ces simples informations, de trouver un pattern pour séparer le bon grain de l’ivraie. Et parce qu’on va pas réinventer la roue, il existe des listes toutes faites, voire même des logiciels de “comparaison”, pour faire ce travail pour nous. Mais le web est en mouvement perpétuel. Donc des fois, certains passent entre les mailles du filet. Alors, on ajuste les protections et on passe à autre chose. Je me pose pas plus de questions. Un jour comme un autre sur le web. L’humour particulier de l’univers# 20 mai 2025, captain’s logs. — Et toi nemecle, côté numérique, un truc à ajouter pour le rapport d’activité de 2024 ? — Non non rien de spécial, du Maintien en Conditions Opérationnelles… Ah, si, on s’est fait défoncer par des bots en novembre, mais c’est bon c’est géré Quelque part dans la grande machinerie de l’univers, un contrôleur se réveille en sursaut en entendant cette phrase, et ce faisant trébuche sur un levier. Sarah Connor ?# LA GUERRE DU WEB pouet pouet A COMMENCÉ pouet pouet ON SE BATTRA POUR LA GAGNER ON SE BATTRA POUR LE GARDERle lendemain, captain’s logs. 10h du matin, Je prends tranquillement mon café. Ah. Le koha répond plus. Mais alors plus du tout cette fois. Je fonce sans sourciller voir les logs du serveur, et là… caméra 1 : les logs Je sens que ce matin va être compliqué. Les lignes défilent à raisons de plusieurs dizaines par secondes : example.com 181.199.62.50 - - [21/May/2025:11:22:55 +0000] "GET /cgi-bin/koha/opac-search.pl?<a-long-query>" 302 3678 "-" "Mozilla/5.0 (compatible; MSIE 6.0; Windows NT 6.2; Trident/5.1)" example.com 172.56.171.179 - - [21/May/2025:11:22:54 +0000] "GET /cgi-bin/koha/opac-search.pl?<a-long-query>" 200 18284 "-" "Opera/9.40.(X11; Linux i686; se-NO) Presto/2.9.169 Version/12.00" example.com 45.229.90.10 - - [21/May/2025:11:22:55 +0000] "GET /cgi-bin/koha/opac-search.pl?<a-long-query>" 302 3678 "-" "Mozilla/5.0 (Windows; U; Windows NT 4.0) AppleWebKit/534.19.4 (KHTML, like Gecko) Version/5.0.5 Safari/534.19.4" Bon. On panique pas. Dans cette purée de texte, il y a, quelque part, un pattern qu’il suffit d’identifier pour ajuster les protections. Y a des dizaines de milliers d’adresses IP différentes. Voire des centaines de milliers. Jamais la même. Ah. Et les fameux User-Agent ?… — Bonjour, c’est la dernière version de chrome… Sous Windows 98 >:D ! — Hein ? Euh… Et toi ? — Moi c’est Bob ! — Non mais— — “Bonjour ! Moi c’est Chrome, sous Safari, version 15683, option Salade Tomate Oignon ! Et le pire dans tout ça ? Beaucoup (même si pas toutes) de ces IPs sont dites “résidentielles” : en termes plus simples, les connexions ne viendraient pas de serveurs, mais bien d’utilisateurices. Sauf que vu la gueule des user agents, c’est pas possible. Bon. Bon. Bon. Bon. Une descente d’organe caféinée plus tard, je me ressaisix. J’étais par chance tombéx au fil des semaines sur des témoignages sur ces attaques d’un genre nouveau. Après quelques recherches, j’ai un plan de bataille : on va utiliser Apache Bad Bot Blocker pour trouver les salopards, et les rediriger vers iocaine : en gros, identifier les bots, et au lieu de les bloquer et de risquer qu’ils reviennent à la charge, leur servir de la merde. Dans mon terminal, je garde une fenêtre qui m’affiche les logs qui défilent pendant que je travaille. Dans un rituel théâtral, je jette parfois un regard assassin à celle-ci de temps en temps. Tant que ça bouge, je continue. Dans la marine, on insulte tout ce qui bouge et on reload tout ce qui ne bouge pas[…] 3h du matin. La tâche s’est révélée plus ardue que prévue : Koha, pour toutes les fonctionnalités qu’il a, reste un logiciel de niche et avec ses spécificités : les guides existants pour Apache Bad Bot Blocker, ainsi que les ressources de support, ne sont pas d’une grande aide pour mon cas particulier. Le serveur est toujours sous assaut constant. J’ai les yeux qui font mal, et les lignes de configuration se brouillent devant moi. Ma gorge pique : à chaque rechargement un peu long, j’en profite pour me fumer une clope. J’en ai fumé beaucoup. Je m’avale une canette, et m’endors, plus assomméx par les logs qui défilent que par l’alcool. Un jour pour rien# Le jour qui suit, je me réveille je me lève comme un diable en boite : généralement le désespoir chez moi, c’est plus une force motrice qu’un mur. Hormis une sortie sociale le soir, j’ai une journée complète devant moi, et pleins d’infos dans la tête. Un café, un petit dej, de la ritaline et on s’y lance. […] 2h du matin. La journée n’a servie à rien. Je pensais que je me plantais dans l’installation de Apache Bad Bot Blocker, mais c’est pire que ça : c’est juste qu’il ne détecte pas ces bots là. Une journée de perdue. Je me rends à l’évidence : c’est pas possible de trier ces bots sur la base des IPs et des User Agents. Y a pas de pattern, point. les scrapers ont réussi à trouver la recette : exploiter des terminaux d’utilisateurices légitimes avec des User Agents générés aléatoirement. Je fais le lien avec des articles que j’avais vu passer : des entreprises vendent des solutions logiciels consistant à injecter dans des applications destinées au grand public du code permettant à des entreprises de payer pour passer par les appareils des gens pour scanner le webs. Bilan : les logs ne sont plus que du bruit. Au sens statistique du terme. Y a rien à faire. La seule solution, c’est de faire de l’heuristique : se baser sur le “comportement” des utilisateurices pour détecter les bots. À ce stade je choisis l’option nucléaire. Demain, j’installe Anubis : un logiciel qui “soumet un challenge mathématique” lors de la connexion pour ralentir les utilisateurices qui spamment un peu trop un site. Plus tu tapes fort, plus le challenge est difficile. Une maizena numérique en gros. Je voulais à tout pris éviter cette solution car une partie du public visée par le site n’est pas très au fait de l’outil numérique : alors voir apparaître une image d’anime lors de la connexion au koha, c’était le meilleur moyen de leurs faire peur. Mais je suis fatiguéx, et le site est toujours hors-ligne… Pour les humains du moins. Je me couche de la même manière que la nuit précédente. Un diner en enfer (à emporter s’il vous plait)# Capitaine ! Capitaine ! Vous n’êtes pas læ capitaine ! Je reprends le même petit déjeuner, et je me re-prépare pour une journée marathon. 2h… Plus tard. Une présence bienveillante apparaît sur mon écran : la mascotte d’Anubis. Coucou toi ! Une seconde après, mon navigateur affiche « Bienvenue sur le catalogue ! » pour la première fois depuis trois jours. Anubis est installé. Ça a été beaucoup, beaucoup plus rapide que ce que je pensais. Enfin. Je ressens même pas de joie, même pas l’extasie de quand on règle un problème informatique habituellement, façon puzzle. J’envoie mécaniquement un mail de fin d’incident aux utilisateurices, et je reprends ma vie. J’ai eu un contre-coup dans les jours qui ont suivi, Même en re-corrigeant l’hygiène de vie. Ça m’a pesé. J’en ai parlé avec mes proches. J’ai passé trois jours dans le trou, physiquement et moralement, et ça me travaillait. J’ai eu l’impression de me faire bully hors du web. C’était très, très désagréable. J’ai passé la semaine à saisir chaque occasion pour mettre en garde mes collègues techos et mes camarades : il y a des bêtes affreuses d’un genre nouveau qui rôde sur les mers du web. Il y a quelque chose de cassé, sur les internets. Et évidemment, cet article s’inscrit dans cette démarche. Épilogue : Le Charme discret de reddit# Mettre en garde les collègues c’est bien, mais mettre en garde le grand public c’est mieux. Pour beaucoup de gens, l’informatique se fait toute seule : à l’ère du cloud, même quand on sait que “y a des gens qui travaillent dans ce domaine”, les arcanes de tölva sont impénétrables pour le commun des mortels. Surtout que malgré toutes les prétentions de l’association et de mon activité, il s’agit d’un territoire à part de l’informatique : le “small web”. De l’informatique artisanale, loin des géants du web et leurs trillions de budget. Alors je me fends d’un post sur le subreddit r/france : le but assumé, c’est sensibiliser au fait que le fer de lance du capitalisme de l’information ne touche pas que les artistes, traducteurices, designers… mais aussi les petites mains de l’informatique. J’essaye de faire un poste pas trop chargé techniquement, mais sans non plus évacuer les enjeux techniques. Quelle erreur. Alors, le gros des réponses est “positif”, dans le sens où les gens répondent “aïe aïe aïe, mais quel enfer, force à toi”. Mais j’ai aussi droit à une vingtaine de techos, qui, en dépit du style et de la structure de ce texte de mise en garde, le prennent pour un post-mortem technique. Et vu que de la technique, y en a pas beaucoup dedans, c’est que j’ai pas dû en faire beaucoup. « Non mais c’est juste des bots, faut vraiment rien y connaître pour croire que ça a quoi que ce soit à voir avec l’IA » « Pfeuh, tout bon sysadmin sait qu’il suffit d’un simple fail2ban et— » « Ah ! 1/3 des requêtes retournent un 302, c’est juste tes users qui sont bloqués dans une boucle, incompétentx va » J’ai beau expliquer, que non, les techniques habituelles n’ont pas marché, que je suis pas la seule personne à faire ce constat, que non c’est pas des utilisateurices, que ça touche pour l’instant des services particuliers (git, wiki, et donc dans mon cas, un koha) du fait de leur valeur en terme de données, mais non. Rien n’y fait. Nous sommes des cassandres numériques. Donc voilà, j’ajoute ma pierre à l’édifice. Et si vous voulez le reste de l'édifice, je vous mets quelques liens ici. Bon vent sur les mers numériques. Des témoignages d’assaut : Please stop externalizing your costs directly into my face - Drew DeVault's blog Botnet Part 2: The Web is Broken - Jan Wildeboer L'IA et Forgejo - Dryusdan.space Perplexity Doesn’t Give a Shit About Consent We apologize for a period of extreme slowness today. The army of AI crawlers just leveled up and hit us very badly. [...] - Codeberg on mastodon L’utilisation d’IPs résidentielles pour scraper le web : Hijacking Your Bandwidth: How Proxyware Apps Open You Up to Risk - trendmicro.com Malicious Apps Caught Secretly Turning Android Phones into Proxies for Cybercriminals - The Hacker News Crawlers et "IA": New Fastly Threat Research Reveals AI crawlers make up almost 80% of AI bot traffic, Meta Leads AI Crawling As ChatGPT Dominates Real-Time Web Traffic - Fastly AI crawlers and fetchers are blowing up websites, with Meta and OpenAI the worst offenders - The Register
-
Protéger Koha contre les bots avec Anubis
2025-05-23
txtITIA
Une instance Koha constitue un stock de données structurées important: du pain béni pour les LLMs et autres scrapers. Problème, les entreprises derrière ces bots emploient des méthodes toujours plus vicieuses pour contourner les protections en place. De plus en plus, les techniques classiques (Robots.txt, fail2ban, bloquage d'ASN) ne suffisent plus. Les scrapers exploitent les machines des utilisateurices, génèrent de faux User-Agent, et changent de technique quand elles détectent la mise en place d'une protection. Face à ce fléau, deux choix possibles : * passer par un CDN comme Cloudflare, ce qui peut-être coûteux et réduit l'indépendance ; * mettre en place une détection "heuristique", basée sur le comportement de la connexion. J'ai donc après trois jours à suer, fini par me rabattre sur la deuxième, en particulier Anubis. J'écris principalement cet article pour partager une config de vhost apache2 pour protéger Koha avec Anubis. Vous la trouverez en bas de la page. Mais si ça vous intéresse, j'ai écrit toute la procédure d'installation et de configuration. Installer Anubis# Anubis va, pour expliquer très rapidement, donner un "challenge" lors de la connexion (via le javascript). En fonction du comportement (typiquement, le nombre de connexions), le challenge sera plus ou moins simple. Si ça vous intéresse, il y a une explication plus détaillée dans la doc ici. La doc de Anubis est assez bien foutu : vous la trouverez ici. Mais la configuration apache de Koha présentant quelques spécificités, j'ai préféré coucher la procédure sur papier (façon de parler), et en profiter pour en faire une en français. Mais le déroulé est grosso-modo celui présenté dans la doc, à quelques exceptions près. Commençons donc par télécharger Anubis, en allant sur la page des releases sur Github. Après la liste des changement, il y a les fichiers. Trouvez celui qui correspond à votre système (pensez à cliquer sur "Show 24 assets" si vous voyez pas le vôtre). Dans mon cas, c'est un Debian sous architecture amd64. On fait donc clic-droit sur anubis_1.18.0_amd64.deb, "copier le lien". Arrivé sur le serveur, on télécharge le paquet dans un répertoire, par exemple avec wget et en mettant l'adresse qu'on a copié : sudo wget https://github.com/TecharoHQ/anubis/releases/download/v1.18.0/anubis_1.18.0_amd64.deb Une fois le fichier téléchargé, on peut l'installer en faisant : sudo apt install ./anubis_1.18.0_amd64.deb Ensuite, comme indiqué dans la doc, on copie le fichier de config par défaut en lui donnant un nom. Ici, j'ai pris "koha" : sudo cp /etc/anubis/default.env /etc/anubis/koha.env Ensuite pareil pour la "Bot Policies", qui définit le comportement de Anubis face aux bots : sudo cp /usr/share/doc/anubis/botPolicies.yaml /etc/anubis/koha.botPolicies.yaml Ensuite on modifie le fichier koha.env qu'on a créé, comme ça : 1 BIND=[::1]:8239 2 BIND_NETWORK=tcp 3 DIFFICULTY=4 4 METRICS_BIND=[::1]:8240 5 METRICS_BIND_NETWORK=tcp 6 POLICY_FNAME=/etc/anubis/koha.botPolicies.yaml 7 TARGET=http://localhost:3000 Je recommanderai d'utiliser d'autres ports, afin d'éviter que toutes les installations Anubis se ressemblent. Prenez un port juste à côté par exemple. On a donc trois ports, que je vous conseille de noter pour pouvoir vous y retrouver pendant l'installation : 8239 : Le port sur lequel écoute Anubis, comme un service normal 3000 : Le port vers lequel il renverra une fois le challenge passé (où on mettra Koha) 8240 : Le port pour le service de metrics, qui n'est pas essentiel On peut maintenant lancer le service Anubis (adaptez la commande si vous l'avez appelé autrement que "koha") : sudo systemctl enable --now anubis@koha.service Et vérifier qu'il marche en lançant une requête sur le service de metrics: curl http://localhost:8240/metrics Qui devrait vous retourner des stats. Au besoin, vous pouvez consulter la doc pour customiser le comportement face aux bots. Contrairement à ce que dit actuellement la doc, la configuration par défaut est déjà bien fournie, et laisse passer le Crawler de Google ou encore la Web Archive. Protéger Koha# Maintenant que Anubis tourne, il faut rediriger le trafic sensé aller vers Koha d'abord vers Anubis. À noter que Anubis se fout du "Host" : vous pouvez tout à fait avoir plusieurs vhost/domaines différents derrière Anubis (par exemple, l'OPAC et l'intra), tant qu'ils sont sur le port 3000 (dans notre cas). Anubis s'occupe de tout. On va donc à partir de maintenant plus ou mois suivre la page de doc sur la configuration de apache. Contrairement à ce que dit la doc, pas besoin d'installer le paquet pour mod_proxy_html. Il est déjà intégré depuis longtemps dans apache. Donc pour les dépendances, on fait juste : sudo apt install -y libxml2-dev Et vous pouvez vous assurer que le module proxy_html est bien actif en faisant : a2enmod proxy_html Ensuite, on va dire à apache d'écouter sur un nouveau port. Sur une debian classique, on trouve ça dans ports.conf. Mais si vous avez un doute, vous pouvez aller dans le dossier de apache /etc/apache2, et faire un grep -rn Listen pour voir quel fichier contient cette configuration. On ajoute donc cette ligne dans le fichier /etc/apache2/ports.conf: Listen 127.0.0.1:3000 Contrairement aux lignes possiblement déjà présentes, on a un 127.0.0.1: cela indique à apache d'écouter seulement en local. Il faut pas qu'on puisse se connecter au service depuis l'extérieur, sinon ça permet de contourner Anubis. On vérifie que apache est toujours content de la configuration en faisant : sudo apache2ctl configtest Et on applique la configuration en rechargeant : systemctl reload apache2 La config# Enfin, le gros morceau, la configuration du vhost. Koha faisant appel à des fichiers de config externes, ça peut parfois être confus d'appliquer ce genre d'outils. On va pas se mentir, cet article sert à 95% à partager cette configuration. J'ai pris le parti, vu que sur mon Koha les inscriptions sont fermées, de ne protéger que l'OPAC, pas l'intra. Mais comme évoqué, Anubis peut gérer plusieurs services sans problème si vous souhaitez adapter la config. Aussi, la config typique qui redirige le http vers le https est dans un autre fichier. Je propose ce fichier principalement pour que vous puissiez comparer si vous tentez également l'install. Mais si vous suivez ce guide comme un tutoriel et que vous copiez ce fichier, pensez à le modifier en conséquence. Le bouzin : 1 <IfModule mod_ssl.c> 2 <VirtualHost *:443> 3 # <IfVersion >= 2.4> 4 # Define instance "instance" 5 # </IfVersion> 6 7 ServerName instance.example.com 8 9 ErrorLog ${APACHE_LOG_DIR}/instance-anubis_error.log 10 CustomLog ${APACHE_LOG_DIR}/instance-anubis_access.log combined 11 12 SSLCertificateFile /etc/letsencrypt/live/instance.example.com/fullchain.pem 13 SSLCertificateKeyFile /etc/letsencrypt/live/instance.example.com/privkey.pem 14 Include /etc/letsencrypt/options-ssl-apache.conf 15 16 RequestHeader set "X-Real-Ip" expr=%{REMOTE_ADDR} 17 RequestHeader set X-Forwarded-Proto "https" 18 ProxyPreserveHost On 19 ProxyRequests Off 20 ProxyVia Off 21 22 # Replace 9000 with the port Anubis listens on 23 ProxyPass / http://[::1]:8239/ 24 ProxyPassReverse / http://[::1]:8239/ 25 </VirtualHost> 26 <VirtualHost *:3000> 27 <IfVersion >= 2.4> 28 Define instance "instance" 29 </IfVersion> 30 Include /etc/koha/apache-shared.conf 31 # Include /etc/koha/apache-shared-disable.conf 32 Include /etc/koha/apache-shared-opac-plack.conf 33 Include /etc/koha/apache-shared-opac.conf 34 35 ServerName instance.example.com 36 SetEnv KOHA_CONF "/etc/koha/sites/instance/koha-conf.xml" 37 AssignUserID instance-koha instance-koha 38 39 ErrorLog /var/log/koha/instance/opac-error.log 40 CustomLog ${APACHE_LOG_DIR}/instance_access.log combined 41 </VirtualHost> 42 </IfModule> 43 <IfModule mod_ssl.c> 44 <VirtualHost *:443> 45 <IfVersion >= 2.4> 46 Define instance "instance" 47 </IfVersion> 48 Include /etc/koha/apache-shared.conf 49 # Include /etc/koha/apache-shared-disable.conf 50 Include /etc/koha/apache-shared-intranet-plack.conf 51 Include /etc/koha/apache-shared-intranet.conf 52 53 ServerName instance-intra.example.com 54 SetEnv KOHA_CONF "/etc/koha/sites/instance/koha-conf.xml" 55 AssignUserID instance-koha instance-koha 56 57 ErrorLog /var/log/koha/instance/intranet-error.log 58 # TransferLog /var/log/koha/instance/intranet-access.log 59 60 SSLCertificateFile /etc/letsencrypt/live/instance.example.com/fullchain.pem 61 SSLCertificateKeyFile /etc/letsencrypt/live/instance.example.com/privkey.pem 62 Include /etc/letsencrypt/options-ssl-apache.conf 63 64 </VirtualHost> 65 </IfModule>
-
Arrêté du 20 mai 2025 portant sur la rénovation de la voix-rie
2025-05-20
txt
Décision n°2025-00001 Læ maire de ce village digitalz VU : la netiquette VU : les normes HTML5/CSS3 CONSIDÉRANT : l'importance capitale d'un web ouvert et accessible CONSIDÉRANT : la flexibilité du médium permettant à des contenus d'exister au travers de différents formats, et ce afin de se plier aux modes de consultations des e-concitoyenxs CONSIDÉRANT : que la fonctionnalité dite "TTS" ou "texte vers la voix" présente dans les rues de notre beau village digitalz sous le titre des articles, refuse de marcher depuis plusieurs mois, et ce malgré divers tentatives de pallier à ce problème tels que "réessayer d'appuyer dessus de temps en temps voir si c'est pas tombé en marche", ou bien encore "piquer le PC/smartphone des potes voir si c'est pas juste chez moi" DECIDE ARTICLE 1 : qu'un jour jour ça serait bien de s'en occuper et d'y réparer quand même ARTICLE 2 : de mettre en place une signalétique indiquant que des travaux sont en cours, quand bien même ils ne sont définitivement pas en cours Autant se faire que peut, Fait à localhost, nemecle
-
Archives fracturées
2025-05-07
txt
Régulièrement, des proches me parlent de trucs qu’on a vécu ensemble y a cinq ans, un an, ou même un mois auparavant, et je réagis comme si j’avais pas été là. Les seules traces que j’ai de ces vies, hormis les témoignages des autres, c’est mes “archives”. Autrement dit, mes empilements aléatoires de trucs, physiques ou virtuels, réminiscents de telle ou telle époque. Le trucs, c’est que jusque là, je faisais pas trop gaffe à ça. Ça fait quelques années déjà que je me pose la question de la “mémoire”, au sens politique du terme, et un peu moins que je participe à des initiatives autour de ce sujet. En plus, entre ma situation instable et une peur panique de trop m’attacher aux objets (un contre-pied de l’époque ou j’étais gaminx et que je m’attachais facilement à des objets), le tas de merdier qui accompagne à peu près tout le monde est dans mon cas, très réduit. J’avais fait un sac des quelques objets souvenirs auxquels je tenais lors d’un déménagement. Au déménagement suivant, il a été mis dans une boîte à chaussures avec de “nouveaux” bibelots mémoriels. Je traîne derrière moi un trou noir sans fond, infiniment dense, de bibelots. Chaque couche plus ancienne, plus compactée par le poids, toujours plus indissociable d’une masse informe. Et ma mémoire est pas bien différente : à force de détails évoqués, des événements de ma vie resurgissent, comme enfouis, tassés et compactés dans ma tête. Parfois, ce sont des pans entiers de ma vie, à coup de six mois, un an, qui dégueulent de mon esprit. Ça serait facile d’aller qualifier ça de “mémoire traumatique”, et c’est le cas pour certains d’entre eux. Mais c’est le cas de tous mes moments de vie. Ces notes, je les ai prises en 2016. Et ça a été le point de départ d’un truc qui prend aujourd’hui encore beaucoup de place dans ma vie. Je les ai perdu depuis. Mais mieux encore, cette photo, sur un canap noir, je l’ai prise en 2017. Et ça, ça a été l’étape suivante de ce périple. L’autre conséquence de ce “compactage” façon camion poubelle du psyché, c’est mon incapacité de me situer dans le temps. Tout mes souvenirs, qu’ils aient dix ans ou une semaine, ont dans ma tête eu lieu il y a environ un mois. Être un empilement de caillou a du bon. Je suis polymorphe, je m’adapte, la vie peut bien me rouler dessus je me relève. C’est ce qu’on se dit, jusqu’au moment où un semblant de repère jaillit de l’obscurité. Et un jour, deux cailloux se sont percutés, et une étincelle a jailli : avec tout ce taff que je fais dans la mémoire de nos communautés et de nos luttes, je suis un peu… une communauté de unx non ? Alors je me suis mis à creuser. Parce que là où je me libère facilement des objets, je suis ce qu’on appelle dans certains recoins d’internet unx “Data Horder”. J’accumule des données, jusqu’à plus IOPs. J’ai trouvé ma “boîte à souvenirs compactés”, quelque part dans mon cloud maison. Un dossier de synchronisation ici, quelques dossiers éparpillés, une sauvegarde de mon ancien PC. Dans cet ancien PC, un dossier de synchronisation ici, quelques dossiers éparpillés, une sauvegarde de mon ancien-ancien PC. Plusieurs couches de souvenirs numériques. À force de copies de sauvegardes en sauvegardes, beaucoup de ces fichiers ont perdu leur contexte. Certains ont perdu leurs infos d’horodatage (la date). Alors je creuse autour : ce fichier n’a pas de date, mais un autre fichier qui y fait référence, lui, en a une. Et parce que son nom suggère mon smartphone d’il y a plus de sept ans, j’ai une fourchette de quand il date. Je fais de l’analyse forensics sur ma propre vie. Un autre fichier a une date, mais aucun contexte. C’est une photo d’une maison random. Sur la base d’un nom de rue, j’établis que c’est dans une ville en particulier. En cherchant sur d’obscures sites d’extrême gauche, ça me revient : j’étais alléx à cet événement. Je fais de l’OSINT sur ma propre vie. Pour être honnête, j’enquête encore sur le contexte exact de cette photo. Je sais où c'était, je sais à quelle date, je sais que c’était la préparation d’un événement particulier, mais aucune idée de quel événement. Nos captures d’écran, fossiles de nos vies numériques — Le Monde (Paywall)Parfois, les choses sont moins terre à terre : je vois une capture d’écran d’un shop en ligne aléatoire, et je me revois avec ces potes sur un canapé il y a quatre ans à blaguer sur un potentiel achat. Certaines archives sont mieux préservées que d’autres. Je sais exactement ce que je faisais là. J’ai commencé à télécharger les archives des différentes plateformes que j’utilise et que j’ai utilisé. Cet essaimage de posts, d’échanges, de messages privés ou même de partages d’autres posts, témoigne mieux que mes mots de mon état d’esprit à un instant donné. Ma vie est très numérique : là où les fichiers, et notamment les images, montrent le réel, ces messages révèlent comment je me sentais, face à tout ça. Mon objectif à terme, c’est d’utiliser mes connaissances techniques pour digérer toutes ces données, ces messages et ces images, et de les transformer en un flux unique, tout du moins aussi unique que le permettra ma vie morcelée, pour pouvoir retraverser ce qui me manque depuis si longtemps. Une trajectoire passée. Parfois, des proches me montrent leur propre “boîte à chaussures”, physique ou virtuelle. Ça a quelque chose de très intime : si tu me montres une photo de toi à l’époque, je saurais à quoi tu ressemblais. Si tu me racontes pourquoi tu as gardé cette grenouille en plastique délavée, je saurais où t’étais dans ta tête, et comment tu le vois aujourd’hui. J'ai un truc pour les archives personnelles. Y a rien de plus puissant qu'un témoignage brut de pomme, teinté de toute sa subjectivité. Quand tu l'additionne avec d'autres, ça crée un patchwork tellement plus parlant qu'un listing organisé et stérile. Certaines vies se plient pas à la rigueur d’un mètre linéaire. Elles sont un empilement de merdier qui tasse toujours plus les couches en dessous. Et quand tu regardes au fond, c’est souvent pas facile d’en faire sens. On attribue facilement ça au passage du temps, mais en vrai c’est juste comme ça que certaines personnes construisent leur boite. Enfin, certaines de ces histoires dépassent ma simple personne : elles se mêlent à celles d’autres personnes. Elles forment parfois même du politique. Et soudain, resurgit le besoin de mémoire politique, de mémoire de nos communautés. Les jours où j’ai la flemme de trier, voire même simplement de “sauvegarder”, j’essaye de me rappeler de ça. Que je dois bien ça à mon moi du futur. Certains moments de ma vie sont à jamais perdus, et la perspective que ça puisse réarriver m'angoisse au plus haut point. Peut-être qu’un jour, je les "valoriserais" comme on dit dans le milieu, et ça peut-être que ça intéressera quelqu’un.
-
Social butterfly, archiving and writing
2025-04-23
now
-
Draw Together : "Gardien-ne fongique (vert)"
2025-04-20
artdigitaldrawingsDrawTogetherlore
lore (fr)# Si les symbioses sont communes dans la nature, les exemples sont plus rares pour les humains. Pourtant, les tribus Ghavra savent depuis longtemps tirer parti des Protelus Galvanisées, des champignons pouvant atteindre parfois 200 mètres de haut. Leur structure fournit non seulement un squelette pour les villes des Ghavra, mais également de l’ombre pour échapper au soleil de plomb. Il constituent également une source de nourriture, même s’il ne peuvent pas abuser de celle-ci au risque de mettre en péril l’intégrité structurelle de leur communauté. Au même titre que leurs cousins de taille plus raisonnable, les Protelus forment des “Rond de sorcières”, disséminant des champignons en cercle de plusieurs centaines de kilomètres grâce à leur mycélium. Du fait du rôle important de ces structures dans la culture Ghavra, le centre approximatif de ce rond est aujourd’hui un lieu sacré, dans lequel ce peuple remercie les Protelus de les avoir sauvé-es. Car après tout, dans la vallée du Falgraux, cela fait bien longtemps qu’il n’y a plus de vert.
-
Draw Together : "Singe Volcanique"
2024-11-24
artdigitaldrawingsDrawTogetherlore
lore (fr)# Bon pas très inspiréx pour ce thème et dessiner des singes c'est pas mon point fort, donc j'ai tenté de faire une représentation de ma musique favorite de Gorillaz, "Fire Coming Out of the Monkey Head" : bonne fin de saison à tout le monde ! And then came a sound, distant first, that grew into castrophany So immense that it could be heard far away in space There were no screams, there was no time The mountain called Monkey had spoken There was only fire, and then... nothing
-
Draw Together : "Corbeau enchainé"
2024-10-27
artdigitaldrawingsDrawTogether
-
Floating city
2024-10-24
artdrawingstraditional
-
L'énergie qui divise: réflexions anarchistes sur le nucléaire
2024-09-17
txt
C’est 2019, l’été, dans une forêt paumée en Allemagne. Il fait plus de 40°C à l’ombre : ma peau est ternie par deux semaines à hurler, hilare, “Ein Solution, Nieeeemals Duschen!” avec mes nouveaux camarades. On est allé au bord du grand trou. À l’horizon, il apparaît : le Bagger 293, un monstre de 14,200 tonnes d’acier, qui dévore la terre pour en extraire le précieux charbon. Je suis partagéx entre l’admiration d’ingénierie que représente cette machine et le dégoût politique qu’elle me provoque. Tout ça pour du charbon. Mes errements philosophiques se font pas long. La sécurité de la mine débarque en pick-up même si on est pas vraiment rentréxs dans le périmètre, et nous pourchassent dans la forêt. Plusieurs camarades sont embarqués. On les reverra que le lendemain. Mon enfance et mon adolescence ont été bercées comme pas mal de gamins, par la télé, des chaines d’information aux émissions de vulgarisation type C’est pas Sorcier. En plus j’étais fana de sciences, donc je bouffait du Science et Vie Juniors et les vieux Okapi de mon cousin. De fait, mon image du nucléaire a longtemps été celle du consensus, du libéral. Le nucléaire, c’est super ! Parfois en quittant ma campagne bressanne natale avec les parents, je voyais au loin une usine, comme dans les films : de grandes tours surmontées de panaches de fumée. Elle était là, sous mes yeux, l’énergie du future, tellement puissante qu’elle en passerait pour de la magie. En grandissant j’ai aussi commencé à militer dans le cyberespace. Mon truc, c’était le piratage, la vie privée et les logiciels libres. Data Must Flow. Donc le nucléaire, c’est pas au programme. Adulte, j’ai fini dans une grande ville. J’ai commencé à militer, dans “le vrai monde réel de la vraie réalité véritable”. J’ai logiquement intégré la terrible Extrême Gauche. D’ailleurs je me souviens à peu près de ma première vraie exposition à l’idée de l’anti-nucléaire, une soirée sur le thème dans un grand squat de la région. C’est rentré dans ma normalité d’entendre des discours anti-nucléaires. Même de grandes figures de l’écologie comme greenpeace étaient d’accord. Do I contradict myself? Very well then I contradict myself, (I am large, I contain multitudes.) Song of Myself, 51, WALT WHITMAN Qu’importe le milieu, chaque fois que le sujet revenait, dans un sens ou dans l’autre, je commençais à m’agiter. Je savais pas pourquoi. Y avait un truc qui me travaillait. Un jour j’ai fini par tiquer : j’ai été exposé, et ai adhéré, au meilleur et au pire des arguments pro-nucléaire. Et pareil pour l’anti-nucléaire. Je savais plus sur quel pied danser. Mais en fait, c’est quoi ma position, à moi, sur le nucléaire ? Comment concilier ses idéaux politiques contradictoires et son désir de savoir, de comprendre, concrètement, sur un sujet aussi complexe ? J’ai fini par me dire qu’avoir des contradictions, c’est si mal. C’est un bon moyen de danser sur les deux pieds pour mieux comprendre. Donc, le voilà, mon effort de recherche et de synthèse, sur le sujet de l’énergie nucléaire civile, en espérant pouvoir reconstruire une vraie position politique sur le sujet, sans renier les faits. TROP LONG; PAS LU(TL;PL)Les écolos mentent et se plantent sur le nucléaires et utilisent des arguments fallacieux. Le nucléaire est une énergie incroyable avec des avantages monstrueux, et quelques inconvénients en soit résolvables. Mais le gros problème possiblement irrésolvable, c'est que la structure même du nucléaire et l'industrie qui va autour est incompatible avec la démocratie, de part sa centralisation, sa complexité et son secret. Sommaire Verts de peur : les écueils écolos Noyaux dur : le nucléaire à la cool L’atome maturé : là où ça bloque Les grands mots: modèle de gouvernance Conclusion Références Verts de peur : les écueils écolos# Un des grands trucs qui m’ont le plus travaillé sur le sujet toutes ces années, c’est la régularité avec laquelle le camp “écologiste” anti-nucléaire s’appuie non seulement sur une communication de la peur digne des Simpsons, mais aussi carrément sur de la désinformations : les barils jaunes dégoulinants de slime fluo qui entourent une cocotte minute de fortune sur le point de raser un pays. On peut donc difficilement aborder le sujet de manière pragmatique sans d'abord faire une mise au point sur l'approche désastreuse qui est faite par le camp écologiste. D'oh! Les déchets fluos# Premier point : les déchets nucléaires ne sont pas à l'image des jeux vidéos et des films. En lieu et place de barils de liquide fluorescent, les déchets nucléaires dits "de haute activité" sont coulés dans du verre dans des containeurs en inox, et le tout protégé de manière à empêcher même un impact très violent de faire céder la gaine en béton. Ces "colis" sont testés de manière intensive, et il est même possible de rester à côté de ceux-ci sans recevoir de dose perceptible de radiations. Les barils jaunes sont en réalité des déchets de faible intensité, comme des gants ou des outils, et sont stockés sous forme solide et régulièrement inspectés: très peu de risque de ce côté là aussi donc. Certaines zone d'enfouissement sont d'ailleurs tellement sûres qu'elles sont accessibles au public, comme le centre de stockage de la Manche. The government let me kiss nuclear waste. -- Kyle Hill (YouTube) Et si on oubliait nos déchets nucléaires ? ☢️ -- Linguisticae (YouTube) La quantité de déchet et de pollution# Ensuite, concernant la nature et la quantité des déchets nucléaires. Pour commencer, tous ne sont pas issus de l'industrie électrique : la recherche et la médecine en produisent également. Ensuite, en france la production d'électricité nucléaire génère 56 400t par an de déchets nucléaire de faible activité, et 360t de déchets de haute activité. Rapporté par habitant, cela représente respectivement 940g et 5.65g par habitant-e. Pour resituer, la quantité de CO2 émise en 2022 est de 41 milliards de tonnes. En parallèle de cela, le nucléaire est moins polluant que le photo-voltaïque et l'éolien, y compris en prenant en compte le cycle de vie (de la construction au démantèlement, en passant par la production) : ce qui n'empêche pas Greenpeace de mentir et d'affirmer l'inverse. Électricité verte selon Greenpeace: l'écologie dogmatique. -- Le Réveilleur (YouTube) La sécurité# « bah moi dans mon générateur de vapeur, y a personne » À la manière des avions, le nucléaire souffre de l'effet choc des accidents majeurs qui ont eu lieu au travers de l'histoire. Pourtant, rapporté au Terawatt-heure (unité de production), le nucléaire est bien, bien en dessous des autres sources d'énergie avec 0.03 mort par TWh contre 18.43 pour le pétrole. De la même manière que, quoi qu'on en pense, l'avion reste le moyen le plus sûr de voyager (en dehors de la question écologique), et est soumis à des contrôles intenses, le nucléaire est une des énergies les plus sûres disponibles, et l'histoire le prouve malgré les incidents marquants. On aborde rarement les morts réguliers sur les puis de forage de pétrole, dans les usines, lors d'incidents réguliers en pétro-chimie... Ensuite, les activistes anti-nucléaires dont Greenpeace prennent un malin plaisir à démontrer une supposée faille de sécurité en entrant dans les centrales pour déployer des banderoles. Mais qu'est ce que ça prouve ? De la même manière qu'il est difficile d'évaluer l'antivirus de votre PC parce que l'absence d'alerte nous apprend pas grand chose, le fait que quatre pinpins écolos arrivent à rentrer sur site n'est pas une bonne manière d'évaluer la sécurité d'une centrale : peut-être que la sécu n'y a vu que du feu, ou peut-être qu'au contraire ils ont correctement évalué la menace. Les alternatives renouvelables# Tout le monde cherche une solution pour le futur, et le grand cheval de bataille des écolos, c'est le renouvelable. Or, les énergies comme le photo-voltaïque ou l'éolien souffre d'un défaut critique : elles ne sont pas pilotables, c'est à dire qu'on ne contrôle pas totalement la production car, well, on ne contrôle pas le vent et le soleil. Or, pour contrer ça, il nous faudrait des technologies de stockage pour compenser dans les périodes de creux en renvoyant de l'énergie précédemment stockée. Et ces technos ne sont pas du tout prêtes pour une production industrielles, malgré les annonces de certaines start-up. Il nous faut donc une solution pour une production "de base" à laquelle ces énergies s'ajoutent, et hormis le nucléaire, toutes sont extrêmement polluantes. 🔋 Une batterie mécanique avec un disque en rotation ? - bullshit ou pas -- Monsieur Bidouille (Youtube) Stockage de l'énergie sous forme mécanique: STEP, volant d'inertie et air comprimé. -- Le Réveilleur (Youtube) Noyaux dur : le nucléaire à la cool# Ensuite, il nous faut parler de pourquoi, le nucléaire c'est cool. Faisons un point rapide sur ses forces, pour savoir de quoi on parle. energy density# Le nucléaire présente une "densité énergétique" (comprendre, la quantité d'énergie qu'on peut produire avec une certaine masse de combustible) incomparable. On parle de l'équivalent d'une tonne de charbon, 120 barils de prétrole, ou 480 m3 de gaz naturel pour une pastille de réacteur nucléaire. xkcd n°1162, "Log Scale" L'uranium omniprésent# Un truc qui m'a surpris en me renseignant plus sur le nucléaire, c'est que jusqu'en 2001 on minait de l'uranium en france. Aujourd'hui, notre uranium vient principalement du Niger, mais il fut un temps où on produisait en circuit court, au moins partiellement. Près de 76,000 tonnes d'uranium ont ainsi été produites. La dernière mine d'uranium française encore en activité ferme ses portes (Les Échos) recyclable à 94%# Autre truc surprenant, les produits de fission sont recyclables. À 94% à vrai dire. Autrement dit, il existe un monde où le circuit d'approvionnement en combustible est partiellement en circuit fermé, limitant ainsi la quantité de minage nécessaire. Pour ce qui est de ce qui est effectivement recyclé, on y reviendra. Nucléaire : vers un recyclage infini du combustible ? (La tribune) Peu carboné# Enfin, le nucléaire est une énergie très bas carbone : on parle de 4g de carbone par kWh, contre 986g pour le charbon et 50g pour le photovoltaïque. CO2 emissions per kWh of electricity generated in France (RTE France) What Is the Carbon Footprint of Solar Panel Manufacturing? (Solaris Renewables) CO₂ emissions by fuel (Our World In Data) Tout cela dépeint une énergie ultra-dense, ultra efficace, recyclable et peu polluante. Bernard Mais si ces écologistes motivés par une peur irrationnelle d’une technologie pourtant si sûre font de la désinformations pour manipuler le grand public, nous serions nous trompé de camps ? Notre salut se trouverait-il du côté de la grande et sublime industrie nucléaire note de relecture foreshadowing trop peu subtile L’atome maturé : là où ça bloque# « bah j’démantèle ma centrale - mais t’es pas b- -MAIS SI, SI, ILS L’ONT DIT À LA TÉLÉ » L’électricité, seule responsable des gaz à effets de serre ?# Premier à-priori : le nucléaire ne concerne (en tout cas, à l'heure actuelle) que le secteur de l'électricité. Or, celle-ci ne constitue que 17% (17%) du total de l'énergie produite. Le reste étant réparti entre les usines, le transport, le chauffage, etc. Le tout nucléaire n'est donc de toute façon pas au programme. Energy isn’t just electricity – the common mistake obscuring the mammoth task of decarbonisation (The Conversation) Notre salvation Bientôt™# 2035/2037. C'est la date de mise en service promise pour les futurs réacteurs EPR2 de Penly, au nombre de deux. Construire une centrale nucléaire, ça prend du temps, et même avec la promesse d'une architecture simplifiée, il semblerait que le nucléaire ne soit pas en mesure de monter en puissance assez vite pour contrer le réchauffement climatique : n'imaginons donc pas à l'échelle planétaire. Après 17 ans de travaux, l'EPR de Flamanville vient tout juste d'être mis en service et est source de nombreux scandales et un budget qui a explosé. Nucléaire, enquête sur un fiasco français -- BMFTV (YouTube) Le projet (EDF Penly) Techniquement, c'est recyclable# Si vous avez étez attentif-ves à la communication du secteur nucléaire français, un truc a dû vous faire tiquer. Ils répètent à l'envie que les produits de fission sont recyclables à 94%, mais ne disent jamais qu'ils recyclent. Le reportage de Complément d'Enquête sur les déchêts nucléaires le démontre admirablement en prenant au piège une porte parole en demandant la part de déchets effectivement recyclée : elle se contente de répondre qu'ils sont recyclables à 94%. À vrai dire, le seul combustible recyclé l'est en Russie, où l'on envoie une partie de nos déchets, qui nous renvoie ensuite du combustible. Les implications géo-politiques ne sont pas à démontrer, et le secteur du recyclage de combustible en france est loin de la phase industrielle. La Russie possède la seule usine au monde capable de « recycler » l’uranium déchargé des réacteurs nucléaires français (Le Monde) Déchets nucléaires : quand nos poubelles débordent (Complément d'Enquête) Que faire des déchets# Le maintien et même le renouveau du nucléaire français repose sur le postulat qu'on sait quoi faire des déchets, et que les filiaires sont déjà là (ou presque là). Pourtant, les sites de stockage soutterains profond en france, méthode privilégiée aujourd'hui, sont encore au stade de laboratoire, et sont développés dans des conditions politiques plus que questionnables. Qu’est ce qui se passe à Bure ? (bureburebure.info) La dépendance# Novembre 2022, neuf mois après l'invasion de l'ukraine par la russie, 10 containers d'uranium naturels et 27 fûts d'uranium enrichis sont livrés depuis la russie comme relevé par un journaliste Médiapart. Rien d'étonnant, car la france envoie régulièrement ses déchets nuléaire en russie pour être stockés ou révalorisés. En février 2024, le Canard Enchainé relève un marché de 860 millions d'euros remettant entre les mains d'Amazon l'infogérance d'une partie des données du parc nucléaire. Comme déjà évoqué, le gros de l'uranium qu'on consomme vient du Niger, et sans même parler des questions coloniales, se pose la question de pourquoi le nucléaire est vendu comme une énergie "souveraine". La complexité du nucléaire entraine des dépendances géopolitiques et privées, desquelles il est difficile de se déméler quand le vent tourne. Nos déchets nucléaires sont cachés en Sibérie -- Libération Ce matin 10 containers d’uranium naturel et 27 fûts d’uranium enrichi en provenance de Russie ont été livrés à la France sur le port de Dunkerque. C’est la 1ère fois depuis le début de la guerre en Ukraine qu’on a la preuve de l’importation en France d’uranium naturel russe. @Lindgaard via twitter . EDF fait appel à Amazon pour gérer une partie des données numériques de son parc nucléaire. Un marché à 860 millions d’euros. De quoi faire disjoncter certains cadres qui pointent un problème de cybersécurité... Le Canard Enchainé via twitter Le formulaire A38 : Complexité réelle ou artificielle# Celle-là je vous la sort texto de Wikipédia, car quand j'ai découvert ça, je suis tombéx dans un mélange d'hilarité et d'incompréhension : À titre d'exemple, l'EPR recense 13 300 références de robinetterie, réduites à 571 pour l'EPR252 ; également, les EPR d'Hinkley Point C comportent 400 références de tuyaux, diminuées à 250 pour l'EPR2 ; ou encore 1 700 modèles de portes (pour la plupart uniques) dans l'EPR de Flamanville, chiffre abaissé à 100 pour l'EPR2. Des efforts de standardisation sont également engagés, comme l'utilisation de références de tuyauterie déjà utilisées et qualifiées, notamment dans l'industrie pétrolière ou gazière. Evolutionary Power Reactor 2 - EPR 2 : Amélioration par rapport à l'EPR (Wikipédia) Deux possiblités pas incompatibles : La construction d'une centrale nucléaire est infiniment plus complexe que ce que l'on peut décemment imaginer L'industrie nucléaire ne sait pas ce qu'elle fait Dans la même veine : Pour des raisons de coûts, EDF fait un recours massif à la sous-traitance en cascade. Un rapport parlementaire a noté jusqu'à huit niveaux de sous-traitance (note 91). Les salariés des sous-traitants sont moins bien payés que les salariés d'EDF et sont également moins bien formés. Leur suivi médical est insuffisant (note 92). Un salarié précaire va parfois chercher à minimiser la valeur d'irradiation montrée par son dosimètre individuel de peur de perdre son emploi (note 93). Débat sur l'énergie nucléaire : Risques liés à la gestion des ressources humaines (Wikipédia) Nul doute que le nucléaire est complexe. Les questions qui se posent sont : à quelle point le nucléaire est-il réellement complexe ou l'industrie nucléaire souffre d'une complexité artificielle par dessus ça ? Et quelle complexité "réelle" peut-on se permettre pour ce qui doit être le cœur de notre électricité ? Et… Veut-on faire dépendre toute notre société d'une énergie aussi complexe ? Pollution et canicule# Le nucléaire est bien moins polluant que toutes les autres énergies : c'est un fait. Il est d'ailleurs moins polluant que le solaire et l'hydroélectrique, aussi perturbant que ce soit. Néanmoins, c'est assez fascinant de voir les pro-nucléaires répéter que le nucléaire est peu polluant en prenant systématiquement l'angle du "carbone". Pour des pro-méthodes scientifiques, la régularité avec laquelle iels se réfèrent à une définition étroite de la pollution est fascinante. Au delà des déchets nucléaires, cette énergie pose des problèmes de rejets et de température des rivières. En conséquence, les autorités contrôle font le choix... De changer les valeurs limites pour rester dans les clous. Avec le réchauffement climatique, les centrales doivent de plus en plus souvent réduire voire stopper leur production pour encaisser l'augmentation de témpérature des rivières. Difficile donc de prévoir comment l'infrastructure réagira sur le long terme, surtout dans le cas d'un élargissement du parc nucléaire. La canicule donne un coup de chaud à l'option nucléaire -- Libération En cas de dépassement de ces valeurs limites, l’exploitant doit réduire la puissance du réacteur ou l’arrêter. Un assouplissement temporaire des valeurs limites des rejets thermiques peut être autorisé par l’ASN en cas de besoin du réseau électrique, comme cela a été le cas durant les épisodes caniculaires des étés 2003 et 2006. Dans ce cas, la surveillance de l’environnement est renforcée. Fonctionnement des réacteurs nucléaires en période de canicule -- Autorité de Sureté nucléaire Le retour du nucléaire compromis# Passer toute notre consommation en énergies renouvelables nécessiterait une quantité d'argent, d'adaptations et de technologies énorme. Mais le passage au tout nucléaire, même "transitoire", réclame des filiales gigantesques et complexe, une montée en compétence de dizaines de milliers de personnes en quelques années, des garde-fous et des infrastructures de traitement de déchets inexistant-es à l'heure actuelles, sans compter les problèmes déjà évoqués. Cet investissement se ferait aux dépends des autres énergies et innovations, et il est perturbant de voir que les énergies renouvelables sont systématiquement comparées telles qu'elles existent au potentiel futur lointain brillant du nucléaire. Pour évaluer le problème, on se doit de comparer présent à présent, futur à futur. Les grands mots: modèle de gouvernance# Mais finalement, la transparence, c'est LE problème du nucléaire. À quelques détails près, le seul et l'unique. Mais un problème d'importance capitale: peut-on réellement mettre notre futur entre les mains d'une industrie qui par sa nature profonde fonctionne en vase clos et se rit des enjeux démocratiques Tchernobyl et la demi-vie du mensonge# Le saviez-vous ? Le mensonge autour des nuages radioactifs de Tchernobyl n'aurait jamais eu lieu. C'est ce qu'affirme Tristan Kamin, partisan très vocal du nucléaire affirme sur son blog dans un article intitulé Tchernobyl et les douaniers français Plusieurs couches de merdier: les journalistes et le pouvoir ont affirmé que le nuage s’était arrêté à la frontière Sauf que non, apparemment, c’était une illusion collective: les archives des JTs de l'époque montrent que cette phrase n'a jamais été prononcée sauf que sauf que, ne jouons pas sur les mots. Les médias et le pouvoir ont prétendu qu’il n’y avait aucun risque, puis un risque minime, alors qu'on ignorait encore ce qu'il se passait. Cette volonté de rassurer sans base solide a logiquement explosée sous la forme d’une opprobe populaire, car à défaut d’avoir ostensiblement menti, le gouvernement et les médias ont minimisé les risques en dépit des faits, créant un manque de confiance légitime, Même si il n’y avait pas besoin d’acheter de pastilles d’iode. Du coup dire “ils sont pas dit la frontière”, c’est faire preuve de mauvaise foi. Fondamentalement on a dit aux gens, “ne vous inquiétez pas” Replaçons le contexte : la nouvelle sort qu’une centrale nucléaire, située en ukraine, vient d’exploser et est en train de recracher des particules radioactives dans l’atmosphère. Avec presque 40 ans de reculs, c’est relativement facile de penser pouvoir deviner l’étendue de la zone impactée. Mais à l’époque, tout ce que les gens savaient, c’est qu’un nuage radioactif se baladait pas très loin de leur maison. La panique est donc, assez logique : et le besoin de rassurer l’est tout autant. Non, vous n’avez pas à creuser un trou dans le sol pour vous y réfugier comme abris anti-atomique de fortune. Mais la ligne entre rassurer et mentir est aussi fine qu’une enceinte de protection de 3m de béton. Agiter les modèles météo en disant, “regardez, c’est un miracle, on ne sera pas touché” revient à dire que le nuage allait s’arrêter à la frontière, que ça soit dit comme ça ou pas. Le calcul qui s’est opéré dans la tête des dirigeants est assez simple à deviner : la France s’était lancée tête bêche dans le nucléaire la décennie avant, et un accident côté soviétique risquait de faire basculer l’opinion publique. Il ne fallait pas fléchir. Pas maintenant. Sous l'océan# Le saviez vous ? Les gouvernements ont passé une bonne partie de la seconde moitié du XXe siècle à balancer des déchets nucléaires dans les profondeurs des océans. Si l'Union Soviétique est la plus grande fautive, on a aussi entre autres les US, la Suisse et le Japon. Le truc, c'est qu'on nous a affirmé que ces barils et autres déchets étaient stables. Or, on sait aujourd'hui qu'ils relâchent lentement mais sûrement des éléments radioactifs. Au delà d'une erreur faite il y a des décennies, il y a de quoi se questionner sur les promesses systématiques de "sécurité" des dépôts de déchets par l'industrie nucléaire. Ils ont menti avant, comment peut-on être sûr-es qu'ils ne mentent pas maintenant ? Radioactive waste, baby bottles and Spam: the deep ocean has become a dumping ground -- The Guardian It’s not just toxic chemicals. Radioactive waste was also dumped off Los Angeles coast -- LA Times flamanville# Flamanville, c'est une centrale nucléaire qui a mis 17 ans à sortir de terre. C'est l'exemple type de ce que le nucléaire est aujourd'hui : un projet opaque, coûteux même au delà des estimations, une complexité folle et un retard démentiel. Pour commencer, le coût a été multiplié par six, la faute à de mauvaises estimations initiales et divers soucis durant le chantier Les dérapages de l’EPR de Flamanville en graphiques : le coût multiplié par six, la durée du chantier par quatre -- Le Monde La cuve, élement centrale du système, souffrait d'anomalies, la faute à un rachat de Creusot-Forge par Bolloré, qui entrainera un effondrements des standards de production et une magouille sous forme d'un rachat à 800 000 euros suivi d'une revente à Areva pour 170 millions d'euros. Les alertes sur la production de la cuve remontant jusqu'à à 2005 sont passées sous le tapis, et la cuve est quand même installée. Défauts sur la cuve de l’EPR de Flamanville : l'Autorité de sûreté nucléaire avait alerté EDF dès 2005 de dysfonctionnements chez le fabricant -- France Info Nucléaire : nouveau coup dur pour l'EPR de Flamanville -- Les Échos Le rapport remis au gouvernement par Jean-Martin Folz fait état d'un projet dont les coûts ont explosés, des estimations initiales « irréalistes », divers incidents et malfaçon lors du chantier, et dépeignent un chantier trop complexe et bercé de manoœuvres douteuses. Remise du rapport de Jean-Martin Folz « La construction de l’EPR de Flamanville » à Bruno Le Maire et à Jean-Bernard Lévy -- Site du Ministère de l'Économie Nucléaire, enquête sur un fiasco français -- BFMTV (YouTube) Malgré cet échec, Macron poussera en 2022 la construction de EPRs nouveau modèle. Ce qui est flagrant avec Flamanville, c'est pas tant les erreurs : toutes sont évitables à l'avenir, et même le défaut de cuve ne compromet pas tant la sécurité de la centrale que sa durée de vie. Ce qui est important, c'est que l'industrie a tout fait pour masquer ses erreurs et échapper à l'introspection par la société civile. Le future politique# Le nucléaire, c'est du long terme. On parle de 50 à 80 ans de cycle de vie pour une centrale. Le mandat présidentiel étant de cinq ans, il est difficile de prévoir qui sera au pouvoir dans trois mandats, donc on imagine pas dans 10. D'un point de vue politique, économique et culturel, où sera la france dans 50 ans ? Que feraient des fachos avec des panneaux solaires ? Ou, pour être moins alarmiste/complotiste (selon comment vous voyez les choses), qu'est ce qu'il se passerait au pire s'ils géraient mal des panneaux solaires ? Désintégration démocratique# On peut parler longtemps technique, mais par vertue d'être de la technique, on peut trouver des solutions, des contournements, discuter d'alternatives. Mais le plus grand problème à l'heure actuelle est l'opacité de l'industrie nucléaire. Quand on voit tout le merdier des "94% recyclables jamais recyclés" (voir le docu de Complément d'Enquête), c'est clair qu'ils n'ont aucune intention de construire un lien de confiance avec le grand public. Quant à Tchernobyl, la conclusion est qu'il n'y avait pas grand chose à apprendre car les centrales françaises y sont trop différentes (ce qui est bien) : mais le mensonge orchestré par l'industrie et l'état au travers des médias rapport au nuage radioactif montre le dédain pour la population de la part de cette industrie, et les vidéos sponsorisées par des vidéastes pour dire "regardez, c'est safe !" n"y changeront rien. On est au delà de la (re)construction d'un lien de confiance. Le chantier est tellement gros, le trou qu'ils ont creusés eux-même (que les écolos aimeraient seulement avoir à leur crédit) tellement grand, qu'ils ne pourront jamais le réparer à temps pour le ✨grand défi du siècle✨, tout du moins en respectant le fonctionnement démocratique. Nucléaire : un cadre de la centrale du Tricastin dénonce une « politique de dissimulation » d’incidents de sûreté (Le Monde) La pipeline est simple : le nucléaire a, factuellement, d’énormes avantages sur les autres énergies, de part sa capacité à produire énormément d’énergie, à peu cher (rapporté au kWh) avec très peu de pollution. Sur cette base, les pro-nucléaires traitent la chose comme réglé et la nécessité de passer au full-nucléaire comme un fait scientifique qui n’a pas à être sujet à débats. De fait, les arguments (certains pertinents) avancés par les anti-nucléaires sur les questions de sureté, de souci de transparence, de surveillance… etc sont passés sous le tapis, même s’ils sont pertinents. Leur position est alors peinte comme des interférences de la solution™. Sûreté nucléaire : l’Assemblée nationale fait avancer le projet de réforme controversé du gouvernement (Le Monde) Echange tendu en commission à l'Assemblée entre certains députés et Jean-Marc Zulesi au sujet du vote pour le rejet de la fusion entre l'ASN et l'IRSN - 05/03/2024 (Reddit) Dans cette lignée, l'industrie est obligée de passer par le lobbying, comme lorsqu'elle a fait intégrer le nucléaire aux énergies vertes : Out with Science, In with Lobbyists: Gas, Nuclear and the EU Taxonomy (Reclaim Finance) Dans le même ordre, le gaz a également été inclu comme "énergie de transition" malgré sa pollution : Neutralité carbone : la nouvelle taxonomie verte européenne (gouvernement.fr) Conclusion# Face au choix imposé entre crever la gueule ouverte ou accepter une société alimentée par une industrie qui a déjà démontré par le passé et dans le présent sont fonctionnement opaque et autoritariste, c'est pas étonnant que les gens cherchent une alternative. On tisse un réseau complexe d’industries, toutes sujettes à des risques faibles mais à conséquences graves, qui parient sur l’absence d’échec malgré la complexité, le tout mis à l’abri par des pratiques anti-démocratiques. Même si on admet un potentiel au nucléaire, force est de constater que l’humanité n’est peut-être pas assez mature technologiquement et politiquement pour le nucléaire. Je parle ici de démocratie au sens large de "pouvoir du peuple", et non de démocratie représentative semi-présidentielle bi-camérale isotopique multi-facette à pois bleus Ma position est donc c'est que la politique de la peur actuellement montée par les mouvements écologistes relève de la pure désinformation. Mais au delà de ça, le problème central de l'industrie nucléaire, c'est le manque de transparence, ce qui est un euphémisme tant ça semble être dans l'adn de celle ci. Tous les problèmes de sécurité, de fiabilité, de tests, sont fondamentalement pas irrésolvables mais se rapportent à ce refus de se soumettre à l'autorité de la société civile. Et c'est pour cela que je considère que le nucléaire ne peut pas être notre énergie salvatrice. Une analyse superficielle des raisons à cela serait de faire un parallèle entre l'architecture physique et l'organisation : le nucléaire serait centralisé donc son organisation aussi. Je pense plutôt que le problème est qu'il s'agit d'une industrie de pointe, mise sous contrainte car en porte-à-faux entre expérimental et industriel, et cheval salvateur de la société capitaliste. Sous des contraintes abstraites moindre, le nucléaire aurait pu briller. Je suis loin d'être la seule personne a être arrivé à cette conclusion : mais il me semble important de souligner qu'il s'agit du vrai problème du nucléaire : on a pas besoin de passer par de la désinformation et des erreurs scientifiques pour critiquer le nucléaire. L’État nucléaire : antidémocratique, adepte du secret et de la répression -- Réseau sortir du nucléaire «Le nucléaire est une énergie antidémocratique» -- Libération « Le projet de loi sur le nucléaire est antidémocratique », dénonce le sénateur écologiste Daniel Salmon -- Le JDD Références# Sortir du nucléaire -- Greenpeace Complément d'enquête, Déchets nucléaires : quand nos poubelles débordent (FranceTV) Dose Équivalent Banana, blog de Tristan Kamin Nucléaire civil : énergie d'hier ou de demain ? - Le dessous des cartes -- Arte (YouTube) Nucléaire : une solution pour la planète ? -- Arte (YouTube) Le Réveilleur (YouTube) Nucléaire, enquête sur un fiasco français -- BFMTV (YouTube) BURE BURE BURE
-
Worldbuilding through lethargy, mostly.
2024-09-11
now
-
A city
2024-08-26
artdrawingstraditional3700
-
Le militantisme d'influence
2024-08-22
txt
Portable à la main, Thibaut visibilise les luttes Il encourage d’autres, à visibiliser les luttes Les luttes s’effondrent, les luttes chutent Ils faut dire que plus personne, participe aux luttes Internet vs. le 𝓽𝓮𝓻𝓻𝓪𝓲𝓷# On va commencer par mettre quelque chose à plat. Internet n’est pas retiré de la vie quotidienne : c’était vrai quand c’était encore qu’une techno émergente, ça l’est d’autant plus maintenant qu’elle est omniprésente. Les outils sociaux diffèrent, mais les enjeux sont les mêmes. Il sont qu’une extension de la vraie vie. Traiter internet à part, c’est ne pas comprendre ce que c’est. Ensuite d’un point de vue militant, y a pleins de trucs qu’on peut faire. Y a pleins de trucs qu’on doit faire. Transcription, trad, ressources, agrégat de ressources, entraide, passage d’infos, sensibilisation, information… Sans compter, et même si c’est de l’opérationnel, les luttes sur l’accès à la technologie auprès des populations minorisées (fracture numérique, lutte contre les régimes autoritaires, etc), qui sont essentielles au vue du rôle d’internet aujourd’hui. Néanmoins Partager en boucle des posts/vidéos qui “visibilisent” ne fait pas avancer les choses. Oui, visibiliser une lutte, c’est important, mais se contenter de visibiliser des trucs en partageant toute la journée des tweets/reel/tiktok ne suffit pas. Parfois on tombe sur un reel insta, un tiktok, un tweet ou un article de blog et la première question qui vient en tête c’est “mais dans quel monde iel vit pour affirmer ça ?”. Mais bon, "y a des gens qui ont pas le temps de militer" c'est vrai que moi j'ai le temps, jmilite parce que ça me fais kiffer : j'aime trop me pourrir la santé physique et psy pour espérer pas crever. C'est un argument juste insultante envers les gens qui se crèvent le cul, IRL et/ou en ligne. Logique de communication# À la manière des entreprises, certains groupes/orgas ont développé une appétence pour la communication. Peu importe ce qu’il se passe, tant qu’on communique autour. Résultat, une énorme partie de l’énergie et des ressources passe dans la comm plutôt que l’action réelle. Certains groupes se sont spécialisés là dedans : le gros de leur comm’ tourne autour de l’action direct, mais leur action sur le terrain est purement performative : toute leur hiérarchie est composé d’influenceurxs en chef et de sergents influenceurxs. Par leur sur-présence sur les réseaux, iels persuadent tout le monde qu’iels sont le moteur des luttes d’une région, mais si vous êtes sur la même région qu’elleux vous ne les verrez jamais faire autre chose que des actions ayant pour but de visibiliser leur propre groupe. Bref, une machine à faire de la comm, qui a imposé l’idée qu’iels sont les seules à agir sur le terrain, alors que c’est tout le contraire. Alors on pourrait ergoter toute la journée sur la nécessité d'avoir des figures publiques, des portes paroles, en mandat impératif ou non, parce que c'est comme ça que marche la politique aujourd’hui. Mais les influenceurs, qui leur a demandé ? Qui les “mandate” ? X ou Y sujet n'a jamais été aussi visibilisé d'accord, mais pour quel effet ? La visibilité existe jamais dans le vide, elle peut pas être une fin en soi, en témoigne le pinkwashing. Les seuls qui bénéficient, au sens pécuniaire du terme, de la visibilité, c'est les influenceurs. Ils sont l’équivalent web des éditorialistes et polémistes à la TV qui ne font rien d’autre que de donner leur avis pour faire tourner le monde autour d’elleux. C’est bon pour vous ? C’est d’ailleurs devenu monnaie courante que ces “figures” s’appuient sur des actions/événements/manifs créés par des collectifs/orgas pour créer du contenu et de l’engagement sur leurs réseaux. Elles vampirisent alors carrément les luttes actives. Voyant que des gens bougent et s’activent, ces personnes continuent leur cirque, se convaincant alors d’avoir réellement un rôle de “porte parole” à jouer, dans un dialogue qui en vrai est à sens unique La visibilité c’est important. On a besoin de mettre en lumière ce contre quoi on lutte, ce pour quoi on lutte. Mais aujourd’hui y a une quantité d’énergie absolument phénoménale qui est investie dans cet axe “visibilité” comme si c’était le cœur de la lutte, alors qu’en parallèle sur le terrain (dans lequel j’inclus internet) et que j’oppose justement au travail surplombant de la comm’, qui manque cruellement de bras et d’énergie. Notamment la logistique, le soin, la bouffe, les réseaux de solidarité, la thune. Et pendant ce temps, le “milieu” militant fait comme les partis, c’est à dire se jette à corps perdus dans la bataille médiatique, en pensant que visibiliser plus que nécessaire fera magiquement bouger les choses. Et les choses bougent parfois, mais du fait du vrai taff fourni, et non de ce spotlight éblouissant qui se contente finalement surtout de commodifier et transformer en contenu diffusable capitalo-friendly la souffrance des unx et le taff des autres. Le “milieu militant” me renvoie l’image de certaines entreprises dont la moitié des forces vives et les 3/4 du pognon sont au pôle comm/marketing alors que c’est leur cœur de métier qui fait tourner la boite. L’individualisme# Selon cette approche du militantisme, on est touxtes influencerxs. Et tout ça prend un pli cynique couplé aux logiques d’anonymat voire de clandestinité qu’implique beaucoup de luttes. Des gens agitent leur CV militant et s’appuient sur leur engagement public : iels peuvent trop facilement se faire passer pour l’avant garde des luttes simplement parce que personne de “connu” ne fait plus qu’elleux. Mais y a beaucoup de choses qui sont fait dans l’anonymat, ou caché derrière le nom d’une orga/collectif. C’est soit pour des raisons de sécurité, soit parce que ça a vocation à alimenter une lutte collective, et parfois (souvent) les deux. En dehors des quelques contextes nécessitant une figure public comme unx porte parole, la seule raison à ce choix de l’engagement public individuel, c’est le clout. Les luttes se font dans l’anonymat : les syndicalistes disent pas “moi chef département de tel section”, c’est “le syndicat”, les féministes, les antiracistes et les queers c’est “le collectif” ou “l’asso”. Les “totos” pareil, quand iels ne revendiquent même pas et se contentent de faire. Y a tellement de travail fait dans l’ombre au jour le jour par des associations et des collectifs. Et toi t’arrives et tu dis « Oui, mais moi au moins je fais des trucs, regarde tous les postes insta qui le prouve, toi t’as fait quoi ? ». Moi j’ai fait des trucs dont je peux pas parler, par respect de la logique collective ou par sécurité. Mais tes stats sont sans doute le cœur de la lutte, j’imagine. Ça serait facile de tomber dans une analyse très abstraite de “c’est la faute de tiktok et instagram si les luttes galèrent”. On peut facilement trouver des responsables en chair et en os. Le capitalisme absorbe tout, y compris les contre-cultures et ses oppositions. Et y a des gens qui face à ce mécanisme se sont dit « tiens moi je vais commodifier hmmm... Les luttes ! ». C'est vraiment l'équivalent de quelqu’un en galère de thune qui décide de vendre le frigo de la coloc. Les influenceurs militants qui construisent une vision des luttes basée sur leurs consommation, à coup de campagnes d’influence qui tourne autour de leur petite personne. Ils parlent des mouvements sociaux comme des trucs qui apparaissent dans le vide, qu’on attend, pour ensuite y participer et visibiliser sa participation à. Ils ont construit l’idée que militer consiste à s’assurer de faire monter un chiffre de participation, et éventuellement convaincre d’autres de faire de même. Un vrai système pyramidale où tout le monde est influenceurx, toi moins importantx que elleux mais plus importantx que les autres. Iels font l’impasse sur tout ce qu’implique une lutte, dans toute sa diversité (assos d’accompagnement, manifs, structures, collectifs, actions) et ce qui est nécessaire pour que ça existe : de l’énergie, des gens, des réus chiantes, des mains dans le cambouis, des débats désagréables. Et la consommation militante passive# On en arrive donc à des discours déconnectés du “terrain” (et j’insiste mais, qu’il soit physique ou virtuel). On voit parfois sur les réseaux des gens “commander” des actions. « Y a pas de pride de nuit cette année ??? » « Trop bien la pride de nuit à lyon, pourquoi y en a pas à lille ? » « Vous savez si y a un cortège queer-palestine organisé au 1er mai ? » Bah si y a pas, fais-le toi ? Les manifs tombent toutes cuites : et si y en a pas, c’est que les cortègeologues ont failli à leur tâche assignée implicitement. Vous inquiétez pas, iels seront bientôt remplacées, iels sont déjà en burn-out. Les publis qui annoncent les manif tournent de ouf, jusqu’au moment du poste “appel à bénévoles” où soudain tout le monde a piscine. Tout le monde veut venir à la manif/l’action, personne veut participer à son organisation. Ça tient de la commande de fast-food, du militantisme passif. De cette consommation passive découle une autre conséquence tout autant néfaste : on a complètement accepté l’idée que les luttes sont en concurrence sur le marché de l’attention. Gros focus sur une lutte pendant quelques mois, mais si une autre pointe le bout de son nez à cause de l’actualité, tout le monde se regarde en chien de faience à savoir qui a la priorité et qui accusera l’autre “de l’invisibiliser”. Du coup, on guette les chiffres. « et ça y est, les gens recommencent à oublier la Palestine, l'engagement des posts baissent ». Déjà l’engagement est pas à l’image de ce qui se passe en société. Et cette vieille compèt entre les misères c'est ce qui les commodifie. Surtout, ça t'arrange bien que ça soit l'engagement de ta page d'influenceurx militantx qui faut maintenir à flot. Conclusion# Et de tout ça, je point du doigt les influenceurxs : sous prétexte de visibiliser les luttes, iels les revendent, en s’appuyant sur le travail fourni par les militantxs comme matériau de base, et construisent une logique de consommation. Des gens organisent une manif ou une action, iels appellent à y participer comme iels avaient fourni ce taff, font juste ça en boucle et râlent quand “y a pas de manif pour X” : en vérité, iels dénoncent qu’on leur fourni pas les matériaux qui alimentent leur belle machinerie qui transforme les luttes en followers. Il faut y faire face : les influenceurxs ne sont pas un “mal nécessaire” : c’est une plaie. Chassons-les de nos luttes.
-
Games
2024-08-06
wiki
Content Minecraft BallisticNG reset progression & cloud KSP Launch command Minecraft# Good tutorial on how to install Minecraft server on Linux: https://www.shells.com/l/en-US/tutorial/0-A-Guide-to-Installing-a-Minecraft-Server-on-Linux-Ubuntu BallisticNG# reset progression & cloud# Launch the game, go back to steam without closing it, right click > browse local files, delete "save" all while it runs, it should do the trick KSP# Launch command# Fixing various control and localization bugs, plus dGPU launch DRI_PRIME=1 SDL_DYNAMIC_API=/usr/lib64/libSDL2.so LC_ALL=C %command%
-
too much sky for a pilot
2024-08-01
projects
That’s too much sky for a pilot: discussion with commended pilot Johr StirflarGiant clouds bigger than the earth are rolling in the sky. Weather fronts so big and slow we map them. The war still rages between the three nations in the sky of our Mother Elben. « I was doing surveillance around Etra’s cyclones when two unknowns showed up: they were fast. planes that high usually don’t go so fast: I knew it was Etrenian high altitude interceptors ». Our hero of the day, Sft. Johr Stirflar, was aboard a BX-100 fighter, a versatile but aging machine. Unfortunately, high altitudes aren't its forte, unlike Etrenian 10-atm specialized fleet. « I knew I couldn’t flee, so I dove to get some advantage. I first thought they didn't see me, but they quickly banked right and shot long range missiles. I barely had time to dodge that my craft burst into flames. I spent eight hours reflecting on my life, alone in that space raftTHEY CALL IT THE DEEP DIVE. Getting shot down is the bane of the grey skies’ pilots, even more so than the ones on our planet: you are left with no choice but to separate you cockpit from your plane, and to hang below a parachute for hours on end. your only hope is that the rescue team picked up your distress call, as the sky around you gets darker and darker. « It was a long wait. You’re looking downward, with your low frequency antenna reaching far into the depths. At times, it looks like a tether pulling you towards the core of the planet »…. War treaties prevent from shooting down rescue battalions and downed crafts, but those are just cordial agreements between countries which are formally at war. Nothing would prevent one from violating that rule, other than the risk that others would do the same. « I spent eight hours reflecting on my life, alone in that space raft. I was at -80.000m from one-atm, things were getting hot. Literally. […] All of a sudden I heard radio chatters, and then saw it: the “whale”, a large vessel, half-floating half flying, with its hooks on its belly. I was finally saved. » TOO MUCH SKY FOR A PILOT. Johr long described how the sky feel there : […] I spent five years in the 3rd deployment battalion here on earth. We would launch on so called long range missions, flying for 24 hours at a time. The sky felt limitless: horizon on end. Except, it’s not: it starts at the ground, and stops however high conventional planes can go. On Elben, It’s just air all around you. Every time you sortie from the carriers, you leave what little ground you had: you better not look down, even if you don’t fear heights. Heights have meaning. Here, nothing makes sense. The sky really is, limitless. It’s too much sky for a pilot.Since the start of the war two years ago, following territorial issues around the 3000km long Arl skywall which flanks the Sea of Felz, 32 pilots got lost to the depths. Pilots love to tell stories at the cantina of how it feels crossing the Ash Line. But if they’re here to tell, they didn’t crossed it […] You automatically get a commendation for doing the dive. Not that its something to be proud, but the brass knows you joined the rank of a very special kind of pilot: one who fears what’s below and won’t get hotheaded.Sft. Johr Stirflar is scheduled to go back to the frontline later this year: everytime you look at Elben’s gentle grey crescent at night, think of those pilots braving the dark depths for the glory of our nation! — Jonathen Golduque, correspondent on Air Station Polm II.
-
Monos class vessel
2024-07-28
projects
The Monos Class Vessels were sailships used for less than a decade to transport fret and sometimes passengers across the xxx ocean. At the dawn of the second industrial revolution (note: the first being mecanical parts), the coal extracted from xxxx's mines was so poor that it could hardly be used for heavy-duty. before the development of better rafinery processes, coal was used as an auxilliary power to existing systems. Monos class vessels were sailships which were operated by a limited crew, as steam-power was used to activate the sails and other subsystems. "Monos class" was a lose marketing term which designated ships from various sizes: But as the steam-powered engines was barely viable enough even for this purpose, secondary ships were used to supply the biggest mastodons with fuel in the middle of their journey. The were also using the most of their enormous gear system to generate sufficient torque. This led to a short revivial of sea-crimes, where thieves would disguise their ships into refuelers to attack the cargos. In response, transport companies set a complex system of horns to allow medium-range (3 to 10 kilometers) communication and identification through chord-based codes. Musicians with perfect pitch were often hired to palliate to the cost and reliability of the rudimentary mechanical frequency-analysers. More than once actual refueling ships got sent to the bottom of the ocean by the cargos' cannons due to the approximate tuning of their organ. Because they were often hiding in the coal wearing black clothes, and as most of their criminal empire revolved around the selling of coal in alternate markets, the "<coalers>" were humorously calling their business the "actual black-market". Monos Class ships quickly became obsolete, not only because of the improvement of coal-extraction, but also because of the terrible cost of their maintenance, especially the frequent replacement of the boilers that were diving in the sea, and which would accumulate salt on their tubes.
-
The Svar cheese preservation Symposium agreement
2024-07-28
projects
In the year <<equivalent to 1900?>>, the infamous Svar cheese produced in its native region was suffering a genetic crisis. The ferments used for its production being constantly extracted from the same culture, its genetic diversity was in freefall and now threatening its viability. On October 19th, the Svar Cheese Preservation Symposium came to an agreement to reinject an external strain, despite the protectionism that fought against it for decades. On that fateful day, the Minister of Food Safety dumped the new strain from a becker into the tank, surrounded by researchers and journalists, fight to take a picture of that somewhat historical moment.
-
the Uô cult
2024-07-28
projects
Origin and myths# During ancient times, as nomads were legions. oracles were speaking of a god seeking its people. It was said, massive, heavy and also described as "one who moves very little" (translations vary among tribes). Yet, The prophecy narrated that "moving" it would be the challenge for its people, and that those who would have participated to its rise through history would be rewarded accordingly. As noamds were roaming, they found a geological anomaly: a huge rock which was roughly rhomboidal, sitting in the middle of a valley. Scientifically speaking, it is an iron-type meteorite which crashed on earth approximately two billions years ago, creating the said valley. It got submerged by the lands as erosion from near by mountains drained sediments, and reappeared when the bassin actually "re-opened" to the oceans through that same process, leaking the sediments over the course of millions of years. It is believed that due to the intermediary stages, as rain accumulated, it would also be the "black island" known in ancient texts from other civilisations. The Nomads settled nearby, and thus started the rise of Oplmek, city of the Great. We know very little on how long the task of raising the artifact took, but it probably went through several milleniums. We also ignore the actual process(es?) that got involved, nor the exact mass, as the rock extends below the surface. Those doubts led to a trend in geology and archeology that the stone was actually already vertical when it crashed, and only got revealed as the sand got drained from the bassin. An unknown regent would have then pretended that it was the act of his people to impose his power over the surrounding nations. This theory is quite popular as it is still compatible with the "black island" event, and is heavily backed up by the fact that the only traces of history around this miracle are oral tales and ancient reports from across the continent, but not from the site itself. This is the origin of a still ongoing religion known as "Uô". Organisation# The main church lies on top of the Rock, in the High District. For centuries, disciples were asked to reach for that sacred temple by climbing the various structures around the rock, including the growing city. It led to a hierarchy based on which path one used, as some were harder than others. A well known path was the South Face of the rock, which was the easiest and was basically very rough stairs created by farmers to access millenials trees that started to fracture the rock and grow. It is known nowaday as a plain but challenging hiking path. The North side, which is so inclined that it is actually tilted down, is the origin of a legend of "Hakan' Bil"; he or she was for centuries the only person who succesfully climbed that side. "Hakan' Bil" is now the title of the highest rank in the organisation: because of the original way of reaching that rank, there may be several Hakan' Bil at one time, or none. Nowaday, the process for reaching ranks is way more classical, through evaluation of the commitment of one and votes from "Uoas", the members of the cult. The church displays a rather atypical structure: it is composed of a black main tower situated in a corner of the top of the rock, from which extends a triangular roof covering the main room for the ceremonies. Under it, each disciple has his/her attributed place. The rest of the surface is occupied by the housing. Despite being a cult based upon a high place, the most prestigious quarters, inhabited by the highest ranks, are suspend houses on the East side of the Rock. The lowest suspended house used to be a prison which contained a garden, prisoners being used for the harvests. This task is now reduced to the maintenance of the now ornemental garden, which is done by the elders. A word on Oplmek# The city was for a long time mainly known as a religious hub: a fair part of the city's incomes was from an luxury alcool made out of the milleniums trees growing on the South side of the rock. Some wood could be found on the grey market as magical artifacts, but it was mainly kept for the Uoas as prt of a deal with the city for the inconvenience caused by the culture. The city now also include a lot of modern buildings, including the Iris, highest tower of the city and unavoidable element of the city skyline with its white colour. Some of those towers are build on the side of the huge rock, and the prices for the flats which have an adjacent wall with the Artifact skyrocket. Due to the sand retained, the main city is on a small hill: the rest of the valley is composed of farms, separated from the city by the historic wall. The mill which feeds the fields (and which uses bassins to retain water) is one of the oldest buildings of the city. Its conduct also now support the funicular for the tourists, and the rest of the path is made through a via ferrata. The fall# People living in the High District and in the vertical suburbs started to complain of the growing number of people esacalading their houses and destroying the precious trees. Because of that, it was decided 50 years ago by the city council to build an elevator on the West side. The goal was to ease the access to the religion and thus the influence of the city. Today's Historians are still fascinated of how a simple and concrete structure induced the fall of such a major religion. ##Today status As of today, three persons in the city's council defined themselves as Uoas, and its influence even affects general public culture through various references to a "black-ish monolith" of unknown power. Yet, it is mostly considered as folklore rather than a religion. The meteorite itself is considered as the potential source of life by some scientists: analysis shown very high rates of organic materials deep inside the monolith, even if we are unable to explain how a meteorite could contain such traces. This status is mostly what maintains Uô in the collective memory, even in a mostly atheist civilisation. 
-
World building
2024-07-28
projects
3700 That one never-ending project every worldbuilder has Micro-worldbuilding# From time to time I like to draw or create something, while adding a small self-contained "lore" to it. These days I mostly do it as part of "Draw Together", a drawing event by Nyo_Archives. For now, most of these are in french Draw Together (Summer) : "Méduse aérienne (rouge)"Elben. La "mère grise" habille nos ciels depuis l'éternité ou presque : alors que la conquête spatiale était à ses balbutiements et les techniques encore peu sûres, il n'aura pas fallu longtemps […] Draw Together : "Nymphe nocturne (jaune)"La place des Tisserands est devenue à sa manière un lieu incontournable de Tralgnos. Au milieu de gratte-ciels vertigineux, une statue de Haltone perce une place sinon austère. Cette nymphe […] Draw Together : "Gardien-ne fongique (vert)"Si les symbioses sont communes dans la nature, les exemples sont plus rares pour les humains. Pourtant, les tribus Ghavra savent depuis longtemps tirer parti des Protelus Galvanisées, des champignons […] Draw Together : "Vampire Aquatique"Sous l'oeil sage d'Elben au zénith, les charbonniers sillonnent inlassablement la Mer d'Equi. Si ces voiliers défient déjà les dimensions habituelles des vaisseaux naviguant usuellement […] Draw Together : "Pirate Fantomatique"La flamme de l'humanité brûlait plus fort que jamais. Mais les services d'utilité publique peinaient à s'adapter. La mort (qui est un homme, peu de gens le savent), aussi connu sous le doux nom […] Draw Together : "Arbre Cosmique"INTERNATIONAL STORIES | alors que le décollage de la mission AAS-14 est imminent, la traditionnel commémoration de pré-vol s'est déroulée dans une ambiance solennelle. 32 ans après la tragédie du […]
-
Draw Together : (carte blanche)
2024-07-21
artdigitaldrawingsDrawTogether
-
Beach of an excavator
2024-07-21
artdrawingstraditional3700
-
Draw Together : "Vagabond Métallique"
2024-07-21
artdigitaldrawingsDrawTogether
-
Draw Together : "Vampire Aquatique"
2024-07-21
artdigitaldrawingsDrawTogetherlore
lore (fr)# lore : aaaAAHhhhaAAHH J4EN AI CHIE PTIN (Sous l'oeil sage d'Elben au zénith, les charbonniers sillonnent inlassablement la Mer d'Equi. Si ces voiliers défient déjà les dimensions habituelles des vaisseaux naviguant usuellement ces mers, les compagnies ne tardèrent pas à exploiter la faune marine, en particulier ses représentants les plus imposants. Ainsi, les équipages s'étoffèrent de chirurgiens, alchimistes et ingénieurs qui lobotomisent des bêtes tentaculaires pour trainer des chargements toujours plus importants, jusqu'à leur épuisement)
-
Yet another election cycle: time to panic
2024-06-11
txt
Social medias got even more nerve-racking. Influencers thinking of themselves as political leaders People seeing politics getting starified, so they start idolizing left leaders. The amount energy deployed to create ✨content✨ such as "You're probably not aware, but voting for the far-right isn't great" while simultaneously saying "you don't vote? I'll break your knees and key your car" "Abstention rate amongst the youth" what about VOTING RATE for the far-right amongst the "youth"?? "We'll fight later" You weren't fighting before?? You were spending all of your energy on campaigning, and before that as well, and before that… "Did you know, one vote in that district could have changed everything". Elections are mostly the result of demographics and sociology not a change of heart two days prior to the elections. The true accelerationists are the ones convinced that the far-right is something abstract that you must keep at bay through rituals like voting. It's not. You're scared? Make sense. You gonna vote even if you hate it, and you want to convince other to do the same? I get that. But you need to go beyond the whole "if you don't vote you can't complain".
-
Draw Together : "Insecte Aristocrate"
2024-05-19
artdigitaldrawingsDrawTogether
-
Draw Together : "Reptile Floral"
2024-04-21
artdigitaldrawingsDrawTogether
--- The world-building notes I took to draw this:
-
ganymede
2024-04-20
artdrawingstraditional
-
Sysadmin
2024-04-15
projects
Growing up in the french countryside, I was fascinated by the lightning far away on the mountains east and west. From time to time, thunderstorms would finally hit our valley, with a raging intensity. The ambience of a hot, heavy summer evening, followed by a spectacular light show and finally fresh night grew on me. Projects# Hopefully, something will appear here if it succeeds. TBA
-
Draw Together : "Pirate Fantomatique"
2024-03-31
artdigitaldrawingsDrawTogetherlore
lore (fr)# La flamme de l'humanité brûlait plus fort que jamais. Mais les services d'utilité publique peinaient à s'adapter. La mort (qui est un homme, peu de gens le savent), aussi connu sous le doux nom de Charon, s'est lui bien accommodé des avancées technologiques. Ses tankers transportant des millions d'âmes naviguaient sans relâche sur le Styx. Mais certaines personnes, motivés par le gain et le sadisme, tentaient d'aborder ces géants tranquilles pour récupérer l'âme de leur leader, de leur ennemis, de leur amour... Cette fois encore, la nuit éternelle sera agitée.
-
Cortège antifa
2024-03-09
arthomephotography
-
Draw Together : "Métamorphose Divine"
2024-02-11
artdigitaldrawingsDrawTogether
-
Combien faut il de photographes pour changer un système ?
2024-02-03
txt
Le soleil est pâle, l'air est frais. Il sent bon la poudre noir, la saucisse et la contestation. On se balade entre les cortèges et on croise les personnages habituels. Des “secouristes volontaires” qui affichent leur ‘@’ insta floqué sur leur combinaison militaire. Des pancartes subversives et originales à base de “Macron défonce moi le cul, pas la retraite”. Un gros nuage jaune surgit de la foule. Soudain, leur cri résonne. clic clic clic clic clic Si ça trouve, la différence entre les chiffres de mobilisation gouvernementaux et syndicaux, ça dépend juste de si on compte les photographes ou pas. Le panopticon# Un mouvement social, ça a besoin d’exister dans l’espace public : Rien de nouveau. D’ailleurs c'est le principe d’une manif : regardez, on est pleins dans la rue, faites pas genre vous savez pas. À l’ère des réseaux sociaux plus que jamais, le combat politique, il se fait aussi par la communication. Ça, le gouvernement l’a bien compris : en témoigne l'arsenal médiatique entourant la dernière réforme du moment. Du coup c'est normal, et même nécessaire, que nous produisions aussi un message. Les journaux politiques imprimés en basse qualité à la COREP les photos un peu folklo d’une vitrine cassée qui tourne sur les conversations le site d’info libertaire au graphisme tellement année 2000 qu’il sera bientôt à nouveau fashion le syndicat que tu adores détester qui utilise des émojis dans ses comms sur les réseaux sociaux.Mais la question se pose : pourquoi chacun de ces média existent ? Contrer la propagande gouvernementale ? Donner du baume au cœur ? Donner des clefs de compréhension ? Parce que moi, j’ai l’impression que la plupart des photo-reporters de guerre du dimanche dans nos manifs est surtout là pour faire monter son nombre de follower. La différence entre le bon et le mauvais photographe# Ligne tactique de photographes pour contenir un fumigène menaçant les manifestantxs Déjà, parlons du nombre : en vrai, je comprends. Capturer cet instant fugace d’un peuple qui se lève, de la foule déterminée, ça donne envie. Et puis, il parait qu’il y a pleins de gens qui subissent la répression dans l’ombre. Alors si tu peux mettre à profit ta connaissance du triangle d'exposition pour documenter les sales coups des flics, ça pourrait bien être ta contribution à la lutte. Mais est-ce qu’on a besoin d’autant de "documentation" ? Au moindre fumi craqué, au moindre mascu qui fait genre de tenir les flics à distance par la seule force de son majeur, des dizaines de photographes débarquent pour capturer cet instant si unique. Sans compter que lorsqu’on a participé à l’organisation de la manif et qu’on cherche les-dits photographes sur les réseaux pour les contacter, ils sont aux abonnés absents. Où vont toutes ces photos ? Si tant d’entre elles s’échouent sur les rivages des piges foirées et des pages à trois abonnéxs, pourquoi y a-t-il autant de flashs en manif ? Ensuite, le médium : c’est important de réfléchir aux outils qu’on utilise. Déjà, aucune situation ne justifie stratégiquement un live facebook. À chaque street-reporter qui agite son smartphone sur un stabilisateur, j’imagine le cyber-RG un café trop amer à la main, dégustant des preuves compromettantes à jamais effaçables. On m'a déjà répondu que pour certaines personnes, ces lives sont leur seul moyen de participer aux manifs. Malheureusement, ce n'est pas une raison suffisante pour compromettre la vie privée et la sécurité des manifestantxs. À ça s’ajoute ceux qui filment en "hors-ligne", faisant du mieux qu’ils peuvent pour éviter d’attraper des têtes, mais qui au bout du compte ne feront aucun travail d’anonymisation, parce qu’avec l’algorithme™ en guise de rédac’ chef, le temps c’est de l’argent. Et on a le photographe qui fait des super jolies photos, qui floute même les godasses. Sauf que même si je ne boude pas l’esthétique d’une poubelle qui crame devant une ligne de flics en panique… je vois pas trop en quoi ça nous avance politiquement d’en avoir une 1531ème. un "journaliste" dans une tenue digne d'un sbire de méchant de film Enfin, les motivations : même en excluant le pigiste local qui préférerait être ailleurs, c'est pas si compliqué que ça à deviner. Plus une personne aura/est investie dans les luttes, plus elle aura tendance à faire gaffe à l’anonymat. Elle sait. Elle a déjà été de l’autre côté du téléobjectif. J'ai aucun doute, Benjamin, que ton reel insta de la (2023, février) Poubelle cramax, Villeurbanne [pixels sur écran fracturé] terminera dans les e-books d’Histoire. Mais en attendant, ma liberté et celle de mes camarades, d’exister et de lutter, vaut plus que tous tes followers. Personnellement, j’ai arrêté de compter le nombre de fois en manif où j’ai vu des street-médics se faire hurler dessus “ET LA LIBERTÉ DE LA PRESSE ALORS ????” par un jean-michel et son Nikon à trois SMICs fraichement acheté qui veut forcer leur périmètre pour fournir leur dose de sang à ses followers. Le saviez vous ? Un objectif photo, c’est fragile et cher. Abonnez-vous pour plus de faits qui n’ont définitivement aucun rapport avec le sujet. ENHANCE!# Les techniques d'anonymisation ne manquent pas : cadrage, compo, post-processing... Il est grand temps que l’on se (re)construise un rapport à l’image et à la communication. C’est pas un sujet facile : on croise nécessité de visibiliser, sécurité, mémoire des luttes et tout un tas d’autres sujets complexes. Alors on fait quoi ? On monte des systèmes d’accreds autoritaires qui décident qui qu’a le droit ou pas ? On fait des séminaires de ✨sensibilisation✨ avec des super powerpoints ? Blague à part, ayant fait un peu de photo en manif, ayant discuté avec des potes photographes, et ayant dû faire du SO sur des manifs où la photo était un sujet "sensible", la meilleure piste qu'on a trouvé avec des camarades serait de lancer un mouvement autour d'un symbole d'identification associé à une charte que journalistes et photographes pourraient arborer pour signifier "hey, t'inquiète, je fais gaffe, on est ensemble". Ça serait plus symbolique qu'autre chose mais pourrait déclencher une discussion plus large sur le sujet tout en permettant aux journalistes de montrer patte blanche sur une simple base de confiance et non de flicage. Mais si on peut essayer de faire preuve de diplomatie (et certainxs photographes y sont réceptifves), ça reste aux photojournalistes de faire le premier pas et à apprendre à demander l'autorisation de prendre une photo et respecter le refus. La relation entre militantxs et journalistes va, compte tenu des enjeux, au-delà du simple cadre légal existant sur le droit à l'image. Le cas contraire… Si les images peuvent servir la lutte, elle ne sont pas leur but ultime. Nos luttes et nos existences se limitent pas à être des sujets mis à dispositions des journalistes et autres instagrameurs. Ressource(s)# [Oregon, États-Unis] Toutes les caméras sont des flics | Indymedia Nantes
-
Draw Together : "Magicien Crystallisé"
2024-01-20
artdigitaldrawingsDrawTogether
-
nse-243.jpg
2023-12-31
artphotography
-
Definitely not stalling.
2023-12-23
now
-
SuperDévoluy
2023-12-10
art
-
Draw Together : "Démon Aztec"
2023-11-10
artdigitaldrawingsDrawTogether
-
Godot
2023-10-24
wikigamedev
Content Multimesh buffer's layout MultiMeshInstance (2D) I usually work in csharp but most of the code here can be easily translated into godot's language "GDScript" if necessary using the API's guide. Multimesh buffer's layout# The Multimesh property of a MultiMeshInstance3D node exposes its raw data through a Buffer property allowing for instance to apply updated data from a compute shader directly. Its layout is however fairly opaque and hidden in other wiki pages and in the source code: so here is a snippet to avoid (my) hours of headbanging research. Each instance has a Transform3D property describing its position, rotate and scale, itself composed of an Vector3 Origin describing its position, and a 3x Vector3 Basis describing its rotation and scale. Each Vector3 is being made of three floats values, forming a set of 12 float values in a (in my opinion) non-intuitive order. If you enable UseColors=true, four additional values (R, G, B and A, as a Color property) are added at the end of this set. If you enable UseCustomData=true, four additional values (for well, custom usages) are added at the end of this set. Depending on the configuration, your data set will be of size 12, 16 or 20, and you need to offset you id's by that factor. 1 int offset 16; //3D base + color enabled, no custom data 2 int BufferId = offset * id; 3 4 data[BufferId + 0] = value.Basis.X.X; 5 data[BufferId + 4] = value.Basis.X.Y; 6 data[BufferId + 8] = value.Basis.X.Z; 7 8 data[BufferId + 1] = value.Basis.Y.X; 9 data[BufferId + 5] = value.Basis.Y.Y; 10 data[BufferId + 9] = value.Basis.Y.Z; 11 12 data[BufferId + 2] = value.Basis.Z.X; 13 data[BufferId + 6] = value.Basis.Z.Y; 14 data[BufferId +10] = value.Basis.Z.Z; 15 16 data[BufferId + 3] = value.Origin.X; 17 data[BufferId + 7] = value.Origin.Y; 18 data[BufferId +11] = value.Origin.Z; 19 20 data[BufferId +12] = value.Color.R; 21 data[BufferId +13] = value.Color.G; 22 data[BufferId +13] = value.Color.B; 23 data[BufferId +13] = value.Color.A; MultiMeshInstance (2D)# In the case of 2D the same applies, but with Origin being only a Vector2 and Basis being only 2x Vector2, forming a 2+2x2[+ 4][+ 4] data set of size going from 6 to 14.
-
Draw Together : "Arbre Cosmique"
2023-10-15
artdigitaldrawingsDrawTogetherlore
lore (fr)# INTERNATIONAL STORIES | alors que le décollage de la mission AAS-14 est imminent, la traditionnel commémoration de pré-vol s'est déroulée dans une ambiance solennelle. 32 ans après la tragédie du Prastokk où deux spationautes ont péri, cette cérémonie rappelle à tous que l'aventure spatiale est une entreprise dangereuse. Les échantillons de la mission, sauvés par un arbre non loin du pas de tir et d'atterrissage, furent critiques dans l'avancée de la recherche. Comme la tradition le veut, une branche de celui-ci accompagnera les spationautes dans leur épopée pour leur porter chance. La cheffe de base rappela lors de la cérémonie le Motto de l'agence « Per aspera Ad astra», ou « Par des voies ardues jusqu'aux étoiles » en latin. Didier Galegard, correspondant local pour Jaybay News
-
Draw Together : "Clef Maudite"
2023-09-24
artdigitaldrawingsDrawTogether
-
Elevator trainstation
2023-09-13
artdigitaldrawings3700
-
Storm chasing and drawing.
2023-08-29
now
-
Bridge kids
2023-08-23
artdigitaldrawings
-
Datation d’un plan de Lyon : la carte c’est quand même un peu le territoire
2023-08-17
txt
Ça m’arrive régulièrement d’aider à des déménagements/débarrassage, soit pour aider, soit pour taffer. Et mon petit plaisir personnel quand on a le droit de récupérer des objets, c’est les vieux trucs qui appellent à deviner l’époque d’où ils viennent : bref, des puzzles historiques, comme ça, dans la nature. Même si soyons honnête, c’est principalement un amour des puzzles-enquêtes plus que de l’histoire. Mais là, c’est des histoires de de métros, des bus, et d’urbanisme. (Apparemment, Lyon hébergeait aupravant une reproduction de la Rainbow Road de Mario Kart vers Hôtel de Ville) La pièce, comme on l’appellera pompeusement, c’est un vieux plan papier du réseau de transport en commun de la région lyonnaise géré par les Transports en Commun Lyonnais (TCL). Elle est en assez bon état, mais entre les anciens noms historiques d’institutions, les logos giscardpunk, elle semble potentiellement être plus vieille que moi. Si ça vous tente aussi de jouer, je vous invite à ne pas nécessairement lire tout de suite, et de vous essayer à l’exercice : j’ai mis à disposition un scan : [plan_tcl_recto.jpg] [plan_tcl_verso.jpg] Le jeu des sept différences# Je commence donc à chercher ce qu’on appellera hollywoodieusement des marqueurs temporels, c’est à dire des éléments qui ne sont pas en soit datés mais qui peuvent donner des indices. On pourrait y aller à la hache en se mangeant toute une chronologie de déploiement du réseau TCL, mais non seulement c’est pas drôle, mais en plus les informations sur le sujet sont clairsemées, pour ne pas dire lacunaires. On va donc pour l’instant se concentrer sur tout, sauf la carte. Au risque d’accabler certaines personnes sur leur âge, le premier élément qui saute au yeux c’est un “3615 TCL” dans les informations. Plus qu’un marqueur temporel, le minitel est un rouleau de peinture XXL temporel. Le service a techniquement été arrêté en 2012 et son abandon assez progressif : on en tirera donc difficilement autre chose que “ça remonte, pté”. Les numéros de téléphones sont tous écrits sans un “0” au début. j’ai d’abord cru à une ancienne norme d’écriture. Mais après une petite recherche, les interwebs me font remarquer qu’il manque carrément l’indicatif régional. Une autre petite recherche plus loin, et on a donc le passage de huit à 10 chiffres pour les numéros de téléphone français le 18 octobre 1996. La carte date donc d’avant. En bonus, ce mini reportage de l’INA (youtube) de deux minutes sur le passage, avec d’authentiques badauds confus lors d’un micro-trottoir où on leur demande l’indicatif de Paris. Le logo de l’eurexpo, un centre de conventions et d'exposition, affiche un design différent de l’actuel. S’agissant d’une société privée avec un positionnement très restreint, difficile de retrouver un historique du logo. Le seul élément probant est un timbre de la foire de Lyon de 1989, en vente sur ebay qui affiche le même logo : Le logo du Conseil Général du Rhône est également “vieillot”. Après quelques recherches, c’est le conseil lui-même qui est vieillot et même désuet : il semblerait que le “Conseil Général” date de 1800 et succédait au directoire de la création du département du Rhône, et fût remplacé par le Conseil Départemental encore en place aujourd’hui par la loi du 17 mai 2013. Le logo SNCF (visible sur la gare Perrache et le long des lignes de trains) est lui non seulement pas celui-ci d’aujourd’hui mais aussi assez connu et reconnu comme “historique” par le grand public. À ce titre on trouve d’ailleurs de nombreuses chronologies détaillées du logotype de cette vénérable institution. Même si le nôtre est peu lisible, il correspond sans trop de doute possible à celui en vigueur entre le 4 décembre 1985 (designé par Roger Tallon) et le 14 décembre 1992 Un vieux logo d’un “réseau du Rhône”. Le nom très générique rend la recherche un peu plus compliquée, mais je spécule que ça a depuis été absorbé par une régie et qu’on aura pas de chronologie du logo Pour ce qui est de la carte, pas besoin de rentrer dans le tricotage direct : le réseau de tramways entier est absent de la carte. Le (nouveau) réseau de tramways est exceptionnellement récent comparé au métro, puisqu’ouvert en 2001. Je connais pas les transports en commun lyonnais par-cœur, surtout que j’y habite depuis même pas huit ans, mais je l’ai personnellement appris en essayant de dater de la même manière un ticket TCL trouvé y a quelques années dans un contexte similaire : Un coup d’épée dans l'eau qui a failli payer : je me suis penché sur les ponts, qui sont à Lyon relativement modernes. Mais la construction d’un pont n’étant pas anecdotique, c’était la garantie de trouver des archives. Le dernier pont du 20e siècle à Lyon est le Pont Winston-Churchill inauguré en 1983. Il apparaît sur la carte, ce qui à le mérite de préciser la période potentielle, mais pas de beaucoup. Creusons un peu plus# “Creuser”, “métro”… hmm ? Bon, prenons le problème à bras le corps en regardant vraiment le réseau qui s’offre à nous : commençons par le plus simple en espérant que ça suffira, le métro, et plus précisément ses extensions progressives. Lyon disposant de quatre (4) lignes de métros : mes piètres huit ans d’arpentages de la cité des zobs me suffisent à deviner sur quoi me concentrer. Comparé à aujourd’hui on a donc : La ligne A qui s’arrête à Laurent-Bonnevay. La ligne A a surprenamment été étendue jusqu’à Vaulx-en-Velin - La Soie relativement récemment, le 2 octobre 2007. La ligne B, qui s’arrête à Jean-Macé. Bien que plus récente, l’extension jusqu’à Gerland date de 2000 La ligne D, qui s’arrête à Gorge-de-Loup ; Et là on tient une vraie info : non seulement l’extension jusqu’à Gare de Vaise date du 28 avril 1997, mais en fouillant l’historique un autre détail apparaît : de l’autre côté, la ligne a été étendue jusqu’à Vénissieux, présent sur la carte, le 11 décembre 1992. On a donc une fourchette plus précise. Bon, soufflons un peu, admirez cette magnifique flèche d’orientation indiquant le nord de la carte : Le château de carte# Si vous avez correctement suivi vous savez peut-être la réponse. Personnellement j’étais encore dans le guidon à collecter des données, qui commençaient à doucement toutes converger… En effet, parmi toutes les informations, deux suffisent finalement, puisqu’à elles seules elles tracent le X sur la carte, comme ça arrive rarement : Le logo SNCF date donc de la période 1985-1992 ; La station de métro de Vénissieux, inaugurée en décembre 1992, est présente sur la carte. En cherchant un peu l’actualité lyonnaise en 1992, on a au détour d’une rétrospective faite par le journal Le Progrès l’inauguration de la gare routière de Gorge de Loup le 16 décembre 1992 : En images. L'actu de la semaine dans le rétro... en 1992 (Le Progrès, 18 déc. 2015) → Photo 6 et 7, “« La toute nouvelle gare routière de Gorge-de-Loup acceuille (sic) ses premiers autocars... / 16 décembre - Archives Le Progrès » Les informations sur le sujet semblent catégoriques sur le fait qu’il n’y avait aucune infrastructure de ce type même mineur auparavant, on a donc un marqueur supplémentaire : Il semblerait donc que cette carte soit non seulement de 1992, mais plus encore du dernier trimestre de cette année. Du coup, un dernier détail fait alors sens (même si en vrai, je m’étais posé la question avant d’oublier). La carte est identifiée auprès de l’imprimeur TOPO NORD sous le serial V 1142 9210. On peut facilement imaginer que la date de conception était donc en octobre 1992, pour une publication aux alentours de décembre.
-
VR pilot
2023-08-14
artdigitaldrawings3700
-
Krita
2023-08-12
wikiLinux
Content Brushes multiple columns for tools Hide title in canvas mode Brushes# Krita brushes 2023-01 bundle multiple columns for tools# (eg: for tablet mode left-handed) first put dock next to other one (even if it doesn’t take whole height), then take the dock below and put it fully under. see: https://www.youtube.com/watch?t=161&v=uYdEkOyFUn8&feature=youtu.be Hide title in canvas mode# in settings, switch multiple documents from “tabs” to “subwindow” see: https://krita-artists.org/t/hide-top-bar/13076/2
-
Thunderbolt 3 & eGPU
2023-07-10
wiki
Content thunderbolt eGPU Blender renderer External screen setup This is an old and chaotic list of tips: it's probably no longer relevant thunderbolt# https://forum.manjaro.org/t/cant-get-extra-monitor-interface-to-show-up/28767/5 blender 3.5 HSA_OVERRIDE_GFX_VERSION=10.3.0 DRI_PRIME=1 ./blender eGPU# https://wiki.archlinux.org/title/PRIME glxinfo | grep "OpenGL renderer" vs DRI_PRIME=1 glxinfo | grep "OpenGL renderer" Blender renderer# https://developer.blender.org/T102018 (5.4 is equivalent of 22.xx) https://aur.archlinux.org/packages/ncurses5-compat-libs with gpg --keyserver keyserver.ubuntu.com <http://keyserver.ubuntu.com/) --recv-keys 19882D92DDA4C400C22C0D56CC2AF4472167BE03 opencl-amd https://bbs.archlinux.org/viewtopic.php?id=268346 LoadLib(libhsa-amd-aqlprofile64.so) failed: libhsa-amd-aqlprofile64.so: cannot open shared object file: No such file or directory → sudo pacman -S arch4edu/hsa-amd-aqlprofile-bin How to Install RPM Packages on Arch Linux — marcelo cubillos 90 degree 8 pin connector - Google Search Support for RX6600XT (gfx1032,navi23)? · Issue #1698 · RadeonOpenCompute/ROCm · GitHub External screen setup# with all-ways-egpu, enable only option 1, reboot, then sudo all-ways-egpu set-compositor-primary egpu`
-
Sous le pont
2023-05-08
arthomephotography
-
Photography & 3D modeling
2023-02-19
now
-
DSC5225.jpg
2022-12-13
artphotographysnow
-
DSC5229.jpg
2022-12-13
artphotographysnow
-
DSC5232.jpg
2022-12-13
artphotographysnow
-
DSC5250.jpg
2022-12-13
artphotographysnow
-
DSC5251.jpg
2022-12-13
artphotographysnow
-
DSC5263.jpg
2022-12-13
artphotographysnow
-
DSC5264.jpg
2022-12-13
artphotographysnow
-
DSC5272.jpg
2022-12-13
artphotographysnow
-
DSC5276.jpg
2022-12-13
artphotographysnow
-
DSC5312.jpg
2022-12-13
artphotographysnow
-
Away from this website.
2022-11-07
now
-
Unsuccessful thunderstorm chasing
2022-10-17
now
-
Mobile home train
2022-09-21
artdigitaldrawings3700
-
2022.09.09_DSC5069e
2022-09-09
artphotographythunderstorms
-
Italy & Savoie 2022
2022-08-01
art
-
Thunderstorms
2022-06-24
projects
Growing up in the french countryside, I was fascinated by the lightning far away on the mountains east and west. From time to time, thunderstorms would finally hit our valley, with a raging intensity. The ambience of a hot, heavy summer evening, followed by a spectacular light show and finally fresh night grew on me. The cells and me# I started stealing the family compact camera to try to capture these elusive shapes: One night, standing on the edge of a field, surrounded by curious cows, I caught my first proper lightning strike: graciously named "IMG_1331.jpg', shitty pixels in old file, 2012 After every summer family diner, I would jump on my bike to my favorite spot, unencumbered by hills and houses As thunderstorms would sometimes get closer like curious cows… Things started to get more… … and more… Involved.Yes, it's stupid to be 1) this close to a thunderstorm 2) while near trees 3) and power lines 4) on a bike. It's all about managing risks and not being aware of them because you're an idiot.As I moved to a large city with a lot of hills, thunderstorm chasing (and biking) got harder. But I'm trying to get something here and there. Photography# more > Projects# Hopefully, something will appear here if it succeeds. TBA
-
Installing Minecraft on SteamDeck & HoloISO (SteamOS)
2022-06-14
txtIT
EDIT 2025-05-30: It's easier now, just install "Prism Launcher" from the "Discover" app. Also, retrospectively, this tutorial is confusing as hell. Installing games and software outside of Steam can be daunting on Linux if you dont' know the ecosystem. I am personally used to Debian (a flavor of Linux), but not ArchLinux (the underlying linux flavor of SteamOS). This guide is the result of my first endeavor in Arch, so non-initiated users can install Minecraft. I wrote this article based on a HoloISO/SteamOS powered computer: the exact process for the SteamDeck might be slightly different. Leaving Gamemode# When you open your device, it opens by default in "Game mode", i.e. the fancy Steam Interface. We need to access the underlying Desktop to install Minecraft. press the "steam" button or the Escape key. This brings up a menu. select "Power", and then "Go to Desktop mode". The device should show a typical user desktop. Installing Java# The minecraft launcher (and some minecraft versions) requires java. We need to install that first. To do so, open the Start menu, and type "Konsole". Click on it. If you are really not familiar with Linux, the app opening is called a "terminal": it allows to control the computer using only text, and to access advanced features. type the following text: 1 sudo pacman -S jre-openjdk And launch this command by pressing the <Enter> key. This is telling the system to install java. Once it asks for confirmation, simply press the Y key and then <Enter>. After spitting some heavy text, the terminal should show a line ending with a $ (for instance, [nemecle@ankhmorpork ~]$). It indicates that it is ready to receive another command, and that the previous one finished. Java is now installed. Installing minecraft, per se# The thing we just installed is called a package. It kind of works like apps on a smartphone, in the sens that you don't need to go on a website to download it and install it. You just go to a trusted "market", called in that case a repository. Minecraft is, however, not on the "default" repository available to you. We are going to download it from something called Arch User Repository (AUR), where Mojang, the creators of minecraft, upload their launcher. To do so, type the following command in the terminal, and once again press the <Enter> key to launch it: 1 git clone https://aur.archlinux.org/minecraft-launcher After a while, the download is finished, and the terminal shows once again a line ending with "$". We then ask our system to make a proper package (again, like an app) from those downloaded files. Do so by typing the following command (still followed by the <Enter> key): 1 makepkg And again, after a while a lot of text, the command finishes on a "$". Finally, let's install our package. Type the following, without ending with the <Enter> key this time: 1 pacman -U minecraft Press the Tab key (the ↹ on the top left of your keyboard): the system automatically completes the name of the file. Press enter to confirm. Finally, to launch minecraft, type: LC_ALL=C minecraft-launcher Next time, you'll just have to launch this commande into Konsole from the Desktop mode.
-
20220607_000024.JPG
2022-06-07
artanalogphotographyconcerts
-
IMG_5529.jpg
2022-06-05
arthomephotography
-
IMG_5549.jpg
2022-06-05
arthomephotography
-
IMG_5551.jpg
2022-06-05
arthomephotography
-
IMG_5554.jpg
2022-06-05
arthomephotography
-
IMG_5568.jpg
2022-06-05
arthomephotography
-
IMG_5573.jpg
2022-06-05
arthomephotography
-
IMG_5574.jpg
2022-06-05
arthomephotography
-
IMG_5586.jpg
2022-06-05
arthomephotography
-
IMG_5589.jpg
2022-06-05
arthomephotography
-
IMG_5599.jpg
2022-06-05
arthomephotography
-
IMG_5600.jpg
2022-06-05
arthomephotography
-
IMG_5617.jpg
2022-06-05
arthomephotography
-
IMG_5619.jpg
2022-06-05
arthomephotography
-
IMG_5622.jpg
2022-06-05
arthomephotography
-
IMG_5627.jpg
2022-06-05
arthomephotography
-
IMG_5641.jpg
2022-06-05
arthomephotography
-
IMG_5642.jpg
2022-06-05
arthomephotography
-
IMG_5645.jpg
2022-06-05
arthomephotography
-
IMG_5655.jpg
2022-06-05
arthomephotography
-
IMG_5656.jpg
2022-06-05
arthomephotography
-
IMG_5659.jpg
2022-06-05
arthomephotography
-
_DSC3511.jpg
2022-06-05
arthomephotography
-
_DSC3513.jpg
2022-06-05
arthomephotography
-
_DSC3515.jpg
2022-06-05
arthomephotography
-
_DSC3527.jpg
2022-06-05
arthomephotography
-
_DSC3528.jpg
2022-06-05
arthomephotography
-
_DSC3548.jpg
2022-06-05
arthomephotography
-
_DSC3556.jpg
2022-06-05
arthomephotography
-
_DSC3565.jpg
2022-06-05
arthomephotography
-
_DSC3574.jpg
2022-06-05
arthomephotography
-
_DSC3583.jpg
2022-06-05
arthomephotography
-
_DSC6606-1.jpg
2022-06-05
artphotography
-
_DSC6616-1.jpg
2022-06-05
artphotography
-
_DSC6624e.jpg
2022-06-05
artphotography
-
_DSC6646-1.jpg
2022-06-05
artphotography
-
_DSC6650-1.jpg
2022-06-05
artphotography
-
_DSC6662-1.jpg
2022-06-05
artphotography
-
_DSC6667e.jpg
2022-06-05
artphotography
-
Mont Thou, sunset to sunrise
2022-06-05
art
« Uh? The telescope? Yeah, we wanted to see the stars, but the sky is obscured, so we're taking bets on what that red dot on the horizon is » . - An alarm clock at 5am? Ohhh, I'm going to hate you - Trust me, it's going to be worth it. - We'll see... Let's park the back of the car facing the horizon so we don't even have to get out of bed tomorrow morning.
-
Virtual machines on Linux
2022-06-03
wiki
Content Installation of the gaming machine Moving a VM Installation of the gaming machine# TODO when reinstalling. Moving a VM# Based on `Moving KVM/QEMU VMs <https://kamprianis.eu/michalis/i.think/personal/200628-moving-kvmqemu-vms-.html>`__ on kamprianis.eu Shut VM down Use virsh list --all, sudo virsh list --all and sudo virsh pool-list --all respectively to get infos sudo mv <old_path>/mv.qcow2 <new_path>/mv.qcow2 sudo service libvirtd restart sudo virsh vol-list to check if machine is recognized sudo virsh edit debian10, search for old path and replace it. boot VM to check if all is well.
-
_DSC4176.jpg
2022-05-20
artphotography
-
_DSC4238.jpg
2022-05-20
artphotography
-
_DSC4257.jpg
2022-05-20
artphotography
-
_DSC4269.jpg
2022-05-20
artphotography
-
_DSC4465.jpg
2022-05-20
artphotography
-
_DSC4502e.jpg
2022-05-20
artphotography
-
_DSC4633.jpg
2022-05-20
artphotography
-
_DSC4665.jpg
2022-05-20
artphotography
-
_DSC4786e.jpg
2022-05-20
artphotography
-
Queer décolonial
2022-04-09
arthomephotography
-
Bah non, je voterai pas mélenchon.
2022-04-06
txt
D'habitude, à chaque élection, je me pose pas la question. En tant qu'anarchiste, je me refuse à voter. Cette fois-ci, je me suis sincèrement posé-e la question. Non pas que je me sois demandé-e pour qui voter, mais j'ai plutôt eu un accès de panique le dernier jour des inscriptions sur liste électorale : le contexte semble si incertain, dans un sens comme dans l'autre, qu'il serait dommage de se fermer des portes. Je me suis donc inscrit-e. Je me suis aussi posé-e la question du "vote stratégique" : pas tant parce que je pense que c'est efficace, mais disons que pour le peu de temps que ça prend, ça pourrait se défendre. Mes cercles sociaux m'ont beaucoup influencé : beaucoup de mes camarades autrefois abstentionnistes convaincu-es, anti-FI jusqu'au bout des ongles, iront voter méluche. Forcément, je me suis questionné-e. Mais non, finalement non, je ne voterai pas, et encore moins mélenchon. Enfin, si par un tour de magie il passe au second tour, disons pourquoi pas. Pour 2017, je m'étais fendu-e d'un thread twitter et plus tard d'un article sur mes ressentiment contre mélenchon. Il s'agissait principalement d'une liste un peu bancale des positions controversées de celui-ci, notamment sur le plan économique (comme la question de la relance keynesienne) et géopolitique. C'était logique : tout le monde parlait de mélenchon comme une grande figure de gauche qui avait ses chances, mais moi (et d'autres) ne voyaient pas les choses comme ça. Mais cette fois-ci c'est différent : nombre de forces militant-es et camarades s'accordent à dire que mélenchon c'est vraiment pas dingue, limite craignos. Simplement, stratégiquement, le contexte ne serait pas le même. Et en vrai, je comprends. Je ne suis pas d'accord, mais je comprends. De la même manière, bien que je trouve l'idée d'un "barrage républicain" absurde voire dangereuse sur le long-terme, je ne fustige pas les camarades qui ont par dépit voté macron au second tour en 2017. Je peux comprendre l'élan de panique et de désespoir, je ne juge pas. Mais je ne suis pas convaincu-e. Première chose : pourquoi tout ce cirque à essayer de "convaincre" des gens ? Les élections sont déjà faites. Non, je ne parle pas là de la question de l'influence des média aux mains du grand Capital, ou même d'un complot vis-à-vis du processus électoral. Mais la plupart des gens ont déjà fait leur choix : ce qui influence le plus les gens, c'est le mandat en cours : la plupart des candidats ont des idéologies et promesses tellement diamétralement opposées qu'il y a très peu de marge de manœuvre pour les gens de changer de candidat au dernier moment. Qui plus est, ce mandat de Macron a sans doute été l'un des plus polarisants. Comprenez bien : ça ne veut pas dire qu'il y a un quelconque moyen de prédire à l'avance ce qu'il va se passer : les facteurs à mesurer sont bien trop nombreux. Mais même si on ne connait pas encore le résultat, les pièces sont déjà en place dans la tête des gens. Reste une poignée "d'indécis-es", que tou-tes tentent de draguer, si tant est que leur nombre soit suffisant pour faire pencher la balance. Et évidemment, puisque tout le monde pense que s'abstenir ou voter blanc revient à un non-choix, tout le monde saute à la gorge des absentionnistes, et des quelques bases électorales pas trop éloignées de leur candidat. D'ailleur, quelque chose me titille : les élections présidentielles sont un jeu à somme nulle : pour que quelqu'un gagne des votes, il faut que quelqu'un perde. Alors comment est-ce possible que quasi tout les candidat-es soient satisfait-es des sondages ? La réponse est assez évidente : chacun-e choisi l'institut de sondage qu'il veut, mesurant les indicateur qu'iel veut, et les sondages sont très chaotiques [1], pour ne pas dire qu'ils sont incapables de mesurer quoi que ce soit. D'ailleurs, tel un météorologiste incapable de prédire le temps de demain qui se mettrait soudainement à tenter de deviner les précipitations du mois prochain en pensant mieux faire, la grande lubie de cette année semble être les sondages « Si X se retrouve face à Y au second tour ». Compte tenu de la volatilité des sondages du premier tour, je ne baserais pas sur leur fiabilité. C'est problématique pour deux raisons : premièrement, toute une partie de l'argumentaire du "vote méluche" repose sur ses chances de gagner : si les indicateurs que l'on utilise pour justifier cela ne sont pas fiables, peut-on réellement croire à ses chances de gagner ? Secondo, puisque les sondages sont peu fiables, il y a fort à parier que dans l'hypothèse (très probable) où mélenchon ne passe pas au second tour, tous les mélenchonnistes verront leur monde s'écrouler dans l'incompréhension. Il faudra chercher des responsables, et comme d'hab', ça sera les abstentionnistes et les micro-partis de gauche. En 2018 déjà, ils leur a manqué "que" 600 000 voix. Il semble utile de rappeler que la première chose qui fait monter l'extrême droite, ce n'est pas l'abstention, c'est le vote d'extrême-droite. [1]Contexte a fait un excellent travail d'analyse de la fiabilité des sondages dans le temps Mefiez-vous d'ailleurs de cette impression que tout le monde ou presque s'apprête à voter mélenchon, telle une vague prête à déferler : il y a fort à parier qu'il s'agit d'un biais dû à vos (et mes) cercles sociaux. Aussi bruyants organisés que sont les insoumis-es (convaincu-es ou par dépit) sur les réseaux sociaux et sans non-plus y comparer à la campagne d'astrosurfing ménée par zemmour, cela n'est pas nécessairement représentatif d'une tendance générale. Ça a été évidemment soulevé par beaucoup de militant-es de gauches agacé-es par les mélenchonnistes, mais il faut semblerait-il le redire : ce n'est pas en m'insultant de « social-traitre » ou en sous-entendant que suis trop con pour comprendre le programme de la France Insoumises ou votre stratégie que vous allez me convaincre. Honnêtement, ce n'est pas bien différent de la vieille rengaine comme quoi « les classes populaires votent mal ». Tranquille le melon ? Notez que c'est autant un reproche qu'un conseil, vous en faites ce que vous voulez. Cela va généralement avec l'idée que les gens "de gôche" qui ne votent pas mélenchon sont des "privilégié-es" qui ne seront pas affecté-es par un second mandat de Macron ou un mandat d'extrême droite. Quitte à faire de la sociologie du doigt-mouillé, méluche a fait son discours Lyonnais à la Croix-Rousse, quartier bobo par excellence, et pour y être allé-e par curiosité, le public était pas vraiment issu des classes populaires et des groupes potentiellement exposés aux caprices du libéralisme et du proto-fascisme, Loin de là. Guerre d'anecdotes à part, vous inquiétez pas, le mandat macron/le pen/zemmour, je le crains. Je vis en squat, avec des camarades pour certain-es encore plus précaires que moi et des camarades sans-pap'. Notre nébuleuse militante de personnes LGBTI/queer et racisées a directement subie de nombreuses attaques de la part des groupements fascistes ces deux dernières années. Les "influenceurs" de gôche ne ce se sont d'ailleurs pas génés pour capitaliser sur nos malheurs pour augmenter leurs followers, sans trop nous demander nos avis ni partager nos événements et manifestations pour demander du soutien. Donc oui, vous inquiétez pas, que vous ayez réellement à craindre personnellement ou pas, j'ai beaucoup à craindre aussi. Je ne pense simplement pas que mon salut soit dans les urnes. Soit dit en passant si vous êtes de Lyon, hésitez pas à venir à la manif contre l'extrême droite ce 9 avril à Guichard Autre problème : le mandat présidentiel n'est pas "impératif". Dans les syndicats, autres grosses structures militantes et même parfois certains collectifs autonomes, les porte-paroles et représentant-es d'un groupe sont soumis-es à l'obligation de présenter et défendre les éléments tels que décidés par le groupe, et non interpréter sur une base de confiance aveugle de ceux-ci, sous peine de révocation dudit mandat. On parle donc de mandat impératif et révocable. Et de fait, ce n'est pas le cas du mandat présidentiel. Pourquoi utiliser ce terme technique militant alors que tout le monde a déjà conscience que les présidents ont rarement exécutés leurs promesses ? Parce que déjà aujourd'hui, il existe une fracture au sein même de la France Insoumise, entre la base et son grand leader éclairé. Mélenchon se gausse du programme de la FI quand bon lui semble et notamment quand ça peut lui permettre de bien se faire voir à gauche : mais sinon, la FI a très peu de contrôle sur son chef de file. De fait, comment puis-je croire que : Méluche fera bien ce qu'il promet, contrairement à ses prédécesseurs ; que les militants de la France Insoumise (convaincu-es ou par dépit) qui nous assomment de « il faut choisir contre qui on va lutter dans les cinq ans à venir » seront capables de construire le rapport de force nécessaire pour le faire plier ? Comme souligné par @Gogdelanuit sur twitter, malgré une force humaine bien plus conséquente que l'ensemble de forces révolutionnaires, à part pour montrer leurs drapeaux dans des manifs suffisamment consensuelles à leur goût, on ne les voit pas souvent "dans les luttes". Anecdote sur mélenchon d'ailleurs : un ami très proche de mon cœur s'était retrouvé en charge de son Service d'Ordre il y a quelques années, avant sa transition. Après avoir cherché le responsable du SO parmi les mecs, mélenchon ayant compris que c'était lui qui s'en occupait, s'est approché de lui et lui a tapoté la joue en lui disant « C'est bieennn pour une fille de gérer le service d'ordre ». Plus tard, il lui passa la main dans les cheveux (roux) en lui disant « Je vois que vous assortissez vos cheveux à votre couleur politique ». Il lui aura fallu tout son énergie pour se retenir d'ordonner au SO d'attaquer la personne qu'iels étaient censé-es défendre. Un personnage charmant donc. Mais bon. Allez, soyons fous. Imaginons que non seulement méluche passe au 1er tour, qu'il est ensuite élu, mais qu'en plus il est de bonne foi. Vous connaissez une des caractéristique principales de la démocratie représentative libérale ? Son inertie. Elle est construite explicitement pour limiter les changements trop brusques, perçus comme des risques de déstabilisation. D'ailleurs, il y a fort à parier que si Mélenchon est élu, il y aura un effet d'action-réaction qui fera que les législatives pencheront plus à droite en réponse, menant à une cohabitation. La probabilité qu'il puisse appliquer son programme radical de 6 e République et de réforme constitutionnelle écologique. L'Histoire le montre notamment au travers des mandats de Mitterand et de Hollande, un président peut bien se prétendre à gauche autant qu'il veut, le mandat qui suit reste un gouvernement de droite avec des réformes de gôches sporadiques, perpétuant d'une manière ou d'une autre le mandat précédent. Pour faire un vague comparatif à échelle locale : l'élection d'une mairie EELV à Lyon a certes menées à l'installation de nouvelles pistes cyclables et l'instauration (toute récente) d'une limite de vitesse à 30km/h en ville (entre autres choses), mais en dépit de cela la préfecture du Rhône continue d'expulser les squats, de chasser les réfugiés et de laisser les fascistes faire leur business. À part quelques vagues discours, la ville, elle, ne fait pas grand chose pour contre balancer tout cela. Nul doute que la ville se porterait encore plus mal sous un énième mandat de gérard collomb (d'ailleurs issu du parti socialiste), mais c'est pas le facteur le plus important de nos problèmes. Tout cela fait-il de l'abstention un geste révolutionnaire et disruptif ? Loin de là. N'y voyez pas de quelconques prétentions radicales dans ce choix. Mais après cinq années de mandat macron où j'ai sombré dans la précarité, frolé le burn-out militant un nombre incalculable de fois, construit des traumas. J'ai fait ma part. Bref, faites ce que vous voulez. Si vous allez voter mélenchon dimanche, par conviction ou par dépit, je comprendrais. Peut-être même que vous avez raisons et que mon égo m'aveugle. Mais perso, dimanche 10 avril, ça sera l'occasion de me reposer enfin dans une kermesse organisée en squat, en jouant au chamboule-tout avec la tête des candidats, et en buvant des coups avec les camarades qui ont partagés mes malheurs ces cinq dernières années. Le jour où tout le monde s'intéresse enfin à la politique, nous on se payera le luxe d'en avoir rien à foutre, au moins pendant une journée.
-
Basic linux packages
2022-02-03
wiki
1 sudo apt install vim sysstat mlocate tmux python3-pip htop rofi xbindkeys keepassxc rsync fd-find hwinfo gparted curl
-
Homebrew cloud gaming setup
2022-02-03
wiki
Content Installation of the gaming machine Turning the machine on and off remotely Turning on Turning off Controlling from a smartphone (yes!) Troubleshooting Installation of the gaming machine# If you want to game on linux, see Linux gaming setup for a smooth Linux install. Turning the machine on and off remotely# This is an optional step, as you can just leave your machine running 24/7. But if you care about electricity bill and your hardware, this is how to turn on and off your machine. Turning on# Use local server to wake up machine (require setting up Wake on LAN in gaming machine's BIOS/UEFI) You can use a SSH script and SSH key authentification to have a simple "turn on" shortcut on your remote machine running linux: nemecle@niflheim > ~ > cat wol_ultimatebob.sh #!/bin/bash set -Eeuo pipefail ssh nemecle@server.local -p 34423 wakeonlan <mac_address> Turning off# From the Smartphone Steam link, simply use the dedicated button From a computer, add a non-steam game on the gaming computer, select any program, change the shortcut properties to "C:\Windows\System32\shutdown.exe" -s -t 00, or /sbin/poweroff if it runs on linux, and call that "game" remote shutdown. When you want to turn off the computer remotely, simply "stream" the game. More info Controlling from a smartphone (yes!)# It's actually possible to control the computer from a smartphone. Even over LTE, it is still playable, as long as you are confortable with using a controller rather than a keyboard-mouse setup. Simply download the Steam Link (more info and other devices here), Go to settings ⚙️, Computer, hit Other Computer. Write down the PIN. On the computer, open Steam, go to Settings, Remote Play, and PAIR STEAM LINK, and enter the PIN. Get yourself a smartphone controller. Touch control is a sham. Tadaaaaa! Borderlands 3, running on debian. What an era. Troubleshooting# If Steam shows "install" on remote machine despite game being installed on gaming machine, select remote machine with down arrow next to it and click "install" anyway: it will launch game as stream anyway On a windows computer, Steam sometimes start as delayed, or doesn't start at all, when the computer is remotely shut down. It seems like the shutdown command doesn't actually behaves like the shutdown button.
-
Linux gaming setup
2022-02-03
wiki
Content Installation of the gaming machine Remote gaming Installation of the gaming machine# For some reasons, typical "user-friendly" distributions are a shit circus. People usually system wide bugs with drivers that I don't with my own setup, so as I reinstalled my computer I took notes of what I did. It seems that beside the lack of necessary proprietary drivers for some features, Debian is simpler to use, even for gaming. Debian might seem like an odd choice for two reasons: for starter, it lags behind software updates (except security updates) to only use well tested software. This can be "solved" by using the Sid unstable version, which is actually still quite stable and can be used for daily driving. Also, debian doesn't integrate proprietary software by default, so the corresponding repositories must be activated for Steam and Nvidia, even if it goes against debian philosophy. I believe that any "base" linux distribution might also offer the same benefits without these limitations, but I'll let someone else test that hypothese. Long story short, so called "end user friendly" distributions seem to actually be worse, and plenty of "base" distributions offer similar user friendly ecosystems [1]. [1]Even though they also suffer from the usual "xxxx Is the Year of Linux on the Desktop!!!" syndrome. 1: . Install Debian with Gnome or MATE. If you're not used to installing Linux, get in touch with free Open-Source software organisation near you or go to an Install party dedicated for non-power users. 2: Enable non-free AND contrib repositories. Don't forget the last one or you'll debug missing packages for nothing (learn that the hard way). 3: Install Steam. It requires some commands, but nothing to scary. Just enter those lines in the terminal. 1 sudo dpkg --add-architecture i386 2 sudo apt update And install steam using the software provided by Gnome or MATE, or use this command: 1 sudo apt install steam More info here. 4: Install nvidia drivers and various utilities 1 nvidia-drivers mesa-vulkan-drivers libglx-mesa0:i386 mesa-vulkan-drivers:i386 libgl1-mesa-dri:i386 Or once again, use the command line: 1 sudo apt install nvidia-drivers mesa-vulkan-drivers libglx-mesa0:i386 mesa-vulkan-drivers:i386 libgl1-mesa-dri:i386 Open Steam, log in, and then go to Settings > Steam Play > Enable Steam Play for all other titles Now, simply use Steam as usual. Games should then actually work according to ProtonDB rating. Remote gaming# See Homebrew cloud gaming setup
-
The Cloud is cool, actually.
2022-02-02
txt
I used to hate "the cloud". Like many of my IT (FOSS) friends, I would get angry everytime someone mentioned a "cloud app" meant to replace our big clients and our local data. I used to teach computerz to the kids and the elderly, so "there is no cloud, only someone else's computer" was definitely part of my lingo. I was kind of proud of it: my data is either on this device, or on this one. I would synchronize stuff like passwords, but that's it. In my head, "cloud" kind of meant giving up control to private interests, like GAFAMs. What if they close my account? What if I get hacked? What if they start billing? No thanks. I'd rather store my data where I need it, and copy it if needed. Like my ancestors did, when things were right. Then, my approach to IT changed. Drastically. I am more and more away from the comfort of my home and my desktop. At best, I have my laptop and it's 256GB of storage, as a result of a conflict between my need to move without a fucking brick and my limited budget. As it happened, I was still working on rebuilding my personal infrastructure. It used to be limited to a Raspberry Pi for testing, and a VPS for my website. But now, I have a NAS, as well as a refurbished Intel NUC. My Nextcloud became a sync haven. More and more data was synchronized automatically. What a comfort. Except, my laptop was still limited to simple tasks. Video rendering, batch processing, 3D and of course videos, were out of the question. I was experimenting connecting remotely to my desktop while I was under COVID lockdown at a friends' house, and realized most constraints were of my own doing. I spent the lockdown playing on my desktop via Steam Play, from my laptop. Even better, I quickly discovered that there was an android app to connect to it. Not only can I play remotely, but it runs on linux (debian, more precisely) Also, I discovered than remote desktop was not a windows-only thing. (Or rather, that linux remote desktop didn't sucked as much as I thought) A few Wake on LAN scripts later (so it doesn't run 24/7), and my infrastructure started to take shape on its own: endless possibilities. These days, I regularly connect to that computer remotely for heavy tasks, much like a homebrew Gaming Cloud. My Intel NUC bears my web infrastructure, and I'm still working on a backup process. Not matter where I am, I have to access to the best of my devices. I can access any file. The fear of losing data is a thing of the past. The cloud is awesome. And a homemade cloud? The best.
-
SEO assholes taking advantage of non-profits
2022-01-21
txtOSINTmarketing
It all started when a strange twitter account named FrPlateforme (archive) followed an association I'm in (it since went private). It had a certain je-ne-sais-quoi, such as generated tweets which kind of made sense but not really. The associated website https://plateforme-associations-formation.fr/ was cut from the same cloth, albeit on multiple pages. The website was a weird mix of computer security training and ocean cleaning campaigns. The structure of the website itself made no sense and the content was either clearly "stolen" or non-sensical... Long story short, trying to understand it felt like a psychadelic experience. First steps# Once I made peace with my perception of reality, I started digging. Turns out, it's exactly what it seems: a weird patchwork of copy-pasted content. For instance, The page "Définition > DNS": Is a copy-pasta from the DNS Wikipedia page. It became increasingly clear that someone was trying to capitalize on specific terms to generate traffic and exploit it. Nothing new under the sun. However, the name of the website and the angle suggested that the target was non-profit organizations, specifically popular education fighting the digital divide. Knowing the effects of that divide amongst some populations, and the amount of work provided by volonteers and organizations around the world to reduce it, it raises eyebrows. So, I had to dig further to find out who was behind this. A first inquiry through WHOIS (domain name's registering infos) was unsuccessful, as it often happens these days. The provided e-mail seems however very basic, association1901@protonmail.ch [1]. [1]"1901's Associations" (Associations Loi 1901) are your run of the mill form of association in france. Given that it's a wordpress website, I try to go to https://plateforme-associations-formation.fr/?author=1, (Then 2, 3,...) to have more infos on the authors; two usernames stand out, as cryptic as the e-mail: "spectre1901" and "cyber1901". When I try to search these on the web, I find another website, 1901.eu (since deleted). Same MO, some copy-pasted content, non-profit lingo, computerz and save-the-ocean. Some notable differences however: they deactivated the right-click on text (ironic, and also probably to prevent investigations into plagiarism), several links to various political content (thinkerview, ATTAC, Datagueule, all fairly large french political initiatives) through various formats (webpage, videos, and even a web-archive link to a video?). The footer 'Plateforme-Associations-Formations 2021' and the WHOIS (association1901_2021@protonmail.ch) confirms that it's linked to the first website: basically a newer copy. A small quirk however: the main menu has a button "Contact Paris", which links to a page named "contact-geneve". Something starts to appear: "cityweb.fr", for instance on the "Contact Paris" page (which has "Contact Lyon" as a subpage). Amongst various infos, we got: "Edouard : Président" ; "Nicolas : Immobilier & Crypto" ; "Contact : plateforme-associations-formation.fr@protonmail.ch" ; There's text here. I promise. Make sure to contact them if you want a website. A less subtle reference to CityWeb is a huge banner under the page "Formation > ChatBot" So, I went to their website. This company specializes in bullshit, such as SEO, chatbots, webmarketing and "digital transformation". Mind, you, "digital" doesn't mean jack shit in french aside from "finger-related" except for con artists in the marketing industry, so "transformation digitale" basically means "fingery transformation". That "new" bullshitty supposedly modernity-inspiring meaning of the word is unfortunately gaining traction in mainstream medias. Not so long ago,, the "they trust us" category only had the default companies ("armond", "darkside", "bastil", "bolier", etc) from default templates from the (wordpress) plugin Elementor. It's now listing various websites, which, even though they look sliiightly more plausible, have the same structure and content. Their twitter (archive) is extremely recent, and doesn't even have a link to the website and no tweet so far. In the mean time, the even newer twitter account "plateforme-association-formation.fr" started retweeting a weird mix of content, ranging from Thinkerview to the Chinese Ambassy, as well as cryptocoins, the controversial Idriss Aberkane on the verge of COVID denialism, and some random IT news. Recently (May 2021), a mention to the Generation Écologie political party appeared, infering some link to their initiative, while keeping plausible deniability. Finally, their instagram account has 10 followers, 8 of which are very similar "etoile" ("star" in french) accounts, all pointing to the website etoile.app, and all posting some random crap. Honorable mention to "exultationetoile": Conclusion# It seems that the "plateforme-association-formation.fr" website is an attempt to abuse keywords from the association and popular education world. The goal is to boost a fairly new webmarketing agency, meant for small companies trying to jump on the "digital" (remember, fingers) train, following the COVID-19 pandemic. Given the amount of work provided by volonteers and hundreds of organizations to fight against the digital divide, and given how some populations are hit even harder by it, it's a very cynical entreprise.
-
_DSC2189.jpg
2022-01-02
artphotography
-
_DSC2192.jpg
2022-01-02
artphotography
-
_DSC2196.jpg
2022-01-02
artphotography
-
_DSC2198.jpg
2022-01-02
artphotography
-
_DSC2200.jpg
2022-01-02
artphotography
-
_DSC2222.jpg
2022-01-02
artphotography
-
_DSC2225.jpg
2022-01-02
artphotography
-
_DSC2227.jpg
2022-01-02
artphotography
-
_DSC2233.jpg
2022-01-02
artphotography
-
_DSC2235.jpg
2022-01-02
artphotography
-
_DSC2237.jpg
2022-01-02
artphotography
-
_DSC2240.jpg
2022-01-02
artphotography
-
_DSC2243.jpg
2022-01-02
artphotography
-
_DSC2244.jpg
2022-01-02
artphotography
-
_DSC2247.jpg
2022-01-02
artphotography
-
_DSC2250.jpg
2022-01-02
artphotography
-
_DSC2251.jpg
2022-01-02
artphotography
-
_DSC2254.jpg
2022-01-02
artphotography
-
_DSC2259.jpg
2022-01-02
artphotography
-
_DSC2267.jpg
2022-01-02
artphotography
-
_DSC2271.jpg
2022-01-02
artphotography
-
_DSC2274.jpg
2022-01-02
artphotography
-
_DSC2280.jpg
2022-01-02
artphotography
-
_DSC2284.jpg
2022-01-02
artphotography
-
_DSC2289.jpg
2022-01-02
artphotography
-
_DSC2291.jpg
2022-01-02
artphotography
-
_DSC2292.jpg
2022-01-02
artphotography
-
_DSC2293.jpg
2022-01-02
artphotography
-
_DSC2295.jpg
2022-01-02
artphotography
-
_DSC2317.jpg
2022-01-02
artphotography
-
_DSC2320.jpg
2022-01-02
artphotography
-
_DSC2321.jpg
2022-01-02
artphotography
-
_DSC2322.jpg
2022-01-02
artphotography
-
_DSC2331.jpg
2022-01-02
artphotography
-
2022.12.13-snow
2022-01-01
art
-
St Sylvester's fog
2022-01-01
art
-
"Production" is code for "playground"
2021-12-29
txt
One day we lost the connection to our production servers: after a few calls, we realised that the infrastructure team were using our servers as test beds because they were not informed that these servers were live. We later learned that the hardware was not compatible with the custom Red Hat image used, which prevented reboots (or else NFS mounts and some other configuration files would be deleted). We knew about the no-reboot issue but not the actual reason: they were using our production servers to debug it because the CTO gave contradictory information to both of our teams. We requested a restoration of the files to the backup team, because, you know, we needed them. We got confirmation that it was done but the files were still missing. After investigation, they told us that when they were prompted by the backup software to overwrite the still present but empty directories, they simply hit "no" and closed the restoration ticket. Another attempt failed because they "let the workstation handling the operation go to sleep during the process". But it didn't stopped there: we allowed the OS team to perform their tests on our perfomance test infrastructure. We got no news for a while, and when we contacted them they said that they were actually waiting for the machines to be shutdown but didn't asked for it. We requested said shutdown to the infrastructure team. They then asked us permission for a full wipe of the machines, but we asked for a delay as we needed them again. The following week, they did it anyway. So we asked (again) the backup team to restore the servers: they failed to do so because in the mean time they had changed their infrastucture so the backups were not longer properly assigned. Long story short, they ended up having to wipe down their backup servers, and we lost our data. A few months later, we were having connectivity issues on production. As it turns out it was caused by the storage team: they were testing the new Kerberos version, because, you know, "you are the only team with this version of Red Hat".
-
I've got 80243004 problems
2021-12-27
txt
I was working as a contractor, and had to update a client's infrastructure at 4am. I connected to their interface to access all the servers, about 20 Linux servers and 30 Windows server. Linux servers went flawlessly and without reboots. About 2/3 of the windows servers went well, some required additional reboot to work, and a few to clean up download cache. But one of them refused to update no matter what I tried. So I actually woke up and started investigating. As it usually go with windows, I searched the error code on the web: nothing special came up. The sun was now rising. I finally stumbled upon a post on microsoft's forums. Try expanding the system tray [the space with time, date and software icons in the bottom right corner of the screen]: it should be abnormally large. And sure thing, the thing popped up and took most of the screen, for two pityful icons. simply resize the tray by selecting the tray and clicking Customize And well, yeah, it went back to its normal size. Not sure where this is going though. Re-run Windows update and you will find that it now works properly. Windows 7 update - error codes 800700D and 80243004 (Archive)
-
The tenth circle of (sysadmin) hell
2021-12-27
txt
One of my weirdest missions as an IT contractor. I was send to another contracting company to help because they were short on staff. It was a mixed bag of horrible HR management and absurd IT ecosystem. I was supposed to be the "transverse team" of one of their development sites with ~50 people. It was split in various teams for a month or two so they could find a replacement for the previous guy. The mission included managing their ISP contract, their on-site datacenter, their Active Directory and the whole IT environment, their deployement process, and even helping with the Q&A of their software and some development. A real Jack-of-all-trades position, which was already a bad sign. The following shit circus ensued: after a single week of skill transfer and one week of collaboration together, the person that I was supposed to replace left already, leaving me as the sole captain of this (sinking) boat; one of their apps somehow used the PL/SQL engine of their database as a web server which built the pages dynamically from the resources (html, css, images, data) which were obviously stored in the database itself; we had to recreate a Java environment for an app due to technical constraints but were stuck on a dependency which was unavailable on Tomcat. We didn't had the source code because the development team left some time ago, so we had to analyse the available bytecode to replace said dependency. Failing to do so, we tried to replace the whole app as it didn't seemed to do that much (basically connecting file pipelines). We replaced the 80Mo .jar file with five lines of bash script; a guy originally hired as a Linux administrator accepted to work on a Java project despite no prior knowledge of Java. All of his time was now spent supervising himself working on three Java projects against his own will; another guy was working on five radically different projects, supposedly giving 100% of his time to all projects. He worked 7/7 and was totally alienated; an "X resource" (meaning, yet to be hired) was already lead-developer on five projects; a database contained a table named "ONEROW", which effectively contained only one row, being the number "1": it was somehow important not to tamper with it (I wish I was joking); the register page of one of the apps required to select a color in the sign-on form as a mandatory information (despite no known use), with hundreds of possiblities. The default value was bisque (because why not); the biggest app of the project was single-user: if someone tried to connect while someone else was logged in, they would receive a "sorry, x is already using the app, try again later" pop-up. The app was processing data into PDF files, which took five minutes per file: scaled up to the frequent hundreds, the app would take hours to run. But as there was no feedback while it ran, people would think that no action was taken and would spam the "start processing" button, which would effectively cue even more data. Best part being, if the person disconnected before the end, the server would completely crash when trying to deliver the finished result. To prevent them from logging out, the developers added three (3) warning pop-ups to "solve" the issue. I ended up being exfiltrated by my manager after a month and a half, and with no vict- replacement available the site Lead-manager took over the transverse mission by default.
-
Bad mirror
2021-12-09
projects
Your browser doesn't support HTML5 video tag. This project uses a Raspberry Pi to turn a LED strip covered with paper boxes into a mirror using a webcam. Source code available here in guirlande_cam.py Content More photos Hardware Wiring Code More photos# Hardware# The hardware used was rather typical for a project like this: LED strips: five "WS281x" addressable LEDs, for a total of 250 LEDS. The strip we bought were advertised as "WS2811", but they have four cables rather than three, which suggest that they are WS2801 instead. The additional wire is apparently a backup data cable in case the LED burns. Information online is hard to come by due to the mixup by the provider (see "Wiring"). webcam: standard run of the mill webcam power supply: typical 5V/25A LED Power Supply Unit, to accomodate for the 60mA * 250 = 15A at full power paper boxes: traditional "water bomb" origami, 250 of them Wiring# As mentionned above, wiring turned out to be a bit difficult as the LEDs weren't properly labeled. But it turned out fine. On the first LED strip, the blue (ground, GND) cable was plugged to one of the ground pins of the Raspberry Pi (#6, see the schematics, and the white wire to the GPIO18. Then, each strip received power from a "bus" cable, which is itself plugged into the power supply. I'm used to work with both low power (such as electronic projects) and "high" power (such as house wiring), but here the mix of high intensity and low voltage weirded me out. But the small wires seemed to be enough, as it didn't not caught on fire nor released magic smoke even after several hours of continuous running. Code# The code was written in Python, using OpenCV (cv2) to get data from the webcam, process it (resizing and flipping) and show the intermediate result in a windows, and the rpi_ws281x library to drive the LED strips. Thanks to the rpi_ws281x library, initialising the LED strip is pretty easy: 1 # LED strip configuration: 2 LED_COUNT = 250 # Number of LED pixels. 3 LED_PIN = 18 # GPIO pin connected to the pixels (18 uses PWM!). 4 #LED_PIN = 10 # GPIO pin connected to the pixels (10 uses SPI /dev/spidev0.0). 5 LED_FREQ_HZ = 800000 # LED signal frequency in hertz (usually 800khz) 6 LED_DMA = 10 # DMA channel to use for generating signal (try 10) 7 LED_BRIGHTNESS = 200 #255 # Set to 0 for darkest and 255 for brightest 8 LED_INVERT = False # True to invert the signal (when using NPN transistor level shift) 9 LED_CHANNEL = 0 # set to '1' for GPIOs 13, 19, 41, 45 or 53 10 11 REFRESH_RATE_MS = 10 12 13 strip = Adafruit_NeoPixel(LED_COUNT, LED_PIN, LED_FREQ_HZ, LED_DMA, LED_INVERT, LED_BRIGHTNESS, LED_CHANNEL) 14 # Intialize the library (must be called once before other functions). 15 strip.begin() Changing a LED colour is then done like this: 1 strip.setPixelColor(10, Color(255,0,0) 2 strip.show() The RGB order didn't seemed to correspond between the webcam and the strip, so I hacked around a translator: as per commented, it might over complicated, but this is a hacky project and it worked: 1 def cam_pixel_to_color(frame,x,y): 2 """ 3 takes a cv2 frame, and return the pixel colour at (x,y) as Color 4 while converting BGR (cam) to appropriate RGB 5 6 While working RGB order might be convoluted, to fix 7 8 """ 9 10 try: 11 colour = Color( 12 int(frame[y][x][1]), #B -> G 13 int(frame[y][x][2]), #G -> R 14 int(frame[y][x][0]) #R -> B 15 ) 16 17 return colour 18 except Exception as e: 19 print(f"[WARNING] Out of Bound on camera for ({x}, {y})") 20 return Color(0,0,0) 21 22 return -1 Finally, as the strip was hung in "loops" on a support, I made some index shenanigans to unroll the image in reverse every other row: 1 def led_xy(x,y,color): 2 if (x % 2): 3 i = x * 25 + (25 - (y + 1)) 4 else: 5 i = x * 25 + y 6 strip.setPixelColor(i, color)
-
working on this website
2021-12-07
now
-
Nyoctober 2021 : "Jardin du Futur (jaune)"
2021-10-23
artdigitaldrawingsNyoctober
-
Draconic space monorail (p5.js)
2021-10-15
projects
.canvas-container { text-align: center; } canvas { border: 5px solid var(--text); display: block; font-family: 'Inconsolata', sans-serif; font-weight: 900; margin: auto; } random Link to this map About# This map is procedurally generated (created using code) with p5*js. It generates a random population map, creates a set of public transport types and tries to link the mot populated areas and tries to link them using this network. The source code can be found here
-
Nyoctober 2021 : "Robot Éteint (rouge)"
2021-10-12
artdigitaldrawingsNyoctober
-
L'écologie digitale, main verte invisible du marché (Partie 1)
2021-10-02
txt
Alors que le mouvement écologiste s'affole (à raison) de "l'urgence climatique", celui-ci s'empare d'un sujet ô combien complexe et insaisissable, le numérique. Sans surprise, l'approche choisie est malheureusement à l'image du reste des initiatives, limitée techniquement et politiquement et semble déjà atteindre une impasse. Dans ce premier article d'une série sur "l'écologie digitale", nous allons commencer par analyser les différentes statistiques qui semblent servir de fondation pour tout le reste du discours sur les usages du numérique et leur pollution. Depuis quelques années de nombreux conseils fleurissent sur le web pour réduire l'impact carbone de nos usages numériques : applications pour nettoyer sa boite mail, extensions de navigateur "vertes", moteurs de recherche éco-responsables… ainsi que des listes toujours plus longues de conseils à appliquer au quotidien. Au premier abord, ces conseils paraissent aussi efficaces que de bonne volonté. Les média nous bombardent de statistiques et de comparaisons sur l'impact de chacuns de nos usages, issus de think-tanks aux noms plus green les uns que les autres. Il est donc facile de se laisser convaincre par des infographies léchées que nos mails non-supprimés depuis trois ans participent au réchauffement climatique. Pourtant, beaucoup de ces "faits" semblent complètement techniquement absurdes quand on est familier avec le domaine. Il est alors tentant de remonter à la source de ces affirmations pour en vérifier la véracité. Et là, d'une manière ou d'une autre, ça coince. Selon les cas, on a le droit à une estimation approximative faite par des chercheurs mise à l'échelle sans plus de précaution, à une mesure faite au doigt mouillé par des gens ne comprenant pas les implications techniques, ou à une vieille étude sortie de son contexte. Histoire d'enfoncer le clou, les chiffres obtenus sont mis en perspective par le biais de comparaisons avec des éléments supposément plus concrets. Résultat, il parait q'une box internet consomme plus qu'un frigo : plus qu'à acheter un frigo connecté donc. Le saviez vous ? Un e-mail non supprimé consomme autant que trois pétroliers ! crédit photo Le numérique est par nature un empilement d'abstractions qui rend presque impossible la compréhension des enjeux techniques et politiques qui le traverse. Comme toutes les autres sciences, on se retrouve systématiquement pris en tenaille entre l'immensité du champs d'étude et la foultitude de détails. On peut donc difficilement blâmer les personnes s'attêlant à la tâche herculéenne de l'estimation de l'impact de nos usages de travailler avec des approximations. Mais le mille-feuille d'analogies et d'approximations devient rapidement trop épais pour ne pas être indigeste. S'il y a bien une chose que ces dernières années ont pu prouver, c'est les limites du "fact-checking". Cette pratique est non-seulement très peu efficace pour lutter contre les fausses informations mais aussi trop facilement détournable pour donner un vernis de légitimité à des affirmations pourtant fausses. Mais avant de décortiquer le mouvement du numérique écologique tel qu'il existe aujourd'hui, il semble important de faire un état des lieux de sa face la plus visible, les statistiques et les conseils qui lui servent d'appui. Cet article a vocation à être mis à jour au fur et à mesure : n'hésitez pas à me contacter pour suggérer des ajouts, souligner des erreurs, etc. Sommaire Premier cercle de l'enfer : les "techniquement, c'est vrai Deuxième cercle de l'enfer : "C'est faux, mais y a de l'idée" Troisième cercle de l'enfer : la poubelle verte Cliquez sur les cadres pour en avoir le détail Premier cercle de l'enfer : les "techniquement, c'est vrai# Le numérique représente 4% des émissions mondiales de pollution l'étude produite par The Shift Project à l'origine de cette affirmation semble plutôt bien étayée, mais nécessite d'être contextualisée.Ce fameux "4%" que l'on retrouve dans tous les médias est issu du rapport « pour une sobriété numérique » (archive) du think-tank The Shift Project créé en 2010, s'appuyant lui-même sur les données de l'étude Andrae & Edler, 2015 (archive). Très peu d'études existent sur le sujet de la part du numérique dans la pollution : la raison à cela étant que le numérique est un domaine "transversal", c'est à dire qui s'entremêle avec les autres. Cela rend difficile l'estimation de la pollution émise par le secteur numérique seul puisqu'il est presque impossible d'isoler par exemple la pollution égendrée par les infrastructures informatiques utilisées par l'industrie pétrochimique de leur pollution générale. Bien que ce rapport proposé par The Shift Project s'appuie sur des travaux sourcés et présente sa méthodologie de manière transparente, cette distinction semble absente et impute l'entièreté de la pollution due au numérique aux usages individuels. Avec des "techniquement", on mettrait Lyon en bocal. Une donnée parcourt en moyenne 15 000km Cette donnée est issue du rapport La face cachée du numérique (archive) de l'Agence de l'environnement et de la maîtrise de l'énergie (ADEME). Le chiffre est facilement vérifiable, même si l'ADEME ne daigne pas l'expliquer. Sauf que les données ne transitent pas par porte-conteneurs. Dans le numérique, la distance n'est pas un bon indice de la pollution créée par une "donnée".Ce chiffre que l'on retrouve partout est vraisemblablement issu du rapport "La face cachée du numérique" (archive) de l'Agence de l'environnement et de la maîtrise de l'énergie (ADEME), un établissement public qui fait autorité dans le milieu. Aucune explication n'est présente dans le document, la donnée est présentée tel quel, au milieu de statistiques aléatoires. Pourtant, le web est évidemment à l'image du reste du monde occidento-centré et plus encore américano-centré : lorsque l'on remonte le trajet d'une requête sur le site de Google, y compris dans sa version française, on peut voir notre requête rapidement filer vers les État-Unis. À ~7500km la distance France-USA, on arrive donc facilement à la valeur précédemment évoquée. Sauf que cette valeur ne veut pas dire grand chose : les "données" ne traversent pas l'Atlantique transportées dans des porte-conteneurs. Une requête peut très bien atterrir dans le datacenter à côté de chez vous, sur une infrastructure datée, mal gérée et alimentée par la centrale au charbon locale, tout comme elle peut en quelques sauts traverser presque instantanément des câbles sous-marins en fibre optique et atterrir dans un datacenter à la pointe de l'innovation et de l'optimisation, alimenté par éoliennes. Dans le numérique, la distance n'est donc pas un bon indice de la pollution créée par une donnée [1]. [1]Elle l'est en revanche lorsque l'on aborde des questions légales, évidemment. La vidéo en ligne représente 60% du trafic Cette statistique émane encore une fois de The Shift Project. Elle est issue d'un de leur rapport basé sur des données solides publiées par Cisco et Sandvine, deux sociétés travaillant dans le domaine du réseau. Si le chiffre semble plutôt solide, il tend à laisser penser que la vidéo représenterait donc 60% de la pollution émise par le numérique : sauf que le trafic n'est qu'une partie de l'histoire.Cette donnée est basée sur un rapport du Shift Project (archive), encore une fois assez bien sourcé et qui explique sa méthodologie. Les sources en question sont respectivement issues de données publiées par Cisco (archive), un géant de l'industrie du réseau, et de Sandvine (archive), société spécialisée dans les métriques réseau par le biais de sondes disposées à travers le monde. the Shift Project croise ces deux sources, ainsi qu'avec un "enquête", et y applique une métrique détaillé de leur crue d'une estimation du "poids" d'un octet. On peut donc considérer que même si le chiffre exact ne pourra jamais être trouvé, l'ordre de grandeur semble plausible et fondé. Néanmoins, cette proportion s'applique précisément avant tout au transit sur le réseau, et non au traitement ou au stockage. Il n'est donc pas question de multiplier ces 60% par les "4% de part dans la pollution mondiale" pour obtenir la pollution générée par la vidéo en ligne (comme on va le voir juste après). Deuxième cercle de l'enfer : "C'est faux, mais y a de l'idée"# La vidéo en ligne constitue une importante source de pollution. La vidéo constitue un très gros "poste" en terme de trafic pur, et est donc plutôt pollueuse. Mais le trafic ne constitue pas l'entièreté de l'histoire, et les données qui tournent généralement dans les médias sont vraisemblablement largement surestimées.Une formule qui accompagne souvent cette affirmation est que « Le visionnage en ligne d'une vidéo en haute définition de 10 minutes sur un smartphone équivaut à utiliser à pleine puissance un four électrique de 2000W pendant 5 minutes ». Cette citation est issue d'un rapport de 2018 (archive) de The Shift Project qui utilisait cette exact tournure. Leurs rapports suivants ont corrigés cette erreur, mais la pollution liée à la vidéo en ligne reste sujet à des débats très intenses. Dans un long et étayé article (archive), l'analyste George Kamiya souligne que le Shift Project aurait très largement surestimé ce chiffre. Le think tank a alors publié un article (archive) dans lequel ils reconnaissent l'erreur mais affirme que celle-ci n'invalide pas leur conclusion quant à l'importance de la vidéo en ligne dans la pollution numérique. Mais encore une fois, cette statistique ne suffit pas à elle même. Comme évoqué plus haut, il ne s'agit pas de multiplier les 4% de part du numérique dans la pollution pour en déduire la pollution générée par la vidéo. Les plateforme de SVOD comme Netflix ou Disney+ par exemple, même si elles stockent généralement des fichiers en très haute qualité qui ont donc une forte empreinte sur le réseau, ont un nombre de vidéos stockées relativement bas. En revanche, les plateformes d'hébergement affichent des chiffres démesurés : Ben McOwen Wilson, directeur régional "EMEA" (Europe Middle East & Africa) de Youtube, géant incontesté du domaine, annonçait en mars 2018 que Youtube recevait 500 heures de nouveau contenu **par minute** (archive). Alors que youtube génère théoriquement moins de trafic selon les rapports précédemment cités, il y a fort à parier que l'impact de son infrastructure vidéo soit démesurément plus grand. Les réseaux mobiles (3G, 4G) consomment jusqu'à 23 fois plus que le Wi-Fi Les réseaux mobiles consomment (sans surprise) plus que le Wi-Fi, mais pas à raison de 23 fois plus. L'origine de cette valeur est difficilement trouvable, mais semble être un papier scientifique de 2012, et il s'agit là de la valeur dans les pires conditions, sans doute choisie pour dramatiser le problème. Le ratio s'approche plus de deux à sept fois.On peut entre autres retrouver l'affirmation que la 4G (LTE) consommerait 23 fois plus (et la 3G 15 fois plus) que le Wi-Fi chez Greenpeace Wikipédia et enfin Frédéric Bordage (GreenIT). Ce dernier est d'ailleurs le seul à fournir un semblant de source, celle-ci datant de 2012 (page 9 & 10). Une autre étude sur le sujet (figure 6) datant de 2017 arrive à un ratio plus proche de 2x. Cette différence peut potentiellement s'expliquer de plusieurs manières : par des méthodes de mesure différentes selon les études, prenant plus ou moins en compte l'impact de l'infrastructure en plus de l'appareil ; par l'amélioration rapide des technologies radio au fil des années ; par l'amélioration des protocoles de transfert, l'étude utilisée par GreenIT soulignant que la différence se creuse avant tout dans les quelques pires cas (dit "tail", désignant soit la fin de transmission, soit les pires cas parmi ceux mesurés) [2]. [2]« we find that LTE is as much as 23 times less power efficient compared with WiFi, and even less power efficient than 3G, based on the user traces and the long high power tail is found to be a key contributor. » La conclusion de ce papier qui sert de base à GreenIT qui sert lui-même de base à Wikipedia et Greenpeace est donc plutôt que les réseaux 3G/4G sont (ou plutôt, étaient en 2012) très mal optimisés. Le contexte technique devrait être présenté pour mettre en perspective cette valeur. D'autre part, Elle constitue la la valeur dans le pire des cas, issue d'une seule étude qui n'est en rien valeur d'autorité : elle a été choisie car elle présente l'écart le plus large et permet donc de "choquer". Néanmoins, il est important de souligner qu'il est techniquement vrai que les réseaux mobiles consomment intrinsèquement plus que les réseaux "fixes", de part leur champs d'action même. Le mode sombre sur les applications et les sites web améliore la consommation des appareils Basé sur une conférence faite par Google sur le sujet, mais seuls quelques rares appareils (ceux dotés d'un écran OLED) sont concernés, et l'effet collectif est absolument infinitésimalDernier exemple de statistique techniquement-vraie-mais-en-fait-c'est-plus-compliqué, la question du "mode sombre" : de nombreux guides en ligne pour réduire son empreinte carbone numérique suggèrent de passer au "mode sombre" disponibles sur de plus en plus d'applications pour réduire leur consommation électrique et donc leur impact carbone. L'origine de cette affirmation serait une conférence Google de 2018 (vidéo) comparant la consommation des pixels selon leur luminosité (d'autres tests ayant étant été fait sur le sujet allant dans le même sens). Or, celle-ci n'évoque un gain que dans le cas des écran "OLED" qui "éteignent" réellement leurs pixels, à contrario des écran LCDs qui se basent sur un rétroéclairage et ne bénéficient donc virtuellement d'aucune amélioration. Or, Les écrans OLED sont encore largement minoritaires sur les smartphones (d'autant plus en dehors des modèles haut de gamme) et quasiment aucuns de PCs portables ou écrans pour ordinateur ne bénéficient de cette technologie. Il faut donc se renseigner sur ses appareils pour savoir si ce conseil s'applique. Dans le cas d'un écran LCD classique, le conseil serait d'ailleurs plutôt de baisser la luminosité de celui-ci, au pris d'un confort visuel fortement réduit. Qui plus est, on parle là d'une économie en soit non négligeable mais minoritaire, sur une part minime des terminaux, dont la consommation constitue un poste minoritaire, l'utilisation elle-même des terminaux engendrant 20% de la consommation énergétique du numérique selon The Shift Project, qui lui-même représente 4% des émissions. Il s'agit donc là d'une poupée russe statistique qui masque l'impact infinitésimal d'une telle pratique, quand bien même elle serait appliquée par toutes et tous. Au mieux, si vous possédez un appareil équipé d'un écran OLED, sachez que vous pouvez améliorer son autonomie en utilisant au maximum le mode sombre. Troisième cercle de l'enfer : la poubelle verte# Les statistiques précédentes, mêmes si elles sont décontextualisées voire exagérées, ont le mérite d'être tout de même évocatrices d'une réalité technique, et donc potentiellement en phase avec les solutions proposées. Ce n'est malheureusement pas la norme, loin de là. Entre autres, deux des plus grands marionniers de l'avant-garde écologiste digitale, sont la pollution engendrée par les recherches Google, et celle engendrée par les mails. La suite va vous étonner. Une recherche Google c'est 10g de CO2 L'affaire date de 2009, l'étude n'a jamais été publiée, Google a sorti son propre chiffre de 0.2g en réponse (ce qui ne veut pas dire qu'il faut les prendre pour argent comptant), et le chercheur Docteur Alex Wissner-Gross à l'origine de l'histoire a ensuite nié que son étude portait sur cela. Il affirme que The Sunday Times qui a rapporté l'affaire a fait un article à charge contre Google en détournant ses travaux.Concernant les recherches Google : le chiffre est aujourd'hui encore partout dans les médias : une recherche sur Google génèrerait entre 5 et 10g de CO2, soit "autant qu'une demie bouilloire". Une simple pression d'une touche qui provoque autant de pollution qu'un appareil qui chauffe un litre d'eau, on peut comprendre que ça a de quoi émouvoir. Mais lorsque que l'on remonte la source de l'histoire (ce que les personnes qui propagent l'info ne font presque jamais, évidemment), les choses sont bien plus nuancées. L'histoire commence en 2009 avec un article dans The Sunday Time rapportant les propos du Docteur Alex Wissner-Gross, article depuis supprimé. Il affirme dans celui-ci qu'une recherche Google génèrerait entre 5 et 10g de CO2 ; on y retrouve d'ailleurs déjà la comparaison avec la bouilloire, perfide albion oblige. Le chercheur annonce que ses travaux ont été soumis au US Institute of Electrical and Electronics Engineers et qu'ils sont en attente de publication. 11 ans après, cette étude n'est toujours pas paru. À la suite de cette article, Google a réagi dans un poste de blog en affirmant de son côté qu'une recherche google génèrerait que 0.2g de CO2, qu'ils comparent au maximum de 140 grammes de CO2 par kilomètre recommandé par l'europe (mais rarement atteint selon eux) pour une voiture à l'époque. En réaction, le chercheur a nié être à l'origine de cette statistique, affirmant qu'il a simplement évoqué la consommation d'un ordinateur causé par une page web et que The Sunday Times aurait volontairement fait un article à charge contre Google en détournant ses propos. Dans tous les cas, les médias diffusent encore une statistique erronée (de la bouche du chercheur lui-même), 11 après que celle-ci ait été mise en défaut. un mail c'est environ 10g de C02 par destinataire L'auteur originel, Mike Berners-Lee qui avait lâché cette statistique dans un livre, a depuis recontextualisé ses propos et remis en perspective cette valeurConcernant les mails maintenant. Les chiffres varient d'un article à l'autre mais dans l'idée la pollution engendrée par un mail serait de l'ordre de 4 à 10g pour un mail simple, et jusqu'à 50g pour un mail avec une pièce jointe. La source rarement cité serait selon cet article (archive) de Futura Sciences un rapport du Carbon Literacy Project lui-même basé sur des données du livre "How Bad Are Bananas?" par Mike Berners-Lee, frère de Tim Burners-Lee, inventeur du World Wide Web. Sauf qu'encore une fois, l'auteur originel est revenu sur cette statistique —de manière plus transparente et honnête que dans l'exemple précédent—, via un tweet (archive). Il la remet d'ailleurs en perspective aussi bien en terme de taille que de traitement comparé à d'autres usages du web. Pour remettre tout ça en perspective : dans les captures d'écrans suivantes, le chargement de la page de gmail, le webmail de Google, provoque environ 1Mo de transit (pour 16Mo de ressources, compressées) : l'ouverture d'un mail généreux en taille venant d'une célébre solution de vidéoconférence, 50ko, soit 20 fois moins. Une box internet consomme autant qu'un frigo : pensez à l'éteindre quand vous ne l'utilisez pas Non, pas de nos jours en tout cas. Une étude de *60 millions de consommateurs* avait relevé que les box internet consommaient beaucoup trop (« entre 143 et 263 kilowatts/heure ») pour ce qu'elle faisaient, la faute aux opérateurs qui ne faisaient pas d'effort d'optimisation… en 2007. Un test rapide montre qu'une box internet consomme huit fois moins qu'un frigo, même dans des conditions avantageuses pour ce dernier.Ce conseil là est apparut telle une trainée de poudre dans tous les médias, spécialisés comme généralistes. La logique derrière cette affirmation serait la suivante : un frigo consomme pas mal, mais pas en continu, là où une box internet est virtuellement en ligne h24. Pourtant, l'écart de puissance semble telllement absurde pour que ça puisse être vrai. Pour en avoir le cœur net et à défaut de mieux, j'ai acheté pour la modique somme de 14 euros un "Wattmètre" (Perel E305EM6 si vous êtes curieux-ses), un appareil spécifiquement destinée à mesurer la consommation éléctrique d'un appareil sur une durée donnée. Il se présente sous la forme d'un bloc qui s'interpose entre l'appareil et sa prise. J'ai pris comme référence les équipements qui étaient à ma portée, c'est à dire la box internet (LiveBox Orange v4) et le frigo (Apollo Brandt) de notre colloc de trois personnes : cela ne fait pas état de valeur absolu, mais permet de se faire une idée de l'ordre de grandeur. L'expérience était de base biaisé en faveur du frigo, puisque le froid de l'hiver réduisait le travail de celui-ci, et que notre box internet porte plusieurs serveurs dédiés à mon auto-hébergement. J'ai donc mesuré leur consommation respective sur une semaine, et le bilan est assez anti-climatique : Le frigo a consommé huit fois plus que la box internet. la box a consommé en moyenne 0.009 Watt/heures (1.67 Watt/heures en ~168 heures) ; le frigo a consommé en moyenne 0.07 Watt/heures (13.23 Watt/heures en ~189 heures). Le frigo a donc consommé quasiment huit fois plus que la box internet, dans un environnement qui aurait encore une fois dû largement l'avantager. Je ne suis d'ailleurs pas la seule personne qui a été interloquée par cette statistique. Qui propage cette idée ? Et bien il semblerait qu'il s'agit… de l'ADEME encore, qui est pour rappel un établissement public. On peut lire dans leur guide "la face cachée du numérique", considéré comme une référence en la matière; ainsi que dans leur autre guide "réduire sa facture d’électricité" (qui cite 60 millions de consommateurs) : une box consomme autant qu'un réfrigérateur : Sa consommation totale sur un an, se situe entre 150 et 300 kWh : c'est autant qu'un grand réfrigérateur ! Une box TV consomme 3 fois ce que consomme un téléviseur et une box Internet, 6 fois plus. Une solution pour moins consommer d'électricité : ne laissez pas votre box en veille si vous ne l'utilisez pas. Vous économiserez ainsi environ 30 euros par an. La source 60 millions de consommateur est semble-t-il un article posté dans le magasine éponyme en octobre 2007 évoquant une consommation « entre 143 et 263 kilowatts/heure (kWh) » (une donnée étrangement haute par ailleurs, mais passons). Le magazine reproche en l'occurence aux fabriquants de mal optimiser leur matériel. Difficile à dire si les box internet consommaient effectivement autant à l'époque, mais en 2021, alors que cette donnée est toujours citée, ce n'est clairement plus le cas. Sans parler de la problable surconsommation engendrée sur le réseau si tout le monde débranche et rebranche sa box chaque nuit, du fait de la resynchronisation. Pensez à vider le cache de votre ordinateur pour limiter sa consommation Hormis pour libérer de l'espace, c'est non seulement inutile mais en plus contre-productif. Le cache sert à garder en mémoire des ressources souvent utilisées mais inchangées. En supprimant le cache, on force l'appareil à mobiliser les infrastructures pour des ressources qu'il possédait déjà. Autant jeter ses poubelles par la fenêtre pour réduire sa taxe ménagère et son empreinte carbone personnelle.Même si ce conseil est plus rare, il frappe par son aburdité. On nous conseille de vider notre cache comme l'on vide nos poubelle. Dans la même logique que le mail, si ça prend de la place, c'est bien qu'il faut nettoyer non ? Pourtant nettoyer son cache n'est pas seulement inutile : c'est contre-productif. Le "cache" (sous entendu du navigateur, soit-il Firefox, Chrome ou autre) sert à garder en mémoire des ressources régulièrement utilisées mais peu changeantes. Les grands sites utilisent souvent des polices d'écriture, des scripts ou bien même des images identiques : les re-télécharger à chaque fois serait donc littéralement une perte d'énergie, aussi bien pour nos appareils que pour les structures qui hébergent ces ressources. Lorsque que l'on nettoie son cache, on force notre navigateur à re-télécharger ces ressources pour rien. Qui plus est, Les acteurs hébergeant ces ressources sont généralement des géants du web comme Cloudflare ou Amazon, qui n'hésitent pas à profiter de ces requêtes pour agrandir plus encore leur base de données d'informations sur nos usages. La bonne stratégie est donc l'exact contraire de ce qui est recommandé par ces "champions du numérique", c'est à dire faire perdurer ce cache autant que possible. Une solution simple, disponible aussi bien sur Firefox que sur Chrome est Decentraleyes, une extension qui garde en mémoire ces ressources au delà du cache pour limiter le nombre de requêtes vers l'extérieur, et ainsi à la fois limiter les ressources mobilisées et les données de tracking que l'on génère. On est jamais mieux servi que par soi-même. Ce conseil absolument absurde est trouvable aussi bien dans une vidéo produite par le youtuber Nozman que sur le site de *L'Agence Parisienne du Climat* (archive), partenaire de l'ADEME, et ce malgré qu'un rapport soutenu par cette dernière affirme l'exact contraire (archive). L'écologie digitale, ou la main verte invisible du marché : Première partie : le fact-checking à la cool La suite reste à venir
-
2021-08-12_DSC2033
2021-08-12
artcantal2021
-
2021-08-12_DSC2043
2021-08-12
artcantal2021
-
2021-08-12_DSC2052
2021-08-12
artcantal2021
-
2021-08-12_DSC2059
2021-08-12
artcantal2021
-
2021-08-12_DSC2113
2021-08-12
artcantal2021
-
Building an antenna
2021-08-08
now
-
Procedural fuckery.
2021-07-23
now
-
Fixing electronics
2021-06-19
now
-
Aurorae experiment
2021-06-08
projects
.canvas-container { text-align: center; } canvas { border: 5px solid var(--text); display: block; font-family: 'Inconsolata', sans-serif; font-weight: 900; margin: auto; } About# I was trying to learn p5js, so I tried to create aurorae using particles with a procedurally generated snowy landscape.
-
Self-hosted Spotify
2021-05-19
wikiwebdevelopment
The is a work in progress: this page is here to keep track of the project. The go-to reference in the self-hosting commnunity is very complex: https://www.reddit.com/r/selfhosted/comments/9ya0or/selfhosted_music_playerspotify/ea0m2bk/ The goal is to build a simpler version of it. Nextcloud Install "Music" App setup last.fm api key for informations Generate login-pwd for Ampache/subsonic The logins for subsonic are not the user logins, but the generated login-pwd pair from the Music app use "Subsonic" android app for streaming from Nextcloud Use last.fm android app to scrobble listening music Anything below is TODO Build Headphones (https://github.com/rembo10/headphones) -> Transmission -> beet -> Nextcloud Music pipeline
-
Making weird noises with a bass and Ardour and drawing
2021-05-18
now
-
Ansible
2021-05-17
wikisystem administration
Content On client ad-hoc command On server On client# 1 sudo apt update && sudo apt install ansible -t 2 git clone https://framagit.org/Nemecle/heimdall 3 cd heimdall to launch: 1 ansible-playbook -i inventory.ini site.yml ad-hoc command# 1 ansible -i inventory.ini webservers -m ansible.builtin.file -a "dest=/etc/nginx/sites-available/wiki.nemecl.eu mode=600 owner=www-data group=www-data" --become On server# 1 sudo adduser deploy 2 sudo groupadd wheel 3 sudo usermod -aG sudo deploy 4 sudo usermod -aG wheel deploy Then sudo visudo, add %wheel ALL=(ALL) NOPASSWD: ALL And edit /etc/shadow to add/edit deploy:!!:[...] for no password make sure to add user to AllowUsers in sshd_config. Then: 1 sudo service ssh reload Add ssh key: 1 ssh-copy-id -p <port> -i $HOME/.ssh/id_rsa.pub deploy@nemecl.eu (unecessary?) then: 1 sudo setfacl -R -m u:deploy:rwx /var/www/ https://linuxbuz.com/linuxhowto/what-is-ansible-playbook-and-how-it-works
-
Software
2021-05-12
wiki
Content Learning/Education music code Graphics learn fun Learning/Education# music# Incredibox Beatmaker Blokdust Sampulator musiclab Drum Machine Collaborative music: Plink List of various sound editors https://github.com/everestpipkin/tools-list#sound-editors code# basic algorithms with shapes: Algoblocks actual python or javascript code: CodeCombat visual programming: Cables Graphics# For 2D animation and even interactive books: Wick Editor learn# morse: https://morse.withgoogle.com/learn/ keyboard "touch typing" : https://zty.pe/ mouse agility: https://kbhgames.com/game/ninja-glove fun# 3D/VR chat in the browser: Hub by Mozilla Experiment with alchemy/cellular automata: Sandspield 3D puzzles Rotopo
-
Move user folders in Windows
2021-05-12
wikiwindows
The screenshot here are in french, but the corresponding translations are provided. Following the configuration of new computers with an additional "Data" drive, I wanted to move users' folders (Downloads, Documents, Pictures, Videos,...) on it to keep the "system" disk for applications. Several articles and forum posts online advise against moving the whole user folder because it can cause problems with updates and such. Also, most articles simply explain how to move it, but do not explain how to "recreate" the users' folder structure (which can actually be handled by Windows itself). Here is the quickest method I found without Active Directory and such. To start with, connect with one of the users, and open the file browser. Under "Quick access"/"Shortcuts", right click on the corresponding shortcut, and click "Properties": Then, go to the "location" tab. You should have something that look like this, with the default location being C:\users\<user>\Documents: Simply replace the C: by D:: A pop-up appears, warning you that the targeted folder does not exist. the first "trick" being that it suggests to create it for you! Click on "yes" to create it: A second pop-up will ask if you want to move the content of the old folder to the new: to which you can obviously answer "yes": Apply this to all the folders that you want. The hierarchy and the folders are automatically created, and their content seemlessly moved:
-
File recovery
2021-05-11
wiki
to redact basic extract: testdisk (good tutorial: https://itsfoss.com/recover-deleted-files-linux/) mp4fixer: 1 perl /home/nemecle/Downloads/mp4fixer/fixer.pl /media/nemecle/HDD2/b/testdisk/DCIM/101_FUJI/DSCF0658.MOV /media/nemecle/HDD2/b/testdisk/DCIM/101_FUJI/video.MOV video.MOV_fixed; data carving: https://github.com/sleuthkit/scalpel https://www.cgsecurity.org/wiki/PhotoRec#How_PhotoRec_works http://foremost.sourceforge.net/ atom mov https://video.stackexchange.com/questions/29073/need-help-to-fix-a-broken-mp4-which-lacks-a-moov-atom https://codecpack.co/download/recover-mp4.html https://stackoverflow.com/questions/35561846/recovering-corrupted-video-file data carving: https://github.com/sleuthkit/scalpel https://www.cgsecurity.org/wiki/PhotoRec#How_PhotoRec_works http://foremost.sourceforge.net/
-
Hardware
2021-05-11
wiki
Content Storage Stuck head Bricked SSD Connectors Power supply cords In-computer power connectors Pc building Seemingly dead computer Storage# Stuck head# Diagnosis: "tick tick tick" and/or screeching noises when starting drive. Either hit drive against a table (while unpowered) to unstuck: only do that with already fucked-up-to-be-backed-up drives. (When I was a sysadmin, I heard a story of how old VAX drives would stall, so holes had been drilled in them with tape over the holes. When stalled, the sysadmin would peel back the tape and use their finger to spin-start them. Those even older drives must have been more tolerant of dust!) More than once I had a hard drive fail to start up after a power cycle (back then the drives only spun down when power was removed). First thing we tried was to remove the drive and give the whole drive a sharp spin on the axis of the platter. Due to inertia of the platter, this would tend to get the platter to move a bit and "unstick" it. My recollection is that it worked every time I had to do this. Of course, we would back up that drive and replace it as soon as possible. Source Bricked SSD# Bricked SSD on Life Support (archive) Connectors# Power supply cords# On power unit, ampere is a maximum (an equipement using less will be fine), while voltage is an exact value, with a tolerance of ≈10% Plug "shape" is defined by IEC 60320 IEC 60320 norm as shown on Wikipedia In-computer power connectors# Power and Panel Cables and Connectors (archive) Power supply labels on (mainly old) PSU connectors seems to have very little documentation. From here and here (archive), it seems to be: label Corresponding equipement P1 System board, 24-pin P2 Diskette drive P3 CPU power, 6-pin P4 1st SATA hard drive P5 2nd SATA hard drive P7 Optical drive Pc building# PC Part picker Seemingly dead computer# If a computer no longer powers (typically, a laptop), unplug power supply, remove battery, then press and release power button for one second, 30 times, and put battery and power supply back. It will discharge static charges from capacitors, actually removing any leftover power, and might allow computer to come back online. The Secret Thinkpad Powerbutton Code To Bring Dead Laptops Back To Life (Hacker News thread with more tips here)
-
ROracle installation
2021-05-11
wikiROracleCRAN
ROracle rough installation bash history 1 1008 [12/01/18 - 16:30:24] R CMD INSTALL ROracle_1.3-1.tar.gz 2 1009 [12/01/18 - 16:33:07] yum list oracle 3 1010 [12/01/18 - 16:33:16] yum search oracle 4 1011 [12/01/18 - 16:33:50] yum install oracle-instantclient12.1-devel.x86_64 5 1012 [12/01/18 - 16:34:06] locate oracle 6 1013 [12/01/18 - 16:34:26] find /usr -name "oracle" 7 1014 [12/01/18 - 16:34:46] R CMD INSTALL --configure-args='--with-oci-lib=/usr/lib/oracle/12.1/client64/lib --with-oci-inc=/usr/include/oracle/12.1/client64' ROracle_1.3-1.tar.gz 8 1015 [12/01/18 - 16:35:33] stat /softwares/R/library/ROracle/libs/ROracle.so' 9 1016 [12/01/18 - 16:35:35] stat /softwares/R/library/ROracle/libs/ROracle.so 10 1017 [12/01/18 - 16:39:27] stat =/opt/oracle/instantclient 11 1018 [12/01/18 - 16:39:30] stat /opt/oracle/instantclient 12 1019 [12/01/18 - 16:39:56] locate oracle 13 1020 [12/01/18 - 16:40:31] export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64:$LD_LIBRARY_PATH 14 1021 [12/01/18 - 16:40:34] R CMD INSTALL --configure-args='--with-oci-lib=/usr/lib/oracle/12.1/client64/lib --with-oci-inc=/usr/include/oracle/12.1/client64' ROracle_1.3-1.tar.gz 15 1022 [12/01/18 - 16:40:48] locate libclntsh.so.12.1 16 1023 [12/01/18 - 16:41:01] export LD_LIBRARY_PATH=/usr/lib/oracle/12.1/client64/lib:$LD_LIBRARY_PATH 17 1024 [12/01/18 - 16:41:02] R CMD INSTALL --configure-args='--with-oci-lib=/usr/lib/oracle/12.1/client64/lib --with-oci-inc=/usr/include/oracle/12.1/client64' ROracle_1.3-1.tar.gz 18 1025 [12/01/18 - 16:41:13] R 19 1026 [12/01/18 - 16:43:46] history
-
CSS only masonry layout
2021-04-23
wikiwebdevelopmentUXUIdesign
Content What is a masonry layout Code What is a masonry layout# A masonry layout is simply a gallery of images in which elements are scaled to obtained a single block with straight borders on the left and the right (in the case of an horizontal layout). While doing a basic layout is relatively easy, it gets harder when the direct children of the gallery aren't the images themselves, for instance when they are links to the page containing its full size. Example: Code# html for the previous example: 1 <div class = "flex-masonry"> 2 <a href ="/images/el-lissitzky_beat-the-whites-with-the-red-wedge.png"> 3 <img src = "/images/el-lissitzky_beat-the-whites-with-the-red-wedge.png" alt = "el lissitzky beat the whites with the red-wedge"> 4 </a> 5 6 <a href ="http://www.phrack.org/issues/61/1.html"> 7 <img src = "/images/phrack61_intro.png" alt = "phrack61 zine intro"> 8 </a> 9 10 <a href ="/images/weingart.png"> 11 <img src = "/images/weingart.png" alt = "weingart"> 12 </a> 13 14 <a href = "https://brandur.org/minimalism"> 15 <img src = "/images/brandur.org.png"> 16 </a> 17 18 <a href = "http://cachestocaches.com/2018/9/ai-translation-more-language/"> 19 <img src = "/images/cachestocaches.com.png"> 20 </a> 21 </div> CSS: 1 .flex-masonry { 2 display: flex; 3 flex-wrap: wrap; 4 margin: auto; 5 } 6 7 .flex-masonry a { 8 overflow: hidden; 9 } 10 11 .flex-masonry a img { 12 max-height: 20vh; 13 object-fit: cover; 14 transform: scale(1); 15 transition: all 0.3s ease; 16 width: auto; 17 } 18 19 .flex-masonry a img:hover { 20 transform: scale(1.05); 21 } 22 23 /*https://medium.com/@iamryanyu/how-to-align-last-flex-item-to-right-73512e4e5912*/ 24 .flex-masonry:last-child { 25 margin-left: auto; 26 } 27 28 .flex-masonry > a { 29 align-items: stretch; 30 display: flex; 31 flex-direction: column; 32 flex: auto; 33 margin: 1px; 34 } 35 36 37 @media only screen and (max-width: 800px) { 38 /* For mobile phones: */ 39 /* switch to one image per line, and no zoom effect */ 40 .flex-masonry a { 41 max-width: none; 42 display: initial; 43 } 44 45 .flex-masonry a img { 46 max-height: initial; 47 min-height: initial; 48 height: auto; 49 width: 100%; 50 } 51 52 .flex-masonry a:hover img { 53 transform: none; 54 } 55 }
-
strace
2021-04-23
wikisystem administration
Content What strace is Basic commands Filtering Reading the file(s) What strace is# A quick excerpt from the man page to learn what strace is: ``strace`` is a useful diagnostic, instructional, and debugging tool [...] Each line in the trace contains the system call name, followed by its arguments in parentheses and its return value. A system call is simply what programs use to ask the system to do operations like opening a file, writing in it, creating a now process... etc. It is not necessary to understand every single system call to use strace. Once the package strace is installed you can either trace a program when launching it, or hook yourself to an already running thread. Fair warning, strace is quite resource intensive, and will slow down your program further if you simply print its output to your terminal instead of sending it into files, so it's better to send it to a file and "tail -f" it. Also, as strace creates one file per process, so for multi-process app I advise creating a dedicated directory like /tmp/strace_my_program. Basic commands# If you want to trace a program/script that as you launch it (arguments are explained below): 1 strace -ffqttv -s1000 -o /tmp/strace_0/strace.log -p <your_command_here> For instance: 1 strace -ffqttv -s1000 -o /tmp/strace_0/strace.log -p main.py -s "hello" And if you want to attach yourself to an already running process: 1 strace -ffqttv -s1000 -o /tmp/strace_0/strace.log -p <pid of the process> The additional arguments I put are: -ff: follow 'forks' (children processes) and send their output into separate files; -q: remove strace messages about "attaching" and "detaching", which aren't really useful; -tt: add timestamps with milliseconds precision to the logs, especially useful to debug multi-process apps; -v: do not abbreviate calls' details, which can be useful; -s1000: specify maximum string size (default is 32, which is often too small); -o /tmp/strace_0/strace.log: send the output to this file: if there are multiple processes, the files will be created as strace.log.<pid>. I really advised to use these parameters for more useful logs but you can obviously adapt them. Filtering# If you know what you're looking for, you can filter the output. For instance, you can filter system calls based on their category: -e trace=file; -e trace=process; -e trace=network; -e trace=signal; -e trace=ipc; -e trace=desc; -e trace=memory. And even filter directly the system calls: for instance, see only when the program writes to standard (stdout) and error (stderr) output: -e write=1,2 You can also narrow down the output based on a file path: -P /var Reading the file(s)# strace is quite verbose, but as its output is standardized, you can use plugins or even settings in your text editor to highlight it. For instance in vim, simply type: :set filetype=strace
-
triggering i3lock on sleep
2021-04-22
wikilinux
adapted from https://wiki.debian.org/ScreenLockingOnSleep /etc/systemd/system/i3lock.service: 1 [Unit] 2 Description=i3lock 3 Before=sleep.target 4 5 [Service] 6 User=nemecle 7 Type=forking 8 Environment=DISPLAY=:0 9 ExecStart=/home/nemecle/.bin/scripts/lock.sh 10 11 [Install] 12 WantedBy=sleep.target lock.sh: 1 #!/usr/bin/env bash 2 3 i3lock -i $HOME/Wallpaper_lock.png
-
nemecl.eu's design
2021-04-21
wikiwebdevelopmentUXUIdesign
The design will be perpetually changing Content General idea Inspiration board Typefaces and fonts Typefaces fonts Colours Design Headings Text elements "Frames" Details-summary element left and right aligned elements Forms Code highlighting General idea# Look: 80 hacker zines, terminal look, screen printed zines; To explore: constructivist look (e.g. El Lissitzky), swiss Punk typography, brutalist architecture. Execution: monospace typefaces, spaced design, visual hierarchy through size, weight, position and colour rather than decoration, very few colours and generally low contrast colours to imitate print limitations, big blocks of colour. Inspiration board# Typefaces and fonts# Typefaces# "Inconsolata" almost all elements by now Formely "Deja Vu Sans Mono Book" for title elements "Libre Baskerville" as potential non-monospace body typeface fonts# Heavy use of various font weights, leveraging the fact that Inconsolata is available from 200 to 900. Delivery of 900 seems to fail as of now 900: Biggest, for special elements 700: Bold elements (and titles) 400: regular, for text body 200: Ultra thin, for visual elements or very big texts Example Billy and his shoes — 20/10/2021 @ THE DIRTY BARN Colours# #002a38text #213e48darkest #294d59darker #355a65dark #446874intermediate #86a6b0light #b4c9d0lighter #dbe5e9lightest #f6f5f0background #a54747accent Design# Headings# Heading 1 Heading 2 Heading 3 Heading 4 Paraphraph: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Text elements# drop-cap-word + block: INTROParaphraph: Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. "Frames"# default version "full" version Alert zis is alert Aleeeert aaaaaaaaa Warning Things are bad Waaarning You may panic Success Everything is cool Succeeeesss But you're full of it Blue Nice blue hey Bluuuue Lot of it Dark Dark end So dark Dark end Charcoal Dark end So Charcoal Dark end Details-summary element# Here is a summary. this is a summary that can be clicked to view/hide its details Even though there is not much to see here. left and right aligned elements# I'm here here. And here. These elements are not meant for this text layout, so they might overlap. But they are responsive, as they will merge within the text as a float element on tablets, and as a full width block on mobile. Footnotes are by default right-aligned, but will also turn into a full-width element if the viewport is not wide enough. [1]. [1]Like so. Likewise, those are not meant for this text layout. Forms# Contact Name Email Message: Send Yes No Maybe One Two Three Code highlighting# Here is an inline literal element: cat base_* > base.css Docutils, the software used by pelican to generate this page from RestructuredText, seems to turn inline literals into <tt> elements which are deprecated instead of <code> elements. Might need to be looked into. The <pre> blocks are as of now a loose implementation of the Nord colour theme and remained to be defined. The line numbers disappear on hover to avoid interfering with copy-pasting. Code (without highlighting): 1 usermod nemecle -aG sudo Code (with highlighting): 1 #!/usr/bin/python3 2 """ 3 this is a test script. 4 """ 5 6 7 import re 8 from datetime import datetime 9 10 EXTENSION = "PNG" 11 12 def main(): 13 """ 14 main loop 15 16 """ 17 18 print("Hello world") 19 20 for i in range(0, 10): 21 print(str(i)) 22 return 23 24 25 if __name__ == '__main__': 26 main()
-
Setting IPv6 on a server
2021-04-19
wikisystem administrationweb
Potentially out of date Based on this documentation from OVH adapted for my own uses, on a debian-nginx server First, add to the file /etc/sysctl.conf: 1 net.ipv6.conf.all.autoconf=0 2 net.ipv6.conf.all.accept_ra=0 Then to apply changes: 1 sudo sysctl -p add to /etc/network/interfaces (or /etc/network/interfaces.d/50-cloud-init.cfg for OVH): 1 iface eth0 inet6 static 2 address YOUR_IPv6 3 netmask 128 4 5 post-up /sbin/ip -f inet6 route add IPv6_GATEWAY dev eth0 6 post-up /sbin/ip -f inet6 route add default via IPv6_GATEWAY 7 pre-down /sbin/ip -f inet6 route del IPv6_GATEWAY dev eth0 8 pre-down /sbin/ip -f inet6 route del default via IPv6_GATEWAY For some reasons guides add a indentation but it seems to be counter productive (note to self, read documentation more carefully) And finally to apply it (make sure to have a KVM on hand in case network interfaces fail to come back): 1 sudo /etc/init.d/networking reload The reload command gives more verbose logs. Then add AAAA record on registrar. And finally add to website configuration (nginx): 1 listen [::]:443 ssl http2 default_server; And to apply: 1 sudo service nginx reload
-
Use two different IPs on a single web server
2021-03-22
wikisystem administration
see "two ip one vps": 1 auto ens3 2 iface ens3 inet dhcp 3 4 auto ens3:0 5 iface ens3:0 inet static 6 address <ip#1> 7 netmask 255.255.255.255 8 9 auto ens3:1 10 iface ens3:1 inet static 11 address <ip#2> 12 netmask 255.255.255.255 Will say "failed to raise interface", but ip addr shows it works fine https://docs.ovh.com/gb/en/public-cloud/configure_a_failover_ip/ Configure a failover IP with Debian Configuring the network interface For example purposes, we’re using the following variables: Network interface = ens3 Failover IP address = your_ip_address IP alias = 1 First, connect to your instance via the command line and open up your the network configuration file. # nano /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg Next, edit the file with the configuration shown below. This will prevent changes from being made to your network configuration automatically. # network: {config: disabled} Next, open the network configuration file for editing with the following command: # nano /etc/network/interfaces.d/50-cloud-init.cfg Then edit the file with the following configuration: auto ens3 iface ens3 inet dhcp auto ens3:0 iface ens3:0 inet static address your_ip_address 0 netmask 255.255.255.255 auto ens3:1 iface ens3:1 inet static address your_ip_address 1 netmask 255.255.255.255 Restarting the network service Finally, restart the network service with the following command: service networking restart
-
Ardour
2021-03-22
wikiLinuxDAW
Content Installation JACK/QjackCtl Midi keyboard plugins Noise gate, reverber, flanger, sidechain compressor... Graphic EQ Synthesiser: Helm Geonkick syn-fusion Sound removal Audio tips Recording Mixing Editing Installation# This guide was tested on Debian. install package: sudo apt install ardour follow debian wiki regarding real time capabilities (make sure user is still in the audio group): Add to the end of the file /etc/security/limits.conf: @audio - memlock unlimited Add to file /etc/pam.d/common-session: session required pam_limits.so And you need (contrary to some guides which say that it is a eventuality) to add your own user to the aformentionned audio group: sudo usermod -aG audio nemecle if no sound, https://discourse.ardour.org/t/no-sound/90327/2: Start QJackCTL and click on setup. Then locate the box named “Interface” and click the arrow on the right side of it pointing to the right (do not confuse this with the drop down menu arrow that points down). Here you can see the list of sound devices on your system, select the one you want to use and click “Ok”. Click on “Start” on the QJackCTL interface to start Jack. Now start Ardour and Select Jack as the audio Backend In this picture I have selected Presonus Audiobox 1818VSL as the audio device. Basic plugins sudo apt install eq10q x42-eq calf-plugins JACK/QjackCtl# If you use an audio interface or something, go to settings > advanced and set the input device (might require to fumble around to find the display name for your interface). The "connect" window acts like a literal connection bay: for instance, select the input device on the left and the virtual amp on the right and connect them. You can then simply build a circuit like: [guitar -> ] audio interface -> virtual amp -> Ardour -> system output (headphones/speakers) devices names: Behringer Q502USB: "hw:1 USB Audio CODEC" my laptop (output): "hw: PCH,1 (ALC3232)" Midi keyboard# https://manual.ardour.org/setting-up-your-system/setting-up-midi/midi-on-linux/ plugins# Noise gate, reverber, flanger, sidechain compressor...# sudo apt install calf-plugins Graphic EQ# eq10q and x42-eq, both available as packages on debian-based distributions: sudo apt install eq10q x42-eq The EQ10Q (under the category "plugins" for some reasons) does the job well. Synthesiser: Helm# Geonkick# (drums) https://github.com/geontime/geonkick install redkite as told then dependencies libjack-jackd2-dev, NOT libjack-dev > apt-get install build-essential cmake qjackctl libjack-jackd2-dev libsndfile-dev rapidjson-dev lv2-dev -> open issue once installed ? syn-fusion# Sound removal# This program is actually a standalone. http://isse.sourceforge.net/index.html Audio tips# Recording# 44kHz/16bit info https://www.youtube.com/watch?v=cIQ9IXSUzuM A->D->A More than just avoiding the "red zone", stay well below it: modern 16bit precision means that even a rather "low" sound still has a lot a definition and can be safely amplified. Avoid at all cost a signal that is "too hot" (i.e. close to that danger zone), or dynamics management will be a nightmare. Guitarix (available as a apt package) does a very good job as a virtual amp, as long as the input device is not garbage (i.e. do not use the default mic input on your computer unless you want to make low-cost Lightning Bolt). Mixing# Ensure that individual tracks stay just below -3dB Compress a bit to kill potential hard sound and keep dynamics under control EQ: Boost wide, cut narrow add high shelf and low shelf to keep only useful frequencies chase parasites by setting a narrow positive filter, move it around until something starts resonating, and cut it off boost based on feeling, according to this chart:https://web.archive.org/web/20190417040339/https://www.independentrecording.net/irn/resources/freqchart/main_display.htm de-essing (reduction of "sss" clashing sounds) on human voice if necessary (plugin to find, check http://www.linuxdsp.co.uk/download/lv2/download_dsr500/index.html and https://twinysam.github.io/FreeAudioPluginList/) pan & wide Editing# The screenshot corresponding to the text above. The amplitude of the first audio ends at the bottom ,and the next one start at the top: the speaker will quickly transition between the two, creating a pop. Be careful with "mismatched amplitude" when sticking two audio elements, including when doing video editing. Avoid it by either: doing "snap-to-zero crossing" (always cutting when the amplitude is at zero, but this is not trivial in a video editing software); do a small cross fade; slightly reduce the sound on the last frame of each element; add in the background the "room tone" (i.e., the background sound of the recorded place without any other sound)
-
Mediawiki
2021-03-22
wikiwikimediawiki
Content Installation Update Installation# To do during ansible script creation Update# First, backup the database. The "set history +o" disables the shell history to avoid storing passwords: set +o history sudo mysqldump --user=<user> --password=<password> <database> > /var/backup/<database>/<database>-`date +%d-%m-%y`.sql sudo mysqldump --user=<user> --password=<password> <database> --xml > /var/backup/<database>/<database>-`date +%d-%m-%y`.xml set -o history Then download and extract the release: cd /tmp wget https://releases.wikimedia.org/mediawiki/1.35/mediawiki-1.35.1.tar.gz tar -xvzf mediawiki-1.35.1.tar.gz Copy the existing data and settings into the new release: sudo cp -r wiki/LocalSettings.php wiki_1.35/ sudo cp -r wiki/images/ wiki_1.35/ sudo cp -r wiki/extensions/* wiki_1.35/extensions/ sudo cp -r wiki/resources/assets/logo.png wiki_1.35/resources/assets/ sudo cp -r wiki/skins/* wiki_1.35/skins/ Then switch directory mv wiki wiki_old && mv wiki_1.35 wiki finally: cd maintenance/ sudo php update.php
-
Nextcloud
2021-03-22
wiki
https://websiteforstudents.com/install-nextcloud-on-ubuntu-17-04-17-10-with-nginx-mariadb-and-php/ Content Basic install Use USB connected drive as data directory NFS nginx mariadb php-mcrypt Live DNS Logging Troubleshooting Cannot login, always goes back to login page php settings ignored Error 423 Error 504 "Error when assembling chunk" nextcloud locked files Update fails on intergrity and stuck on step 5 Importing contacts in "Contacts" apps errors Uploads fail silently on android Basic install# Use USB connected drive as data directory# /etc/fstab: UUID=360C3D2F0C3CEB8D /var/external_drive ntfs-3g uid=33,gid=1001,rw,user,exec,umask=007 0 0 Then in config/config.php, set "var/external_drive" as directory (might require to install package for NTFS) NFS# sudo apt update sudo apt install nfs-common test: sudo mount -t nfs 192.168.1.152:/volume1/data /var/data fstab : 192.168.1.152:/volume1/data /var/data nfs rw,sync,hard,intr 0 0 nginx# sudo systemctl stop apache2 sudo systemctl disable apache2 sudo apt install nginx sudo systemctl stop nginx.service sudo systemctl start nginx.service sudo systemctl enable nginx.service mariadb# sudo apt install mariadb-server mariadb-client sudo systemctl stop mariadb.service sudo systemctl start mariadb.service sudo systemctl enable mariadb.service sudo mysql_secure_installation Enter current password for root (enter for none): Just press the Enter Set root password? [Y/n]: Y New password: Enter password Re-enter new password: Repeat password Remove anonymous users? [Y/n]: Y Disallow root login remotely? [Y/n]: Y Remove test database and access to it? [Y/n]: Y Reload privilege tables now? [Y/n]: Y sudo systemctl restart mariadb.service sudo apt install php-fpm php-mbstring php-xmlrpc php-soap php-apcu php-smbclient php-ldap php-redis php-gd php-xml php-intl php-json php-imagick php-mysql php-cli php-ldap php-zip php-curl unzip php-mcrypt# DEPRECATED. See this issue sudo mysql -u root -p CREATE DATABASE nextcloud; CREATE USER '<user>'@'localhost' IDENTIFIED BY 'new_password_here'; GRANT ALL ON nextcloud.* TO '<user>'@'localhost' IDENTIFIED BY 'user_password_here' WITH GRANT OPTION; cd /tmp && wget https://download.nextcloud.com/server/releases/nextcloud-<release>.0.1.zip unzip nextcloud-17.0.1.zip sudo mv nextcloud /var/www/html/nextcloud/ sudo chown -R www-data:www-data /var/www/html/nextcloud/ sudo chmod -R 755 /var/www/html/nextcloud/ sudo nano /etc/nginx/sites-available/nextcloud sudo ln -s /etc/nginx/sites-available/frigg_nemecl /etc/nginx/sites-enabled/ # if network mount: (select /var/data) (chown /var/data) Live DNS# https://github.com/cavebeat/gandi-live-dns sudo apt update && sudo apt upgrade && sudo apt install unzip python-requests python-args python-simplejson cd /tmp && git clone https://github.com/cavebeat/gandi-live-dns.git sudo mv /tmp/gandi-live-dns /opt # Settings: (https://forum.yunohost.org/t/configuration-nextcloud-php-fpm-pm-max-children/10911) in /etc/php/7.x/fpm/pool.d/www.conf: pm = static pm.max_children setting = 8 ; depends on CPU, good on Pi 3 and: sudo service php7.3-fpm restart Logging# Add: "log_type" => "file", "logfile" => "nextcloud.log", "loglevel" => 3, "logdateformat" => "F d, Y H:i:s", to config/config.php https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/logging_configuration.html#file Troubleshooting# Cannot login, always goes back to login page# More often than not, that indicates a permission issue, namely in the nextcloud directory. Simply do (adapt it if needed): sudo chown -R www-data:www-data /var/www/html/nextcloud/ php settings ignored# Also applies for any modification like adding Redis (Redis server went away) If some php settings (typically, memory_limit, as shown in settings > Administration > System) seem to be ignored, you might need to restart the php-fpm service as well. For instance: sudo service php7.3-fpm restart Error 423# sudo -u www-data php occ files:scan --all Error 504 "Error when assembling chunk"# If some php settings (typically, memory_limit, as shown in settings > Administration > System) seem to be ignored, you might need to restart the php-fpm service as well. For instance: in /etc/php/7.x/fpm/pool.d/www.conf, if max_execution_time is low (e.g. 30), raise it to 3600 : max_execution_time = 3600 Then restart fpm service: .. code: sudo service php7.3-fpm restart source nextcloud locked files# https://help.nextcloud.com/t/file-is-locked-how-to-unlock/1883 You can’t access files because they are locked and you find such errors in your logfile: {"reqId":"0DijSqEkfOg2iyh9VD8J","remoteAddr":"xx.xx.xx.xx","app":"webdav","message":"Exception: {\"Message\":\"HTTP\\\/1.1 423 \\\"path\\\/file.extension\\\" is locked\",\"Exception\":\"OCA\\\\DAV\\\\Connector\\\\Sabre\\\\Exception\\\\FileLocked\",\"Code\":0,\"Trace\":\"#0 Manually disable locking state: put Nextcloud in maintenance mode: edit config/config.php and change this line: 'maintenance' => true, Empty table oc_file_locks: Use tools such as phpmyadmin or connect directly to your database and run (the default table prefix is "oc<underscore>", this prefix can be different or even empty): DELETE FROM oc_file_locks WHERE 1 disable maintenance mode (undo first step). Make sure your cron-jobs run properly (you admin page tells you when cron ran the last time): https://docs.nextcloud.org/server/13/admin_manual/configuration_server/background_jobs_configuration.html 1.7k Permanent solution (if it happens regularly) on your own server: Use redis for this feature. It is faster and so far no problems have been reported. You can follow the instructions for memory-caching in the docs: https://docs.nextcloud.org/server/13/admin_manual/configuration_server/caching_configuration.html#id4 6.1k Shared hosting (others who can’t install redis): You can disable the file locking, edit your configuration file config/config.php: 'filelocking.enabled' => false, However, disabling is not a good solution. You can run into problems when several processes try to write to a file (especially online editors in the web-interface). In single-user and single-client environments, it’s probably less of a problem. > sudo service php7.3-fpm restart In addition to the package nextcloud-desktop, you can search for integrations for file managers. For instance caja-nextcloud for MATE. Update fails on intergrity and stuck on step 5# when trying to start update from web interface, updater fails on integrity check, and when page is reloaded it is stuck on "Step 5 is currently in process. Please reload this page later." Typical root cause# Check web server logs (for instance, in /var/log/nginx/, do sudo grep -rn "bytes exhausted") if a message "Allowed memory size of xxx bytes exhausted" appears. if so, server ran out of memory when updating and fails to restart updating process. go into php server setting files (for instance in my case, /etc/php/7.3/fpm/php.ini), and change memory_limit to a higher value, or check php settings ignored Unlocking updater# Once the problem is solved, unlock the updater by logging as the owner of the Nextcloud directory (typically www-data), browse to the directory, and launch: php occ maintenance:repair The updater should be right back again. Source: issue #316 on Github Importing contacts in "Contacts" apps errors# When trying to import contacts from a .vcf file, all fail (e.g.: 200 contacts = 200 errors). Probably has to do with vcf version. Follow this forum post: https://help.nextcloud.com/t/import-vcard-2-1-to-address-book/102812 Uploads fail silently on android# When uploading files from the android file, everything seems fine but files do not appear on server. With Auto-upload, files stop uploading alltogether. Open side panel, go to "uploads": if files (including auto-uploads) show "Local file not found", this is it. Open android settings, and go to Apps > Special app access > All files access > Nextcloud (or search "all files access" and enable it. source: https://www.reddit.com/r/NextCloud/comments/1lu2ba7/local_file_not_found_android_upload/
-
pelican
2021-03-22
wikiCMSstatic site generatorpython
Pelican is a static site generator in python which is not necessarily beautiful out of the box, but offers a lot of control on the generation process. Content More practical work environment Writing Easy styling using html within a .rst file Table of content Configuration Link management clean URLs Theming Using article "summary" Article ordering Translation switch for custom pages Custom home page Navigation menu with article list Articles listed per year List x articles Must have plugins Troubleshooting "TypeError: not all arguments converted during string formatting" More practical work environment# Add to ~/.bashrc the following aliases: 1 alias pc="pelican content" 2 alias pl="pelican --listen" simply build the website py typing pc from the directory, and pl to launch Pelican’s web server. The website can be build without shutting down the server, so you can simply launch the pl command in another terminal (or typically, in another tmux pane) and build the website on the fly. Writing# This part assumes that you use RestructuredText format for your articles. Easy styling# to add a class to a paragraph, use (be careful with the whitespaces to avoid errors): 1 .. class:: warning 2 3 This part assumes that you use RestructuredText format for your articles. Example: the warning just above (assuming you've created the corresponding CSS class)! Multiple ..class can be nested, as long as the empty lines are respected. For instance: 1 .. class:: align-right 2 3 .. class:: side-note 4 5 **Le Règlement Général sur la Protection des Données (RGPD) c'est quoi ?** using html within a .rst file# Use: 1 .. raw:: html 2 3 <details> 4 <summary><b>Here is a summary.</b><br> 5 this is a summary that can be clicked to view/hide its details </summary> 6 Even though there is not much to see here. 7 </details> Result: Here is a summary. this is a summary that can be clicked to view/hide its details Even though there is not much to see here. Table of content# Simply add above your first part title (or anywhere, really): 1 .. contents:: <ToC title> 2 :depth: 2 3 :backlinks: none Result: Content More practical work environment Writing Easy styling using html within a .rst file Table of content Configuration Link management clean URLs Theming Using article "summary" Article ordering Translation switch for custom pages Custom home page Navigation menu with article list Articles listed per year List x articles Must have plugins Troubleshooting "TypeError: not all arguments converted during string formatting" Configuration# Link management# To ensure proper links, working page anchors and website structure: Add <base href="{{ SITEURL }}/{{ output_file }}"/> to HTML header add RELATIVE_URLS = False to pelicanconf.py (and do not override it to True in publishconf.py) Make sure to use {{ SITEURL }}/ in templates, such as href = "{{ SITEURL }}/{{ article.url }}" Use relative links prefixed with "/" to ensure that they start from the root of your website. clean URLs# In the pelicanconf.py file, set the following variables: TAGS_URL = "tags" CATEGORIES_URL = "categories" ARCHIVES_URL = "archives" ARTICLE_URL = "{slug}" ARTICLE_LANG_URL = '{slug}-{lang}' PAGE_URL = "{slug}" PAGE_SAVE_AS = "{slug}.html" PAGE_LANG_URL = 'pages/{slug}-{lang}' CATEGORY_SAVE_AS = 'categories/{slug}.html' CATEGORY_URL = 'categories/{slug}' TAG_SAVE_AS = 'tags/{slug}.html' TAG_URL = 'tags/{slug}' The result will be urls of the form example.com/making-soup or example.com/categories/linux. To ensure that these links are used, you also need to configure the web server. In the case of nginx: location = / { index index.html; } location / { root /var/www/example.com/; try_files $uri.html $uri =404; } Theming# Using article "summary"# Use the striptags filter to avoid having <p class = "first"> garbage in your meta description: 1 {% if article.summary %} 2 <meta property="og:description" content="{{ article.summary|striptags|safe }}"> 3 {% endif %} Article ordering# By default articles are ordered in "reverse-date". But any metadata (with a "reverse-" prefix to... reverse) can be used: for instance, this wiki uses "title", like this in pelicanconf.py: 1 ARTICLE_ORDER_BY = "title" See Ordering content for more details. Translation switch for custom pages# To get translation links for custom page (:save_as: and :template:), edit the translations.html from the theme and the following new macro: 1 {% macro translations_for_page(page) %} 2 <div> 3 {% if page.translations %} 4 <span class = "block">{{ page.lang }}</span> 5 {% for translation in page.translations %} 6 <a class = "inverted-block" href="{{ SITEURL }}/{{ translation.url }}" hreflang="{{ translation.lang }}">{{ translation.lang }}</a> 7 {% endfor %} 8 {% endif %} 9 </div> 10 {% endmacro %} This new macro is called translation for page. And then call it using the following jinja code (or copy-paste it from another template and adapt it): 1 {% import 'translations.html' as translations with context %} 2 {% if translations.translations_for_page(page) %} 3 {{ translations.translations_for_page(page) }} 4 {% endif %} For good mesure, here is the content of the file content/pages/index_wiki-fr.rst, which corresponds to the french homepage of this wiki: 1 Wiki 2 ######## 3 4 :date: 2021-09-29 5 :template: custom/index_wiki 6 :save_as: wiki/index-fr.html 7 :slug: wiki/index 8 :category: wiki 9 :lang: fr 10 :status: published Custom home page# To write properly Do not modify the "index.html" file hoping to change the homepage: this file is also used for the category, tags and archives pages, which will probably be messed up if you change it. Instead, create a custom template. follow https://stackoverflow.com/questions/55363180/how-do-i-choose-a-category-page-to-be-the-home-page-for-a-pelican-site /!template "homepage" must be in content/templates and exclude it, as weird as it is then, https://stackoverflow.com/questions/19283880/querying-for-specific-articles-via-tag-category-in-pelican-themes Navigation menu with article list# <-- As an example, this wiki uses this. Both the default (and most popular) theme "notmyidea" and the basic boiletplate theme "simple" gives a confusing example: the way they iterate on categories is: 1 {% for cat, null in categories %} 2 <li{% if cat == category %} class="active"{% endif %}><a href="{{ SITEURL }}/{{ cat.url }}">{{ cat }}</a></li> 3 {% endfor %} It would be tempting to add a loop under it iterating every articles and checking if the current category being processed is the same, but as it turns out the return value being negated by the "null" is the list of the articles in the given category. So simply do: 1 {% for cat, category_articles in categories %} 2 <li><a class = "category" href="{{ SITEURL }}/{{ cat.url }}">{{ cat }}</a> 3 <ul> 4 {% for artic in category_articles %}<li><a href = "{{ artic.url }}">{{ artic.title }}</a></li> 5 {% endfor %} 6 </ul></li> 7 {% endfor %} Articles listed per year# A common way to list articles on personal websites nowaday is to list them by year like so: 2021 I saw a nice rock yesterday 2020 I'm giving up on that blog More articles to come this year! 2019 A long essay on consciousness New blog! To do so in pelican, here is a skeleton template to use within templates.index.html: 1 <ul class = "article-list"> 2 {% for year, year_posts in articles_page.object_list|groupby('date.year')|reverse %} 3 <h2>{{year}}</h2> 4 {% for article in year_posts %} 5 <li> 6 <article> 7 <header> 8 <h2> 9 <a href="{{ SITEURL }}/{{ article.url }}" rel="bookmark" title="Permalink to {{ article.title|striptags }}"> 10 {{ article.title }} 11 </a> 12 </h2> 13 </header> 14 </article> 15 </li> 16 {% endfor %} 17 {% endfor %} 18 </ul> Explanation: the heavylifting is done by the articles_page.object_list|groupby('date.year')|reverse which groups articles per year with the newest ones at the top. The resulting list is unpacked as the year + the list of articles for that year, the latter being iterated on by a second loop. List x articles# If for instance you only want to list the first three articles of a category, you can use the counter tag like so (in this example, 3 articles will be listed): 1 <div class = "image-gallery"> 2 {% set counter = namespace(value=0) %}{% for article in articles if ("miscellaneous_digital_drawings" in article.subcategories and counter.value < 3) %}<a href = "{{ SITEURL }}/{{ article.url }}"><img src="{{ article.cover_image }}" alt="{{ counter.value }}"></a>{% set counter.value = counter.value + 1 %} 3 {% endfor %} 4 </div> Must have plugins# Refer yourself to the `pelican-plugins<https://github.com/getpelican/pelican-plugins/>`__ repository for more informations headerid: adds relative links to section headers Troubleshooting# "TypeError: not all arguments converted during string formatting"# https://stackoverflow.com/questions/54047848/pelican-not-all-arguments-converted-during-string-formatting/55130515#55130515
-
Siril
2021-03-22
wikiAstrophotographyastrophoto
Content Bias/offset Dark Lights Comets Sources Bias/offset# inherent noise of sensor Can be taken once and used for months Temp doesn't matter very much for most cams Take 20-40 frames with lens cap on, shortest exposure available, same ISO Open Siril, set work dir, add all raws, convert (no debayer /!, keep all channels) Then stacking > median stacking, no normalisation Dark# Thermal noise during or After shooting (temp important), same params but with lens cap on Open Siril, set work dir, add all raws, convert (no debayer /!, keep all channels) basic: Then stacking > median stacking, no normalisation most optimal : average stacking with rejection, no normalisation, Winsorized sigma clipping (if rejection ends up > 0.5%, fall back to median stacking, no norm) Lights# Simple photos of the object In siril, change dir, set seq name, convert WITH debayer Registration: registration method "Global star", else don't change settings Comets# Sources# basics: https://www.youtube.com/watch?v=qYXd0rrAzjg pre-process: https://www.youtube.com/watch?v=RswLpEE7EZ4 https://free-astro.org/index.php/Siril:Tutorial_preprocessing
-
Updating linux
2021-03-22
wiki
Content Updating Linux Updating Linux# 1 sudo apt upgrade && dist-upgrade && autoremove && autoclean
-
Web development
2021-03-22
wikiwebdevelopmentnetworknginxpelicanhttpsUXUIdesign
Content Writing Colours Design Typography html5 CSS Serving Default "catch all" nginx server block Allow "window.print()" with Content Security Policy Test Security https/SLL CORS Performance Accessibility SEO link sharing Writing# Colours# There is no "systematic" approach to colours: it's all a matter of design decision. Do not fall into the whole "triad/split complementaries" trap from palette creation tools. Choose a main "colour" with multiples shades and tints, and a main accent colour. Build a palette from that, and add necessary colours (e.g. warnings and success texts) based on how good they look with the rest. An interesting article on the subject: Building Your Color Palette on refactoringui.com. The only framework for palette creation is AA(A) colour constrasts (see Accessibility). For instance, first choose a text colour and a background color: #002a38text #f6f5f0background The choose an "accent" colour for elements that need to pop: #002a38text #f6f5f0background #a54747accent Then choose intermediate colours, for nuance and more or less important elements: #002a38text #294d59darker #446874intermediate #b4c9d0lighter #f6f5f0background #a54747accent Depending on your needs, you might require more nuances: #002a38text #213e48darkest #294d59darker #355a65dark #446874intermediate #86a6b0light #b4c9d0lighter #dbe5e9lightest #f6f5f0background #a54747accent And finally add colours for specific cases such as error messages, warning… etc: #c72323;red #eea828;orange #e8e852;yellow #47b787;green #5057ba;blue #7d517d;purple #ffe3ff;lila #88b4a8;flat-green #333333;charcoal The colours should be defined using CSS's variables to ensure consistency between elements. Design# Typography# Knowledge# better typography CSS https://betterwebtype.com/articles/2018/10/15/rhythm-in-web-typography/ web typography https://css-tricks.com/typography-for-developers/ webfont guide https://www.freecodecamp.org/news/web-fonts-in-2018-f191a48367e8/ vertical rythm https://www.gridlover.net/try Notable typefaces# atypical open-source typefaces http://velvetyne.fr/ Tools# (Kind of broken) @font-face CSS rules and various format generator (woff woff2 ttf) https://transfonter.org/ Typical workflow# typeface/font downloader ttf woff woff2 https://google-webfonts-helper.herokuapp.com/fonts/zilla-slab?subsets=latin,latin-ext Add latin-ext if available Copy and paste font-face CSS rules, add font-display: swap; html5# favicon# How to Favicon in 2025: Three files that fit most needs boilerplate# Partially inspired by this 1 <!DOCTYPE html> 2 <html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml"> 3 <head> 4 <meta charset="UTF-8" /> 5 <meta name="viewport" content="width=device-width, 6 initial-scale=1.0"> 7 <title>home | nemecl.eu</title> 8 <base href="https://nemecl.eu/"/> 9 <meta name="title" content="home | nemecl.eu"> 10 <meta name="description" content="Homepage for nemecl.eu. Homemade interwebz, some kind of chaos garden."> 11 12 <link rel="icon" href="/favicon.ico" sizes="32x32"> 13 <link rel="icon" href="/favicon.svg" type="image/svg+xml"> 14 <link rel="apple-touch-icon" href="/apple-touch-icon.png"><!-- 180×180 --> 15 16 <link rel="preload" href="main.css" as="style"> 17 <link rel="preload" href="https://rsc.aligot-death.space/css/base.css" as="style"/> 18 19 <link rel="preload" href="/rsc/webfonts/inconsolata/inconsolata-v20-latin-ext_latin-regular.woff2" as="font" type="font/woff2" crossorigin="anonymous"> 20 21 <link rel="stylesheet" href="https://rsc.aligot-death.space/css/base.css" type="text/css" /> 22 <link rel="stylesheet" href="main.css" /> 23 24 <link rel="canonical" href="http://nemecl.eu/"> 25 <meta property="og:title" content="home | nemecl.eu"> <meta property="og:locale" content="en_GB"> 26 <meta property="og:type" content="website"> 27 <meta property="og:url" content="http://nemecl.eu/"> 28 <meta property="og:description" content="Homepage for nemecl.eu. Homemade interwebz, some kind of chaos garden."> 29 <meta property="og:image" content="https://rsc.aligot-death.space/images/favicon.png"> 30 31 <meta name="twitter:card" content="summary"> 32 <meta name="twitter:title" content="nemecl.eu"> 33 <meta name="twitter:url" content="https://nemecl.eu"> 34 <meta name="twitter:site" content="@nemecle"> 35 <meta name="twitter:description" content="Welcome to my small patch of homemade interwebz, some kind of chaos garden."> 36 <meta name="twitter:image" content="https://rsc.aligot-death.space/images/favicon.png"> 37 <!--<base href = "https://nemecl.eu"/>--> 38 39 <meta name="theme-color" content="#eaeaea"> 40 41 <script src="https://rsc.aligot-death.space/scripts/instant-page_5.1.0.js" type="module"></script> 42 43 <meta name="format-detection" content="telephone=no"> 44 <meta name="twitter:dnt" content="on"> 45 </head> 46 <body> <article> is not "article" as in blog post, but as in "shop article": you can use it for instance for a list of articles. An article would simply be in a <main> element, under a <section> in necessary CSS# sort CSS properties by alphabetical order https://jerrylowm.medium.com/alphabetize-your-css-properties-for-crying-out-loud-780eb1852153 "classless" CSS is a framework that doesn't use html classes or IDs, and only leverages html elements. It's not necessarly a good idea to apply it to everything but using as little classes and IDs as possible makes writing pages easier. Avoid margin to simplify layout management: Margin considered harmful "full-bleed" layout: a flexible layout for width-contrained content, while allowing exceptions. See this article Serving# Default "catch all" nginx server block# from nginx documentation. 1 http { 2 index index.html; 3 4 server { 5 listen 80 default_server; 6 server_name _; # This is just an invalid value which will never trigger on a real hostname. 7 access_log logs/default.access.log main; 8 9 server_name_in_redirect off; 10 11 root /var/www/default/htdocs; 12 } 13 } Allow "window.print()" with Content Security Policy# Need to add sandbox allow-modals to CSP header Test# General test for DNS, HTTPS, content...: https://check-your-website.server-daten.de/?q=nemecl.eu ct.css: check html head informations https://github.com/csswizardry/ct Security# https://infosec.mozilla.org/guidelines/web_security https://blog.vnaik.com/posts/web-attacks.html https/SLL# certbot cron# 1 0 2 * * 1 certbot certonly --agree-tos -m nemecle@riseup.net -n --webroot -w /var/www/txt.nemecl.eu -d txt.nemecl.eu && service nginx reload CSP for simple static website# 1 add_header Content-Security-Policy "default-src self https://rsc.aligot-death.space; child-src 'none'; object-src 'none'; require-trusted-types-for 'script';"; CORS# if CORS "was blocked because of a disallowed MIME type (“text/html”)." for a js file, might 404/40* Performance# https://web.dev/measure/ Accessibility# log in: two steps is bad: let enter email&passwd, and if no account expand second passwd field etc accessibility test: ctrl+win+enter for windows narrator https://www.matuzo.at/blog/i-totally-forgot-about-print-style-sheets/ Testing print style: https://www.matuzo.at/blog/i-totally-forgot-about-print-style-sheets/ tota11y, accessiblity tool in the browser https://webaim.org/resources/contrastchecker/ Simple speech synthesis SEO# Test twitter integration: https://cards-dev.twitter.com/validator link sharing#
-
Windows
2021-03-22
wikiwindows
Content Error "80004005" when connecting to a network drive Oculus Rift & Nvidia drivers Windows Process audit Reinstall Windows Store from Powershell Error "80004005" when connecting to a network drive# if you can ping (but uses IPv6) and access it through web interface, but Windows Explorer gives "80004005" error, disable IPv6 and flush dns cache by launching from cmd: 1 ipconfig /flushdns Given that everyone keeps giving ipv6 literal .net, I guess SMB in windows can't ipv6 https://docs.netapp.com/ontap-9/index.jsp?topic=%2Fcom.netapp.doc.cdot-famg-cifs%2FGUID-37002578-913C-4883-8328-731FB1EAB558.html but might be a protocol mismatch in some cases: try disabling SMB 1.0 (archive) Oculus Rift & Nvidia drivers# Oculus "Update your graphics card drivers" : update it from Geforce Experience, not from website DL Windows Process audit# https://processhacker.sourceforge.io/ Reinstall Windows Store from Powershell# https://www.winhelponline.com/blog/restore-windows-store-windows-10-uninstall-with-powershell/
-
Avoid have to type SSH passphrase everytime
2021-03-22
wikisystem administration
from How to avoid being asked passphrase each time I push to Bitbucket 1 ssh-add
-
"can't read superblock"
2021-03-22
wikisystem administration
Not necessarly a drive fault, can for instance mean that it doesn't have enough power for external drive https://askubuntu.com/questions/539880/cant-mount-an-ide-hdd-cant-read-superblock-error-message
-
Direct kernel communication
2021-03-22
wikisystem administration
Can be useful in case of partially stalled or locked system Alt, press SysRq (The SysRq being the Print Screen key), release SysRq, press <command key>, Hit ALT-SysRq-<command key>, release everything. Or if possible, 1 echo t > /proc/sysrq-trigger with t being the command key. See the wikipedia page for full command key list. Can't beat a tool that has a "Perform a system crash" feature.
-
ffmpeg
2021-03-22
wikisystem administration
Content Creating a timelapse Concatenate ".ts" files from local record Creating a timelapse# 1080p/30i with jpg files: 1 ffmpeg -framerate 30 -pattern_type glob -i '*.jpg' -c:v libx264 -r 30 -pix_fmt yuv420p -s hd1080 out.mp4 Concatenate ".ts" files from local record# For instance, if you made a local record using OBS Create file list: File order might be wrong, to fix 1 (for %i in (*.ts) do @echo file '%i') > mylist.txt Then concatenate to a single mp4 file: 1 ffmpeg -f concat -i mylist.txt -c copy output.mp4
-
Changing the theme for GTK from CLI
2021-03-22
wikisystem administration
(for instance, If you use typical GTK utilities in i3) 1 vim $HOME/.config/gtk-3.0/settings.ini Example config: 1 [Settings] 2 gtk-icon-theme-name = Paper 3 gtk-theme-name = Arc-Darker 4 gtk-font-name = DejaVu Sans 11
-
Managing multiple screens from CLI/i3wm
2021-03-22
wikisystem administration
install xrandr. On debian, do: sudo apt install x11-xserver-utils More often than not, this is enough: xrandr --auto to see possible settings, type: xrandr to add a second screen next to a 2560x1440, plugged on HDMI2: xrandr --output HDMI-2 --pos 2560x0 --mode 1920x1080 --rate 60 Remove a screen: xrandr --output HDMI-2 --off
-
Linux
2021-03-22
wikisystem administration
-
Linux performance monitoring tools
2021-03-22
wikisystem administration
See http://www.brendangregg.com/linuxperf.html
-
Mounting secondary drive on boot
2021-03-22
wikisystem administration
Content Emergency mode sudo blkid sudo umount /mnt/xxx vim /etc/fstab: if in doubt, just pu UUID, mount point, FS type and "defaults 0 0" Emergency mode# Happened to me as I changed my DATA HDD. because I added it to /etc/fstab and the disk wasn't the same anymore, the system would drop into emergency mode. Once connected, try mounting all mount points and see errors: mount -a
-
Easy network management from terminal
2021-03-22
wikisystem administration
Might requires to install nmcli on some distros. Make sure to do it before you're disconnected. the nmcli utility is very easy and useful to manage network settings, including Wi-fi connections. For instance, listing available Wi-Fi networks: 1 nmcli d wifi list Connecting to a wifi network: 1 nmcli d wifi connect "Super Wifi" password "John19970612"
-
Post-install
2021-03-22
wikisystem administration
1 usermod nemecle -aG sudo To install missing firmware (as printed during boot sequence), this command might be enough: 1 sudo apt install firmware Basic packages to install: 1 sudo apt install vim sysstat mlocate tmux python3-pip htop rofi xbindkeys keepassxc rsync fd-find hwinfo gparted curl
-
Recovering from deleted /boot/efi (dual boot)
2021-03-22
wikisystem administration
the "/boot/efi" partition used to boot is not exclusive to Linux: it is shared with Windows, and thus you can (and should) provide it to utility tools that fix boot. It is usually on /dev/sda2. You can ls -l /boot/efi from a functioning linux to check its content. The command to "install" grub requires to provide the disk, not a specific partition (e.g. /dev/sda, not /dev/sda2) The following lines are a crude hint, the full operation might require some other mounting. First, create a live USB/CD system, and boot on it. Then we mount the dead system to be able to work with it: 1 for i in /dev /dev/pts /proc /sys /sys/firmware/efi/efivars /run; do sudo mount -B /mnt$i; done And we chroot to act as if we were on the dead system: 1 chroot /mnt Then we mount the EFI partition: 1 mount /dev/sda2 /boot/efi And finally we execute the "grub-install" command: The bootloader-id argument will be the name appearing in the EFI boot list if you go to the boot menu. Type the following command very carefully, a lot of people online seem to have errors simply due to typos: 1 sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck --debug /dev/sda You may eventually do (once you left chroot with exit like any shell instance): 1 update-grub
-
Safe bash script boilerplate
2021-03-22
wikisystem administration
from full boilerplate here https://betterdev.blog/minimal-safe-bash-script-template/ Add right after shebang: 1 set -Eeuo pipefail
-
Using SSH as a VPN
2021-03-22
wikisystem administration
1 ssh -NTCD 12345 SSH_remote_host_IP Then in firefox Preference > Network Setting > Settings… proxy as socks with 127.1:12345 Or for a SSH 1 ssh -o ProxyCommand='nc -x localhost:12345 %h %p' username@Far_Away_Host from: https://blog.gwlab.page/vpn-over-ssh-the-socks-proxy-8a8d7bdc7028 or sshuttle
-
SSH tunnel
2021-03-22
wikisystem administration
ssh -p 34423 -f nemecle@frigg.nemecl.eu -L 5001:192.168.1.152:5000 -N Then open browser and go to http(s)://localhost:5001
-
Use "thin non-breaking space"
2021-03-22
wikisystem administration
Useful for french typography. On Plasma Desktop: Settings > Keyboard > Key Bindings check "Configure keyboard options" search for "non-breaking" check "non-breaking space at the third level for Alt-Gr + Space (for other combinations like Shift + Space, see https://forums.linuxmint.com/viewtopic.php?t=362965)
-
vim battle hardened config
2021-03-22
wikisystem administration
" BASIC CONFIG set encoding=utf-8 syntax on set nu set rnu set hls set sm set smarttab set nocompatible set scrolloff=30 set backspace=indent,eol,start " backspace over everything in insert mode set ignorecase " do case insensitive search set incsearch " show incremental search results as you type " STYLE " colorscheme peachpuff highlight LineNr ctermfg=black ctermbg=grey let g:indentLine_color_term = 239 " MAPPING noremap <space> : nnoremap <F2> za " Enable folding with F2 " Always show statusline set laststatus=2 set t_Co=256" set foldmethod=indent set foldlevel=99 set tabstop=4 set softtabstop=4 set shiftwidth=4 set textwidth=79 set wrapmargin=0 set expandtab set autoindent set fileformat=unix " web au BufNewFile,BufRead *.html,*.css,*js \ set tabstop=2 | \ set softtabstop=2 | \ set shiftwidth=2 autocmd BufRead,BufNewFile /etc/nginx/sites-*/* setfiletype conf " to test " Bind key to run python3 " map :w\|!python3 % " " Bind key to run doctests in a python3 module " map :w\|!python3 -m doctest % " " Bind key to run doctests with verbose output " map :w\|!python3 -m doctest -v % " " Bind key to run pep8 Python style checker " map :w\|!pep8 %
-
WAcom tablet configuration
2021-03-22
wikisystem administration
CLI commands for left-handed, second screen excluded: 1 xsetwacom set "Wacom Bamboo 16FG 4x5 Pen stylus" rotate HALF 2 xsetwacom set "Wacom Bamboo 16FG 4x5 Pen eraser" rotate HALF 3 xsetwacom set "Wacom Bamboo 16FG 4x5 Pen stylus" MapToOutPut 1920x1080+0+0 4 xsetwacom set "Wacom Bamboo 16FG 4x5 Pen eraser" MapToOutPut 1920x1080+0+0 To debug: (from Measuring level of pressure in wacom, tablets or other devices) Windows: java JWinPointer. Linux sudo apt-get install evemu-tools evtest, then sudo evtest (sudo is necessary) the GIMP configuration: https://digimend.github.io/support/howto/apps/gimp/
-
Simple log analyzer for web traffic
2021-03-22
wikisystem administration
sudo apt install goaccess Then use like: cd /var/log/nginx goaccess example.com.access.log If your logs are setup as "combined" (multiple vhosts per file): goaccess example.com.access.log --log-format=COMBINED To concatenate multiple files: sudo zcat aligot-death.space.access.log.*.gz | goaccess --log-format=COMBINED
-
000003.JPG
2021-02-23
art
-
000007.JPG
2021-02-23
art
-
000008.JPG
2021-02-23
art
-
000011.JPG
2021-02-23
art
-
000012a.JPG
2021-02-23
art
-
000016.JPG
2021-02-23
art
-
000030.JPG
2021-02-23
art
-
000033.JPG
2021-02-23
art
-
_DSC0849.jpg
2021-02-23
art
-
_DSC0855.jpg
2021-02-23
art
-
_DSC0861.jpg
2021-02-23
art
-
_DSC0866.jpg
2021-02-23
art
-
_DSC0874.jpg
2021-02-23
art
-
DSC00093_01.jpg
2021-02-23
art
-
DSC00272e.jpg
2021-02-23
art40deg
-
DSC00268e.jpg
2021-02-23
art40deg
-
DSC00151e.jpg
2021-02-23
artthunderstorms40deg
-
DSC00211e.jpg
2021-02-23
artthunderstorms40deg
-
Détecter un logiciel espion sur un smartphone avec TinyCheck
2021-02-15
txtIT
EDIT: Tinydesk a semblerait-il disparu de la toile. Ce guide n'est donc plus applicable, puisque comme toute application de sécurité, TinyDesk dépendait de mises à jour régulières. Ce tutoriel a vocation a rendre le plus accessible possible pour des personnes non techniciennes un outil qui peut s'avérer utile dans des situations à risque. Si vous savez ce que vous faites, préférez le tutoriel disponible sur le wiki du projet originel. TinyCheck est un projet créé par des membres de la firme de sécurité Kaspersky et qui permet de détecter la présence de logiciels espions (dits "stalkerware") sur un smartphone. Son principe de fonctionnement et son utilisation sont assez simples, même si son installation elle-même nécessite un peu de connaissances ou bien d'être guidé. Son fonctionnement est le suivant : il crée un réseau Wi-Fi temporaire auquel on connecte le smartphone, on fait une utilisation typique de l'appareil, et TinyCheck analyse le trafic qui a circulé pour détecter des comportements typique de stalkerwares. Ces programmes peuvent être installés par des personnes mal intentionnées, allant du simple parent un peut trop intrusif à des groupes de surveillance, étatiques ou non. La page Github du projet mentionne d'ailleurs que cet outil a originellement été mis au point pour être mis à disposition dans des foyers pour femmes. Sommaire Installation Matériel Préparation du Raspberry Pi Installation du logiciel Utilisation Analyser et comprendre les résultats Que faire en cas de compromission ? Installation# Matériel# Un Raspberry Pi modèle 3 (qui a bien vécu) Ce projet tourne à l'aide d'un RaspBerry Pi, un petit ordinateur de la taille d'une carte de crédit et coûtant (seul) quelques dizaines d'euros selon les modèles. En l'occurence, il faut un modèle "récent" disposant du Wi-Fi, c'est à dire un modèle 3 ou 4. Pour pouvoir s'en servir, il faudra également une carte micro SD, un chargeur de smartphone pour l'alimenter, et au besoin un adaptateur pour le brancher sur un écran : les modèles "4" récents utilisent d'ailleurs un branchement "mini-HDMI". Pour simplifier la vie, Les sites revendeurs comme Kubii proposent des kits clef en main, comme ce Starter Kit Raspberry Pi 4 2GB. Si vous êtes sur Mac OS ou Linux, des instructions d'installation sont disponibles sur le site officiel Préparation du Raspberry Pi# Il faut donc pour commencer préparer la carte micro SD pour installer le système. Pour cela, il suffit de chercher sur le web "raspberry pi os" et de cliquer sur le lien "Raspberry Pi OS – Raspberry Pi" : Une fois sur le site, descendre jusqu'au bouton "Download" qui devrait proposer la version adaptée à votre ordinateur : Enregistrer le fichier alors proposé, ouvrir ses téléchargements et lancer le fichier. Si vous êtes sur Windows, une fenêtre de sécurité bloquant le lancement peut s'afficher : simplement cliquer sur "Informations complémentaires" puis sur "Exécuter quand même". Faire l'installation en cliquant simplement sur "Install", puis une fois fini sur "Finish". Le logiciel se lance alors. Au besoin, vous pouvez le retrouver sur votre ordinateur sous le nom "Rapberry Pi Imager". Brancher alors la carte micro SD dans l'ordinateur à l'aide d'un adaptateur (USB et/ou SD). Dans le logiciel : Cliquez sur "Choisissez l'OS", et sélectionner le premier choix "Raspberry Pi OS (32bit)" ; Cliquez sur "Choisissez la carte... " et sélectionner la carte micro-SD : si plusieurs choix s'offrent à vous, basez vous sur la taille de la carte pour savoir laquelle est la bonne. Attention, les donneés de la carte sélectionnée seront effacées, pensez à les copier si vous ne souhaitez pas les perdre et à vérifier trois fois qu'il s'agit bien de la bonne. Cela donne par exemple : Enfin, cliquer sur "écrire", et validez en cliquant sur "Oui". L'opération d'écriture peut durer entre 10 minutes et une heure selon les performances de votre installation : ne débranchez pas la carte, prenez une tasse de votre boisson préférée et attendez le message vous indiquant que tout est fini. Installation du logiciel# Insérez la carte micro SD dans le Pi, puis branchez un écran (avec un adaptateur si nécessaire), un clavier et une souris, ainsi qu'un câble Ethernet : ne passez pas par le Wi-Fi pour vous connecter à internet, car il sera utilisé par le logiciel. Enfin, branchez l'alimentation. Le Raspberry Pi devrait allumer une diode rouge indiquant qu'il est alimenté, ainsi qu'une diode verte indiquant qu'il travaille. Si tout se passe bien, l'écran devrait afficher un carré arc-en-ciel, puis arriver sur un bureau. Le Pi va éventuellement vous demander de choisir une disposition clavier (mettre French) et de faire une mise à jour, à la suite de laquelle il redémarrera. Sinon, la première chose à faire pour se faciliter la vie est de changer la disposition de clavier en français (ou tout autre clavier que vous avez). Pour cela, cliquer sur la framboise en haut à gauche, puis sur "Preferences" et enfin "Mouse and keyboard settings". Dans la fenêtre qui s'ouvre, cliquer sur "Keyboard", puis sur "Keyboard layout" (disposition clavier). Enfin, cherchez votre disposition clavier (par exemple, "French" pour français) en face de "Layout", cliquer sur "OK" et attendre quelques secondes que les paramètres soient appliqués. Ensuite, il faut lancer un terminal. Pour cela, cliquer sur le carré noir écrit ">_" en haut. Nous allons taper des commandes textuelles pour l'installation, une par une. Le bout de texte "pi@raspberrypi:~ $" (appelé prompt) déjà présent indique que le terminal est prêt à recevoir une commande : il réapparaitra en dessous du résultat quand la commande précédente sera finie. Il faut donc bien attendre celui-ci. Bien penser à appuyer sur la touche "Entrée" pour lancer une commande une fois celle-ci tapée. Taper les commande suivantes (tel qu'également indiquées dans le tutoriel de TinyCheck) : Se rendre dans le dossier temporaire "/tmp" : cd /tmp Cette commande s'exécute quasi immédiatement. Ensuite, lancer le téléchargement du projet depuis Github : git clone https://github.com/KasperskyLab/TinyCheck Se rendre dans le dossier alors créé : cd TinyCheck Et enfin lancer l'installation : sudo bash install.sh Au bout de quelques minutes, le programme vous posera quelques questions. Il est conseillé de répondre comme suit : [?] The interface eth0 is connected. Do you want to use it as a bridge to Internet (network/out) ? [Yes/No] Le logiciel demande s'il peut utiliser le câble "Internet" pour disposer d'internet. Taper "yes" et appuyer sur la touche "Entrée". [?] The interface wlan0 can be used for the Wi-Fi Access Point. Do you want to use it for the TinyCheck Access Point ? [Yes/No] yes Le logiciel demande s'il peut utiliser le Wi-fi pour proposer l'accès nécessaire à son fonctionnement. Taper "yes" et appuyer sur la touche "Entrée". [+] Setting the user language... Please choose a language for the reports and the user interface (en/fr/cat/es): fr Le logiciel demande la langue à utiliser : l'équipe ayant des personnes francophones en son sein, le français est disponible : taper "fr" et appuyer sur la touche "Entrée". [+] Setting the backend credentials... Please choose a username for TinyCheck's backend: bob Please choose a password for TinyCheck's backend: Please confirm the password: Le logiciel demande de créer un identifiant et un mot de passe : rentrer un nom (sans accent, majuscule ou espace), appuyer sur la touche "Entrée" pour valider, taper le mot de passe, appuyer à nouveau sur la touche "Entrée" pour valider, et retaper le même mot de passe pour confirmer (et vous ne devinerez jamais, appuyez sur la touche entrée pour valider). [?] Do you want to start TinyCheck in fullscreen during the system startup (aka. Kiosk mode)? [Yes/No] Le logiciel demande s'il doit se lancer dès le démarrage du raspberry pi : taper "no" pour l'instant, et appuyer sur la touche "Entrée" pour valider. L'installation va continuer un peu, puis le logiciel affichera une simili fenêtre dans le terminal pour demander s'il doit laisser l'accès à un mode spécial du Wi-Fi aux autres comptes : simplement appuyer sur la touche "Entrée" pour répondre non : L'installation à proprement dit commence alors et va tourner pendant un bon moment, possiblement plus d'une heure. N'hésitez pas à faire autre chose à côté. L'utilitaire va alors tourner pendant un bon moment afin de mettre en place tous les éléments nécessaires à son fonctionnement. À la fin de l'installation, le programme redémarre alors le pi : si vous n'avez pas eu la fenêtre de sélection de langue lors du premier démarrage, celle-ci s'affichera alors. Comme indiqué prédédemment, sélectionner l'option "French". Une icône est désormais présente sur le bureau : le logiciel est prêt à être utilisé. Utilisation# Tout d'abord, vérifier si le Wi-Fi est activé : pour cela cliquer sur les deux flèches bleues "⇵" en haut à droite de l'écran. Si l'option "Turn Wi-fi On" apparait, cliquer dessus, sinon si "No Wireless network found" apparait c'est que tout est bon. Double-cliquer sur l'icône appelée "TinyCheck" sur le bureau, et dans la fenêtre qui s'affiche cliquer sur "Exécuter" (et non "Exécuter dans un terminal") : Le navigateur internet s'ouvre, et après quelques secondes de chargement l'interface s'affiche : Le logiciel crée alors un réseau Wi-Fi temporaire : cela peut prendre plusieurs secondes. Si cela dure plus d'une minute, revérifier que le Wi-Fi est allumé comme indiqué précédemment. Il affiche ensuite les informations de connexion : connecter le smartphone en activant son wi-Fi et au choix en rentrant le nom et le mot de passe ou en scannant le QRCode. Très important : il faut couper les "données mobiles" (3G, 4G, etc) du smartphone pour s'assurer que toutes les données transit par le Wifi : pour cela, se rendre dans les paramètres dans la catégorie "Réseaux mobiles" et décocher l'option "données mobiles" : la procédure peut changer selon les modèles, ne pas hésiter à se renseigner sur le web. Penser également à les réactiver après. Pour ne pas créer des incohérences, ne pas essayer de connecter plusieurs appareils en même temps. Une fois connecté, le logiciel lance tout seul le scan et affiche un chronomètre indiquant depuis combien de temps le scan tourne. Il faut alors utiliser le smartphone de manière "typique", en lançant les applications régulièrement utiliseés, ouvrir une page web, et également lancer un redémarrage de l'appareil, car certains logiciels espions s'actionnent au moment du démarrage. Après quelques minutes d'utilisation (le plus longtemps ça dure le mieux c'est), cliquer sur "Arrêter la capture". Ensuite, cliquer sur "Oui, allons-y" pour lancer l'analyse : celle-ci peut durer plusieurs minutes. Une fois fini, le logiciel affichera un compte rendu rapide Il ne faut pas prendre ce compte-rendu au pied de la lettre, mais jeter un œil au rapport complet et le comprendre. Analyser et comprendre les résultats# Le logiciel peut potentiellement afficher un écran effrayant comme celui-ci : Celui-ci se contente de checher des "Indicateurs de compromission" (Indicators of compromise, IoC). Le nom est approprié car cela n'est pas forcément révélateur d'une compromission, seulement d'une éventualité. Généralement les comportements atypiques mais bénins ressortiront comme de niveau "faible" ou "moyen". Une alerte de niveau "élevé" est en revanche mauvais signe, car généralement dû à un comportement malveillant bien reconnu. En cliquant sur "Lire le rapport complet", nous pouvons consulter le résultat détaillé : Dans cet exemple précis, la première alerte de niveau "moyen" est simplement due à mon Nextcloud personnel, et les alertes de niveau "faible" à l'application FaceBook Messenger. D'autres alertes de niveau "faibles" sont apparues dues aux pratiques réseau bancales de l'application Telegram. Que faire en cas de compromission ?# La marche à suivre en cas de compromission dépend fortement de la situation : dans le cas d'un stalkerware installé dans le cadre d'une relation abusive, il sera difficile d'enlever le logiciel car : beaucoup des logiciels disponibles sur le marché sont capables de se réinstaller : à la manière d'un virus biologique, retirer toute trace pour éviter une re-contamination est très difficile ; La suppression du logiciel espion pourrait mettre a puce à l'oreille du compagnon abusif que la personne est accompagnée et pourrait entrainer des <<répercussions>> Le mieux serait de fournir un autre téléphone à la personne, complètement isolé du premier (nouvelle carte SIM, nouveaux comptes mails, etc) pour permettre de maintenir la communication, et d'agir à la source du problème ; ce que Tinycheck n'est pas en mesure de faire, évidemment.
-
000019.JPG
2021-02-11
art
-
Photography.
2021-02-03
now
-
About that "Free" in Free Software
2021-01-21
txt
This is a translation of a french article. In french the word "Libertaire" translates as "Libertarian", but should be understood as "left-wing libertarian". This article was written following some drama around an event I helped organizing, called "Journées du Logiciel Libre" (literally, "Free Software's days"). There was a tempest in a teacup regarding the addition of anti-capitalist values in the announcement of this year's event. Some time ago, as submissions for the Journées du Logiciel Libre opened, a regular of the event thought it would be fun to create a storm in a teacup by saying he won't submit his talk this year because of the inclusion of anticapitalist values in the event. What followed was a pointless fight about what "Free Software" was supposed to mean. The thing is, the Free Software world always has been a weird patchwork of different groups, ranging from die-hard anarchists to (more-or-less)left-leaning liberals. The Free Software movement is, like any other movement, full of contradictions. But the consensual thesis is that everyone should be able to freely dispose of their devices and data. Not just technically, but free from any influence, from any actors who might want to abuse one or the other. As a result, the Free Software movement throughout its history stood against GAFAMs, anti-freedom laws, and all the attacks against privacy as a whole. "Free Software" culture has, like any other culture, foundational and structuring myths. Aaron Swartz losing his life for freedom of knowledge, the role of social media in the arab spring, Telecomix actions in Syria, international movements against anti-freedom laws like SOPA & PIPA, and of course, Edward Snowden. Free Software is inherently political. If you're a "free software activist" but think it's "apolitical", you missed something [1]. [1]Or you mean "non partisan", which is not the same thing as "apolitical". Furthermore, Free Software, even if it's not "anarchist" per se, is (left-wing) libertarian. Not liberal, libertarian. It's not about "free market", and freedom of exploiting others. We are talking about freedom over your digital self and its value, the same way Workers' movements in the 19th and 20th centuries fought for control over their own labor. Much like in environmental movements, the word "capitalism" isn't really used (at least not without a prefix). But the core concept is there, in the background. That restraint, combined with a niche political lingo, created a confusion. Free Software, for some people, only fights surveillance capitalism, not capitalism itself. See, there's good capitalism, and bad capitalism. Bad capitalism exploits the people, and the good one only exploits their online personas. Just take a look at the infamous four essential freedoms. It's not just about "freedom to know what's going on inside", it's about negating mercantilism. Not that it's impossible to make a business around Free Software, simply that this "Freedom" removes any economic value to the software itself. Only services can be monetized. So, I'm bitter and confused. People are actively fighting to make Free Software compatible with capitalism. Let's be honest: we live in a capitalist world. We're told every fucking day that to exist is to exist economically. It's not that surprising that people would become advocates for that system. But more than that, we can't really blame projects for trying to make a living through donations, campaigning, and even paid services. You gotta do what you gotta do. But why do you want to twist the (left-wing) libertarian ideals to seduce the Machine? The community tried for years to explain to the general public the difference between Free Software and its Business School's cousin open-source Software. If you're so offended by inclusion and anticapitalism, the door is as open as the software. Ironically, the people pushing that rethoric paint themselves as Big political theorists. Meanwhile, they claim capitalism is our best bet for freedom, that an anticapitalist stance is a sign of collusion with La France Insoumise (t/n: a soc-dem party), and finally that capitalism is defined as "when there is money". So, Free Software is anticapitalist. But more than that, we need to make Free Software as hostile as possible to mercantilism (aside from the aformentioned need to fill your plate). History is full of movements and projects which tried to soften their teeth to seduce the general public (= the status quo, more than anything) and ended up leaving their political heart behind, for nothing. Just look at the most capitalist projects roaming around in the Free Software World: cryptocurrencies. At first, the idea might seem interesting: banks and companies are abusing the system, let's get rid of them. What started as an experiment meant to build a decentralized network to exhange money freely ended up as a centralized mess with big players mining everything and speculation making it useless. Oopsie [2]. [2]Notwithstanding the growing anxiety around its electrical consumption, and its lack of problem it's actually solving. Free Software is (left-wing) libertarian, not liberal. Free Software is about freedom from influence from big actors on your devices and data. Free Software is not free market.
-
PXL_20201212_153331523_02.jpg
2020-12-22
art
-
Wood cabin pixel art
2020-12-18
artdigitaldrawingspixel artanimation
Your browser doesn't support HTML5 video tag. music: Nujabes - Spiritual State
-
Digital graffiti
2020-12-09
projects
This project was intended as an upgrade of a project by davejavu1969, which allowed to use a wiimote as a virtual spraying can on a projected screen. We wanted to allow children of a computer-education-oriented association to paint on a wall during an event. To do so, I upgraded the code to allow for multiple remotes (typically two, but more are possible), support different resolutions because we had various second hand video projectors (including one 1080p), and finally cleaned up the code related to calls to the cwiid library handling wiimote interactions, for easier developement. The page for the original project (since disappeared) is available here The code for the original project is (still) available here My code is available here The is a relatively old project I've made a while ago. The following instructions are a weird mix of technical and non-tech savvy instructions, for archival purposes. Instructions# Button Layout, in french: Installation# Preparing the Raspberry Pi# Flash raspbian on a SD card, and then install the following packages to interact with the wiimote(s): sudo apt install bluetooth python-cwiid Testing# Check that bluetooth and the remotes are working using the following command in a terminal: hcitool scan And by then pressing both + and - buttons on a remote. After a few seconds, the command should terminate and display the MAC address of the remote. Non official remotes may not work Write down the MAC address, and start over with the second wiimote if you have one. Installing and preparing the project# Clone the repo and modify the file digital_graffiti_multi.py by putting the MAC addresses from before between lines 570 and 574 Launching# Before running it# Plug in a mouse and keyboard, as well as a video projector (A screen can be used for testing) Then, plug in the power cable to start the Pi Finally, plug the wii sensor bar. Starting it# Click on the raspberry in the top left corner, and go to "accessories" > "terminal" Type the following commands to go to the right directory and launch the program: cd digital_graffiti/ ./digital_graffiti_multi.py As the screen displays "connecting to can", press the + and - buttons on both remotes. One of them should have its first LED turned on, indicating that it got addressed as the first remote, and the other the second LED. If the remotes stop blinking without leaving a LED turned on, press the buttons again to try the connection process again. Launching again# If the program crashes or if a child close it by mistake, simply press the up arrow key to bring the command back, and press enter to launch again. Creating a desktop shortcut# To simplify for non tech-savvy people, you can create a simple shortcut on the desktop. Right click on the desktop and create an empty document called graffiti_numerique.desktop Put the following content in the file, save it, and close it: [Desktop Entry] Name=Graffiti numerique Comment=By EPN des Rancy Inc Icon= Exec=xxxxx Type=Application Encoding=UTF-8 Terminal=false
-
DTInside: "Robot Retro"
2020-12-01
artdigitaldrawingsDTInsideanimation
Animation# Your browser doesn't support HTML5 video tag.
-
Steelmill rocket
2020-11-10
artdrawingstraditional
-
hopper_school.png
2020-09-21
art
-
IMG_5453.jpg
2020-08-20
arthomephotography
-
IMG_5464.jpg
2020-08-20
artphotography
-
spacewitchcraft.jpg
2020-08-20
artdigitaldrawingshome
-
thunderstorm_20200811.jpg
2020-08-20
artphotographythunderstorms
-
IMG_4918.jpg
2020-08-20
art
-
DSC00193.jpg
2020-08-10
artthunderstorms40deg
-
C2020-F3_NEOWISE_comet_2020.07.12_large.jpg
2020-08-05
artNEOWISE comet
-
C2020-F3_NEOWISE_comet_2020.07.20_large.jpg
2020-08-05
artNEOWISE comet
-
Dark mountain pixel art
2020-07-11
artdigitaldrawingspixel artanimation
Your browser doesn't support HTML5 video tag. music: Chris Christodoulou - A Glacier Eventually Farts (And Don't You Listen to the Song of Life)
-
comet_C2020_f3_NEOWISE.jpg
2020-07-09
artNEOWISE comet
-
IMG_1695-Panorama.jpg
2020-06-28
artthunderstorms
-
Accessing tags made in Shotwell with Python 3
2020-06-26
txtdevIT
As I was reorganising my gallery, I wanted optimize the classification process. Before that, I was using directories, subdirectories and python black magic to generate a file containing the list of files with categories and tags. I decided to use a proper solution, that is an dedicated software. The plan was to use Shotwell to tag the images and then simply parse the tags in the metadata with python to generate the pages. I activated the "Write tags, titles and other metadata to photo files" setting in Shotwell, and started tagging. final snippet at the bottom of the page I tried the first snippet of code I found to access exif data in python... 1 >>> import PIL.Image 2 >>> img = PIL.Image.open('1_000010e.JPG') 3 >>> exif_data = img._getexif() 4 >>> 5 >>> exif_data 6 {296: 2, 34665: 220, 271: 'FUJI PHOTO FILM CO., LTD.', 272: 'SP-3000', 305: 'Shotwell 0.30.1', 274: 1, 306: '2019:05:17 15:29:52', 531: 1, 282: (72, 1), 283: (72, 1), 36864: b'0210', 37121: b'\x01\x02\x03\x00', 40960: b'0100', 36867: ' : : : : ', 36868: '2019:05:16 17:10:49', 40961: 1, 40962: 1703, 40963: 1168, 40965: 494, 41728: b'\x03', 41729: b'\x01', 37500: b'FUJIFILM\x0c\x00\x00\x00\x05\x00\x00\x00\x07\x00\x04\x00\x00\x000130\x00\x80\x02\x00\x06\x00\x00\x00N\x00\x00\x00\x02\x80\x04\x00\x01\x00\x00\x00\xff\xff\xff\xff \x80\x03\x00\x01\x00\x00\x00\x01\x00\x00\x00!\x80\x03\x00\x01\x00\x00\x00\x03\x00\x00\x00\x00\x00\x00\x00135_C\x00'} But no tag to be seen. Same thing with the good ol' "file" command: 1 nemecle@yggdrasil:~/Pictures/$ file 1_000010e.JPG 2 1_000010e.JPG: JPEG image data, JFIF standard 1.01, resolution (DPI), density 72x72, segment length 16, Exif Standard: [TIFF image data, little-endian, direntries=10, manufacturer=FUJI PHOTO FILM CO., LTD., model=SP-3000, orientation=upper-left, xresolution=168, yresolution=176, resolutionunit=2, software=Shotwell 0.30.1, da Or even the standard "exif" python library: 1 >>> from exif import Image 2 >>> with open('1_000010e.JPG', 'rb') as image_file: 3 ... my_image = Image(image_file) 4 ... 5 >>> my_image.has_exif 6 True 7 >>> dir(my_image) 8 ['_exif_ifd_pointer', '_interoperability_ifd_Pointer', '_segments', 'color_space', 'components_configuration', 'compression', 'datetime', 'datetime_digitized', 'datetime_original', 'delete', 'delete_all', 'exif_version', 'file_source', 'flashpix_version', 'get', 'get_file', 'get_thumbnail', 'has_exif', 'jpeg_interchange_format', 'jpeg_interchange_format_length', 'make', 'maker_note', 'model', 'orientation', 'pixel_x_dimension', 'pixel_y_dimension', 'resolution_unit', 'scene_type', 'software', 'x_resolution', 'y_and_c_positioning', 'y_resolution'] After some research, it seems that commonly avaliable exif commands and libraries are unable to read user-made data. Oh well. Frustrated but still brave, I dove head first in the raw bytes, a bad habit I picked up while debugging shitty non-standard services. I fired a simple xxd in vim (":%!xxd" in normal mode) to ease the search. We can see some metadata at the beginning of the file, and the "JFIF" magic string indicating that the file is a jpeg: 1 00000000: ffd8 ffe0 0010 4a46 4946 0001 0101 0048 ......JFIF.....H 2 00000010: 0048 0000 ffe1 1790 4578 6966 0000 4949 .H......Exif..II 3 00000020: 2a00 0800 0000 0a00 0f01 0200 1a00 0000 *............... 4 00000030: 8600 0000 1001 0200 0800 0000 a000 0000 ................ 5 00000040: 1201 0300 0100 0000 0100 0000 1a01 0500 ................ 6 00000050: 0100 0000 a800 0000 1b01 0500 0100 0000 ................ 7 00000060: b000 0000 2801 0300 0100 0000 0200 0000 ....(........... 8 00000070: 3101 0200 1000 0000 b800 0000 3201 0200 1...........2... 9 00000080: 1400 0000 c800 0000 1302 0300 0100 0000 ................ 10 00000090: 0100 0000 6987 0400 0100 0000 dc00 0000 ....i........... 11 000000a0: 0c02 0000 4655 4a49 2050 484f 544f 2046 ....FUJI PHOTO F 12 000000b0: 494c 4d20 434f 2e2c 204c 5444 2e00 5350 ILM CO., LTD..SP 13 000000c0: 2d33 3030 3000 4800 0000 0100 0000 4800 -3000.H.......H. 14 000000d0: 0000 0100 0000 5368 6f74 7765 6c6c 2030 ......Shotwell 0 15 000000e0: 2e33 302e 3100 3230 3139 3a30 353a 3137 .30.1.2019:05:17 Knowing the keywords, I just searched for "home": 1 [...] 2 3 00001880: 223e 203c 7264 663a 4465 7363 7269 7074 "> <rdf:Descript 4 00001890: 696f 6e20 7264 663a 6162 6f75 743d 2222 ion rdf:about="" 5 000018a0: 2078 6d6c 6e73 3a64 633d 2268 7474 703a xmlns:dc="http: 6 000018b0: 2f2f 7075 726c 2e6f 7267 2f64 632f 656c //purl.org/dc/el 7 000018c0: 656d 656e 7473 2f31 2e31 2f22 2078 6d6c ements/1.1/" xml 8 000018d0: 6e73 3a78 6d70 3d22 6874 7470 3a2f 2f6e ns:xmp="http://n 9 000018e0: 732e 6164 6f62 652e 636f 6d2f 7861 702f s.adobe.com/xap/ 10 000018f0: 312e 302f 2220 786d 703a 4c61 6265 6c3d 1.0/" xmp:Label= 11 00001900: 2270 686f 746f 6772 6170 6879 223e 203c "photography"> < 12 00001910: 6463 3a73 7562 6a65 6374 3e20 3c72 6466 dc:subject> <rdf 13 00001920: 3a42 6167 3e20 3c72 6466 3a6c 693e 616e :Bag> <rdf:li>an 14 00001930: 616c 6f67 3c2f 7264 663a 6c69 3e20 3c72 alog</rdf:li> <r 15 00001940: 6466 3a6c 693e 686f 6d65 3c2f 7264 663a df:li>home</rdf: 16 17 [...] Bingo... I guess? I had no idea of what this was. once cleaned up I ended up with: 1 http://ns.adobe.com/xap/1.0/.<?xpacket begin="..." id="W5M0MpCehiHzreSzNTczkc9d"?> 2 <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> 3 <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> 4 <rdf:Description 5 rdf:about="" 6 xmlns:dc="http://purl.org/dc/elements/1.1/" 7 xmlns:xmp="http://ns.adobe.com/xap/1.0/" 8 xmp:Label="photography"> 9 <dc:subject> 10 <rdf:Bag> 11 <rdf:li>analog</rdf:li> 12 <rdf:li>home</rdf:li> 13 <rdf:li>photography</rdf:li> 14 </rdf:Bag> 15 </dc:subject> 16 </rdf:Description> 17 </rdf:RDF> 18 </x:xmpmeta> So, we are working with "RDF" elements, which apparently stands for "Resource Description Framework". I searched "rdf:li python", and finally found someone with a close enough issue to be useful but apparently too different to have showed up earlier: 1 import xml.etree.ElementTree as ET 2 from PIL import Image, ExifTags 3 with Image.open("1_000010e.JPG") as im: 4 for segment, content in im.applist: 5 marker, body = content.split(b'\x00', 1) 6 if segment == 'APP1' and marker == b'http://ns.adobe.com/xap/1.0/': 7 data = body.decode('"utf-8"') 8 print (data) 9 10 <?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 4.4.0-Exiv2"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:xmp="http://ns.adobe.com/xap/1.0/" xmp:Label="photography"> <dc:subject> <rdf:Bag> <rdf:li>analog</rdf:li> <rdf:li>home</rdf:li> <rdf:li>photography</rdf:li> </rdf:Bag> </dc:subject> </rdf:Description> </rdf:RDF> </x:xmpmeta> 11 ... 12 (a lot of whitespaces) 13 ... 14 <?xpacket end="w"?> Finally! Then things got dirty because I don't actually care about most of the data, only the specific last-level "rdf:li" elements, so a quick and dirty regex did the job: 1 re.findall(r"(?<=<rdf:li>).*?(?=</rdf:li>)", data) 2 ['analog', 'home', 'photography'] But when I ran the script, I quickly realised that it would not work on .png images, because the resulting PIL object didn't have the "applist" attribute that containing the data. I loaded a jpeg and png: 1 im = Image.open("Archives/IMG_1670.JPG" 2 im1 = Image.open("Miscellaneous digital drawings/windmill Mawi.png" #png not working And enumerated the available attributes to compare: 1 object_methods = [method_name for method_name in dir(im) 2 if callable(getattr(im, method_name))] 3 4 object_methods1 = [method_name for method_name in dir(im1) 5 if callable(getattr(im1, method_name))] And unsurprisingly: 1 for k,v in inspect.getmembers(im, lambda a:not(inspect.isroutine(a))): 2 print(str(k)) 3 4 # "applist" is listed 5 6 for k,v in inspect.getmembers(im, lambda a:not(inspect.isroutine(a))): 7 print(str(k)) 8 9 # "applist" is not listed I cycled through some of the existing attributes ot see their content, and finally: 1 [...unrelated stuff...] 2 3 \n \n<?xpacket end="w"?>', 'dpi': (72, 72), 'Comment': 'Created by Nemecle'} After merging the two solutions, the final snippet (for jpeg and png, and with no fallback if tags are missing) looks like this: 1 def read_tags(filepath): 2 """ 3 read the shotwell tags from the metadata 4 (require the "Write tags, titles and other metadata to photo files" option) 5 6 """ 7 8 data = "" 9 tags = [] 10 11 try: 12 with Image.open(filepath) as im: 13 if im.format is "PNG": 14 data = str(im.info["XML:com.adobe.xmp"]) 15 16 elif im.format is "JPEG": 17 for segment, content in im.applist: 18 marker, body = content.split(b'\x00', 1) 19 if segment == 'APP1' and marker == b'http://ns.adobe.com/xap/1.0/': 20 data = body.decode('"utf-8"') 21 except Exception as e: 22 print("Error while reading tags on %s: %s " % (filepath, str(e))) 23 exit(1) 24 25 26 try: 27 pattern=re.compile(r"(?<=<dc:subject>).*?(?=</dc:subject>)", re.DOTALL) 28 29 tag_data = pattern.search(data) 30 31 except Exception as e: 32 print("Error while extracting tag data on %s: %s" % (filepath, str(e))) 33 exit(1) 34 35 36 try: 37 pattern=re.compile(r"(?<=<rdf:li>).*?(?=</rdf:li>)", re.DOTALL) 38 39 tags = pattern.findall(tag_data.group(0)) 40 41 except Exception as e: 42 print("Error while parsing tags on %s: %s" % (filepath, str(e))) 43 exit(1) And voilà.
-
3_000029e.JPG
2020-06-26
artanaloghomephotography
-
IMG_0494.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0495.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0497.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0499.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0500.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0511.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0513.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0518.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0526.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0531.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0532.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0537.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0540.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0547.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0549.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0551.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0553.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0558.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0596.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0600.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0607.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0614.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0621.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0632.jpg
2020-06-26
artconcertshomephotographysingle ladies
-
IMG_0646.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0650.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0657.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0661.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0663.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_0672.jpg
2020-06-26
artconcertsphotographysingle ladies
-
IMG_2011.jpg
2020-06-26
artPratos @ FÊTE DE LA MUSIQUEconcertsphotography
-
IMG_2016.jpg
2020-06-26
artPratos @ FÊTE DE LA MUSIQUEconcertsphotography
-
IMG_2027.jpg
2020-06-26
artPratos @ FÊTE DE LA MUSIQUEconcertsphotography
-
IMG_2036.jpg
2020-06-26
artPratos @ FÊTE DE LA MUSIQUEconcertsphotography
-
IMG_2040.jpg
2020-06-26
artPratos @ FÊTE DE LA MUSIQUEconcertsphotography
-
IMG_2042.jpg
2020-06-26
artPratos @ FÊTE DE LA MUSIQUEconcertsphotography
-
IMG_2046.jpg
2020-06-26
artPratos @ FÊTE DE LA MUSIQUEconcertsphotography
-
IMG_2048.jpg
2020-06-26
artPratos @ FÊTE DE LA MUSIQUEconcertsphotography
-
IMG_2053.jpg
2020-06-26
artPratos @ FÊTE DE LA MUSIQUEconcertsphotography
-
IMG_2067.jpg
2020-06-26
artPratos @ FÊTE DE LA MUSIQUEconcertsphotography
-
IMG_2076.jpg
2020-06-26
artPratos @ FÊTE DE LA MUSIQUEconcertsphotography
-
IMG_2077.jpg
2020-06-26
artPratos @ FÊTE DE LA MUSIQUEconcertsphotography
-
IMG_2081.jpg
2020-06-26
artPratos @ FÊTE DE LA MUSIQUEconcertshomephotography
-
IMG_2083.jpg
2020-06-26
artPratos @ FÊTE DE LA MUSIQUEconcertsphotography
-
IMG_6149.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6152.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6165_01.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6173.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6184.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6188.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6224.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6229_01.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6237.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6255.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6267_01.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6280.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6281.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6283.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6310.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6330.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6333.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6345.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6348.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6349.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6389.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6428.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6430_01.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6452_01.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6454_01.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6470_01.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6471.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6500.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6181.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6185_01.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6194.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6231_01.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6246_01.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6252.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6275.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6293.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6302.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6304.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6307.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6309.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6317.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6324.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6373_01.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6395.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6431.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6458.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6476.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
IMG_6478.jpg
2020-06-26
artSingles Ladies @ HÔTEL DE LA MUSIQUEconcertsphotographysingle ladies
-
nyolive.jpg
2020-06-26
artdigitaldrawings
-
IMG_6123.jpg
2020-06-26
artphotography
-
IMG_2100.JPG
2020-06-26
artdrawingstraditional
-
IMG_2102.JPG
2020-06-26
artdrawingstraditional
-
IMG_2103.JPG
2020-06-26
artdrawingstraditional
-
2_000011.JPG
2020-06-26
artanalogphotography
-
IMG_8279_CR2_embedded.jpg
2020-06-26
artfireworksphotography
-
IMG_8334_CR2_embedded.jpg
2020-06-26
artfireworksphotography
-
balloon.JPG
2020-06-26
arttraditional
-
enderman.JPG
2020-06-26
arttraditional
-
nathandrake.JPG
2020-06-26
arttraditional
-
the algorithm pjlrenseignement.png
2020-06-26
artdigital
-
panobresse1.jpg
2020-06-26
artphotography
-
portalcover.jpg
2020-06-26
artdigital
-
IMG_0675s.jpg
2020-06-25
arthomephotographythunderstorms
-
IMG_1331.jpg
2020-06-25
arthomephotographythunderstorms
-
IMG_5976e.jpg
2020-06-25
arthomephotography
-
000031.JPG
2020-06-25
artanaloghomephotography
-
000043.JPG
2020-06-25
artanaloghomephotography
-
1_000031e.JPG
2020-06-25
artanaloghomephotography
-
IMG_0848.jpg
2020-06-25
arthomephotography
-
IMG_5845e.jpg
2020-06-25
arthomephotography
-
IMG_7544.jpg
2020-06-25
arthomephotography
-
IMG_9098.jpg
2020-06-25
arthomephotography
-
IMG_9256.jpg
2020-06-25
arthomephotography
-
IMG_9848.jpg
2020-06-25
arthomephotography
-
the_forest_by_nemecle_d8zw08x-fullview.jpg
2020-06-25
arthomephotography
-
1.1.jpg
2020-06-25
arthomephotography
-
IMG_0041.jpg
2020-06-25
arthomephotography
-
IMG_0082.jpg
2020-06-25
arthomephotography
-
IMG_1635.jpg
2020-06-25
arthomephotographythunderstorms
-
IMG_2832.jpg
2020-06-25
arthomephotographythunderstorms
-
foggy_morning_by_nemecle_d7odrfo-fullview.jpg
2020-06-25
arthomephotography
-
3_000015e.JPG
2020-06-25
artanaloghomephotography
-
bio_futuristic.JPG
2020-06-25
artdrawingstraditional
-
IMG_8165.jpg
2020-06-25
artphotography
-
IMG_8438.jpg
2020-06-25
arthomephotography
-
IMG_8580.jpg
2020-06-25
artphotography
-
IMG_8582.jpg
2020-06-25
arthomephotography
-
IMG_8623.jpg
2020-06-25
artphotography
-
IMG_8651.jpg
2020-06-25
artphotography
-
IMG_8666.jpg
2020-06-25
artphotography
-
IMG_8987.jpg
2020-06-25
artphotography
-
IMG_8998.jpg
2020-06-25
artphotography
-
IMG_9146.jpg
2020-06-25
arthomephotography
-
IMG_9219.jpg
2020-06-25
artphotography
-
IMG_9267.jpg
2020-06-25
artphotography
-
IMG_9330.jpg
2020-06-25
artphotography
-
IMG_9687.JPG
2020-06-25
artphotography
-
IMG_9821.jpg
2020-06-25
artphotography
-
IMG_9832.jpg
2020-06-25
artphotography
-
IMG_9840.jpg
2020-06-25
artphotography
-
IMG_9841.jpg
2020-06-25
artphotography
-
IMG_9849-Panorama.jpg
2020-06-25
arthomephotography
-
IMG_9851.jpg
2020-06-25
artphotography
-
IMG_9862.jpg
2020-06-25
arthomephotography
-
IMG_9869.jpg
2020-06-25
artphotography
-
IMG_9951.jpg
2020-06-25
artphotography
-
IMG_1155.jpg
2020-06-25
arthomephotography
-
IMG_1214.jpg
2020-06-25
arthomephotography
-
IMG_1886b.jpg
2020-06-25
arthomephotography
-
IMG_2651.jpg
2020-06-25
arthomephotography
-
IMG_2720.jpg
2020-06-25
arthomephotography
-
IMG_2766e.jpg
2020-06-25
arthomephotography
-
the_lurking_fear_cthulhu_by_nemecle_d9szgip-fullview.jpg
2020-06-25
artdrawingshometraditional
-
Glider.png
2020-06-25
artdigitaldrawingshome
-
tumblr_nhknr6hipu1u1y5v6o1_500.png
2020-06-25
artdigitaldrawingshome
-
IMG_5468.jpg
2020-06-25
arthomephotography
-
IMG_5506.jpg
2020-06-25
arthomephotography
-
IMG_5797-2.jpg
2020-06-25
arthomephotography
-
3.jpg
2020-06-25
artdrawingshomeinktobertraditional
-
000028.JPG
2020-06-25
artanaloghomephotography
-
13_Scared.jpg
2020-06-25
artdrawingshomeinktobertraditional
-
1_000001e.JPG
2020-06-25
artanaloghomephotography
-
3_000024e.JPG
2020-06-25
artanaloghomephotography
-
6_Hidden.jpg
2020-06-25
artdrawingshomeinktobertraditional
-
000009.JPG
2020-06-25
artanaloghomephotography
-
1_000010e.JPG
2020-06-25
artanaloghomephotography
-
3_000018e.JPG
2020-06-25
artanaloghomephotography
-
3_000034e.JPG
2020-06-25
artanaloghomephotography
-
3_000036e.JPG
2020-06-25
artanaloghomephotography
-
IMG_1841.jpg
2020-06-25
artanaloghomephotography
-
AC1.png
2020-06-25
artdigital
-
Black_bird_on_a_tree.JPG
2020-06-25
arttraditional
-
Breaking barde.png
2020-06-25
artdigital
-
IAAL.jpg
2020-06-25
artdigital
-
IMG_0994.JPG
2020-06-25
arttraditional
-
IMG_1050.JPG
2020-06-25
arttraditional
-
IMG_7322.jpg
2020-06-25
arttraditional
-
IMG_7653.JPG
2020-06-25
arttraditional
-
IMG_8007.jpg
2020-06-25
arttraditional
-
IMG_8026a.jpg
2020-06-25
arttraditional
-
IMG_8027aa.jpg
2020-06-25
arttraditional
-
IMG_8267s.jpg
2020-06-25
arttraditional
-
IMG_8404s.jpg
2020-06-25
arttraditional
-
almostwalkingdead.jpg
2020-06-25
arttraditional
-
bonif-pano2.jpg
2020-06-25
artdigital
-
cc23dprov.jpg
2020-06-25
artdigital
-
cometomebro.JPG
2020-06-25
arttraditional
-
draw together feu.png
2020-06-25
artdigital
-
image201310050003.jpg
2020-06-25
arttraditional
-
lonelywarrior.jpg
2020-06-25
artdigital
-
m2h.png
2020-06-25
artdigital
-
nemesiadef.jpg
2020-06-25
artdigital
-
nyolives1.png
2020-06-25
artdigital
-
portalturret.png
2020-06-25
artdigital
-
pose.png
2020-06-25
artdigital
-
0_000024.JPG
2020-06-25
artanalogphotography
-
0_000033.JPG
2020-06-25
artanalogphotography
-
0_000034.JPG
2020-06-25
artanalogphotography
-
2011-07-10_17-24-40_69.jpg
2020-06-25
artphotography
-
Decayofcrane.jpg
2020-06-25
artphotography
-
IMG_1186.JPG
2020-06-25
artphotography
-
IMG_1261.JPG
2020-06-25
artphotography
-
IMG_1270.JPG
2020-06-25
artphotography
-
IMG_1383.JPG
2020-06-25
artphotography
-
IMG_1516.JPG
2020-06-25
artphotography
-
IMG_1654.jpg
2020-06-25
artphotography
-
IMG_1670.JPG
2020-06-25
artphotography
-
IMG_1674.JPG
2020-06-25
artphotography
-
IMG_1683.JPG
2020-06-25
artphotography
-
IMG_1688.JPG
2020-06-25
artphotography
-
IMG_1704.JPG
2020-06-25
artphotography
-
IMG_2554.jpg
2020-06-25
artphotography
-
IMG_2555.jpg
2020-06-25
artphotography
-
IMG_2572.jpg
2020-06-25
artphotography
-
IMG_2768e.jpg
2020-06-25
artphotography
-
IMG_2788.JPG
2020-06-25
artphotography
-
IMG_3719.JPG
2020-06-25
artphotography
-
IMG_3809.JPG
2020-06-25
artphotography
-
IMG_3955.JPG
2020-06-25
artphotography
-
IMG_5739.JPG
2020-06-25
artphotography
-
IMG_5755.JPG
2020-06-25
artphotography
-
IMG_8167.jpg
2020-06-25
artphotography
-
IMG_9975.jpg
2020-06-25
artphotography
-
P1060701.JPG
2020-06-25
artphotography
-
P1070411.JPG
2020-06-25
artphotography
-
P1070413.JPG
2020-06-25
artphotography
-
Photo 105.jpg
2020-06-25
artphotography
-
Photo 106.jpg
2020-06-25
artphotography
-
awaytonothing.JPG
2020-06-25
artphotography
-
flowerinfield.JPG
2020-06-25
artphotography
-
hangedstar.jpg
2020-06-25
artphotography
-
panos.jpg
2020-06-25
artphotography
-
vlcsnap-2015-04-06-22h43m00s37.png
2020-06-25
artphotography
-
000025.JPG
2020-06-25
artanalogphotography
-
000026.JPG
2020-06-25
artanalogphotography
-
000027.JPG
2020-06-25
artanalogphotography
-
000028a.JPG
2020-06-25
artanalogphotography
-
000029.JPG
2020-06-25
artanalogphotography
-
000040.JPG
2020-06-25
artanalogphotography
-
10_pattern.jpg
2020-06-25
artdrawingsinktobertraditional
-
11_snow.jpg
2020-06-25
artdrawingsinktobertraditional
-
12_dragon.jpg
2020-06-25
artdrawingsinktobertraditional
-
13_ash.jpg
2020-06-25
artdrawingsinktobertraditional
-
14_overgrown.jpg
2020-06-25
artdrawingsinktobertraditional
-
15_legend.jpg
2020-06-25
artdrawingsinktobertraditional
-
16_wild.jpg.jpg
2020-06-25
artdrawingsinktobertraditional
-
17_ornament.jpg
2020-06-25
artdrawingsinktobertraditional
-
18_misfit.jpg
2020-06-25
artdrawingsinktobertraditional
-
19_sling.jpg
2020-06-25
artdrawingsinktobertraditional
-
1_000024e.JPG
2020-06-25
artanalogphotography
-
1_000030e.JPG
2020-06-25
artanalogphotography
-
1_ring.jpg
2020-06-25
artdrawingsinktobertraditional
-
20_thread.jpg
2020-06-25
artdrawingsinktobertraditional
-
21_treasure.jpg
2020-06-25
artdrawingsinktobertraditional
-
22_ghost.jpg
2020-06-25
artdrawingsinktobertraditional
-
23_ancient.jpg
2020-06-25
artdrawingsinktobertraditional
-
24_dizzy.jpg
2020-06-25
artdrawingsinktobertraditional
-
25_tasty.jpg
2020-06-25
artdrawingsinktobertraditional
-
26_dark.jpg
2020-06-25
artdrawingsinktobertraditional
-
27_coat.jpg
2020-06-25
artdrawingsinktobertraditional
-
2_mindless.jpg
2020-06-25
artdrawingsinktobertraditional
-
3_000009e.JPG
2020-06-25
artanalogphotography
-
3_000010e.JPG
2020-06-25
artanalogphotography
-
3_000011e.JPG
2020-06-25
artanalogphotography
-
3_bait.jpg
2020-06-25
artdrawingsinktobertraditional
-
4_freeze.jpg
2020-06-25
artdrawingsinktobertraditional
-
5_build.jpg
2020-06-25
artdrawingsinktobertraditional
-
6_husky.jpg
2020-06-25
artdrawingsinktobertraditional
-
7_enchanted.jpg
2020-06-25
artdrawingsinktobertraditional
-
8_frail.jpg
2020-06-25
artdrawingsinktobertraditional
-
9_swing.jpg
2020-06-25
artdrawingsinktobertraditional
-
Fetch.png
2020-06-25
artdigitaldrawings
-
IMG_0044.JPG
2020-06-25
artphotography
-
IMG_0132.jpg
2020-06-25
artphotographythunderstorms
-
IMG_0137.jpg
2020-06-25
artphotographythunderstorms
-
IMG_0204.jpg
2020-06-25
artphotographythunderstorms
-
IMG_0222.jpg
2020-06-25
artphotographythunderstorms
-
IMG_0266.jpg
2020-06-25
artphotography
-
IMG_0439.jpg
2020-06-25
artphotography
-
IMG_0451.jpg
2020-06-25
artphotography
-
IMG_0602.jpg
2020-06-25
artphotographythunderstorms
-
IMG_0613.jpg
2020-06-25
artphotographythunderstorms
-
IMG_0656.jpg
2020-06-25
artphotography
-
IMG_0677s.jpg
2020-06-25
artphotographythunderstorms
-
IMG_0689s.jpg
2020-06-25
artphotographythunderstorms
-
IMG_0983.JPG
2020-06-25
artphotographythunderstorms
-
IMG_1063.jpg
2020-06-25
artphotography
-
IMG_1067.jpg
2020-06-25
artphotography
-
IMG_1089.JPG
2020-06-25
artphotography
-
IMG_1172.jpg
2020-06-25
artphotography
-
IMG_1599.jpg
2020-06-25
artdrawingstraditional
-
IMG_1784.JPG
2020-06-25
artphotographythunderstorms
-
IMG_1790.JPG
2020-06-25
artphotographythunderstorms
-
IMG_1798.JPG
2020-06-25
artphotographythunderstorms
-
IMG_1863.JPG
2020-06-25
artphotography
-
IMG_1875.JPG
2020-06-25
artphotography
-
IMG_2002.jpg
2020-06-25
artphotography
-
IMG_20191019_181843.jpg
2020-06-25
artdrawingsinktobertraditional
-
IMG_2233.jpg
2020-06-25
artphotographythunderstorms
-
IMG_2241.jpg
2020-06-25
artphotographythunderstorms
-
IMG_2418.JPG
2020-06-25
artphotography
-
IMG_2420.jpg
2020-06-25
artphotographythunderstorms
-
IMG_2606.JPG
2020-06-25
artphotography
-
IMG_2627.jpg
2020-06-25
artphotographythunderstorms
-
IMG_3128s.jpg
2020-06-25
artphotographythunderstorms
-
IMG_3140.jpg
2020-06-25
artphotographythunderstorms
-
IMG_3206.jpg
2020-06-25
artphotographythunderstorms
-
IMG_3206s.jpg
2020-06-25
artphotographythunderstorms
-
IMG_3220s.jpg
2020-06-25
artphotographythunderstorms
-
IMG_3256.jpg
2020-06-25
artphotographythunderstorms
-
IMG_3262s.jpg
2020-06-25
artphotographythunderstorms
-
IMG_3270.jpg
2020-06-25
artphotographythunderstorms
-
IMG_3301.jpg
2020-06-25
artphotographythunderstorms
-
IMG_3325.jpg
2020-06-25
artphotographythunderstorms
-
IMG_3326s.jpg
2020-06-25
artphotographythunderstorms
-
IMG_3563.JPG
2020-06-25
artphotographythunderstorms
-
IMG_3611.JPG
2020-06-25
artphotographythunderstorms
-
IMG_3648.JPG
2020-06-25
artphotographythunderstorms
-
IMG_5377.jpg
2020-06-25
artphotography
-
IMG_5389e.jpg
2020-06-25
artphotography
-
IMG_5407.jpg
2020-06-25
artphotography
-
IMG_5415.jpg
2020-06-25
artphotography
-
IMG_5439.jpg
2020-06-25
artphotography
-
IMG_5468_2.JPG
2020-06-25
artphotography
-
IMG_5492.jpg
2020-06-25
artphotography
-
IMG_5516.jpg
2020-06-25
artphotography
-
IMG_5575.jpg
2020-06-25
artphotography
-
IMG_5576.jpg
2020-06-25
artphotography
-
IMG_5578.jpg
2020-06-25
artphotography
-
IMG_5590.jpg
2020-06-25
artphotography
-
IMG_5610.jpg
2020-06-25
artphotography
-
IMG_5640.jpg
2020-06-25
artphotography
-
IMG_5661.jpg
2020-06-25
artphotography
-
IMG_5666.jpg
2020-06-25
artphotography
-
IMG_5668.jpg
2020-06-25
artphotography
-
IMG_5677.jpg
2020-06-25
artphotography
-
IMG_5691.jpg
2020-06-25
artphotography
-
IMG_5708e.jpg
2020-06-25
artphotography
-
IMG_5713.jpg
2020-06-25
artphotography
-
IMG_5716.jpg
2020-06-25
artphotography
-
IMG_5769.jpg
2020-06-25
artphotography
-
IMG_5828.jpg
2020-06-25
artphotography
-
IMG_5902.jpg
2020-06-25
artphotography
-
IMG_5910.jpg
2020-06-25
artphotography
-
IMG_5921.jpg
2020-06-25
artphotography
-
IMG_6012e.jpg
2020-06-25
artphotography
-
IMG_6115e.jpg
2020-06-25
artdrawingstraditional
-
IMG_7474.jpg
2020-06-25
artphotographythunderstorms
-
IMG_7550.jpg
2020-06-25
artphotography
-
IMG_7552.jpg
2020-06-25
artphotography
-
IMG_7564.jpg
2020-06-25
artphotography
-
IMG_7568.jpg
2020-06-25
artphotography
-
IMG_8061.jpg
2020-06-25
artphotography
-
IMG_9701-Panorama.jpg
2020-06-25
artphotographythunderstorms
-
Kuriosity1.png
2020-06-25
artdigitaldrawings
-
Oplmek_landscape.png
2020-06-25
artdrawingstraditional3700
-
P1060145.JPG
2020-06-25
artphotography
-
P1060163.JPG
2020-06-25
artphotography
-
Psyche.png
2020-06-25
artdigitaldrawings
-
a1.jpg
2020-06-25
artphotography
-
a2.jpg
2020-06-25
artphotographythunderstorms
-
abandonned.png
2020-06-25
artdigitaldrawings
-
frozenriver2.jpg
2020-06-25
artphotography
-
hdr.jpg
2020-06-25
artphotographythunderstorms
-
nemecle1.png
2020-06-25
artdigitaldrawings
-
oblivion.png
2020-06-25
artdigitaldrawings
-
soyuz.jpg
2020-06-25
artdigitaldrawings
-
tumblr_ngaocnShJE1u1y5v6o1_500.png
2020-06-25
artdigitaldrawings
-
tumblr_nho7ezZfV51u1y5v6o1_500.png
2020-06-25
artdigitaldrawings
-
tumblr_nmatxseVAM1u1y5v6o1_500.jpg
2020-06-25
artdrawingstraditional
-
tumblr_nmo6yyvL6A1u1y5v6o1_500.jpg
2020-06-25
artdrawingstraditional
-
tumblr_nylm8z9z7S1u1y5v6o1_500.jpg
2020-06-25
artdrawingstraditional
-
tumblr_nylmcqMNiJ1u1y5v6o1_500.jpg
2020-06-25
artdrawingstraditional
-
tumblr_nzd9ndWtJv1u1y5v6o1_500.jpg
2020-06-25
artdrawingstraditional
-
windmill Mawi.png
2020-06-25
artdigitaldrawings
-
1.jpg
2020-06-25
artdrawingsinktobertraditional
-
10.jpg
2020-06-25
artdrawingsinktobertraditional
-
10_Jump.jpg
2020-06-25
artdrawingsinktobertraditional
-
10_flowing.jpg
2020-06-25
artdrawingsinktobertraditional
-
11.jpg
2020-06-25
artdrawingsinktobertraditional
-
11_transport.jpg
2020-06-25
artdrawingsinktobertraditional
-
12.jpg
2020-06-25
artdrawingsinktobertraditional
-
12_Worried.JPG
2020-06-25
artdrawingsinktobertraditional
-
13.jpg
2020-06-25
artdrawingsinktobertraditional
-
14.jpg
2020-06-25
artdrawingsinktobertraditional
-
15.jpg
2020-06-25
artdrawingsinktobertraditional
-
16.jpg
2020-06-25
artdrawingsinktobertraditional
-
17.jpg
2020-06-25
artdrawingsinktobertraditional
-
18.jpg
2020-06-25
artdrawingsinktobertraditional
-
1_Fast.jpg
2020-06-25
artdrawingsinktobertraditional
-
1_poisonous.jpg
2020-06-25
artdrawingsinktobertraditional
-
2.jpg
2020-06-25
artdrawingsinktobertraditional
-
2_Noisy.jpg
2020-06-25
artdrawingsinktobertraditional
-
2_tranquil.jpg
2020-06-25
artdrawingsinktobertraditional
-
3_roasted.jpg
2020-06-25
artdrawingsinktobertraditional
-
4.jpg
2020-06-25
artdrawingsinktobertraditional
-
4_hungry.jpg
2020-06-25
artdrawingsinktobertraditional
-
4_spell.jpg
2020-06-25
artdrawingsinktobertraditional
-
5.jpg
2020-06-25
artdrawingsinktobertraditional
-
5_Sad.jpg
2020-06-25
artdrawingsinktobertraditional
-
5_chicken.jpg
2020-06-25
artdrawingsinktobertraditional
-
6.jpg
2020-06-25
artdrawingsinktobertraditional
-
6_drooling.jpg
2020-06-25
artdrawingsinktobertraditional
-
7.jpg
2020-06-25
artdrawingsinktobertraditional
-
7_Last.jpg
2020-06-25
artdrawingsinktobertraditional
-
7_exhausted.jpg
2020-06-25
artdrawingsinktobertraditional
-
8.jpg
2020-06-25
artdrawingsinktobertraditional
-
8_Rock.jpg
2020-06-25
artdrawingsinktobertraditional
-
8_star.jpg
2020-06-25
artdrawingsinktobertraditional
-
9.jpg
2020-06-25
artdrawingsinktobertraditional
-
9_Broken.jpg
2020-06-25
artdrawingsinktobertraditional
-
9_precious.jpg
2020-06-25
artdrawingsinktobertraditional
-
Annecy 26.jpg
2020-06-25
artfireworksphotography
-
Annecy 29.jpg
2020-06-25
artfireworksphotography
-
IMG_0789.jpg
2020-06-25
artfireworksphotography
-
IMG_0857.jpg
2020-06-25
artfireworksphotography
-
IMG_4293.JPG
2020-06-25
artfireworksphotography
-
IMG_4377.JPG
2020-06-25
artfireworksphotography
-
000012.JPG
2020-06-25
artanalogphotography
-
000013.JPG
2020-06-25
artanalogphotography
-
000038.JPG
2020-06-25
artanalogphotography
-
0_000015.JPG
2020-06-25
artanalogphotography
-
1_000008e.JPG
2020-06-25
artanalogphotography
-
1_000014e.JPG
2020-06-25
artanalogphotography
-
1_000016e.JPG
2020-06-25
artanalogphotography
-
1_000023e.JPG
2020-06-25
artanalogphotography
-
2_000013.JPG
2020-06-25
artanalogphotography
-
3_000033e.JPG
2020-06-25
artanalogphotography
-
IMG_1794.jpg
2020-06-25
artanalogphotography
-
IMG_1828.jpg
2020-06-25
artanalogphotography
-
Here comes a blog (again)
2020-05-31
txt
So, here is a "blog", again. I've maintained some kind of blog some years ago, but I wasn't satisfied with the content format and since then thought more about what I want to put on the internet. So, this is another attempt that should hopefully last longer. My original blog was more of a typical "post opinionated articles and forget about them": but now I want to maintain a website that act more like a wiki, in the sense that I will update them with new informations and new opinions as they come. Hence the ".txt" name rather than" blog". I originally wanted to classify them in a thematic way, but most things I want to talk about have overlapping themes. As such, I decided to organise this "blog" like this: Guides: exhaustive articles on some topics, usually pretty lengthy; notes: small snippets on things I learned and want to keep track of and share; thoughts: more classical blog articles, usually time sensitive, which might also act as a "miscellaneous" category. Tags will be used to classify the themes themselves. See you.
-
DTInside : "Chasseur"
2020-04-28
artdigitaldrawingsDTInside
-
0_000038.JPG
2020-01-02
artanalogphotography
-
Activism
2019-12-13
art
-
Draw Together
2019-12-13
art
-
Ireland
2019-12-13
art
-
London
2019-12-13
art
pouet.
-
misc analog
2019-12-13
art
-
Miscellaneous digital drawings
2019-12-13
art
-
Miscellaneous traditional drawings
2019-12-13
art
-
Nature
2019-12-13
art
-
Urban
2019-12-13
art
-
Weather & sky
2019-12-13
art
-
Inktober 2019
2019-11-01
art
-
Hambi
2019-07-30
art
-
000008e.JPG
2019-07-24
artanalogphotography
-
000013e.JPG
2019-07-24
artanalogphotography
-
000015.JPG
2019-07-24
artanaloghomephotography
-
2_000014.JPG
2019-07-24
artanaloghomephotography
-
2_000016.JPG
2019-07-24
artanalogphotography
-
2_000020.JPG
2019-07-24
artanalogphotography
-
2_000023.JPG
2019-07-24
artanalogphotography
-
2_000026.JPG
2019-07-24
artanalogphotography
-
2_000030.JPG
2019-07-24
artanaloghomephotography
-
Hambi drawing
2019-07-20
artdrawingtraditional
-
Draw Together : "Rue Dangereuse"
2019-06-23
artdigitaldrawingsDrawTogether
-
2019-06-14_000008.JPG
2019-06-14
artanaloghomephotography
-
2019-06-14_000009_2.JPG
2019-06-14
artanaloghomephotography
-
2019-06-14_000010.JPG
2019-06-14
artanaloghomephotography
-
2019-06-14_000011.JPG
2019-06-14
artanaloghomephotography
-
2019-06-14_000012.JPG
2019-06-14
artanaloghomephotography
-
2019-06-14_000013.JPG
2019-06-14
artanaloghomephotography
-
2019-06-14_000014.JPG
2019-06-14
artanaloghomephotography
-
2019-06-14_000018.JPG
2019-06-14
artanaloghomephotography
-
2019-06-14_000020.JPG
2019-06-14
artanaloghomephotography
-
2019-06-14_000021.JPG
2019-06-14
artanaloghomephotography
-
2019-06-14_000024.JPG
2019-06-14
artanaloghomephotography
-
2019-06-14_000025.JPG
2019-06-14
artanaloghomephotography
-
2019-06-14_000027.JPG
2019-06-14
artanaloghomephotography
-
2019-06-14_000028.JPG
2019-06-14
artanaloghomephotography
-
2019-06-14_000029.JPG
2019-06-14
artanaloghomephotography
-
2019-06-14_000030.JPG
2019-06-14
artanaloghomephotography
-
Pride de Nuit Lyon 2019
2019-06-14
art
-
Single Ladies @ BRYAN'S CAFE
2019-01-01
art
-
IMG_0371-Panorama.jpg
2018-11-06
art
-
Inktober 2018
2018-11-01
art
-
Hologram
2018-10-13
projects
Sommaire Photos Code In 2018 I made a "hologram" using the typical clear-plastic inverted pyramid. The project went through several iterations. Its goal wasn't to be ground-breaking but rather to entertain kids et even adults in events around digital and visual projects, like the "Expériences Numériques" (defunct website) and the Journées du logiciel Libre (https://jdll.org) The first iteration was an activity meant for kids, where they would build a small pyramid, to be placed on a smartphone to create a basic hologram using pre-made videos on the internet. The second iteration was an autonomous installation where people would (try to) follow instructions in a terminal to create a hologram of their face, kind of like a 3D photo booth (except faux-3D), on a fairly big pyramid. around 50 holograms were created. The last one was a crossover with a light-painting workshop, where people (mostly kids) would make a light-painting photograph and see it display in "3D" on the hologram. This is the few photos I've been able to find in my archives or using the Internet Archive (the association website being now defunct). The (sub-par) code is at the bottom. Photos# Code# (This script requires imagemagick, and might not even be compatible anymore, provided as is). 1 #!/bin/bash 2 3 echo "la capture durera 3 secondes !" 4 echo "Entrez votre mail afin que l'on vous envoie le fichier à postériori:" 5 6 read mail_addr 7 8 echo "(Attention, si vous vous trompez vous devrez refaire la vidéo !)" 9 10 captime=$(date +"%Y_%m%d_%H-%M-%S") 11 12 echo "$mail_addr: $captime" >> ~/liste_mail.txt 13 14 echo "capture dans..." 15 echo "5..." 16 sleep 1 17 echo "4..." 18 sleep 1 19 echo "3..." 20 sleep 1 21 echo "2..." 22 sleep 1 23 echo "1..." 24 sleep 1 25 echo "capture !" 26 27 streamer -q -c /dev/video0 -f rgb24 -r 25 -t 00:00:03 -o /home/jdll/holo_files/outfile.avi 28 29 echo "#######################" 30 echo "fini !" 31 echo "#######################" 32 33 echo "début du traitement : cela peut prendre jusqu'à une minute" 34 35 convert /home/jdll/holo_files/outfile.avi -background Black -scale 50% -rotate -45 -extent 200x200 -delay 4 /home/jdll/holo_files/out0.gif 36 convert /home/jdll/holo_files/outfile.avi -background Black -scale 50% -rotate 45 -extent 200x200 -delay 4 /home/jdll/holo_files/out1.gif 37 convert /home/jdll/holo_files/outfile.avi -background Black -scale 50% -rotate 135 -extent 200x200 -delay 4 /home/jdll/holo_files/out2.gif 38 convert /home/jdll/holo_files/outfile.avi -background Black -scale 50% -rotate 225 -extent 200x200 -delay 4 /home/jdll/holo_files/out3.gif 39 40 convert /home/jdll/holo_files/out0.gif -repage 400x200 -coalesce null: \( /home/jdll/holo_files/out1.gif -coalesce \) -geometry +200+0 -layers Composite /home/jdll/holo_files/out01.gif 41 42 convert /home/jdll/holo_files/out3.gif -repage 400x200 -coalesce null: \( /home/jdll/holo_files/out2.gif -coalesce \) -geometry +200+0 -layers Composite /home/jdll/holo_files/out32.gif 43 44 convert /home/jdll/holo_files/out01.gif -repage 400x400 -coalesce null: \( /home/jdll/holo_files/out32.gif -coalesce \) -geometry +0+200 -layers Composite /home/jdll/holo_files/videos/final_$captime.mp4 45 46 47 killall vlc 48 49 timeout 9 vlc --repeat /home/jdll/holo_files/videos/final_$captime.mp4
-
Draw Together : "Nordique Robotique"
2018-01-21
artdigitaldrawingsDrawTogether
-
Le drapeau noir flotte sur le squat
2017-12-16
arthomephotography
-
Inktober 2017
2017-11-01
art
-
Ride
2017-03-30
artdigitaldrawing
-
[Archive] Re: Pourquoi il ne faut surtout pas voter Mélenchon
2017-01-01
txt
Il y a quelques mois, j'avais fait un thread évoquant quelques raisons pour lesquelles il était à mes yeux dangereux de voter pour mélenchon. Twitter oblige, il se contentait d'énoncer quelques déclaration de ce cher méluche, issues de sources variées (son propre twitter, 20 minutes, l'express, le figaro, Médiapart, etc) afin d'éviter les remarques sur la vacuité des sources ou sur l'éventuelle interprétation qui serait faite par les journalistes. Certains tweets ont été depuis été débunké après discussions avec certain·es (j'admets que faire un meeting par hologramme pour promouvoir l'éducation et la recherche fait en fait sens). Mais évidemment, cela tenait du listing de citations plus que de l'analyse politique et cela me l'a été reproché : je vais tenter ici d'être plus exhaustif, ou du moins plus précis sur les dangers car il serait difficiles de tout lister. La raison qui m'avait poussée à faire ce thread —et de fait à faire ce texte— et que nombre de personnes de mon entourage désirent voter pour lui, en parlant de lui comme d'un communiste révolutionnaire prêt à torpiller le système. Ce qui est malheureusement loin, mais alors loin d'être le cas, sur tous les plans. Allons-y donc, du plus anodin au plus dangereux. Il n'est pas communiste, encore moins révolutionnaire# Alors non pas que ce soit un problème en soit (même si je préfère personnellement les moyens de production collectivisés), mais il n'est d'un point de vue pragmatique rien de tout ça. Exit donc la faucille et le marteau, le méluche dans le black-bloc ou au comico. Objectivement parlant, c'est un réformiste social-démocrate écologiste. À noter que si ça me gêne personnellement sur plusieurs points, ce n'est pas en soit une mauvaise chose ; écolo pas de souci, social-démocrate on en parle plus bas, et réformiste, je vois ça comme le fameux pansement sur une jambe de bois. Mais à chacun·e son bateau. Néanmoins il n'est pas le premier à prétendre faire de l'entrisme, ne sera pas le dernier et pour une bonne raison, le succès plus que relatif de cette tactique (et ce même si l'on parle d'un ancien trotskyste). Il n'est pas vraiment anti-système# Pour sûr, il ne cumule pas la centaine d'années (ni les millions détournés) de mandat de Fillon, a fut un temps été professeur et a participé à Mai 68. Néanmoins, il affiche depuis plusieurs dizaines d'années de travail dans le milieu politique, plusieurs mandats dont ministre délégué. Pas de quoi affoler les oies, mais comme symbole de l'anti-sytème on a déjà fait mieux. Qui plus est, à promettre de chambouler le système et à prétendre ne pas faire de promesse en l'air, il présente finalement un discours très similaire aux autres candidats : tous "anti-système" et "honnêtes". L'assemblée constituante n'aura pas lieu# On parle plus de spéculation dans ce cas là, mais jusqu'à preuve du contraire personne n'est omniscient : le débat est donc ouvert. Pour ma part, je ne pense pas qu'elle aura lieu. L'une des critiques faites au système "démocratique" tel qu'en place est précisément son inertie : malgré toute la bonne volonté du monde, cette assemblée n'arrivera pas à son terme. Aussi, le discours de mélenchon à son sujet, notamment sur l'exécution même de l'idée, est plus que troublant : il évoque notamment une durée d'existence pouvant atteindre un an, "voir plus". Ça sent selon mon humble avis le plan foireux à des kilomètres. Enfin. Si elle a lieu, elle s'attaque en rien à la racine du problème# Partons du postulat qu'elle a lieu, et qu'elle arrive à son terme. Elle ne fera que reproduire, à moindre échelle pour commencer, les tares du système qui nous vaut cette parodie "d'État de droit", ces élections comme cerise sur le gâteau. Les systèmes représentatifs —prétendûment démocratiques— nous ont plus que prouvé leur incapacité et leur danger : Qu'ils soient basés sur le vote ou sur un tirage au sort. Déplacer le problème du pouvoir n'empêche pas celui-ci d'être intrinsèquement dangereux et corruptible. Il n'est pas anticapitaliste# Celle là va probablement choquer militants comme agnostiques. Mais non, mélenchon n'est pas anti-capitaliste. Il parle bien de redistribution des richesses, d'amélioration du niveau de vie global, mais il n'adresse jamais la racine du mal (d'où la qualification plus haut de social démocrate). À vrai dire, il ne le prétend pas lui-même : son discours semble évoquer une vague idée (un spectre) de, mais au final jamais il ne se positionne (ni ne se positionnera) à l'encontre de ce système abusif. Pire encore, sa solution passe de parce même système : l'une des mesures économiques promises, sa relance keynésienne, frôlerait même le consumérisme. Pas de saisie des moyens de production ni de collectivisation à l'horizon donc. Les alternatives# Je ne ferais pas l'affront de parler d'abstentionnisme ou de vote blanc, si vous vouliez voter mélenchon il y a de fortes chances que vous teniez absolument à voter pour un·e candidat·e : la meilleure alternative serait alors de voter au choix pour Arthaud ou Poutou, par vote utile. Non pas un vote "utile" dans le sens où cela changerait les choses, mais bien parce que tout·e candidate·e atteignant 5% se voit rembourser ses frais de campagne.
-
Inktober 2016
2016-11-01
art
-
[Archive] Blanc bonnet et bonnet abstentionniste
2016-10-04
txt
Dans sa dernière vidéo (non pas celle-ci, mais celle-là) traitant de la la manipulation par la langue, l'on peut entendre Usul (en compagnie de Linguisticae) dire : « L'Etat tire sa légitimité du vote » Sous ses allures anodines, innocentes voire purement descriptives dans un contexte classique, cette phrase s'avère lourd de sens dans un texte traitant entre autres du "pouvoir". Plus précisément, cela signifie que le pouvoir se nourrit du vote (y compris blanc), présenté aux citoyen-nes comme leur propre pouvoir de décision sur l'État. S'en suit une évocation de la culpabilisation des "mauvais citoyens" qui s'abstiennent. Cette sacralisation du vote est si installée que même dans les milieux militants, pourtant vus comme "alternatifs", sa remise en cause provoque généralement un débat houleux et surtout très polarisé, à savoir celles et ceux qui défendent le vote et celles et ceux qui le critiquent. Il faut néanmoins évoquer, avant toute précipitation, les motifs de cette remise en cause par certain-es. Beaucoup remettent à vrai dire plus les facteurs en place que le vote lui-même, à savoir les partis et l'écosystème politique les maintenant en place et assurant que ce même système se justifie par lui-même. Pour d'autres, il s'agit surtout de revoir la façon dont ce vote est effectué, notamment en France : de nombreux systèmes existent, certains déjà appliqués dans d'autres pays ; cette manière de penser se heurte néanmoins à une critique assez répandue en statistique mettant en exergue qu'aucun système de vote n'est de toute façon parfait (à voir pour plus de précision, "La statistique expliquée à mon chat", citée en fin de vidéo). Enfin, la variante la plus acerbe de ces critiques, remettant en cause le principe même de vote (ne serait-ce à l'échelle d'un état) et proposant diverses alternatives démocratiques ou non selon les courants de pensées, allant du tirage au sort à la monarchie, en passant par le refus pur et simple d'une quelconque organisation gouvernementale ou assimilée. L’abstentionniste est donc perçu comme un-e fainéant-e, inintéressé-e par la politique et de manière générale par tous les pendants sociaux de la société. Il est souvent reconnu qu'une minorité agit effectivement ainsi par lassitude du système, mais cela s'accompagne toujours d'une incitation à plutôt s'exprimer au travers du vote blanc. deux choses viennent donc en travers de cette logique : d'une, l'évidence du "c'est par fainéantise", valable que si l'on ne considère effectivement la situation qu'au travers d'un vote comme outil démocratique absolu ; j'évoquais plus haut l'auto-justification, on est en plein dedans. Si on ne peut pas non plus éliminer cette possibilité d'un revers de la main, des statistiques claires et surtout récoltées de manière crédible tiennent de l'exercice périlleux tant le concept de "flemme" serait compliqué à définir et à déceler au travers d'un quelconque protocole. Ainsi arrive donc la seconde faiblesse de ce raisonnement : considérer sans base solide que cette flemme est une cause auto-suffisante, et non une conséquence d'un environnement politique toxique en place depuis des dizaines/centaines d'années. Le résultat est là : toute critique du "vote" ( du moins encore une fois, tel qu'en place actuellement) est résumée à un refus irresponsable de choisir entre les partis existants, et dont la réponse est inéluctable : "au pire, vote blanc". Pour reprendre des concepts évoqués dans la vidéo associée à ce billet, il s'agit d'un discours, qui construit une réalité dans laquelle la solution proposée s'impose comme logique et unique à l'auditeur, qu'iel le veuille ou non. Pendant ce temps là, dans le vrai monde de la vérité véritable, chacun a ses raisons de ne pas voter : refus des partis, refus du système, refus du vote, et parfois de manière justifiée ou non, par fainéantise. Cela balaye donc toutes les alternatives possibles, y compris certaines pourtant assez proches du système actuel comme la démocratie directe (qui est elle aussi critiquable, mais pour d'autres raisons). L'abstentionnisme n'est pas un équivalent malhabile et bas-de-plafond au vote blanc : c'est un refus de légitimer le système politique dans son ensemble, et non un simple appel à réformer le paysage politique français.
-
Aberdeen explosion
2016-09-21
artdigitaldrawingsaberdeen3700
-
Kerbal Space Program
2016-08-24
art
-
[Archive] "Just use Tor."
2016-08-09
txt
Tor est souvent présenté comme LA solution ultime à vos problèmes de gouvernement trop curieux ou de MégaCorp omniscients. Plus précisément, chaque fois qu'un.e néophyte demande des solutions à la surveillance généralisée dans la vie de tous les jours, on entend (trop) souvent en réponse "déjà, installe Tor Browser" en plus des classiques "désactive ton Facebook" et "passe sous Linux", qui souffrent du même problème de non-mise en contexte. Mais ce n'est pas le propos ici. Une solution magique ?# Pour commencer, l'aspect technique pur : Tor n'est pas la solution à tous les problèmes. Générer du trafic Tor est tout sauf inoffensif et revient à accrocher un néon "Je fais des trucs pas glop" à sa connexion. Détecter Tor est un non-effort pour un état, et peut selon les besoins être même contre-productif. Le problème n'est donc pas de proposer Tor : c'est un outil qui reste puissant et qui fait partie de ces outils comme PGP ou Signal qui ont le mérite d'encore pas mal entraver le recul de la vie privée. Non, le problème est cette tendance à conseiller son usage sans en expliquer les tenants et aboutissants et pire encore, sans en expliquer les risques. "Un utilisateur averti en vaut une bonne tripotée d'inconscients." Comment, pourquoi# Tor pose donc avant tout un problème de mise en contexte : seul, il s'avère donc généralement avoir l'effet inverse de ce qui est désiré. Il est donc d'usage d'utiliser en plus de celui-ci un VPN afin de réduire la visibilité de son trafic auprès d'un éventuel intermédiaire, a contrario de certaines solutions qui visent plutôt à se cacher vis-à-vis du point distant (généralement un serveur) sur lequel on se connecte. Attention néanmoins, un VPN n'est pas non plus une solution miracle et ne rend pas totalement transparente une connexion ; une analyse à peine plus minutieuse des paquets ou simplement de l'adresse de grands fournisseurs de VPN permet d'en détecter l'usage. Aussi, parce que l'on fait transiter son trafic par un intermédiaire supplémentaire, il faut en plus faire confiance à celui-ci ou à la législation de son pays. Tor pose également des risques sécuritaires. Sans être le Far-west que nous vendent les politiciens, il est préférable de mettre au fait les personnes à qui l'on en conseille l'usage. D'une part, éviter au maximum les téléchargements de fichiers binaires (.exe) via Tor. Il est de moins en moins rare de voir des nœuds transitaires compromis tenter de véroler ceux-ci pour peu que la connexion soit mal protégée ; même si Tor Browser se pare de l'addon HTTPS-Everywhere, une connexion HTTPS peut tout aussi bien être mal protégée. Et dans tous les cas, Tor restant un réseau alternatif il ne jouit pas de la même capacité de trafic qu'une connexion classique et il est donc préférable d'éviter les téléchargements trop lourds si possible. À cela s'ajoute que si le derk-oueb n'est pas spécialement plus rempli de trucs illégaux que le "clearnet" ou même le vrai monde de la vie véritable, il rend néanmoins leur accès un peu plus simple ; il faut donc encore une fois sensibiliser les utilisateurs aux "codes" de ces réseaux, afin qu'ils se tiennent à distance de tout ce qui peut faire mention de "hard-candy" (comprenez, du porn pédo), "snuff" ou voire selon les sensibilités des clones de feu la Silk-road. Faute de solution parfaite...# Le concept clef ici est celui du modèle de menace : contre qui se protège-t-on, pour quelles données, et avec quelle marge d'erreur tolérée. Aucune solution n'est parfaite et il faut partir du principe que toute donnée est potentiellement compromise. En avoir conscience est important afin de savoir quels risques nous sommes prêt à courir comparé à l'importance des données mises en jeu. Ne pas adapter son niveau de protection aux besoins, c'est courir le risque de voir des données pourtant peu intéressantes attirer l'attention et finir compromise, alors que l'on cherchait l'effet inverse. Tor Browser s'avère donc utile dans deux cas principaux : quand ce n'est pas possible de s'en passer, si par exemple votre gouvernement bloque tout bonnement l'accès à la ressource désirée et que vous comptez régulièrement y accéder tout en pariant sur l'aspect protectif plus que l'aspect invisibilisation ; si vous vous prétendez "crypto-anarchiste" et que vous vous servez donc de Tor par choix politique et non par besoin, afin d'entraver la surveillance de masse en générant un maximum de bruit. Cela implique en revanche de ne pas tant compter que ça sur ça vie privée, le but étant de se transformer en phare ambulant. En bref : si vous conseillez Tor à quelqu'un, accompagnez toujours la chose des conseils d'usage sur la vie privée et les bonnes pratiques sur les réseaux.
-
[Archive] Prologue.
2016-07-10
txt
Nous y voilà. It's happening# Il est beau il est chaud, vous ne l'attendiez pas et pourtant le voilà. Ça fait longtemps que me m'habite l'idée de faire un site, un vrai ; enfin, pas entièrement fait main (pas encore) mais auto-hébergé, auto-géré et auto pleins de trucs cools. Ce site n'aura sûrement pas beaucoup d'audience et pour être honnête je n'en ai pas la prétention : mais il me permettra d'enfin disposer d'un plateforme viable pour les diverses projets et/ou tirades que je me retiens de mettre en ligne faute de solution convaincante. DeviantART ? J'ai donné. Tumblr ? Vachement bien pour rebloguer des trucs marrants et du porn, moins pour exposer dignement des photos/dessins/projets/rants (quoique pour ce dernier). Non : un bon CMS, un accès root pour bidouiller le style et les templates, de quoi faire des vraies pages statiques, et aussi le contrôle sur la façon dont est délivré le contenu, voilà ce qu'il me manquait. Le site n'est donc pas totalement terminé, reste quelques détails à régler (comme ces maudits liens linkedin et G+), possiblement des bugs et blocages qui remonteront avec le temps, pérenniser l'infra (i.e: passer déplacer toutes les données vers un dossier unique qui sera sauvegardé régulièrement) mais on devrait pouvoir s'en sortir. Contenu# Dans la mesure où il rassemblera plus ou moins tout ce que je postais jusqu'à présent sur diverses plateformes hétéroclites, le contenu du site devrait être assez pluriel ; il devrait y avoir d'ici peu des pages de galerie afin de poster mes œ̖̼ͬ̅̀͆̿ͅų͎̿̑ͧ͗ͥv̟̭̖̂̈͗ͪ͝ȓ̶̲̥͆͛̔͑͌̇e͎͔̺̝͑ͧ̿͗ͩ̊s̡̊ͯͩ̅ , des tutoriels diverses (deux trois sur GIMP entres autres, histoire de redorer le blason de ce soft qui est capable de plus qu'on ne le croit), et probablement beaucoup, beaucoup de rants (j'aime ça râler, ne nous mentons pas). J'ignore encore comment gérer l'aspect bilingue du truc mais ça on verra après. Point technique# Rien de fou mais précisons tout de même : Un Raspberry Pi avec Raspbian, nginx en reverse-proxy, et Ghost dans un container docker. Ghost m'a tapé dans l'oeil après avoir essayé plusieurs CMS : clean, simple, du markdown, une interface d'admin potable et quoi qu'on en dise de la flexiblité ; même si avec un peu d'huile de coude, j'espère un jour faire un site viable from scratch, possiblement en Django histoire d'avoir une interface d'admin potable et de quoi pousser des articles et pages sans avoir à se connecter en SSH/pousser un fichier Markdown/re-build le site. N'est-ce pas Jekyll. Allez, des bisous.
-
Draw Together : "Dragons"
2016-07-04
artdigitaldrawingsDrawTogether
-
Draw Together : "Terreur Nocturne"
2016-06-30
artdigitaldrawingsDrawTogether
-
Draw Together : "biomécanique"
2016-06-26
artdigitaldrawingsDrawTogether
-
ksp farewell felipe
2016-05-30
artdigitaldrawings
-
Aberdeen on time
2016-05-19
artanalogphotographyaberdeen3700
-
ksp 1.1 turbo charged update
2016-04-20
artdigitaldrawings
-
Draw Together : "Eau"
2016-02-25
artdigitaldrawingsDrawTogether
-
IMG_1592.jpg
2015-11-14
artdrawingstraditionalaberdeen3700
-
Draw Together : "Médiéval laser"
2015-10-29
artdigitaldrawingsDrawTogether
-
Draw in Together : "Froid"
2015-07-25
artdigitaldrawingsDrawTogether
-
Draw in Game : Grow Home
2015-02-15
artdigitaldrawingsDrawInGame
-
Hazard II
2015-02-14
artdigitaldrawings
-
Gilly1.png
2015-02-08
artdigitaldrawings
-
Eve.png
2015-01-25
artdigitaldrawings
-
Moho.png
2015-01-21
artdigitaldrawings
-
Draw in Game : "Journey"
2015-01-18
artdigitaldrawingsDrawInGame
-
KSP polar.png
2015-01-13
artdigitaldrawings
-
Draw in Game : Ethan Carter
2015-01-11
artdigitaldrawingsDrawInGame
-
Scotland
2015-01-01
art
-
KSP winter contest
2014-12-12
artdigitaldrawings
-
IMG_2098.JPG
2014-08-24
arttraditional
-
ksp 0.24 first contract
2014-07-17
artdigitaldrawings
-
ksp duna speed paint
2014-07-15
artdigitaldrawings
-
ksp apollo
2014-07-10
artdigitaldrawings
-
Draw in Game : "The Legend of Zelda: twlight princess"
2014-06-21
artdigitaldrawingsDrawInGame
-
Draw in Game : "The Dig"
2014-05-31
artdigitaldrawingsDrawInGame
-
Draw in Game : "The Inferno"
2014-05-23
artdigitaldrawingsDrawInGame
-
Draw in Game :Superbrothers: Sword & Sworcery
2014-05-16
artdigitaldrawingsDrawInGame
-
Archives
2011-01-01
art