<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Phyllotaxis</title>
  <subtitle></subtitle>
  <link href="https://blog.wilson.africa/feed.xml" rel="self"/>
  <link href="https://blog.wilson.africa/"/>
  
    <updated>2026-02-28T00:00:00Z</updated>
  
  <id>https://blog.wilson.africa</id>
  <author>
    <name>Wilson Canda</name>
    <email>mail@wilson.africa</email>
  </author>
  
    
    <entry>
      <title>Upcoming Projects</title>
      <link href="https://blog.wilson.africa/blog/upcoming_projects/"/>
      <updated>2013-07-29T00:00:00Z</updated>
      <id>https://blog.wilson.africa/blog/upcoming_projects/</id>
      <content type="html">
        <![CDATA[
      <p>In the near future, I will attempt to go over my recent projects, such as a RaspberryPi and GPS - powered <strong>vehicle tracker</strong> (monitoring happens via email/SMS notifications), <strong>Smoke/Gas detector</strong> (email/SMS alerts as well), and my favorite: <strong>remote device controllers for home appliances</strong> (basically allows you to switch stuff on or off from your phone/laptop/tablet, wherever you may be. Cool, right?) maybe I will manage to gradually build up to <a href="http://falldeaf.com/2013/07/the-pi-control-script/" title="FallDeaf's Pi Control Script">this level</a>. I am also expecting a delivery which will enable me to get started with another one: <strong>movement detection and smart video monitoring</strong> using not much more than a Raspberry Pi, a TTL camera, some infrared LEDs and a lot of code.</p>
<p>The projects are currently limited by my inventory but I try to make regular additions.</p>
<p>Details Soon!!</p>
<p><a href="http://polldaddy.com/poll/7324325/">Which project interests YOU?</a></p>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>A word on Specialization vs. Competence</title>
      <link href="https://blog.wilson.africa/blog/specialization/"/>
      <updated>2013-07-30T00:00:00Z</updated>
      <id>https://blog.wilson.africa/blog/specialization/</id>
      <content type="html">
        <![CDATA[
      <p>On a different note...</p>
<p>As much as we tend to like specialization, here's what <strong>Robert Heinlein</strong> (one of the fathers of Science Fiction) had to say about it: &quot;A human being should be able to change a diaper, plan an invasion, butcher a hog, conn a ship, design a building, write a sonnet, balance accounts, build a wall, set a bone, comfort the dying, take orders, give orders, cooperate, act alone, solve equations, analyze a new problem, pitch manure, program a computer, cook a tasty meal, fight efficiently, die gallantly. Specialization is for insects.&quot;</p>
<p>What do You think?</p>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>Duplicity: Selective backup restoring</title>
      <link href="https://blog.wilson.africa/blog/duplicity_selective_restore/"/>
      <updated>2013-08-16T00:00:00Z</updated>
      <id>https://blog.wilson.africa/blog/duplicity_selective_restore/</id>
      <content type="html">
        <![CDATA[
      <p>A couple of days ago, my laptop's second HD (500GB WD) went rogue (once again). Besides the usual file corruption issues while opening the files I stored on it, it started compromising my boot (couldn't boot at all while it was connected - running Ubuntu 13.04). Luckily, I've got a 32GB SSD on my motherboard and that is set as the boot partition so I was able to just remove the HD and start up the machine. The bigger problem was that now I was left &quot;fileless&quot; - all my work was on the second drive. I had a backup (on an external 3TB drive) but it was a full system backup - hundreds of GBs in size, which meant that I couldn't restore it using the &quot;regular&quot; settings, since I was left with only a 32GB SSD on the machine. It occurred to me to restore the files to a location on the backup drive itself - but that always failed miserably, hanging and eventually crashing my system. The only option I could think of was to selectively restore the files: but I only knew how to do that through the Nautilus GUI: by navigating to the original folder and selecting &quot;Restore Previous Version&quot; of the file. Remember, I don't have the original folder any more because the whole drive was gone. After some googling, I managed to formulate a general solution for that.</p>
<ul>
<li>In a terminal, type:</li>
</ul>
<blockquote>
<p>duplicity list-current-files --no-encryption file:///[path_to_backup_folder] &gt; /home/[your_username]/list.txt</p>
</blockquote>
<p><em>Be aware of the format &quot;file:///...&quot; in which duplicity expects to receive path to the archive - You need to indicate the full path to the folder containing your backup.</em></p>
<ul>
<li>Create folder for the restored files:</li>
</ul>
<blockquote>
<p>mkdir [PATH AND FILENAME FOR RESTORED FILE]</p>
</blockquote>
<ul>
<li>Find the file/folder you wish to restore in the 'list.txt' file we created earlier (in home folder). Copy just <em>the filename and path to file</em>, not the date. Execute the following:</li>
</ul>
<blockquote>
<p>duplicity restore --no-encryption --file-to-restore [PASTE RESULTS FROM PREVIOUS STEP] file:///[LOCATION OF BACKUP] [PATH AND FILENAME FOR RESTORED FILE]</p>
</blockquote>
<p>Please note that the procedure will be slightly different for an encrypted backup. Check the reference below for extra info.</p>
<p><a href="http://duplicity.nongnu.org/duplicity.1.html" title="Duplicity Reference">Duplicity Reference</a></p>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>Deep Explorations Series - Part 1</title>
      <link href="https://blog.wilson.africa/blog/deep_exploration_series_part_1/"/>
      <updated>2013-09-09T00:00:00Z</updated>
      <id>https://blog.wilson.africa/blog/deep_exploration_series_part_1/</id>
      <content type="html">
        <![CDATA[
      <p>I have recently taken up an interest in revisiting and exploring the <strong>&quot;Deep Web&quot;</strong> (a.k.a. DarkNet / UnderNet / Hidden Net) - which are just other names for the invisible chunk of the web - the place where no general purpose search engine will willingly take you. But what if you <em>want</em> to be taken there? Most people do after they consider that it composes an estimated <strong>95% of the World Wide Web</strong> (just imagine how much unique information is stored there!!). During my exploration, it really struck me as a curious mixture of &quot;the place to be&quot; and &quot;the place to stay away from&quot; - all wrapped in one. Obviously, if you are keen to explore it, neither of those approaches will do - unless you are a <em>fearless hacker</em> (or your local equivalent). Throughout this post, I'll assume you are <strong>not</strong> one of those mystical creatures.</p>
<p><img src="http://wilsonmaravilha.files.wordpress.com/2013/08/c2d.jpg?w=300" alt="Infographic"></p>
<p>Image by unknown artist</p>
<p>For starters, let's look at what the Deep Web really is. According to <a href="http://en.wikipedia.org/wiki/Deep_Web" title="Article about the Deep Web">Wikipedia</a>, it is &quot;content that is not part of the surface web&quot;, where &quot;surface web&quot; is the chunk that is indexed by <em>standard</em> search engines. Considering that only about <strong>0.03% of the pages get indexed</strong> (that is 1 in 3000), it becomes evident that for a comprehensive information retrieval, just a surface search may not suffice.</p>
<p>Why are certain pages not indexed? Very good question! It turns out that this occurs for many possible reasons. It is usually due to technical barriers, which may or not have been placed there deliberately by the site's owner. Those barriers prevent the &quot;web crawlers&quot; (a.k.a &quot;web spiders&quot; / &quot;robots&quot;, etc.) from accessing the content.</p>
<p>One such barrier is dynamic content - what you find on sites that do not have static pages but generate the content based on a query (scripted pages) or sites that serve content based on the user's identity (password - protected pages). Since search engines can't enter keywords or passwords (or CAPTCHAs), they end up ignoring such content altogether. Another barrier is a site's 'robots.txt' file which gives the site's admin the power to prevent all or certain &quot;robots&quot; from accessing the content by specifying the permissions.</p>
<p>Food for Thought:</p>
<ul>
<li>Public information on the deep Web is currently 400 to 550 times larger than the commonly defined World Wide Web.</li>
<li>The deep Web contains 7,500 terabytes of information compared to 19 terabytes of information in the surface Web.</li>
<li>The deep Web contains nearly 550 billion individual documents compared to the 1 billion of the surface Web.</li>
<li>More than 200,000 deep Web sites presently exist.</li>
<li>Sixty of the largest deep-Web sites collectively contain about 750 terabytes of information — sufficient by themselves to exceed the size of the surface Web forty times.</li>
<li>The deep Web is the largest growing category of new information on the Internet.</li>
<li>Deep Web sites tend to be narrower, with deeper content, than conventional surface sites.</li>
<li>Total quality content of the deep Web is 1,000 to 2,000 times greater than that of the surface Web.</li>
<li>Deep Web content is highly relevant to every information need, market, and domain.</li>
<li>More than half of the deep Web content resides in topic-specific databases.</li>
<li>A full ninety-five percent of the deep Web is publicly accessible information — not subject to fees or subscriptions.</li>
</ul>
<p><em>The Deep Web is a place where they use bitcoins as currency, and where any kind of information can be found - be it revolution plans, crazy scientific experiments, underground fighting tournaments. You can come across the military, the police, kidnappers, scientists, terrorists and much, much more. In the words of a fellow DW explorer, &quot;the party there goes across the entire moral spectrum&quot;.</em></p>
<p>Basically we are talking about information hidden in plain sight - to find it you generally need to know where and how to look. Sometimes, you can use custom, &quot;Deep Search Engines&quot; to find hidden content - like the one you will find at the address <a href="http://ahmia.fi">ahmia.fi</a>, but those don't index a very big chunk of the pages. At the time of writing, ahmia was indexing exactly 1003 hidden web sites - which, you will agree, is not much at all.</p>
<p>If you have navigated to that address already (it does open in regular browsers), you might have noticed that it is indeed a search engine - with the title &quot;Tor Hidden Service ('Onion') Search&quot;. Let's look at what those terms mean.</p>
<p>Tor is one of those recursive acronyms - very popular choice in the tech community - and it stands for &quot;Tor is the onion router&quot;.</p>
<p>Onion routing is , according to Wikipedia, a &quot;technique for anonymous communication over a computer network&quot;. Data is repeatedly encrypted and sent through several network nodes called onion routers. Like someone peeling an onion, each onion router removes a layer of encryption to uncover routing instructions, and sends the message to the next node, where the process is repeated.</p>
<p>Those are the most recurrent terms in my exploration of the DW, because they are at the very heart of the system. To access a site which uses the Tor network for anonymity, you first need to have all the necessary software on your machine (usually, a <a href="https://www.torproject.org/download/download-easy.html.en" title="Download Tor bundle">Tor browser bundle</a>). You can also use a proxy service like Tor2Web, which can be accessed from regular (not Tor-aware) browsers and search engines (basically giving up all anonymity) - but it is important to keep in mind that much of the traffic was originally anonymized for a reason - trouble might be just around the corner.</p>
<p>A good list with warnings and precautions can be found <a href="https://www.torproject.org/download/download-easy.html.en#warning" title="Tor Warnings">here.</a></p>
<p>Just to emphasize some points, it is important <strong>not to use any extra plugins</strong> in your Tor browser as those can be manipulated into identifying you. <strong>Https access is to be used</strong> [where possible] instead of http for additional encryption on your connection. <strong>Do not use your Tor setup to open your personal account</strong>s such as email, facebook, etc. The Tor network will give you access to invaluable awesome resources that are not available anywhere else but you <strong>*must*</strong> <strong>resist the temptation of opening the downloaded files while online</strong>. In fact, it is advisable to do so in a separate, disconnected machine or in a VM (Virtual Machine) such as Virtualbox with networking disabled. Ultimately, in an onion routing network, the more nodes there are, the better the protection. That being so, the more diverse users there are and the more diverse content is being opened by them, the better. It's up to us to <strong>encourage other people to safely use Tor, thus making the protection stronger.</strong></p>
<p>Once you have a working install of the Tor browser bundle with all precautions taken, you can start &quot;diving deep&quot; and exploring the things most people do not have access to. It is important to note, however, that like in any anonymous system, anarchy reigns in many corners of the deep web. When we are not bound to our identities, we tend to give in to things we otherwise would have not done. There is a lot of content in the DW that is by all accounts repulsive and degenerate - discretion in exploring such a place is very important. If you know something's &quot;wrong&quot; and it goes against your principles - the wise thing to do, perhaps, is to stay away.</p>
<p>An awesome video resource on the Deep Web can be found <a href="http://youtu.be/wMgqTWdk3tw" title="GeekBlogTv on Deep Web">here</a>. It is a great idea to head there and absorb the information before your first dive :)</p>
<p>Got Tor? Read and understood the warnings? Watched <a href="http://youtu.be/wMgqTWdk3tw" title="GeekBlogTv on Deep Web">the video</a>?</p>
<p>Then the two links below should get you started with your Deep Explorations. Cheers!</p>
<blockquote>
<p>Copy and paste into Tor browser (NB: NOT to be opened in a general-purpose browser):</p>
<p><a href="http://kpvz7ki2v5agwt35.onion/wiki/index.php/Main%5C_Page">http://kpvz7ki2v5agwt35.onion/wiki/index.php/Main\_Page</a> &lt;- this will take you to the [in]famous Hidden Wiki. You can find pretty much anything there.</p>
<p><a href="http://ahmia.fi">http://ahmia.fi</a> &lt;- Deep Web search engine. One of them.</p>
</blockquote>
<p>Tip: look for pages that contain collections of links.</p>
<p>Personally, I go for the tech forums and such - the information contained there is invaluable! Also, be sure to check out the libraries.</p>
<p>If you have any questions or suggestions, you are most welcome to getintouch() or just post a comment below.</p>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>How &quot;PenTile&quot; Displays work</title>
      <link href="https://blog.wilson.africa/blog/how_pentile_displays_work/"/>
      <updated>2013-09-17T00:00:00Z</updated>
      <id>https://blog.wilson.africa/blog/how_pentile_displays_work/</id>
      <content type="html">
        <![CDATA[
      <p><a href="http://techdomino.com/the-galaxy-note-10-1-2014-edition-has-a-rgbw-pixel-arrangement/">How &quot;PenTile&quot; Displays work</a></p>
<p>A brief overview of the RGB/RGBW mobile display technologies</p>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>Adding locations to nautilus in ubuntu 13.04</title>
      <link href="https://blog.wilson.africa/blog/adding_locations_to_nautilus_in_ubuntu_13_04/"/>
      <updated>2013-09-24T00:00:00Z</updated>
      <id>https://blog.wilson.africa/blog/adding_locations_to_nautilus_in_ubuntu_13_04/</id>
      <content type="html">
        <![CDATA[
      <p>In hope that this information can help someone out the way it did me:</p>
<p>Many people seem to have been disappointed by the recent changes to <strong>Nautilus</strong> - particularly, when it comes to the Places sidebar. I, for one, need custom locations because most of my files are on an external drive - and bookmarks just won't do.</p>
<p>This is a quick fix that will allow you to customize the Places:</p>
<p>1.  Using Nano (or your editor of choice) edit the user-dirs file.</p>
<p><code>nano ~/.config/user-dirs.dirs</code></p>
<p>2. The changes from the previous step will disappear upon reboot. To make them <em>permanent</em>, echo the following to the file</p>
<p><code>echo &quot;enabled=false&quot; &gt; ~/.config/user-dirs.conf</code></p>
<p>And there you go - your &quot;Places&quot; are Yours again!</p>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>Bad Disk Sectors Explained</title>
      <link href="https://blog.wilson.africa/blog/bad_disk_sectors_explained/"/>
      <updated>2013-10-09T00:00:00Z</updated>
      <id>https://blog.wilson.africa/blog/bad_disk_sectors_explained/</id>
      <content type="html">
        <![CDATA[
      <p><strong>Bad drive sectors</strong> (much like bad weather) are <em>practically unavoidable</em> - mostly because they are caused by so many different things. As saddening as those news may be, things do get better once we take a closer look at the matter. Like with the weather example, <strong>the key here is prevention</strong>. Before you rush to the store and get your drive an umbrella, let me clarify: I'm talking about <em><strong>Backup</strong></em>!</p>
<p><a href="http://wilsonmaravilha.files.wordpress.com/2013/10/class-100-clean-room-hard-drive1.jpg"><img src="http://wilsonmaravilha.files.wordpress.com/2013/10/class-100-clean-room-hard-drive1.jpg?w=300" alt="class-100-clean-room-hard-drive"></a></p>
<h2><strong>Let's take a look at what bad sectors are.</strong></h2>
<p>What is commonly known as a bad sector is really just a tiny area of a drive that for some reason cannot be read or written to. There are two subdivisions: &quot;hard&quot; bad sectors are caused by physical damage, while &quot;soft&quot; bad sectors (as you might be guessing) are caused by software errors.</p>
<p><strong>Hard Bad Sectors</strong> are generally created when damage has in some way been dealt to the disk itself (the image above should illustrate how easy that is in magnetic drives). Common scenarios include bumping the disk while it is in the middle of an operation (making the read/write head scratch against the surface of the drive), allowing dust to penetrate the interior of the disk, natural wear and tear and manufacturing errors. These are generally quite hard (or, in some cases, impossible) to fix. Obviously, only some of these scenarios apply to Solid - State Drives as they have no moving parts.</p>
<p><strong>Soft Bad Sectors</strong> are often an easier beast to tame, as the &quot;error&quot; resides in the logic (software) only. They are usually caused when one shuts off the power to the disk in the middle of a write operation, or when for some other reason the data on the sector does not match the &quot;error correction code&quot;. Soft bad sectors are sometimes caused by malware, too.</p>
<p><strong>Solid - State Drives</strong> are a special case: firstly, the manufacturing techniques have not yet been perfected - resulting in brand new disks often being unusable. Secondly, because of the nature of the technology used in SSDs, the memory units degrade with time - and thus bad sectors are practically &quot;part of the plan&quot;. SSDs now come with &quot;extra&quot; storage capacity, which is used to maintain the disk's capacity even after several sectors have been deemed unusable. When the extra space runs out, the storage capacity of the drive starts to degrade.</p>
<p>Generally, modern computer systems are smart enough to determine that a specific sector is faulty and, if possible, move the data elsewhere, marking the faulty sector as a  sort of &quot;no-fly zone&quot;, allowing the user to happily live on as if nothing had happened.  If needed, one can sometimes repair those using the tools like <strong>&quot;Disk Utility&quot;</strong> in Linux - based systems or <strong>&quot;chkdsk&quot;</strong> in Windows. It is important to note here that contrary to popular belief, a single bad sector does not suggest that a drive is about to fail any more than a hot day's weather indicates that it will rain fireballs. Do keep an open mind and a consistent backup though, as anything is possible.</p>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>Memorization with Python and Bubbles</title>
      <link href="https://blog.wilson.africa/blog/memorization_with_python_and_bubbles/"/>
      <updated>2013-10-16T00:00:00Z</updated>
      <id>https://blog.wilson.africa/blog/memorization_with_python_and_bubbles/</id>
      <content type="html">
        <![CDATA[
      <p>I have found myself struggling to allocate time and patience to a very boring module that I am currently enrolled for (it's a theory-only module). I have come up with a &quot;lifehack&quot; that allows me to proceed with my normal activities while keeping an eye on notes and memorizing. (This is literally something that was made in 10-15 min so go easy :P )</p>
<pre><code>    :::python

    #!/usr/bin/python
    # -*- coding: utf8 -*-
    
    import sys, os, subprocess
    from time import sleep
    
    quotes = []
    glossary = &quot;glossary-boring-module.txt&quot;  #&lt;------- REPLACE PATH HERE
    MAX_LENGTH = 120
    
    def sendmessage(message):
        subprocess.Popen(['notify-send', message])
        return
        
    def shortenedQuotes():
        global quotes
        new_array = []
        for quote in quotes:
            chunks = len(quote)/MAX_LENGTH
            for i in range(chunks):
                l = i * MAX_LENGTH
                r = l + MAX_LENGTH
                new_array.append(quote[l:r])
            new_array.append(quote[r:])
        return new_array
    
    def getListOfQuotes():
        global glossary
        global quotes
        counter = -1
        if (os.stat(glossary)[6]!=0):
            for lines in open(glossary, 'r'):
                a = lines.strip()
                quotes.append(a)
            sendmessage(&quot;There are &quot; + str(len(quotes)) + &quot; quotes before shortening. Recalculating...&quot;)
            sleep(20)
            temp = shortenedQuotes()
            quotes = temp
            sendmessage(&quot;There are &quot; + str(len(quotes)) + &quot; quotes now. &quot;)
            sleep(20)
    
        else:
            sendmessage(&quot;OOPS! THE LIST IS EMPTY!&quot;)
            sys.exit()
    
    def main():
        counter = 0
        answer = 'y'
        global contents
        getListOfQuotes()
        if len(quotes) != 0:
            sendmessage(&quot;Displaying &quot; + str(len(quotes)) + &quot; businessquotes&quot;)
            sleep(20)
        for quote in quotes:
            counter = counter + 1
            sendmessage(quote)
            sleep(20)
        sendmessage(&quot;No more quotes. Go to the terminal to repeat or terminate the script&quot;)
    
        if answer == raw_input(&quot;Please enter 'y' to continue or any other key to terminate&quot;):
            main()
        else:
            sendmessage(&quot;Bye!&quot;)
            sys.exit()
    
    if __name__ == '__main__':
        main()

</code></pre>
<p>The procedure is to scrape a file or page with definitions, save results in a .txt file and indicate the path to it in the script. Once run, the script then periodically displays definitions that - like it or not - you will start to memorize, in Ubuntu's popup bubbles. If you have a different OS, don't despair: except for creating the actual bubbles, the procedure is the same. It is still pretty buggy when it comes to managing very long chunks of text, (bubble real estate is very limited) but for simple ones this should be just fine. Obviously, there is no better code than one's own so you're most welcome to give it a stab and please share your tweaks, as will I. Cheers and happy memorization!</p>
<p>EDIT: I have now corrected the substring bug, and introduced a function that automatically splits a string into n strings not longer than the defined size limit. In other words, all you need to do is put all strings in a file, delimited by a newline, point the script to the file and run it in a terminal :)</p>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>Galaxy Gear with Galaxy Note II</title>
      <link href="https://blog.wilson.africa/blog/galaxy_gear_with_galaxy_note_ii/"/>
      <updated>2013-11-02T00:00:00Z</updated>
      <id>https://blog.wilson.africa/blog/galaxy_gear_with_galaxy_note_ii/</id>
      <content type="html">
        <![CDATA[
      <p>I have just managed to get a Galaxy Gear for &quot;testing purposes&quot; - without purchasing a Galaxy Note 3. What I expected was at least a week of tireless googling and hours on XDA trying to find the right ROM while experimenting with hundreds of software configurations. Luckily, my prediction skills are WAY OFF - the Gear works with the Note 2* <em>almost</em> out of the box. It took me about 5 minutes to get started! So for those who are holding back on buying a Gear <strong>only</strong> because they have a Note 2 (or a similarly-featured Samsung device that's not officially supported) and not a Note 3 or an S4, rejoice for i got thy back!</p>
<p><strong>[DISCLAIMER: Your experience may differ! While I'd be glad to help you with the setup, I'm afraid you'd ultimately be doing this AT YOUR OWN RISK]</strong></p>
<p>==================================================================================</p>
<p>Step 1: Update your Samsung Account on the smartphone (I had to, before I got it to work).</p>
<p>Step 2: Activate NFC on the smartphone.</p>
<p>Step 3: Download and install the Watch Manager apk from <a href="http://depositfiles.com/files/pmgqxv9c5" title="Download Gear Manager">this link</a>.</p>
<p>Step 4: Touch the Gear's cradle with the back of your smartphone and keep pressing &quot;Next&quot; until you've convinced the software that you're serious about this thing! :D</p>
<p>Step 5: Come back here and let me know how it went!</p>
<p>==================================================================================</p>
<p>I particularly like the fact that the Gear allows one to take photos, record audio notes, as well as view appointments and control the music player. The weather widget is currently not working on my Note 2 but besides that I was able to get the full Gear experience.</p>
<p>* my Note 2 is running stock Android 4.1.2 ROM</p>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>Fixing Touchpad Problem under Linux (Fujitsu)</title>
      <link href="https://blog.wilson.africa/blog/fixing_touchpad_problem_under_linux/"/>
      <updated>2014-04-09T00:00:00Z</updated>
      <id>https://blog.wilson.africa/blog/fixing_touchpad_problem_under_linux/</id>
      <content type="html">
        <![CDATA[
      <p>Ever since I have installed Ubuntu on my Fujitsu Ultrabook UH572, I have been using some workarounds to get the touchpad to work properly. Below you can find the steps I took. (Initially, the touchpad was not working at all, as per this <a href="https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1244634">launchpad bug report</a>.)</p>
<p>1. Use sudo + your favourite editor to open /etc/default/grub</p>
<p><code>$ sudo nano /etc/default/grub</code></p>
<p>2. Add <code>i8042.notimeout i8042.nomux</code> to the line which says <code>GRUB\_CMDLINE\_LINUX=&quot;...&quot;</code>.</p>
<p>(For example, mine looks like this after the edit: <code>GRUB\_CMDLINE\_LINUX=&quot;i8042.notimeout i8042.nomux&quot;</code>)</p>
<p>3. Update grub.</p>
<p><code>$ sudo update-grub</code></p>
<p>4. [OPTIONAL:] Install and run &quot;synaptiks&quot; in order to customise things like multitouch, scrolling, etc.</p>
<p><code>$ sudo apt-get install kde-config-touchpad &amp;&amp; synaptiks</code></p>
<p>The steps above suffice to get the touchpad to work on your next reboot. If you stop here, you may notice that the touchpad stops working after every Suspend -&gt; Resume cycle. Typing sudo morprobe -r psmouse &amp;&amp; sudo modprobe psmouse into a terminal every time will get it to work again but it would be nicer to have that automated. The steps below show how to do the automation bit.</p>
<p>5. Use sudo + your favourite editor to create and edit a new file at the location /etc/pm/sleep.d</p>
<p><code>$ sudo nano /etc/pm/sleep.d/restart\_touchpad.sh</code></p>
<p>6. Enter the following code (or just download <a href="https://gist.github.com/wmv/10297339#file-restart_touchpad-sh" title="this gist">this <strong>gist</strong></a>):</p>
<pre class="language-sh"><code class="language-sh"><span class="token shebang important">#!/bin/sh</span>

<span class="token keyword">case</span> <span class="token string">"<span class="token variable">$1</span>"</span> <span class="token keyword">in</span>
  resume<span class="token punctuation">)</span>
    modprobe <span class="token parameter variable">-r</span> psmouse
    modprobe psmouse
<span class="token keyword">esac</span>
<span class="token builtin class-name">exit</span> <span class="token number">0</span></code></pre>
<p>7. Give the file executable access permissions.</p>
<p><code>$ sudo chmod +x /etc/pm/sleep.d/restart\_touchpad.sh</code></p>
<p>After that, your touchpad should work without any further hacks or inconveniences. While steps 1 - 3 may be localized and only applicable to a handful of laptops, the steps 5 - 7 will apply to most situations whereby the touchpad stops working upon resuming the system.</p>
<p></p>
<p>The solution in steps 1 - 4 was originally published by <a href="https://lifebook.ts.fujitsu.com/blog/users/Ozgur">Mr Ozgur</a> and can be found <a href="https://lifebook.ts.fujitsu.com/blog/blog/category/general/ubuntu-12-10-quantal-quetzal-on-fujitsu-lifebook-uh572/s">here</a>.</p>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>Recovering files from Ubuntu One cloud using FTP</title>
      <link href="https://blog.wilson.africa/blog/recovering_files_from_ubuntu_one_cloud_using_ftp/"/>
      <updated>2014-05-01T00:00:00Z</updated>
      <id>https://blog.wilson.africa/blog/recovering_files_from_ubuntu_one_cloud_using_ftp/</id>
      <content type="html">
        <![CDATA[
      <p>Since Ubuntu One is closing (If you haven't rescued your files, you should do so now, <a href="https://one.ubuntu.com/help/faq/what-is-happening-and-when/">before their servers are shut down</a>), I have been trying to download my data in a single archive, which failed due to an intermittent internet connection. Refusing to download file by file and after having done a little research, I stumbled upon a pretty neat method of plugging an FTP client into their cloud for better download management. I describe the steps below:</p>
<ol>
<li>
<p>Open a terminal session by clicking on the Ubuntu button in the upper left hand corner, typing in &quot;Terminal&quot; and then clicking the &quot;Terminal&quot; icon</p>
</li>
<li>
<p>Run these commands in the terminal:</p>
</li>
</ol>
<pre class="language-sh"><code class="language-sh"><span class="token function">mkdir</span> ~/u1ftp
<span class="token builtin class-name">cd</span> ~/u1ftp
<span class="token function">wget</span> https://launchpad.net/u1ftp/trunk/0.1/+download/u1ftp-0.1.zip
<span class="token function">ln</span> <span class="token punctuation">\</span>-s ~/u1ftp/u1ftp-0.1.zip u1ftp
python u1ftp
</code></pre>
<ol>
<li>
<p>You sould see <code>Listening on ftp://127.0.0.1:2121</code> output to the terminal. Keep the terminal session open and open your home folder.</p>
</li>
<li>
<p>Click the File &gt; Connect to Server... menu (This step is similar for other FTP clients)</p>
</li>
<li>
<p>Set the fields as follows:</p>
<blockquote>
<p><strong>Server:</strong> 127.0.0.1</p>
<p><strong>Port:</strong> 2121</p>
<p><strong>Type:</strong> FTP (with login)</p>
<p><strong>Folder:</strong> /</p>
<p><strong>Username:</strong> Your Ubuntu One username (email address)</p>
<p><strong>Password:</strong> Your Ubuntu One password</p>
<p><strong>Remember this password:</strong> Checked</p>
</blockquote>
</li>
<li>
<p>Click &quot;Connect&quot; and you should see a window pop up shortly with your folders and files on Ubuntu One. You can now copy files to and from here. If you want to bookmark this for future use, right-click on the entry in the left hand pane (&quot;FTP as...&quot;) and select &quot;Add Bookmark&quot;.</p>
</li>
</ol>
<p>Source: <a href="https://one.ubuntu.com/help/faq/how-can-access-my-files-via-ftp-on-ubuntu/">https://one.ubuntu.com/help/faq/how-can-access-my-files-via-ftp-on-ubuntu/</a></p>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>Let&#39;s get that door of yours a handle!</title>
      <link href="https://blog.wilson.africa/blog/lets_get_that_door_of_yours_a_handle/"/>
      <updated>2014-05-19T00:00:00Z</updated>
      <id>https://blog.wilson.africa/blog/lets_get_that_door_of_yours_a_handle/</id>
      <content type="html">
        <![CDATA[
      <p>If you have ever gotten frustrated by the process involved in giving directions, worry not. There is a startup focused on fixing precisely that!</p>
<p>I have recently had the honour of interacting with two very experienced developers who are working on an awesome project. The project is called My<strong>Door</strong>Handle and it allows people to instantly create and share &quot;DoorHandles&quot;, which contain location coordinates, route guidance, optional description and photos. As their website puts it:</p>
<blockquote>
<p>DoorHandles are short, memorable weblinks that point to any physical location.</p>
<p>Whether you are an individual, business, event organiser or just want to share an address with others, share it with a DoorHandle.</p>
<p><a href="http://mydoor.co" title="mydoor.co">mydoorhandle.com</a></p>
</blockquote>
<p>I found this idea to be truly ingenious because it transforms the painful job of giving directions into a two-click task. For the developing countries and poorly mapped regions, the effect is tenfold: one no longer needs to look for landmarks, waste airtime on directions and so on - those with the app can do it in a few clicks and swipes. Those without it can just share the friendly web link to that location via SMS or any other means.</p>
<p>The guys took the time to craft a whole API (Application Programming Interface) for it, for those who want to plug the service into their app.</p>
<p>Take it for a spin! :)</p>
<p><a href="http://mydoorhandle.com" title="mydoorhandle.com"><img src="http://wilsonmaravilha.files.wordpress.com/2014/05/screenshot-from-2014-05-19-194146.png?w=208" alt="mydoorhandle.com"></a></p>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>Startup life #1</title>
      <link href="https://blog.wilson.africa/blog/startup_life_1/"/>
      <updated>2015-11-28T00:00:00Z</updated>
      <id>https://blog.wilson.africa/blog/startup_life_1/</id>
      <content type="html">
        <![CDATA[
      <p>The main reason why I have not been able to write is my full immersion into the startup life, beginning around April 2014.</p>
<p>Before that, I'd just dropped out and was trying to learn and absorb as much as I could, without a seeming direction. From operating systems to embedded technologies, I was skipping from topic to topic, trying to find direction and looking for something that would &quot;stick&quot;, before I finally kind of managed to settle on systems architecture and server-side development as a &quot;niche&quot;. I think I quite envy people who have &quot;stumbled&quot; upon their &quot;calling&quot; without having gone through that painful process.</p>
<p>Anyway, back to startups.</p>
<p>Around April 2014, I had joined Steven and Shaamiel who were building MyDoorHandle, at the time at Startup Garage in Woodstock Exchange.</p>
<p>MyDoorHandle was a software project aimed at democratizing the game of geo-referencing by allowing people to assign names to locations and share those with friends. It was my maiden voyage in terms of working on code that was going to go out into the market. I was super nervous.</p>
<p>I recall the project having 2 stumbling points, monetization strategy and adoption. As time progressed, these motivated the team to seriously consider a pivot.</p>
<p>Fast forward a few weeks, all forces were focused on one endeavor: pushing out an alternative product, Folr. Folr was a more revenue-driven project, which used some of the same technology as MyDoorHandle and which was built by the same team. When I joined, it was already in the works, however not as the main focus.</p>
<p>As time progressed, Steven and Shaamiel decided to switch to Folr as plan A. I mostly did research on how to implement certain features in the Android application and performed tests. Steven took care of the server and API, while Shaamiel's baby was the website.</p>
<p>The model was: we'd let fleet / mobile personnel owners and managers download the app, sign up and share it with their staff. Thereafter, they would be able to track the people and assets in very-damn-near real time as those moved about. There was an option to establish a &quot;ring fence&quot;, which, if crossed by a tracked person or vehicle, would alert the admin.</p>
<p>There was a feature to replay the motion, given a starting point in time - it even included all the stops and how much time the person spent there.</p>
<p>It was a pretty cool app, and we had not seen too many alternatives which accomplished what our app did, or not as comprehensively. We took it to several meter taxi companies and there was a fair amount of interest.</p>
<p>Then, the business model changed. As it turned out, one of Folr's investors had insisted on pivoting to a &quot;family-centric&quot; service (in his words, the easiest money would come from &quot;jealous housewives in their late thirties who want to see what their husbands have been up to&quot; - go figure). With that on the table, we were forced to drop all the leads in the taxi industry (several of which later went on to build their own solutions which accomplished similar results to what we were originally offering). At this point the product was being rebranded quite aggressively.</p>
<p>That process wasn't allowed to finish, either. About a month after we started transforming the features into something that could be useful to a jealous 39 year old housewife and changing the look and feel, the investor broke some more news, this time in person: there was a team in Singapore which was going to take over certain parts of the development, and the work we had done till then was basically to be<br>
thrown out.</p>
<p>Needless to say, tensions rose as that situation developed; servers got rewritten, APIs redesigned, and our beloved orange UIs and branding were replaced with considerably slicker and much purpler alternatives.</p>
<p>This was an intense time, we (especially Steven), sometimes worked around the clock in order to achieve the results.</p>
<p>Some time after that, we got involved in a brand new project - one I am still busy with now. More on this later.</p>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>Advice</title>
      <link href="https://blog.wilson.africa/blog/advice/"/>
      <updated>2022-05-19T00:00:00Z</updated>
      <id>https://blog.wilson.africa/blog/advice/</id>
      <content type="html">
        <![CDATA[
      <h2>// When we share about things that we see</h2>
<p><a href="https://wilsonmaravilha.files.wordpress.com/2022/05/image.png"><img src="https://wilsonmaravilha.files.wordpress.com/2022/05/image.png?w=760" alt=""></a></p>
<p>&gt; More at <a href="https://www.merriam-webster.com/dictionary/advice">https://www.merriam-webster.com/dictionary/advice</a></p>
<p>I have been thinking about advice. This word, which according to Merriam-Webster dates back to the 14th century, is an integral part of the human experience, and I imagine the underlying interaction (telling another person about something that we see) exists in some form since the advent of basic language.</p>
<p>We have a nuanced relationship with advice, when it comes to both giving it and receiving it. For example - I normally tend not to give advice when unsolicited, unless there is a risk/reward involved for the recipient or collective that I consider to be significant. Even in these cases I will often just suggest there might be insights outside of the person's range of view, and depending on whether the person communicates curiosity, decide if I should proceed. If the response is positive (and outside of an emergency) I try to be descriptive rather than prescriptive, meaning that I'd most often share information that I think contains something the person might not be aware of (but might like to in retrospect), leaving it to them whether and how they would like to synthesize it with their existing view. When I remember, I try my best to take into account the circumstances under which the information was arrived at, our personal filters, present states, boundaries, a pinch of the norms and so on. When receiving advice, I try to be more open but apply more or less the same process.</p>
<p>I think one's &quot;consumption&quot; of advice (as a niche form of information, being targeted and having higher than normal potential of being insightful assuming this is the intention of the giver) is subject to the same process as information in general (and for that matter, food* ), which vaguely goes something like:</p>
<ol>
<li>sourcing</li>
<li>selection</li>
<li>preparation</li>
<li>consumption</li>
<li>digestion/assimilation</li>
<li>integration of useful content</li>
<li>elimination of waste</li>
<li>use of gained new nutrients/energy/potential</li>
<li>adjustment of this very process based on results (or at least, of the parts that are voluntary at the time)</li>
</ol>
<p>In some sense, I think sharing information is like providing another with nourishment** in the sense that we can ask ourselves similar questions:</p>
<ul>
<li>what kind of food is this?</li>
<li>where did we get it?</li>
<li>is it ripe?</li>
<li>sure it's not expired?</li>
<li>what if they're allergic?</li>
<li>is it easy to digest?</li>
<li>do we enjoy this kind of food? do they?</li>
<li>how nourishing will it be for the recipient?</li>
<li>how would we like to serve and present it?</li>
<li>what is the optimal portion?</li>
<li>etc</li>
</ul>
<p>As with everything, advice has a light and a shadow side. The spectrum ranges from the best case scenario of something like &quot;a mutually enriching and uplifting exchange resulting in a better future&quot; to the worst case scenarios including:</p>
<ul>
<li>giver arriving at the information under very different circumstances, making the information misleading</li>
<li>giver using advice as a means for furthering own agenda</li>
<li>giver using advice to create a dependency in the receiver or confuse them</li>
<li>giver gamifying (say, in an undisclosed way and against the best interests of the receiver) the unfolding of the advice over time</li>
<li>giver having good intentions but no qualification</li>
<li>giver having good qualification but bad intentions</li>
<li>getting the quantities wrong</li>
<li>receiver not being discerning with incoming advice</li>
<li>receiver not having enough information to verify the validity</li>
<li>receiver not being receptive to advice altogether</li>
<li>receiver not attentive to advice</li>
<li>receiver not being able to integrate advice with their existing frame of reference</li>
<li>and so on (while we can hope some of the negatives above don't happen to us, we should be able to deal with them if they do. I think other possible examples are things that deal with the quality of information ingestion, processing and communication for both parties, as well as situational factors.)</li>
</ul>
<p>From a certain point of view, one could say based on the above that, as with most things, there are more ways of getting advice wrong than right:</p>
<p><a href="https://wilsonmaravilha.files.wordpress.com/2022/05/image-1.png"><img src="https://wilsonmaravilha.files.wordpress.com/2022/05/image-1.png?w=1024" alt=""></a>
<em>A Very Rudimentary Advice Matrix</em></p>
<p>Which reminds me of a quote.</p>
<blockquote>
<p><em>There are many ways</em> of being <em>wrong</em>, but only one way of being right.“</p>
<p>- Susan Stebbing</p>
</blockquote>
<p>Or in this case, six ways - that need to all happen at the same time. Of course, a necessary caveat here is that there are situations where the &quot;worst&quot; advice can be helpful and others where even &quot;good&quot; advice can cause harm. Life is complex and we'll never get things 100%.</p>
<h2>// It's something we 'have got to' do... 🙄</h2>
<p>So, giving and receiving advice seems fraught with danger. Could we give up on it? Might it be possible to exist in a way that skips all of the above undesirable situations by just eliminating this form of interaction completely? Another quote comes to mind.</p>
<blockquote>
<p>Consider that you can see less than 1% of the electromagnetic spectrum and<br>
hear less than 1% of the acoustic spectrum. 90% of the cells in your body<br>
carry their own microbial DNA and are not ‘you’. The atoms in your body<br>
are 99.9999999999999999% empty space and none of them are the ones you<br>
were born with… Human beings have 46 chromosomes, two less than a<br>
potato.<br>
The existence of the rainbow depends on the conical photoreceptors in your<br>
eyes; to animals without cones, the rainbow does not exist. So you don’t just<br>
look at a rainbow, you create it. This is pretty amazing, especially considering<br>
that all the beautiful colours you see represent less than 1% of the<br>
electromagnetic spectrum.</p>
<p>- Sergio Toporek</p>
</blockquote>
<p>Considering how much there is to see and comprehend and the limitations of our hardware (better than a potato, but still quite limited) and software, it seems to me totally unfeasible to try to go it without exchanging things we think are outside of each other's view.</p>
<h2>It's something we get to do! 😁</h2>
<p>This post is an over-simplification and there are more factors at play but I think we can see above that on one hand advice (and more generally, information exchange) is a tricky thing to get right. On the other hand, we are relatively blind creatures in isolation (relative to how much there is to see/know/understand), and I think that our highest potential lies in being able to process things together and get feedback from each other. It doesn't have to be daunting, either - I'd estimate that all of the above risk factors are mitigated in varying degrees by the act of taking a mindful approach on both parts and by being intentional with our practice/inner work. Heck, if we don't watch out we might even enjoy it in the process! 😉</p>
<p>There are many red and orange cells on that illustration and this can make things seem like a sort of minefield. But by practising awareness and mindfulness both as givers and receivers of advice we can make sure we relate more and more in the green cells and by virtue of this, collectively get to a better future. We also get to learn more about ourselves and <a href="https://www.youtube.com/watch?v=cD3puMmLnc8">each other</a> on the way, which I think is cool.</p>
<p>How do you approach advice? What else do you think might be useful to consider to get this right?</p>
<hr>
<p>* Do you agree? If yes, can you think of any other applications of this similarity between &quot;hardware food&quot; and food for thought?</p>
<p>** One difference I see is that on the mental level, when we share nourishment, our own &quot;resource&quot; stays the same and even has high potential of increasing. What differences do you see?</p>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>Blog update - Mar &#39;23</title>
      <link href="https://blog.wilson.africa/blog/update_march_2023/"/>
      <updated>2023-03-21T00:00:00Z</updated>
      <id>https://blog.wilson.africa/blog/update_march_2023/</id>
      <content type="html">
        <![CDATA[
      <h2>Rolling my own</h2>
<p>My site used to say that I am migrating my blog from WordPress to a personal setup since as far back as 2015.</p>
<p><img src="https://wilsonmaravilha.files.wordpress.com/2023/03/image.png?w=1024" alt=""></p>
<p><em>Better late than never (though never late is better)</em></p>
<p>WordPress is an amazing blogging tool, but I have always felt that I wanted to write my own solution for this for a number of reasons.</p>
<p>While I had followed through with rolling my own landing page (which has changed domains 3 times since 2014), I’d stopped at that and had never gotten around to adding the blogging capability until around last month.</p>
<!-- For hosting, I've cycled through multiple providers, finally settling on [deta.space](https://deta.space). -->
<p><a href="https://wilsonmaravilha.files.wordpress.com/2023/03/image-2.png"><img src="https://wilsonmaravilha.files.wordpress.com/2023/03/image-2.png?w=1024" alt=""></a></p>
<p><a href="https://wilsonmaravilha.files.wordpress.com/2023/03/screenshot-from-2023-03-21-13-06-42.png"><img src="https://wilsonmaravilha.files.wordpress.com/2023/03/screenshot-from-2023-03-21-13-06-42-edited.png" alt=""></a></p>
<p>The first iteration is quite simple in appearance but I’m really enjoying the fact that it’s got room to evolve – gives me something to tinker with in my spare time.</p>
<p>To finally work on adding this has been a great exercise in several ways. First, because of the room to experiment – while WordPress offers a lot of useful plugins, they can often be close to what we're looking for while not being exactly it. Besides that, I am appreciating the opportunity it is giving me to think about written content from first principles. (or at least second or third principles - either way, closer to first principles than I did using a CMS).</p>
<p>Of course, in a way I am also doing this to trigger my sunk cost bias and get back to writing more (and maybe even editing and publishing some of the things I’d written in my quiet period).</p>
<p>On the latter, it’s been an interesting exercise because I don’t feel as strongly about some of the things I had to say in the past, which has been pushing me to explore what it is that I would really like to communicate on here this time around.</p>
<p>I’ve got some ideas. Stay tuned! 🙂</p>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>Knowledge work</title>
      <link href="https://blog.wilson.africa/blog/knowledge_work/"/>
      <updated>2024-05-29T00:00:00Z</updated>
      <id>https://blog.wilson.africa/blog/knowledge_work/</id>
      <content type="html">
        <![CDATA[
      <h4>The word</h4>
<p>The first time I heard the term &quot;knowledge work&quot;, I must have been in high school. To be honest, I remember being somewhat confused by it - it may have taken a while for me to assimilate what was meant. It seemed to elusively point at something I could not quite grasp.</p>
<p>An encounter with each new word or term is a bit like meeting a new person (though in this case, a citizen of our semantic realm). Words will tell you about the parts of their world that they inhabit, the interactions that they have had with groups of humans (sometimes across millenia and often with both the human and the semantic counterparts becoming changed from the encounter). A word will sometimes reveal to us the state of mind in which people approach the thing that it refers to, how frequently such a thing gets thought about in that culture, and really a host of other things (this could be a separate post).</p>
<p>The thing I found peculiar about encountering the term &quot;knowledge work&quot; is that it did not &quot;greet me back&quot; in the usual way that a word does - nor did it show me something about its origins or about how it helps humanity with a vital function by being at the nexus point between object and meaning.</p>
<p>In my mind, every human has knowledge and does work - this work will depend on the human's knowledge bank in varying degrees (and also have varying yields of fresh knowledge) - but none of this seemed to warrant creating this new term, not to mention the methods of quantification and tresholds seemed anecdotal at best.</p>
<p>I suppose the fact that it was part of coursework at first, and a conferred identity later (in a number of courses, you <em>become</em> <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> a knowledge worker), made the term sort of blend in with the rest of the dictionary crowd and become a part of my lexicon.</p>
<h4>The experience</h4>
<p>I never really saw myself as a knowledge worker (I think my &quot;Tsaheylu&quot; <sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup> with this term didn't really happen reliably enough for it to affect my self-perception). Nevertheless, for most of my life so far, most of the work I've done falls under what our civilization refers to using the term.</p>
<p>When I first joined the workforce, so to say, my impression was that it was surprisingly easy. It felt like cheating to &quot;just&quot; move bits of information around and get paid for this <sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup>. As time progressed, of course, I saw the world dynamics which not only warrant performing and valuing this sort of work, but also possibly justify the otherwise clumsy-sounding term. Certainly many of the functions in this grouping are very important for us.</p>
<h4>Shaping dynamics</h4>
<p>Just as physical work shapes the worker (which movements need to be performed with which force by which muscle groups, how often) - mental work shapes us as well (and I'm not referring to the slightly higher propensity to having a belly ;). The mind/brain(/body) complex is both intelligent and adaptive, and it will undergo changes as it works with information so that future work with similar kinds of concepts can happen better and quicker (including quantitative improvements).</p>
<p>This means that when we get to knowledge work, what specific deep interests the person has, what they studied, and what they work as - probably to some degree shape their general cognition, with an effect on the rest of life.</p>
<p>One area that I believe can be somewhat sensitive to discuss (but may really be worthwhile) is how different elements of the systems we are embedded in, affect us. Who we are, changes even as we adjust spaces, situations and activities - let a long a fully immersive area of life, played out over a long period of time. How do the following impact the development of cognition:</p>
<ul>
<li>individualism</li>
<li>collectivism</li>
<li>capitalism</li>
<li>socialism</li>
</ul>
<p>I think it can be interesting to note that each of these, depending on immersion, would influence a person differently when it comes to areas like Independent Thinking, Equity and Social Justice, Entrepreneurial Drive, Cultural Context, Self Reliance, Empathy, Economic thinking, Relationship to hard work, Dependence on state, Conformity, Competitivity, Sense of community, Materialism, Critical thinking, and others.</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>I imagine one just &quot;turns&quot; at some point. Maybe like a werewolf? When exactly does it happen? The graduation? Is it customary to let one's family know that they will never be the same? <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>Tsaheylu is a Na'vi word meaning &quot;bond&quot; or neural connection. This describes the physical process by which Pandoran flora and fauna mentally connect to one another by the use of their queues. From James Cameron's &quot;Avatar&quot;. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p>It did not occur to me at the time that physical labour was the same thing - moving bits and bobs of &quot;matter&quot; from one place to the other, organizing them in all these different structures based on their uses and properties. There's just no escaping it - human activity seems to have at (or near) its core a logistical component. <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>The Gold Rush</title>
      <link href="https://blog.wilson.africa/blog/the_gold_rush/"/>
      <updated>2026-01-14T00:00:00Z</updated>
      <id>https://blog.wilson.africa/blog/the_gold_rush/</id>
      <content type="html">
        <![CDATA[
      <p>I owe a lot to the study of computation and practice of software engineering. I am especially grateful to them because they provide a modeling space for working with algorithms, based on which we can get better at understanding even the parts of the world and life that are normally considered outside the scope of these fields.</p>
<h2>The Rush</h2>
<p>The first time it occurred to me that we were in a gold rush was during my 2nd sabbatical, sometime in 2021.</p>
<p>The sheer speed at which new technology was emerging and going through the stages of growth and evolution was staggering. I had already been reflecting on the occupational hazards of knowledge work, and no longer saw different “slices” of a wider system as being independent and “separate”, so I immediately started to ponder about the connection between the human layer and the machine layer and how a many-fold acceleration of the motion of one was going to impact the other. By default, intuition suggested, not well.</p>
<p>It is customary for us to cover something like 4 km, and often more, in a space of something like 3 minutes (assuming 80km/h to be average highway speed) — but it took several millennia and uncountable permutations of transportation modes happening in tandem with advances in human knowledge and perspective before we got there. Now, I’m not e/acc but I am in a sense a proponent of technological acceleration because:</p>
<ol>
<li>There are real problems which it solves, some time sensitive</li>
<li>It’s a measure of our evolution as a species that we gain competence in these areas</li>
</ol>
<p>Having said this, I think that it is possible to go too fast<sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup>:</p>
<ul>
<li>
<p>Some areas are interdependent and naturally go at different speeds (e.g. imagine crossing a road while holding a child’s hand and going at your speed, because you can). In areas of life where there are two or more things which are absolutely unavoidably interdependent in a certain context, the overall process goes at the speed of the slowest element<sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup></p>
</li>
<li>
<p>It is often necessary to really narrow the space of possibilities to achieve a big acceleration someplace. If we take the example of a plane, an acceleration secure enough to transport lives at great speeds is due to the creation of a very specific set of circumstances, ranging from arrangements of matter and mechanisms, to meticulous measurements and processes, including a huge amount of mapping and planning work happening in combination with precision manufacturing and assembly, rigorous training and scheduling — and regulation.</p>
</li>
<li>
<p>Speed often makes things more prone to error, while simultaneously making the errors potentially more costly. It is at high speeds that one could make some of the more serious mis-judgements (related to bottlenecks in human information processing), and it is also at high speeds that we see even small errors can become amplified.</p>
</li>
</ul>
<h2>The Gold</h2>
<p>The most valuable assets in our times are different forms of technology associated with information, as well as information itself, which can be of varying degrees of quality or purity.</p>
<p>How exactly do the outcomes of building tech usually change with speed? I think we don’t need to call on Nick Bostrom to answer this, just ask any developer. They:
a) Have been in the situation of needing to accelerate a part of the work
b) Oftentimes had to deal with some of the consequences while understanding the causes.</p>
<p>I’ll just try to answer off the top of my head:</p>
<ul>
<li>Spec precision loss</li>
<li>Technical &amp; conceptual debt</li>
<li>Culture debt<sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup></li>
<li>Health debt<sup class="footnote-ref"><a href="#fn4" id="fnref4">[4]</a></sup></li>
<li>Fewer chances to develop empathy towards the end user, resulting in a poorer integration between the product and the use case.</li>
</ul>
<p>Basically, speed is great (and the correct priority at times) but not a silver bullet and can come at the cost of greater quality somewhere else.</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>There are ways to manage great speed in product, these descriptions apply predominantly where an appropriate framework was not put in place. <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>This is partly the pattern expressed in “every chain is only as strong as its weakest link”. Maybe the teacher can cover 10 topics in the space of an hour, but given the objective of education, the correct speed that the teacher-student system should go at, is the student’s. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p>Don’t get me wrong, I am not for advocating for bureaucracy. Meaningless steps and rules should go — but this should happen via reviewing the steps and intentionally changing them, and not via arbitrarily deleting processes. <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn4" class="footnote-item"><p>This happens because there are many areas of life competing for our cognitive ability. As a limited resource, if we invest it all in one or two areas, there may not be enough for the other ones. <a href="#fnref4" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>

    ]]>
      </content>
    </entry>
  
    
    <entry>
      <title>The Anatomy of a Paradox: Octave Jumps, Nuance, and Emergence</title>
      <link href="https://blog.wilson.africa/blog/le_paradox/"/>
      <updated>2026-02-28T00:00:00Z</updated>
      <id>https://blog.wilson.africa/blog/le_paradox/</id>
      <content type="html">
        <![CDATA[
      <h3>The Anatomy of a Paradox: Octave Jumps, the emergence of nuance and an ancient kind of triangulation.</h3>
<p>I've been thinking about spilling the beans on the anatomy of a paradox. Is that something you'd be into reading about?</p>
<p>I am not strictly speaking about the agreed-upon definition of a paradox per se, but the underlying information topology. What we'll discuss applies to the widespread definition as well—it's just perhaps not the most insightful possible kind of application.</p>
<p>First, let's see what Sapiens means by the word paradox at the moment in history:</p>
<ul>
<li>A statement contrary to common belief or expectation (from 14th-century French <em>paradoxe</em>).</li>
<li>A logically self-contradictory statement.</li>
<li>A train of reasoning that leads from premises that seem obviously true, via apparently impeccable steps of reasoning, to a conclusion that is contradictory or crazy.</li>
</ul>
<p>But the expression that comes closest to the perspective I'd like us to explore, comes from Carl Jung:</p>
<blockquote>
<p>&quot;...only the paradox comes anywhere near to comprehending the fullness of life. Non-ambiguity and non-contradiction are one-sided and thus unsuited to express the incomprehensible&quot;.</p>
</blockquote>
<p>To understand why this is, we need to pause looking at paradoxes as errors in our reasoning <sup class="footnote-ref"><a href="#fn1" id="fnref1">[1]</a></sup> , and consider looking at them as structural features of reality.</p>
<p>Some applied examples:</p>
<blockquote>
<p><strong>The Ship of Theseus</strong>: If you replace every single wooden plank of a ship over time, is it still the same ship? If those old planks are used to build another ship, which one is the &quot;original&quot;?</p>
</blockquote>
<blockquote>
<p><strong>Birthday Paradox</strong>: In a room of just <strong>23 people</strong>, there is a 50% chance that two of them share the same birthday. Our intuition expects a much larger group, but the number of possible <em>pairs</em> of people grows very quickly.</p>
</blockquote>
<blockquote>
<p><strong>Schrödinger’s Cat</strong>: In a sealed box, a cat is linked to a quantum event that has a 50% chance of occurring. According to quantum mechanics, until the box is opened, the cat exists in a &quot;superposition&quot; of being <strong>both alive and dead</strong> at the same time. This highlights the <strong>measurement problem</strong>: when exactly does a quantum possibility become a physical reality?</p>
</blockquote>
<blockquote>
<p><strong>Fermi Paradox</strong>: With billions of stars and planets in the galaxy, many of which are much older than Earth, why haven't we seen any signs of extraterrestrial civilizations? Solutions range from the &quot;Great Filter&quot; (life always destroys itself) to the &quot;Zoo Hypothesis&quot; (they are watching us without interfering).</p>
</blockquote>
<p>Now let's go over what's actually happening in each of these examples.</p>
<ol>
<li>The ship of Theseus - here we are confusing the material makeup of the ship with its information content. It's a widely known factoid that the human body recycles all its cells every 7-10 years . While that's not exactly correct <sup class="footnote-ref"><a href="#fn2" id="fnref2">[2]</a></sup>, we don't change names every 7 birthdays, so why should Theseus' ship?</li>
<li>Birthday Paradox - here we are confusing the number of individuals and the number of connections <sup class="footnote-ref"><a href="#fn3" id="fnref3">[3]</a></sup>. In this case the math isn't interested in the people themselves; it is interested in the <strong>relationships</strong> (vertices) between them. When we switch from linear counting to combinatorics, the information density shifts and the low number of <code>nodes</code> explodes into 253 possible <code>pairs</code>.<img src="/posts/images/birthday-paradox-connections.png" alt="Birthday paradox connections diagram"></li>
<li>Schrödinger’s Cat – arguably one of the most famous &quot;paradoxes&quot; during our time. If we look closely at what is happening here, we see the same pattern as before. Prior to the opening of the box, the quantum event exists in the &quot;higher octave&quot; (integrated superposition). The paradox isn't that the cat is magically two things at once; it's that our macro-level logic forces a localized &quot;1/2 split&quot; (Alive vs. Dead) onto a system that is operating at a 1/1 un-cleaved state (containing the full volume of possibilities). Opening the box is the dimensional bottleneck that forces us to let go of the more voluminous reality and choose one of its lower dimensional &quot;shadows&quot; - <code>alive</code> or <code>dead</code>.</li>
<li>As for the Fermi Paradox... I'd suggest that this isn’t actually a paradox at all, but rather us trying to arrive at broad conclusions based on data that is severely lacking.</li>
</ol>
<p>We can see that the word &quot;paradox&quot; is often used quite loosely and can sometimes indicate the peculiar topology that we've been discussing while other times it's close in meaning to something like &quot;damned if I know&quot; or &quot;beats me&quot;. Sometimes Sapiens just use the word &quot;paradox&quot; when we mean &quot;mystery&quot;.</p>
<p>For the purposes of this article though, a more formal definition for a &quot;paradox&quot; can be something as simple as <em>&quot;a transition point between a lower and a higher octave portion of an idea.</em> For example, think of a piano. If you play a Middle C and then a High C, your ear recognizes a strange phenomenon. They are mathematically distinct frequencies (differentiation), yet they possess the exact same tonal essence (integration). They are undeniably different, yet undeniably the same. In music, we call this an octave. In logic, when we experience two ideas that are undeniably different yet intrinsically the same essence, we call it a paradox. We are just sensing the transition point between a lower and higher resolution of the same truth.</p>
<p>This happens because ideas traverse a bigger portion of multidimensional space than is widely documented, they are non-homogeneous in base topology. <em>(Think of it like a cylinder: from the top it looks like a circle, but from the side it looks like a square. The shape changes depending on the dimension you view it from.)</em></p>
<p><img src="/posts/images/cylinder-projection.png" alt="Cylinder projection showing circle and square shadows"></p>
<p>There is differentiation (a halving*) if you go in one direction, and integration (a merging) if you go in the other.</p>
<p><img src="/posts/images/differentiation-integration.png" alt="Differentiation and integration diagram"></p>
<p>&quot;Nuance&quot; is one way in which we often describe the type of cognition that is able to navigate that transition point, a kind of sorting like with like that's not being carried away by what appears at a lower resolution.</p>
<p>&quot;Integrative complexity&quot; is the more formal way of referring to the recognition of the quality that things have where they are subject to differentiation at the same time as being subject to integration.</p>
<p>What makes this interesting to explore? IMO a few things, not the least of which includes the intersection between conflict resolution, higher dimensional geometry, and an applied dynamic interpretation of the yin/yang symbol (the depth of which has incidentally been hidden by 2d drawings).</p>
<p>Most human conflict is fundamentally a dimensional bottleneck. Imagine a 3D cylinder. If you shine a light on it from the side, it casts a 2D shadow of a square. If you shine a light from the top, it casts a 2D shadow of a circle. When two people fight—in politics, relationships, or philosophy—Person A is yelling &quot;It's a square!&quot; and Person B is yelling &quot;It's a circle!&quot; They are both factually correct at their lower resolution (n/8). &quot;Nuance&quot; isn't about compromising and calling it a squircle; it's about increasing the information density of the conversation until both parties can look up, see the 3D cylinder, and realize they were arguing over shadows of the same object.</p>
<p>Once we consider the characteristic of things changing quality as a function of quantity (think phenomena and behaviour emerging from scale), we can also answer the question &quot;the whole is greater than the sum of the parts—but how and why?&quot;</p>
<p>If you take a pocket watch and smash it with a hammer, you still have the exact same &quot;sum of the parts.&quot; Every gear, screw, and glass shard is still on the table. But the &quot;whole&quot; is gone. Why? Because the &quot;whole&quot; didn't live in the brass; it lived in the invisible <em>relationships</em> between the brass. The geometry of how they connected contained a higher information density than the materials themselves. When we jump an octave (from parts to the whole) we aren't adding more material; we are adding the invisible architecture of relationships.</p>
<p>Hit the contact icon to let me know if you'd like to read more about information density - it's something I am considering writing about more extensively.</p>
<hr class="footnotes-sep">
<section class="footnotes">
<ol class="footnotes-list">
<li id="fn1" class="footnote-item"><p>Although there are errors of different kinds (taxonomical errors, misconceptions about base facts, incorrect assumptions etc) in the historical mix as well <a href="#fnref1" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn2" class="footnote-item"><p>which is actually not totally correct - some cells remain for much longer and in several cases, remain for life. Before you envision them as these static elements though, consider that the atoms that make those cells up continuously change. <a href="#fnref2" class="footnote-backref">↩︎</a></p>
</li>
<li id="fn3" class="footnote-item"><p>or to put it in computer science terms, we are confusing the number of nodes and the number of vertices. <a href="#fnref3" class="footnote-backref">↩︎</a></p>
</li>
</ol>
</section>

    ]]>
      </content>
    </entry>
  
</feed>