<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Colas.Nahaboo.net - blog</title>
    <subtitle>Colas Nahaboo personal site, with discussions about programming code, web and computing topics, surfing and SUPing, and various musings.</subtitle>
    <link rel="self" type="application/atom+xml" href="https://colas.nahaboo.net/tags/blog/atom.xml"/>
    <link rel="alternate" type="text/html" href="https://colas.nahaboo.net"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-04-28T00:00:00+00:00</updated>
    <id>https://colas.nahaboo.net/tags/blog/atom.xml</id>
    <entry xml:lang="en">
        <title>I recovered my Facebook account, read how</title>
        <published>2026-04-28T00:00:00+00:00</published>
        <updated>2026-04-28T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://colas.nahaboo.net/blog/i-recovered-my-facebook-account-read-how/"/>
        <id>https://colas.nahaboo.net/blog/i-recovered-my-facebook-account-read-how/</id>
        
        <content type="html" xml:base="https://colas.nahaboo.net/blog/i-recovered-my-facebook-account-read-how/">&lt;h2 id=&quot;what-happened&quot;&gt;What happened&lt;a class=&quot;zola-anchor&quot; href=&quot;#what-happened&quot; aria-label=&quot;Anchor link for: what-happened&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;On 2024-10-24, &lt;a href=&quot;https:&#x2F;&#x2F;colas.nahaboo.net&#x2F;blog&#x2F;my-facebook-account-has-changed-hacked&#x2F;&quot;&gt;my Facebook account was hacked&lt;&#x2F;a&gt;. Alas, Facebook did not allow me to get back my account, or even report the account as compromised, without entering the current password that whad been changed by the hackers. So I had to create a new account, and moved on.&lt;&#x2F;p&gt;
&lt;p&gt;However, I recently created a test account on Instagram, to try to generate RSS feeds to follow Instagram accounts more comfortably via my RSS-Bridge. And I was surprised to see that my &quot;new&quot; account was in fact the account of another user that had been blocked, then unblocked.&lt;&#x2F;p&gt;
&lt;p&gt;This prompted me to try to re-log into my old Facebook account and... it worked! &lt;strong&gt;I was able to reset the password&lt;&#x2F;strong&gt; without knowing the current one.
I thus will remove the new account after some time.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;nice-but-why&quot;&gt;Nice, but why?&lt;a class=&quot;zola-anchor&quot; href=&quot;#nice-but-why&quot; aria-label=&quot;Anchor link for: nice-but-why&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;But looking a bit (for instance about &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;riskbasedauthentication.org&#x2F;state-of-practice&#x2F;&quot;&gt;Risk-Based Authentication (RBA)&lt;&#x2F;a&gt;, it appears I was lucky to try to re-use my account just days after a 6 month delay: Facebook relaxes accounts the security measures 6 months after a detected suspicious activity!&lt;&#x2F;p&gt;
&lt;p&gt;The behavior I experienced — being blocked from recovery despite having valid contact info, followed by a sudden &quot;opening&quot; of access — is apparently a documented pattern in Facebook’s security ecosystem, notably their &lt;strong&gt;automated risk assessment&lt;&#x2F;strong&gt; procedures.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;the-security-freeze-why-i-was-stuck&quot;&gt;The &quot;Security Freeze&quot; (Why I was stuck)&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-security-freeze-why-i-was-stuck&quot; aria-label=&quot;Anchor link for: the-security-freeze-why-i-was-stuck&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;When a hijacker changes a password, Facebook’s &quot;Trusted Device&quot; and &quot;Location&quot; protocols often trigger a lock. Even if my email and phone were correct, Facebook may refuse a reset if:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;I cannot provide the current password, aka &lt;strong&gt;The &quot;Current Password&quot; Requirement&lt;&#x2F;strong&gt;. This is a common defensive measure when Facebook detects a &quot;conflict of ownership.&quot; If the system sees two different locations (mine and the hacker&#x27;s) trying to claim the account, it often demands the &lt;em&gt;current&lt;&#x2F;em&gt; password to prevent the owner from being &quot;kicked out&quot; by someone who isn&#x27;t actually the owner. Needless to say, this is a really bad design, as hackers first move is to change the password.&lt;&#x2F;li&gt;
&lt;li&gt;I use another browser. As I tried many ways to recover my account, I also tried to use another browser on another machine, to start afresh. But this failed Facebook &lt;strong&gt;IP Reputation&lt;&#x2F;strong&gt; detection: Seeing I was trying to recover the account from a network or device the system didn&#x27;t &quot;trust&quot; at that moment, it applied the most restrictive recovery path to the account.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;why-it-suddenly-worked-the-6-months-cooldown-period&quot;&gt;Why it suddenly worked (The 6 months &quot;Cooldown&quot; Period)&lt;a class=&quot;zola-anchor&quot; href=&quot;#why-it-suddenly-worked-the-6-months-cooldown-period&quot; aria-label=&quot;Anchor link for: why-it-suddenly-worked-the-6-months-cooldown-period&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Nothing is actually officially documented, but here is the likely scenario:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Risk Score Decay:&lt;&#x2F;strong&gt; After 6 months of inactivity (or if the hacker eventually triggered a &quot;Security Lock&quot; that made the account go dormant), the &quot;Risk Score&quot; associated with the account drops.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Account Dormancy:&lt;&#x2F;strong&gt; Facebook often flags accounts that have been compromised as &quot;checkpointed.&quot; After a certain period of time without successful logins from the hijacker, the system may lower the threshold for recovery for the &lt;em&gt;original&lt;&#x2F;em&gt; owner, especially if he are using a device or IP address that was associated with the account for years before the hack.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;The &quot;Verification Reset&quot;:&lt;&#x2F;strong&gt; Facebook occasionally clears the &quot;verification debt&quot; on accounts. If the hacker was blocked by Facebook’s automated systems (e.g., for spamming), the account enters a state where the next person to provide valid 2FA or email confirmation is granted access without the &quot;current password&quot; hurdle.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;All of this is totally automated, with no human intervention, by the system&#x27;s &lt;strong&gt;&quot;Identity Verification&quot;&lt;&#x2F;strong&gt; logic resetting itself after a period of dormancy. Once the &quot;Pirate&quot; was no longer active, the system stopped viewing my recovery attempt as a &quot;hostile takeover&quot; and allowed the standard email&#x2F;phone reset to work.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;summary-of-known-behavior&quot;&gt;Summary of Known Behavior&lt;a class=&quot;zola-anchor&quot; href=&quot;#summary-of-known-behavior&quot; aria-label=&quot;Anchor link for: summary-of-known-behavior&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;table&gt;&lt;thead&gt;&lt;tr&gt;&lt;th style=&quot;text-align: left&quot;&gt;Stage&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;System Logic&lt;&#x2F;th&gt;&lt;th style=&quot;text-align: left&quot;&gt;Result&lt;&#x2F;th&gt;&lt;&#x2F;tr&gt;&lt;&#x2F;thead&gt;&lt;tbody&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Initial Hack&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;High-conflict state; system protects the &quot;active&quot; user.&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Recovery denied despite valid email.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;The 6-Month Gap&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Account goes dormant or hacker is &quot;checkpointed.&quot;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Security tension on the account relaxes.&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;tr&gt;&lt;td style=&quot;text-align: left&quot;&gt;&lt;strong&gt;Recovery&lt;&#x2F;strong&gt;&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;System recognizes you are the owner IP&#x2F;Location and valid contact info.&lt;&#x2F;td&gt;&lt;td style=&quot;text-align: left&quot;&gt;Password reset allowed without &quot;Current Password.&quot;&lt;&#x2F;td&gt;&lt;&#x2F;tr&gt;
&lt;&#x2F;tbody&gt;&lt;&#x2F;table&gt;
&lt;h3 id=&quot;what-to-do-once-the-account-is-recovered&quot;&gt;What to do once the account is recovered&lt;a class=&quot;zola-anchor&quot; href=&quot;#what-to-do-once-the-account-is-recovered&quot; aria-label=&quot;Anchor link for: what-to-do-once-the-account-is-recovered&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;Check the Settings for &lt;strong&gt;&quot;Saved Login&quot;&lt;&#x2F;strong&gt;, &lt;strong&gt;&quot;Where you&#x27;re logged in&quot;&lt;&#x2F;strong&gt;, and &lt;strong&gt;&quot;Apps and websites&quot;&lt;&#x2F;strong&gt; immediately. Sometimes hackers leave a &quot;backdoor&quot; by authorizing a specific browser or app that doesn&#x27;t require a password.&lt;&#x2F;li&gt;
&lt;li&gt;Change the password, enable 2FA (Two-factor authentication).&lt;&#x2F;li&gt;
&lt;li&gt;Remove all apps connected to the account.&lt;&#x2F;li&gt;
&lt;li&gt;Check other sites that authorized logins from this Facebook account, change their passwords andf look for suspicious activity.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>My Facebook account has changed (hacked)</title>
        <published>2024-10-24T00:00:00+00:00</published>
        <updated>2024-10-24T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://colas.nahaboo.net/blog/my-facebook-account-has-changed-hacked/"/>
        <id>https://colas.nahaboo.net/blog/my-facebook-account-has-changed-hacked/</id>
        
        <content type="html" xml:base="https://colas.nahaboo.net/blog/my-facebook-account-has-changed-hacked/">&lt;p&gt;
