<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Work on nobe4</title><link>https://nobe4.fr/tags/work/</link><description>Recent content in Work on nobe4</description><generator>Hugo</generator><language>en-us</language><copyright>&lt;a href="https://creativecommons.org/licenses/by-sa/4.0/"&gt;CC BY-SA&lt;/a&gt;</copyright><lastBuildDate>Sat, 27 Jun 2026 12:13:35 +0200</lastBuildDate><atom:link href="https://nobe4.fr/tags/work/index.xml" rel="self" type="application/rss+xml"/><item><title>When Go user.Lookup fails</title><link>https://nobe4.fr/posts/when-go-user.lookup-fails/</link><pubDate>Thu, 11 Jun 2026 00:00:00 +0000</pubDate><guid>https://nobe4.fr/posts/when-go-user.lookup-fails/</guid><description>&lt;p&gt;A Docker base image bump turned into a multi-day debug of Go&amp;rsquo;s &lt;code&gt;os/user&lt;/code&gt;
package, NSS, SSSD, LDAP and GLIBC ABI. Here is what happened and what I
learned.&lt;/p&gt;
&lt;p&gt;Throughout this post, &lt;code&gt;alice&lt;/code&gt; is an admin account with a hardcoded entry in
&lt;code&gt;/etc/passwd&lt;/code&gt;, and &lt;code&gt;bob&lt;/code&gt; is a regular user who only exists in the central LDAP
directory. All details of &lt;code&gt;/bin/client&lt;/code&gt; are fictitious for the purpose of this
post.&lt;/p&gt;
&lt;h2 id="how-it-started-glibc-errors"&gt;How it started: GLIBC errors&lt;/h2&gt;
&lt;p&gt;After deploying a routine docker update, users started seeing errors:&lt;/p&gt;</description></item><item><title>Shallow clone lies</title><link>https://nobe4.fr/posts/shallow-clone-lies/</link><pubDate>Sat, 30 May 2026 00:00:00 +0000</pubDate><guid>https://nobe4.fr/posts/shallow-clone-lies/</guid><description>&lt;p&gt;A GitHub CI script at work checks who last edited a config file. If the author
isn&amp;rsquo;t the expected one, the build fails. Good guardrail, until it started lying.&lt;/p&gt;
&lt;p&gt;The script reported the wrong author: someone who never touched the file. The
check failed, even though the right person had made the last edit.&lt;/p&gt;
&lt;h2 id="the-setup"&gt;The setup&lt;/h2&gt;
&lt;p&gt;The CI workflow uses &lt;code&gt;actions/checkout&lt;/code&gt; with the default settings, then checks
who last edited a config file:&lt;/p&gt;</description></item><item><title>Stars</title><link>https://nobe4.fr/posts/stars/</link><pubDate>Thu, 23 Jan 2025 00:00:00 +0000</pubDate><guid>https://nobe4.fr/posts/stars/</guid><description>&lt;p&gt;Being idealistic is hard for me to brush off. I overly enjoy perfection and the
feeling of having created something &lt;em&gt;just right&lt;/em&gt;.&lt;/p&gt;
&lt;p&gt;Having guidelines, or rules matters only if consistently applied. Code fits
greatly to this via linter, type checkers, formatters, etc.&lt;/p&gt;
&lt;p&gt;For other things, I find it useful to have guiding principles, less as strong
rules and more as &lt;em&gt;unreachable states&lt;/em&gt;. Aiming, if never reaching, for something
&lt;strong&gt;perfectly great&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>208 Energy</title><link>https://nobe4.fr/posts/208-energy/</link><pubDate>Tue, 30 Jun 2015 00:00:00 +0000</pubDate><guid>https://nobe4.fr/posts/208-energy/</guid><description>&lt;p&gt;Scroll all the way down !&lt;/p&gt;
&lt;p&gt;For the release of the new Peugeot 208, we developed at &lt;a href="http://cogitstudio.com"&gt;Cogit
Studio&lt;/a&gt; a single scrolling webpage to beautifully
present the car.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.208energy.com"&gt;Feel the energy&lt;/a&gt; (website down)&lt;/p&gt;</description></item><item><title>308 Experience</title><link>https://nobe4.fr/posts/308-experience/</link><pubDate>Sun, 22 Mar 2015 00:00:00 +0000</pubDate><guid>https://nobe4.fr/posts/308-experience/</guid><description>&lt;p&gt;Scroll all the way down !&lt;/p&gt;
&lt;p&gt;For the release of the new Peugeot 308, we developed at &lt;a href="http://cogitstudio.com"&gt;Cogit
Studio&lt;/a&gt; a single scrolling webpage to beautifully
present the car.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.308experience.com/"&gt;Live the Experience&lt;/a&gt; (website down)&lt;/p&gt;</description></item><item><title>The Ad Filter</title><link>https://nobe4.fr/posts/the-ad-filter/</link><pubDate>Sun, 15 Mar 2015 00:00:00 +0000</pubDate><guid>https://nobe4.fr/posts/the-ad-filter/</guid><description>&lt;p&gt;The &lt;a href="http://www.dandad.org/en/d-ad-browser-ad-filter/"&gt;Ad Filter&lt;/a&gt; is a Chrome
and Firefox extension that only shows the &amp;ldquo;best&amp;rdquo; ads.&lt;/p&gt;
&lt;iframe width="100%" height="432" src="https://www.youtube.com/embed/T4jniN89mnQ" frameborder="0" allowfullscreen&gt;&lt;/iframe&gt;
&lt;p&gt;This work was done with &lt;a href="http://cogitstudio.com"&gt;Cogit Studio&lt;/a&gt; and
&lt;a href="https://www.dandad.org/"&gt;D&amp;amp;AD&lt;/a&gt;.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.adweek.com/adfreak/browser-extension-replaces-boring-old-preroll-worlds-best-ads-165008"&gt;D&amp;amp;AD and BETC&amp;rsquo;s new Ad
Filter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://thenextweb.com/media/2015/05/27/bad-ads/"&gt;The most hypocritical ad blocker ever replaces ‘bad’ clips with award
winning ones&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.thedrum.com/news/2015/05/30/dad-s-bad-ad-blocker-timely-reminder-importance-online-creativity"&gt;D&amp;amp;AD’s &amp;lsquo;bad ad&amp;rsquo; blocker a timely reminder of the importance of online
creativity&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.linkedin.com/pulse/why-dad-wrong-create-its-ad-blocker-chris-barraclough"&gt;Why D&amp;amp;AD is wrong to create its ad
blocker&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;</description></item></channel></rss>