&lt;div class=&quot;obsolete-overlay&quot;&gt;
    OBSOLETE
&lt;&#x2F;div&gt;
&lt;style&gt;
.obsolete-overlay {
    &#x2F;* Position fixed to cover the screen as you scroll *&#x2F;
    position: fixed;
    top: 45%;
    left: 35%;
    transform: translate(-50%, -50%) rotate(-45deg);
    &#x2F;* Look and Feel *&#x2F;
    font-size: 12vw; &#x2F;* Scales with screen width *&#x2F;
    font-weight: 900;
    color: rgba(255, 0, 0, 0.4); &#x2F;* Red text with 40% opacity *&#x2F;
    background: rgba(255, 255, 0, 0.2); &#x2F;* Yellow background with 20% opacity *&#x2F;
    border: 15px solid rgba(255, 0, 0, 0.3); &#x2F;* Red border 30% opacity *&#x2F;
    padding: 20px 50px;
    &#x2F;* Technical magic *&#x2F;
    z-index: 9999;          &#x2F;* Keep it above everything else *&#x2F;
    pointer-events: none;   &#x2F;* IMPORTANT: Allows clicking through the text *&#x2F;
    text-transform: uppercase;
    white-space: nowrap;
    user-select: none;      &#x2F;* Prevents highlighting the watermark *&#x2F;
}
&lt;&#x2F;style&gt;
&lt;div class=&#x27;info warning&#x27;&gt;&lt;svg xmlns=&quot;http:&#x2F;&#x2F;www.w3.org&#x2F;2000&#x2F;svg&quot; height=&quot;24px&quot; viewBox=&quot;0 -960 960 960&quot; width=&quot;24px&quot; fill=&quot;#1f1f1f&quot;&gt;&lt;path d=&quot;M449.5-85Q435-91 423-102L102-423q-11-12-17-26.5T79-480q0-16 6-31t17-26l321-321q12-12 26.5-17.5T480-881q16 0 31 5.5t26 17.5l321 321q12 11 17.5 26t5.5 31q0 16-5.5 30.5T858-423L537-102q-11 11-26 17t-31 6q-16 0-30.5-6Zm30.5-74 321-321-321-321-321 321 321 321Zm-40-281h80v-240h-80v240Zm68.5 108.5Q520-343 520-360t-11.5-28.5Q497-400 480-400t-28.5 11.5Q440-377 440-360t11.5 28.5Q463-320 480-320t28.5-11.5ZM480-480Z&quot;&#x2F;&gt;&lt;&#x2F;svg&gt; Warning: obsoleted by &lt;a href=&#x27;&#x2F;blog&#x2F;i-recovered-my-facebook-account-read-how&#x2F;&#x27;&gt;this new version&lt;&#x2F;a&gt;.&lt;&#x2F;div&gt;

Warning: on 2024-10-24, my Facebook account was hacked. Alas, Facebook did not allow me to get back my account, or even report it, so I had to create a new one.&lt;&#x2F;p&gt;
&lt;p&gt;So please never use my old account anymore ( https:&#x2F;&#x2F;www.facebook.com&#x2F;colas.nahaboo ) and block it under Facebook to be safe, as hackers are going to use it to hack and phish others, and use my new account: https:&#x2F;&#x2F;www.facebook.com&#x2F;profile.php?id=61567836084230&lt;&#x2F;p&gt;
&lt;p&gt;I changed my profile picture (on Facebook only for now) to differentiate the two accounts:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;img src=&quot;https:&#x2F;&#x2F;colas.nahaboo.net&#x2F;blog&#x2F;my-facebook-account-has-changed-hacked&#x2F;Avatars-old-new.png&quot; alt=&quot;&quot; &#x2F;&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>One year retired</title>
        <published>2022-02-24T00:00:00+00:00</published>
        <updated>2022-02-24T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://colas.nahaboo.net/blog/one-year-retired/"/>
        <id>https://colas.nahaboo.net/blog/one-year-retired/</id>
        
        <content type="html" xml:base="https://colas.nahaboo.net/blog/one-year-retired/">&lt;p&gt;I have been retired for one year now, and what happened? Well...&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;I basically stopped coding and reading about anything computer-related for eight months. I didn&#x27;t expect it, I was thinking I would start coding at once, going through my huge todo list of various projects.&lt;&#x2F;li&gt;
&lt;li&gt;I enjoyed being able to go SUP surfing at will, but I ended up actually less on the water than before, simply because i didn&#x27;t feel pressured into going on the water if the conditions were not enjoyable: I have now all the time in the world, I can wait for better conditions.&lt;&#x2F;li&gt;
&lt;li&gt;I started what I should have done years ago: Stretching at least 30 minutes daily, and warming up a full 10 minutes before going surfing. Work and play for me were mainly sitting in front of a computer, and I had become awfully stiff. I will detail my routine in later posts, it is worth it.&lt;&#x2F;li&gt;
&lt;li&gt;I dived deep in modern physics: astrophysics, cosmology and quantum mechanics. This also will warrant a full separate post.&lt;&#x2F;li&gt;
&lt;li&gt;I started re-coding in the last four months:
&lt;ul&gt;
&lt;li&gt;The first month I began working on various bits of code (shell scripts), progressively getting back to speed, and also deciding to learn the language Go. I was looking for a very longtime for an efficient language to replace lisp or C as compliment to scripting (I never liked Java), and was hesitating between Rust and Go. A discussion with &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.arsac.org&#x2F;olivier&#x2F;&quot;&gt;Olivier Arsac&lt;&#x2F;a&gt; convinced me to try Go.&lt;&#x2F;li&gt;
&lt;li&gt;I switched to git (I was using mercurial) for version control, and &lt;a href=&quot;&#x2F;code&#x2F;moving-to-github&#x2F;&quot;&gt;moved&lt;&#x2F;a&gt; my publicly available source codes from my personal web site to my &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;github.com&#x2F;ColasNahaboo&quot;&gt;GitHub&lt;&#x2F;a&gt;. It may sound ridiculous, but at now 61, setting things up so they do not disappear when I do is becoming an important consideration. I will thus progressively stop using self-hosted sites to publish on places that will survive me, as nobody in my family is tech-savvy enough to maintain a web site.&lt;&#x2F;li&gt;
&lt;li&gt;Then in December I stumbled upon the &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;adventofcode.com&#x2F;&quot;&gt;Advent of Code&lt;&#x2F;a&gt; challenge that I decided to do in bash for the challenge, and it was unexpectedly productive? I learned more in these 25 puzzles than in my last 10 years of professional bash scripting. You can see my solutions in my post &lt;a href=&quot;&#x2F;code&#x2F;bash-lessons-learned-with-aoc-2021&quot;&gt;Bash lessons learned with AoC 2021&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Thus, after finishing the Go tutorial, I decided to do the previous AoC years in Go. And I just &lt;a href=&quot;&#x2F;code&#x2F;completed-the-2015-advent-of-code-challenge-in-go&quot;&gt;finished the AoC 2015 in Go&lt;&#x2F;a&gt;. This definitively made me a Go enthusiast, I realized that the designers of Go had exactly the same opinion of what should be a general programming language: They worshiped readability, simplicity, performance and maintainability while hating inheritance and the feature creep of most modern languages.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;That was my first year. And now, embarking for the next one!&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Retired, at last!</title>
        <published>2021-02-25T00:00:00+00:00</published>
        <updated>2021-02-25T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://colas.nahaboo.net/blog/retired-at-last/"/>
        <id>https://colas.nahaboo.net/blog/retired-at-last/</id>
        
        <content type="html" xml:base="https://colas.nahaboo.net/blog/retired-at-last/">&lt;p&gt;At last, I am now retired!&lt;&#x2F;p&gt;
&lt;p&gt;I ceased all activity on 2021-02-17, and my work account will be destroyed on 2021-02-28. A new era of full time surfing, coding and playing opens up. For now it is mostly playing with the new &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.valheimgame.com&#x2F;&quot;&gt;Valheim&lt;&#x2F;a&gt; game that is making a huge debut(*), as the waves are not good (winter storms) and I take a (small) coding break.&lt;&#x2F;p&gt;
&lt;p&gt;I will try to make a post per week on this site, starting now 2021-03-01. I know there is no way I will be able to keep the rhythm, but let&#x27;s say it should be my long-term goal.&lt;&#x2F;p&gt;
&lt;p&gt;(*) I strongly recommend you read &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;howtomarketagame.com&#x2F;2021&#x2F;02&#x2F;23&#x2F;valheim-7-lessons-from-their-amazing-marketing&#x2F;&quot;&gt;# Valheim: 7 marketing lessons from their amazing launch&lt;&#x2F;a&gt;, which tries to shed some light on its phenomenal success.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>A New version of the site for 2021</title>
        <published>2020-12-27T00:00:00+00:00</published>
        <updated>2020-12-27T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://colas.nahaboo.net/blog/a-new-version-of-the-site-for-2021/"/>
        <id>https://colas.nahaboo.net/blog/a-new-version-of-the-site-for-2021/</id>
        
        <content type="html" xml:base="https://colas.nahaboo.net/blog/a-new-version-of-the-site-for-2021/">&lt;p&gt;A big change is planned for this site in 2021: I am going to abandon the Foswiki engine for it, to pursue my recent goal of going back to the web roots. Basically, it a quest that relies more on:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Fast rendering&lt;&#x2F;strong&gt; by no rendering at all: pre-compiling the site pages into static HTML+CSS+JS pages: the &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;jamstack.org&#x2F;&quot;&gt;JAMstack&lt;&#x2F;a&gt; approach.&lt;&#x2F;li&gt;
&lt;li&gt;What I call a &lt;strong&gt;LAUW&lt;&#x2F;strong&gt; approach (&lt;strong&gt;L&lt;&#x2F;strong&gt;inux &lt;strong&gt;A&lt;&#x2F;strong&gt;pache &lt;strong&gt;U&lt;&#x2F;strong&gt;nix-utilities &lt;strong&gt;W&lt;&#x2F;strong&gt;eb Standards) instead of the traditional &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;LAMP_(software_bundle)&quot;&gt;LAMP&lt;&#x2F;a&gt;. Using the full strengths of Linux, Apache, the GNU Unix utilities, and the modern web standards (HTML5, CSS4, JS ES6) now that Internet Explorer is at last dead. This means not using software libraries (e.g: JQuery) and processors (e.g: Saas) that were designed to remedy to the poor state of some browsers.&lt;&#x2F;li&gt;
&lt;li&gt;Using &lt;strong&gt;Markdown&lt;&#x2F;strong&gt; for text editing&lt;&#x2F;li&gt;
&lt;li&gt;Using ultra &lt;strong&gt;stable and reliable&lt;&#x2F;strong&gt; technologies. I want to use things that will still work in 10 years, not the fad-of-the-day javascript framework that will be obsolete in 6 months, or that will break compatibility on each update.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Technical&lt;&#x2F;strong&gt;: And that do not try to be friendly to non-technical authors and admins, as  I will be the sole admin and editor.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;now&quot;&gt;Now&lt;a class=&quot;zola-anchor&quot; href=&quot;#now&quot; aria-label=&quot;Anchor link for: now&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;So now (December 2020), I am still using &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;foswiki.org&#x2F;Home&#x2F;WebHome&quot;&gt;Foswiki&lt;&#x2F;a&gt;, but progressively prototyping on it the features I will try to implement later:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;A simplified skin, with all the &quot;wiki-ism&quot; (everything editable) removed. As you can see I got rid of the left toolbar, to keep only the top banner with its sections (Code&#x2F;Surf&#x2F;Blog) menu on the logo and minimal tools on the right&lt;&#x2F;li&gt;
&lt;li&gt;Editing contents in Markdown instead of the Foswiki syntax: I now do not use the Foswiki system to edit topics, but desktop-edit via &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;marktext.app&#x2F;&quot;&gt;marktext&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Having all the post sharing a common Form, so that the fields of this form can be easily converted to YAML as used as frontmatter (metadata) in modern Markdown-based systems.&lt;&#x2F;li&gt;
&lt;li&gt;But still using all the Foswiki power for the site admin and non-content topics (indexes,...)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The idea is to migrate progressively the contents into a form (Markdown + Frontmatter) usable in a modern static web generator like Hugo, while adapting Foswiki to use this content form, preparing a future migration.&lt;&#x2F;p&gt;
&lt;p&gt;I have developed the details of what this means in my post on the Foswiki site: &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;foswiki.org&#x2F;Development&#x2F;FoswikiNonWikiWebSites&quot;&gt;Foswiki for non-wiki web sites&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;spring-2021&quot;&gt;Spring 2021&lt;a class=&quot;zola-anchor&quot; href=&quot;#spring-2021&quot; aria-label=&quot;Anchor link for: spring-2021&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;After I retire, at the end of February 2021, I will have more time to ditch Foswiki and implement the site on a new engine. It will probably be a static website generator, most probably &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;gohugo.io&#x2F;&quot;&gt;Hugo&lt;&#x2F;a&gt;, but maybe also &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.getzola.org&#x2F;&quot;&gt;Zola&lt;&#x2F;a&gt;  &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.11ty.dev&#x2F;&quot;&gt;Eleventy&lt;&#x2F;a&gt;, or &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.gatsbyjs.com&#x2F;&quot;&gt;Gasby&lt;&#x2F;a&gt;, and incorporating ideas of the &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;jamstack.org&#x2F;generators&#x2F;&quot;&gt;myriad of other ones&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;summer-2021&quot;&gt;Summer 2021&lt;a class=&quot;zola-anchor&quot; href=&quot;#summer-2021&quot; aria-label=&quot;Anchor link for: summer-2021&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;I will then probably replace progressively various components of this system by ones that I will handcraft optimally to incorporate all the ideas I have been toying with during all these years: the HTML+CSS+JS layout, the tag&#x2F;category system, the search engine, the comment engine, the editing process...&lt;&#x2F;p&gt;
&lt;h2 id=&quot;later&quot;&gt;Later...&lt;a class=&quot;zola-anchor&quot; href=&quot;#later&quot; aria-label=&quot;Anchor link for: later&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;p&gt;And I may even at some time create a totally new web engine system, who knows?&lt;&#x2F;p&gt;
&lt;p&gt;Or code a wiki replacement: a collaborative editing site based on the concepts learned via this experiment.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>A New Version of the site for 2020</title>
        <published>2020-07-26T00:00:00+00:00</published>
        <updated>2020-07-26T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://colas.nahaboo.net/blog/a-new-version-of-the-site-for-2020/"/>
        <id>https://colas.nahaboo.net/blog/a-new-version-of-the-site-for-2020/</id>
        
        <content type="html" xml:base="https://colas.nahaboo.net/blog/a-new-version-of-the-site-for-2020/">&lt;p&gt;After 10 years of
neglect, it is time for a new start of this site, because:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;I am going to retire in early 2021 (in 6 months), and I will have now time to properly maintain a personal site&lt;&#x2F;li&gt;
&lt;li&gt;I am feeling the need to archive in a central place all the contents I scatter in various different places, if only for the selfish reason to be able to retreive them more easily&lt;&#x2F;li&gt;
&lt;li&gt;I was toying with the idea of going to a static web site, as it is now in vogue, and it has a kind of nostalgia for me as I started my web sites as static   sites anyways. But by looking at the existing solutions, I was not convinced by them, as a lot seemed to naively solve the 80% easy part of the problem, and them struggle without any clear vision on how to solve the 20% hard part... a classic situation.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;I thus decided to keep on using &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;foswiki.org&quot;&gt;Foswiki&lt;&#x2F;a&gt;
(v2.1.6), as it is now quite mature, and thus stable: I like building on
solid, time-tested fundations that will not change every month. And
let&#x27;s be honest, it is both extremely powerful and incredibly reliable.
I am just tweaking it for using it as a public site (one author with all
admin rights, and read-only viewers), rather than the standard wiki
setup of many authors, all able to edit contents, with some able to also
admin rights. My postulate is that a dynamic web site like a wiki, with
proper caching, has all the advantages of a static web site, but is more
practical to maintain (although more complex to implement).&lt;&#x2F;p&gt;
&lt;p&gt;I will detail my views on how to website-ize a wiki in future posts, but
for now, on 2020-07-26 at noon French time, let go live!&lt;&#x2F;p&gt;
&lt;p&gt;Welcome to my (new) world!&lt;&#x2F;p&gt;
&lt;p&gt;Colas.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Migration to Foswiki</title>
        <published>2015-10-18T00:00:00+00:00</published>
        <updated>2015-10-18T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://colas.nahaboo.net/blog/migration-to-foswiki/"/>
        <id>https://colas.nahaboo.net/blog/migration-to-foswiki/</id>
        
        <content type="html" xml:base="https://colas.nahaboo.net/blog/migration-to-foswiki/">&lt;p&gt;At last, I found the motivation to work again on this site that I have
left dormant since 2009. And I start with a long deserved migration of
the engine from the old TWiki system to the superb Foswiki WIki engine.&lt;&#x2F;p&gt;
&lt;p&gt;Just installing a new Foswiki, and copying the data seem to provide a
working base, I will then work on fixing the minor bugs and designing a
new look in the following weeks.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Usability issues on a payment form</title>
        <published>2009-03-03T00:00:00+00:00</published>
        <updated>2009-03-03T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://colas.nahaboo.net/blog/usability-issues-on-a-payment-form/"/>
        <id>https://colas.nahaboo.net/blog/usability-issues-on-a-payment-form/</id>
        
        <content type="html" xml:base="https://colas.nahaboo.net/blog/usability-issues-on-a-payment-form/">&lt;p&gt;I know, I know, it is easy to nitpick on other people design, but this
morning I tried to pay my phone bill online, and... failed. I had to
retry many times, because I kept making mistakes on a simple,
run-of-the-mill form to enter my credit card data. I was dumbfounded.
How can, in 2009, people manage to make such a trivial and essential
part of online business go so wrong? As I guess you are as curious as
me, here is what I found out: (See the picture for the 3 main pain
points)&lt;&#x2F;p&gt;
&lt;img src=&quot;telefact-bloopers.png&quot;&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;1&lt;&#x2F;strong&gt; the expiration date example is ambiguous: does &lt;code&gt;0903&lt;&#x2F;code&gt; here means
2009-03 or 2003-09 ? Why didnt they disambiguate it by also adding a
specification (like MMYY, or, as it is a french dialog, MMAA ?)&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;2&lt;&#x2F;strong&gt; but today, it was not only ambiguous but plainly misleading! As
we were in March 2009, I assumed that the example was built from the
current month and year. I said cool, so it is YYMM. Wrong! it was
actually the reverse, MMYY, resulting in one failed attempt&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;3&lt;&#x2F;strong&gt; ok, I filled the fields, and hit the OK button... and it just
reset the page to empty fields! Grumbling, I re-typed the fields,
re-clic, and... another blank page! After these two more failures, I
tried to think (which is what you &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;Don&amp;#x27;t_Make_Me_Think&quot;&gt;do not want your users to
do&lt;&#x2F;a&gt;, trust me). I
then read the button label and discovered that this big, prominent
button alone at the bottom of the page was &lt;strong&gt;not the Submit button&lt;&#x2F;strong&gt;
but the Cancel one. I should have hit the middle one &quot;Valider&quot;, but
this button was not in the correct place on the flow of the form.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;So,after 3 failed attempts, I managed to pay my bill. All this on a
simple form with no fancy verification code or Captcha. Well done
Telefact, I wonder if you can find a worse example still in use today.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>What is good code?</title>
        <published>2008-10-22T00:00:00+00:00</published>
        <updated>2008-10-22T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://colas.nahaboo.net/blog/what-is-good-code/"/>
        <id>https://colas.nahaboo.net/blog/what-is-good-code/</id>
        
        <content type="html" xml:base="https://colas.nahaboo.net/blog/what-is-good-code/">&lt;p&gt;I stumbled upon the blog post &quot;&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20190630095624&#x2F;https:&#x2F;&#x2F;weblogs.asp.net&#x2F;fredriknormen&#x2F;is-it-important-to-write-good-code&quot;&gt;Is it important to write good
code?&lt;&#x2F;a&gt;&quot;
the other day, and became more and more ill at ease as I realized that I
thought that I preferred the original code, that the author was trying
to ridicule, over his new &quot;improved&quot; object-oriented version. At first I
guessed this was another manifestation of the the &quot;Worst is best&quot;
scenario - enhancements are often not worth the added complexity - but I
realized that it was perhaps a more profound factor:&lt;&#x2F;p&gt;
&lt;p&gt;The original code is very good because it ... is &lt;strong&gt;small&lt;&#x2F;strong&gt;. It fits on a
teminal screen, so an human being can &lt;strong&gt;read&lt;&#x2F;strong&gt; it at once and have less
items to maintain in his &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;The_Magical_Number_Seven,_Plus_or_Minus_Two&quot;&gt;short term
memory&lt;&#x2F;a&gt;
and also &lt;strong&gt;understand&lt;&#x2F;strong&gt; it easily because it follows a natural way of
thinking with &lt;strong&gt;sentences using IF&lt;&#x2F;strong&gt;. This becomes obvious by reading
the body of the blog post surrounding the code samples, where you can
see that the author is using phrases such as &quot;if I need this I do that&quot;,
showing that in plain english, the if statement is the best way to make
people understand what you mean. And making code that &lt;strong&gt;people&lt;&#x2F;strong&gt;
understand is the best way to make debuggable and maintainable code.&lt;&#x2F;p&gt;
&lt;p&gt;At this moment I noticed the citation in the blog header: &lt;em&gt;&quot;Good
programmers write code that humans can understand&quot;&lt;&#x2F;em&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Indeed :-)&lt;&#x2F;p&gt;
&lt;p&gt;PS: I know I am a bit exaggerating the issues there, and that I unfairly
nitpick on Fredrik Normé, but it is that it seems to me from my personal
experience that the two changes I see most in my coding efficiency as I
grow older is a decrease of my short term memory capacity, and that I
make more and more typos where I realize I mix up totally words with
totally different meanings but that sound the same, for instance writing
&quot;never&quot; instead of &quot;nether&quot;, making me suspect that our natural way of
thinking may be much more language-based that I imagined...&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Mercurial web templating</title>
        <published>2008-10-09T00:00:00+00:00</published>
        <updated>2008-10-09T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://colas.nahaboo.net/blog/mercurial-web-templating/"/>
        <id>https://colas.nahaboo.net/blog/mercurial-web-templating/</id>
        
        <content type="html" xml:base="https://colas.nahaboo.net/blog/mercurial-web-templating/">&lt;p&gt;For some time now, I have seen the light and I switched to the new wave
of the Distributed Source Control management systems. &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.youtube.com&#x2F;watch?v=4XpnKHJAok8&quot;&gt;Linus famous
video&lt;&#x2F;a&gt; of his Google talk
decided me to try. I was a bit apprehensive at first, wary of engaging
myself on a technology that would bring more problems than solutions,
but after some days of use, the realisation dawned over me: Distributed
Source Control may be one little step for a programmer, but it is a
giant step for programming. Why? because, its &lt;strong&gt;mental model actually
follows your first intuitions&lt;&#x2F;strong&gt; that most of us developed as young
programmers before using any source control system. Suppose you want to
try a feature? instead of just copying the directory, you clone it. You
mess an operation? you just remove the directory, no embarrassing traces
left to keep the burning scar of shame on you for the following decades
of a central repository. You are used to think of your enhancements as
patches, you can work with patches. I could go on and on, but many
people have done it much better than me so I&#x27;ll just say that you should
definitely try it.&lt;&#x2F;p&gt;
&lt;p&gt;By the way, between the 3 main contenders, &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;git-scm.com&#x2F;&quot;&gt;git&lt;&#x2F;a&gt;,
&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;www.mercurial-scm.org&#x2F;&quot;&gt;mercurial&lt;&#x2F;a&gt; (aka HG), and
&lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;en.wikipedia.org&#x2F;wiki&#x2F;GNU_Bazaar&quot;&gt;bazaar&lt;&#x2F;a&gt;, I chose mercurial because of its
simplicity, its better support of windows (I work in Linux since 1995
but my coworkers currently use Windows), and because some people at ILOG
started using git so I wanted to be able to try something else. I did
not choose bazaar as I wanted to stay close enough of git, to be able to
switch to it if ever my dream to work in a windows-free world
materializes one day...&lt;&#x2F;p&gt;
&lt;p&gt;So I started to set up a public web repository of my Open Source personal
work with mercurial, which gave me a simple way to publish my work in
full detail, but, although mercurial is quite easy to use, but I had a
bit of trouble figuring out how to customize its look &amp;amp; feel.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>The rebirth of this site</title>
        <published>2008-04-04T00:00:00+00:00</published>
        <updated>2008-04-04T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://colas.nahaboo.net/blog/the-rebirth-of-this-site/"/>
        <id>https://colas.nahaboo.net/blog/the-rebirth-of-this-site/</id>
        
        <content type="html" xml:base="https://colas.nahaboo.net/blog/the-rebirth-of-this-site/">&lt;p&gt;At last, I decided myself to redo my old website, which was a collection
of static html and was based on many of the various tools I made in
these past years. As I grew in love with wikis over these years, the
natural tought was just to do it in a Wiki, and naturally in the Wiki I
like the most, &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;twiki.org&quot;&gt;TWiki&lt;&#x2F;a&gt;. So bear with me and keep
posted, as this site will slowly emerge in this first half of 2008.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Browser-history</title>
        <published>2008-03-21T00:00:00+00:00</published>
        <updated>2026-04-25T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://colas.nahaboo.net/blog/browser-history/"/>
        <id>https://colas.nahaboo.net/blog/browser-history/</id>
        
        <content type="html" xml:base="https://colas.nahaboo.net/blog/browser-history/">&lt;p&gt;Browser-history started on February 15, 1996, out of a desire to overcome a Netscape bug: at the time, there was no global history. [Nowadays, in 2026, all browsers have one, of course.] Back then, if you closed a window, its entire history was lost.&lt;&#x2F;p&gt;
&lt;p&gt;For people visiting many sites, the ability to track where they had been meant they didn&#x27;t have to clutter their bookmarks file. If you weren&#x27;t sure a site was worth saving, you didn&#x27;t have to bookmark it; if you needed it later, you could just browse your history files.&lt;&#x2F;p&gt;
&lt;p&gt;Later, it occurred to me that this could also be a valuable add-on for people developing experimental browsers [a lot at the time], sparing them from having to build the functionality themselves.&lt;&#x2F;p&gt;
&lt;p&gt;Browser-history was a small, efficient daemon written in C. Real user services could be built on top of its log files to provide more advanced features, such as graphical representations, advanced search, or collective histories. While it could be seen as a &quot;quick-and-dirty hack&quot; compared to the general solution of using a personal proxy for housekeeping, it was easy to use and it worked.&lt;&#x2F;p&gt;
&lt;p&gt;I created this legacy page to help people find the archived version of the project, specifically the  &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20080321182348&#x2F;https:&#x2F;&#x2F;colas.nahaboo.net&#x2F;browser-history&#x2F;&quot;&gt;latest version of 2000-07-20&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;The code&lt;&#x2F;strong&gt; archive itself is &lt;a href=&quot;https:&#x2F;&#x2F;colas.nahaboo.net&#x2F;blog&#x2F;browser-history&#x2F;browser-history-2.8.tgz&quot;&gt;browser-history-2.8.tgz&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Here is a screenshot of the page:&lt;&#x2F;p&gt;
&lt;p&gt;Enjoy!&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&#x27;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20080321182348&#x2F;https:&#x2F;&#x2F;colas.nahaboo.net&#x2F;browser-history&#x2F;&#x27; title=&#x27;web archive version&#x27;&gt;&lt;img src=&#x27;screenshot-page.png&#x27;&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;h2 id=&quot;the-manual-page&quot;&gt;The manual page&lt;a class=&quot;zola-anchor&quot; href=&quot;#the-manual-page&quot; aria-label=&quot;Anchor link for: the-manual-page&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;name&quot;&gt;NAME&lt;a class=&quot;zola-anchor&quot; href=&quot;#name&quot; aria-label=&quot;Anchor link for: name&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;browser-history - external history of web browsers, such as netscape&lt;&#x2F;p&gt;
&lt;h3 id=&quot;synopsis&quot;&gt;SYNOPSIS&lt;a class=&quot;zola-anchor&quot; href=&quot;#synopsis&quot; aria-label=&quot;Anchor link for: synopsis&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;strong&gt;browser-history&lt;&#x2F;strong&gt; [ &lt;strong&gt;options&lt;&#x2F;strong&gt; ]&lt;&#x2F;p&gt;
&lt;h3 id=&quot;description&quot;&gt;DESCRIPTION&lt;a class=&quot;zola-anchor&quot; href=&quot;#description&quot; aria-label=&quot;Anchor link for: description&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;em&gt;Browser-History&lt;&#x2F;em&gt; is a client-side X daemon maintaining a
browser-independent global history of all the web sites you visited .Its
usage is very simple, just put the following line in your .xinitrc or
your X start-up script:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;browser-history &amp;amp;&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;And open the file &lt;strong&gt;~&#x2F;.browser-history&#x2F;history-log.html&lt;&#x2F;strong&gt; and bookmark
it.&lt;&#x2F;p&gt;
&lt;p&gt;Browser-history came from the will to overcome a Netscape bug: there was
no global history, and if you close a window, its whole history is lost.
For people browsing lots of sites, having a possibility to track back
where one has been before means that you dont have to put everything in
your bookmarks file. If you are not sure if a site may be worth
remebering, don&#x27;t add it in your bookmarks. If you need it later, just
browse your history files.&lt;&#x2F;p&gt;
&lt;p&gt;Later, it came to our minds that this also could be a valuable add-on to
people writing experimental browsers, so they dont have to add this
functionality to their browser itself.&lt;&#x2F;p&gt;
&lt;p&gt;Browser-history is a small and efficient daemon. Real user services
could be built on top of the log files it maintains for more
possibilities (graphical representation, advanced search options,
collective histories). It can be seen as a quick-and-dirty hack wrt to
the general solution of using a personal proxy to provide this history
and housekeeping facilities. But in the meantime, it is easy to use and
it works.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;implementation&quot;&gt;IMPLEMENTATION&lt;a class=&quot;zola-anchor&quot; href=&quot;#implementation&quot; aria-label=&quot;Anchor link for: implementation&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;em&gt;Browser-History&lt;&#x2F;em&gt; spies your web browser and logs
in &lt;code&gt;~&#x2F;.browser-history&#x2F;history-log.html&lt;&#x2F;code&gt; all the URLs you went through. You
can then browse the log under Netscape or other browsers via the URL:
&lt;strong&gt;file:~&#x2F;.browser-history&#x2F;history-log.html&lt;&#x2F;strong&gt; (replace the ~ by your home
directory). It tracks automagically all already present browser windows,
and all new ones created in the future. This program has no user
interface. It just appens information to a log file in html format so
you can browse it through a web browser. If more that one hour has
passed since last entry, it draws an horizontal lines, and adds H1
headers to delimit new days. Each week (sunday mornings), it archives
the week history, compresses it by gzip (that you must have in your
path), and starts a new history with links to the older ones. To make
room you can just remove the obsolete history files. You can search
files for string XXX in shell via:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;zgrep XXX ~&#x2F;.browser-history&#x2F;*&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;This version (2.6) works with Netscape, Arena and Amaya.&lt;&#x2F;p&gt;
&lt;p&gt;URLs can be excluded from logging by putting them, one per line in the
file &lt;strong&gt;~&#x2F;.browser-history&#x2F;history-log.exclude&lt;&#x2F;strong&gt; , then, if an URL begins
with a line from this file, it is not logged. In this file, empty lines
or lines beginning by # are comments This file is read once at startup,
and re-read when receiving the signal 1. e.g:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;# We exclude local files file: # Exclude search engines...
http:&#x2F;&#x2F;home.netscape.com http:&#x2F;&#x2F;guide.infoseek.com&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;When browser-history is run, it looks if another one is running, and by
default it kills the previous one if it is an older version. Otherwise,
it the new one is the same version number or older, it just aborts.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;options&quot;&gt;OPTIONS&lt;a class=&quot;zola-anchor&quot; href=&quot;#options&quot; aria-label=&quot;Anchor link for: options&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;All options can be given by their first letter: you can specify either
-verbose or -v, but you cannot group options, e.g. you must say &lt;strong&gt;-v
-k&lt;&#x2F;strong&gt; , but not &lt;strong&gt;-vk&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;-display&lt;&#x2F;strong&gt; &lt;em&gt;display_name&lt;&#x2F;em&gt;&lt;br &#x2F;&gt;
Specifies X display, otherwise contents of $DISPLAY is used&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;-verbose&lt;&#x2F;strong&gt;&lt;br &#x2F;&gt;
outputs information on what it is doing. useful for debug.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;-Version&lt;&#x2F;strong&gt;&lt;br &#x2F;&gt;
prints version number and exit.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;-logdir&lt;&#x2F;strong&gt; &lt;em&gt;directory&lt;&#x2F;em&gt;&lt;br &#x2F;&gt;
which directory to store files into? defaults to ~&#x2F;.browser-history&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;-gzip&lt;&#x2F;strong&gt; &lt;em&gt;gzip_filename&lt;&#x2F;em&gt;&lt;br &#x2F;&gt;
the complete path to the &lt;strong&gt;gzip&lt;&#x2F;strong&gt; compressor. Defaults to &quot;gzip&quot;. E.g:&lt;&#x2F;p&gt;
&lt;p&gt;-gzip &#x2F;usr&#x2F;gnu&#x2F;bin&#x2F;gzip&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;-seconds&lt;&#x2F;strong&gt; &lt;em&gt;delay&lt;&#x2F;em&gt;&lt;br &#x2F;&gt;
if two entries are made are more than &lt;em&gt;delay&lt;&#x2F;em&gt; seconds apart, an
horizontal rule will separate them, else just a simple line break.
Defaults to one hour (3600).&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;-replace&lt;&#x2F;strong&gt;&lt;br &#x2F;&gt;
If there is an already running browser-history on the display, aborts.
Default is to replace it only if the version is older than ours.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;-noreplace&lt;&#x2F;strong&gt;&lt;br &#x2F;&gt;
If there is an already running browser-history on the display, aborts.
Default is to replace it only if the version is older than ours.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;-kill&lt;&#x2F;strong&gt;&lt;br &#x2F;&gt;
If there is an already running browser-history on the display, kills it,
then terminates immediately in all cases..TP &lt;strong&gt;-DontGrab&lt;&#x2F;strong&gt; Never Grab
the X Server, which might cause deadlocks while debugging, when
browser-history or gdb tries to print on the grabbed xterm or emacs.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;log-file-format&quot;&gt;LOG FILE FORMAT&lt;a class=&quot;zola-anchor&quot; href=&quot;#log-file-format&quot; aria-label=&quot;Anchor link for: log-file-format&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;A log file can have some decorative HTML to represent days, but each
entry has the form: (on a single line since version 2.4)&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;pre class=&quot;giallo&quot; style=&quot;color: #4C4F69; background-color: #EFF1F5;&quot;&gt;&lt;code data-lang=&quot;plain&quot;&gt;&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;separator&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;b&amp;gt;name&amp;lt;&#x2F;b&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    &amp;lt;a href=&amp;quot;URL&amp;quot;&amp;gt;URL&amp;lt;&#x2F;a&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;
&lt;span class=&quot;giallo-l&quot;&gt;&lt;span&gt;    YYYY&#x2F;MM&#x2F;DD-HH:MN:SS &amp;lt;small&amp;gt;windowid&amp;lt;&#x2F;small&amp;gt;&lt;&#x2F;span&gt;&lt;&#x2F;span&gt;&lt;&#x2F;code&gt;&lt;&#x2F;pre&gt;&lt;&#x2F;blockquote&gt;
&lt;p&gt;where the following items are:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;separator: either &lt;hr&gt; or &lt;br&gt;
name: the name of the document (window title)
URL: its URL
YYYY&#x2F;MM&#x2F;DD-HH:MN:SS: year, month number, day number, hour,
minutes, seconds. (2-digit numbers)
windowid: the X window ID of the browser window, in hexadecimal&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note&lt;&#x2F;strong&gt; Before version 2.4, the 4 sub-parts were separated by newlines,
but since 2.4, they are only blank-separated to ease searching for URL
in log files via &quot;grep&quot;. &lt;strong&gt;Note&lt;&#x2F;strong&gt; Before version 2.5, the year was
stored in 2 digits. Now it is stored in 4 (or more :-) digits, to fix
this Y2K bug&lt;&#x2F;p&gt;
&lt;h3 id=&quot;home&quot;&gt;HOME&lt;a class=&quot;zola-anchor&quot; href=&quot;#home&quot; aria-label=&quot;Anchor link for: home&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;The latest version of &lt;strong&gt;browser-history&lt;&#x2F;strong&gt; can be found at:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;ftp:&#x2F;&#x2F;koala.inria.fr&#x2F;pub&#x2F;browser-history&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;and its WWW home page, with full technical documentation is at:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;http:&#x2F;&#x2F;koala.ilog.fr&#x2F;colas&#x2F;browser-history&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;h3 id=&quot;author&quot;&gt;AUTHOR&lt;a class=&quot;zola-anchor&quot; href=&quot;#author&quot; aria-label=&quot;Anchor link for: author&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;Colas Nahaboo, &lt;strong&gt;http:&#x2F;&#x2F;koala.ilog.fr&#x2F;colas&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;h3 id=&quot;copyright&quot;&gt;COPYRIGHT&lt;a class=&quot;zola-anchor&quot; href=&quot;#copyright&quot; aria-label=&quot;Anchor link for: copyright&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;em&gt;browser-history&lt;&#x2F;em&gt; bears the same license as the X Window System: you can
do everything with this code (selling it, modifying it), except suing me
or using my name in your advertisements, or expecting any kind of
support or guarantee.&lt;&#x2F;p&gt;
</content>
        
    </entry>
    <entry xml:lang="en">
        <title>Colas Nahaboo X mouse wheel scroll page</title>
        <published>1997-12-30T00:00:00+00:00</published>
        <updated>2026-04-25T00:00:00+00:00</updated>
        
        <author>
          <name>
            
              Unknown
            
          </name>
        </author>
        
        <link rel="alternate" type="text/html" href="https://colas.nahaboo.net/blog/colas-nahaboo-x-mouse-wheel-scroll-page/"/>
        <id>https://colas.nahaboo.net/blog/colas-nahaboo-x-mouse-wheel-scroll-page/</id>
        
        <content type="html" xml:base="https://colas.nahaboo.net/blog/colas-nahaboo-x-mouse-wheel-scroll-page/">&lt;p&gt;On December 30, 1997, I started this page to help developers manage the — then new — mouse wheel. My goal was to encourage a standard scrolling direction for the X Window System on Unix and Linux.&lt;&#x2F;p&gt;
&lt;p&gt;It quickly became the most-viewed page on my personal site, and even across all INRIA-hosted websites at the time. However, as mouse wheels became mainstream, the page lost its relevance. I let it quietly disappear in 2018 when I upgraded my site.&lt;&#x2F;p&gt;
&lt;p&gt;Seeing that this remains one of my most accessed URLs even in 2026, I decided to create this legacy page at the same legacy URL. It allows people to easily find the historical version on the Web Archive, specifically the &lt;a rel=&quot;noopener external&quot; target=&quot;_blank&quot; href=&quot;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20150906210929&#x2F;https:&#x2F;&#x2F;colas.nahaboo.net&#x2F;mouse-wheel-scroll&#x2F;&quot;&gt;latest version of 2015-09-06&lt;&#x2F;a&gt;, from which is the screenshot:&lt;&#x2F;p&gt;
&lt;p&gt;Enjoy!&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&#x27;https:&#x2F;&#x2F;web.archive.org&#x2F;web&#x2F;20150906210929&#x2F;https:&#x2F;&#x2F;colas.nahaboo.net&#x2F;mouse-wheel-scroll&#x2F;&#x27; title=&#x27;web archive version&#x27;&gt;&lt;img src=&#x27;CNXMWSP-Screenshot.png&#x27;&gt;&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
        
    </entry>
</feed>
