<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>StuartCW</title>
    <description>Some public notes on things that I want to remember having looked at this month. 
</description>
    <link>https://stuartcw.com/</link>
    <atom:link href="https://stuartcw.com/feed.xml" rel="self" type="application/rss+xml"/>
    <pubDate>Fri, 29 May 2026 08:07:21 +0000</pubDate>
    <lastBuildDate>Fri, 29 May 2026 08:07:21 +0000</lastBuildDate>
    <generator>Jekyll v3.10.0</generator>
    
      <item>
        <title>What I learned this month - February 2021</title>
        <description>&lt;h1 id=&quot;what-i-learned-in-february-2021&quot;&gt;What I learned in February 2021&lt;/h1&gt;

&lt;h2 id=&quot;xonsh&quot;&gt;xonsh&lt;/h2&gt;

&lt;p&gt;Xonsh is a Python-powered, cross-platform, Unix-gazing shell language and command prompt. The language is a superset of Python 3.5+ with additional shell primitives that you are used to from Bash and IPython. It works on all major systems including Linux, Mac OSX, and Windows. Xonsh is meant for the daily use of experts and novices alike. &lt;a href=&quot;https://xon.sh/&quot;&gt;The Xonsh Shell&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;mermaid-diagrams&quot;&gt;Mermaid Diagrams&lt;/h2&gt;

&lt;p&gt;“Diagramming and documentation costs precious developer time and gets outdated quickly. But not having diagrams or docs ruins productivity and hurts organisational learning.&lt;/p&gt;

&lt;p&gt;Mermaid addresses this Catch-22 by cutting the time, effort and tooling that is required to create modifiable diagrams and charts, for smarter and more reusable content. Mermaid, as a text-based diagramming tool allows for quick and easy updates, it can also be made part of production scripts (and other pieces of code), to make documentation much easier. With Mermaid less time needs to be spent on making diagrams, as a separate documentation task.”&lt;/p&gt;

&lt;p&gt;&lt;a href=&quot;https://mermaid-js.github.io/mermaid/#/&quot;&gt;mermaid - Markdownish syntax for generating flowcharts, sequence diagrams, class diagrams, gantt charts and git graphs.&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;chartist&quot;&gt;Chartist&lt;/h2&gt;

&lt;p&gt;“CHARTIST - SIMPLE RESPONSIVE CHARTS
You may think that this is just yet an other charting library. But Chartist.js is the product of a community that was disappointed about the abilities provided by other charting libraries. Of course there are hundreds of other great charting libraries but after using them there were always tweaks you would have wished for that were not included.” - &lt;a href=&quot;http://gionkunz.github.io/chartist-js/index.html&quot;&gt;Chartist - Simple responsive charts&lt;/a&gt;&lt;/p&gt;

&lt;h1 id=&quot;font-awesome&quot;&gt;Font Awesome&lt;/h1&gt;

&lt;p&gt;“Get vector icons and social logos on your website with Font Awesome, the web’s most popular icon set and toolkit. &lt;a href=&quot;https://fontawesome.com/&quot;&gt;Font Awesome&lt;/a&gt;&lt;/p&gt;

&lt;h2 id=&quot;thought-asylum&quot;&gt;Thought Asylum&lt;/h2&gt;

&lt;p&gt;ThoughtAsylum is a web site created by Stephen Millard which contains all sorts of automation code primarily for Mac based productivity software.&lt;/p&gt;

&lt;h3 id=&quot;tadpole&quot;&gt;Tadpole&lt;/h3&gt;

&lt;p&gt;“The ThoughtAsylum Drafts Library, also known as TADpoLe, is a collection of JavaScript for working with the Drafts application.” - &lt;a href=&quot;https://tadpole.thoughtasylum.com/&quot;&gt;ThoughtAsylum Drafts Library&lt;/a&gt;
I used the export action to post this content directly from Drafts.&lt;/p&gt;

&lt;h3 id=&quot;optic&quot;&gt;Optic&lt;/h3&gt;
&lt;p&gt;https://github.com/opticdev/optic#try-optic&lt;/p&gt;

&lt;h2 id=&quot;swift-by-example&quot;&gt;Swift By Example&lt;/h2&gt;

&lt;p&gt;Will I get around to reading this?&lt;/p&gt;

&lt;h2 id=&quot;ambergris&quot;&gt;Ambergris&lt;/h2&gt;

&lt;blockquote&gt;
  &lt;p&gt;Although the properties of ambergris have been known for centuries–and also its uses as medicine, condiment, aphrodisiac, and perfume­–its origins remain somewhat mysterious, and are still the subject of study and debate…&lt;/p&gt;
&lt;/blockquote&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.stuff.co.nz/national/124135092/passing-the-sniff-test-is-this-large-collection-ambergris&quot;&gt;Passing the sniff test: Is this large collection ambergris?&lt;/a&gt; via [@macdstuart](https://twitter.com/macdstuart&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;http://www.ambergris.fr/index.html&quot;&gt;Ambergris whale estimating selling and buying ambergris blocks grey amber from spermwhales found around the world.(ambergris)&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://lajamjournal.org/index.php/lajam/article/view/231&quot;&gt;The origin of ambergris&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Mon, 01 Feb 2021 20:21:00 +0000</pubDate>
        <link>https://stuartcw.com/2021/02/01/what-i-learned-this-month.html</link>
        <guid isPermaLink="true">https://stuartcw.com/2021/02/01/what-i-learned-this-month.html</guid>
        
        
      </item>
    
      <item>
        <title>What I learned this month - January 2021</title>
        <description>&lt;h1 id=&quot;what-i-learned-in-january-2021&quot;&gt;What I learned in January 2021&lt;/h1&gt;

&lt;h3 id=&quot;etymology&quot;&gt;Etymology&lt;/h3&gt;

&lt;p&gt;&lt;strong&gt;Destiny vs Fate vs Weird&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Someone asked what is the difference between fate and destiny. As I have mentioned before, similar words in English often came into the language and different times from different languages as I will explain:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Destiny&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;This is the easiest word to trace it’s from the Latin word destinare “make firm, establish” (like destination). i.e. “that which has been firmly established,” as by fate and is usually a positive meaning.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fate&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The word “fate” and also the word “weird” is related to the idea of “The Fates” being, usually three, female beings who rule the destiny of gods and men. They appear in many European mythologies. Also know as Norns in Norse mythology, in Greek Moirai and the Roman Parcae. They were often depicted as weavers of a tapestry on a loom, with the thread dictating the destiny each person. Once the cloth of your life is woven then there is no way to change it. It is your fate.
Fate is from the Latin word “fatum” a “prophetic declaration of what must be, oracle, prediction,” thus the Latin word’s usual sense is “that which is ordained, destiny, fate,” literally “a thing spoken by the gods,” originally from the past participle of fari “to speak”. It’s often used in a bad or negative sense: I.e. “bad luck, ill fortune; mishap, ruin; a pest or plague.”&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weird&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The original word in English for “fate” was “wyrd” as in Shakespeare’s weird sisters, the three fates or Norns (in Germanic mythology), the goddesses who controlled human destiny. In the theatre they were portrayed as odd or frightening in appearance, as in Shakespeare”s play “Macbeth” and especially in 18th and 19th century productions of it, which led to the adjectival meaning “odd-looking, uncanny” (in 1815); “odd, strange, disturbingly different” (in 1820).
The world “wyrd” comes from the Proto-Germanic “wurdiz”, from the Proto-Indo-European “wert-“ (“to turn, wind”) which is the origin of the name of the Norns, urðr. This is related also to the turning of the spinning wheel that the Fates use to spin the thread of your life.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Fatal&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Finally, another related word is “fatal”. We use it to describe something like an injury or illness that brings death but the original meaning is that this was the fate that brought you to your death. Thus a fatal injury.&lt;/p&gt;

&lt;h3 id=&quot;making-your-own-alexa&quot;&gt;Making Your Own Alexa&lt;/h3&gt;

&lt;p&gt;This YouTube video was really inspiring as it brought together many tools.&lt;/p&gt;

&lt;p&gt;https://youtu.be/re-dSV_a0tM&lt;/p&gt;

&lt;h2 id=&quot;projects&quot;&gt;Projects&lt;/h2&gt;

&lt;h3 id=&quot;radiation-counter&quot;&gt;Radiation Counter&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Radiation Counter attached to my Raspberry Pi. I found the serial port Geiger Counter that bought in 2011 and resurrected it. I also found a Linux Python script for it which I hacked a bit to be able to save the readings in JSON files. I’m planning on reading this with another program and feeding them into a RRD file and from that making graphs which I post can post to Twitter. After that I think I’ll download the tweet archive for the radiation counter account that I made and see if I can put all the historical figure into RRD.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;home-network-monitoring&quot;&gt;Home Network Monitoring&lt;/h3&gt;

&lt;p&gt;I didn’t know this command:&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;sudo arp-scan -l -r 3
Interface: eth0, datalink type: EN10MB (Ethernet)
Starting arp-scan 1.9.5 with 256 hosts (https://github.com/royhills/arp-scan)
192.168.3.1    30:f7:72:b5:0a:19       Hon Hai Precision Ind. Co.,Ltd.
192.168.3.9    70:73:cb:b3:49:cc       Apple, Inc.
192.168.3.10   ec:fa:bc:5d:c5:bd       (Unknown)
192.168.3.12   00:25:4b:04:5f:fb       Apple, Inc.
192.168.3.17   00:11:32:3b:f6:73       Synology Incorporated
192.168.3.11   50:02:91:ea:9e:dd       (Unknown)
192.168.3.25   70:73:cb:b3:49:cc       Apple, Inc.
192.168.3.16   7c:ab:60:69:c0:65       (Unknown)
192.168.3.27   0c:fe:45:c8:e8:48       Sony Interactive Entertainment Inc.
192.168.3.35   00:04:20:07:92:f4       Slim Devices, Inc.
192.168.3.37   bc:c3:42:6c:65:c0       Panasonic System Networks Co., Ltd.
192.168.3.15   6a:ad:b9:dd:79:13       (Unknown)
192.168.3.7    64:b5:c6:b4:da:42       (Unknown)
192.168.3.32   8c:85:90:89:71:52       (Unknown)
192.168.3.31   b2:70:0e:35:44:72       (Unknown)
192.168.3.41   da:f0:d6:f2:19:4d       (Unknown)
192.168.3.19   22:6b:95:93:04:18       (Unknown) (DUP: 1)

21 packets received by filter, 0 packets dropped by kernel
Ending arp-scan 1.9.5: 256 hosts scanned in 6.466 seconds (39.59 hosts/sec). 17 responded
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;
&lt;h3 id=&quot;personal-analytics&quot;&gt;Personal Analytics&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Great Podcast: I love the story of Django.. &lt;a href=&quot;https://overcast.fm/+F4RDYeRcw&quot;&gt;#299 Personal search engine with datasette and dogsheep — Talk Python To Me — Overcast&lt;/a&gt; He talks about my passion for personal data collection. SQLite, JSON, data sources that you can tap into, Python.&lt;/li&gt;
  &lt;li&gt;TODO: &lt;a href=&quot;https://www.youtube.com/watch?v=CPQCD3Qxxik&quot;&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;interesting-stuff&quot;&gt;Interesting Stuff&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;If you want to set goals or change your life in anyway, I really recommend this guy: &lt;a href=&quot;https://youtu.be/LZZgxc1tnGM&quot;&gt;YouTube&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;@OpenAI has trained a model that can create new images - you just describe them in English. 🤯 &lt;a href=&quot;https://openai.com/blog/dall-e/&quot;&gt;DALL·E: Creating Images from Text&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;The Art of Negotiation: &lt;a href=&quot;https://youtu.be/_UaH98O7ku8&quot;&gt;YouTube&lt;/a&gt; I’m tempted to say after listening to this guy for a while that a good voice trumps good looks..&lt;/li&gt;
  &lt;li&gt;I really enjoy this guy’s videos. I would suggest watching all three of these but this episode is outstanding. After crossing Wales in a straight line, he tries to cross Norway in the straight line. Totally crazy. &lt;a href=&quot;https://youtu.be/kwzIwFPEGbA&quot;&gt;YouTube&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Pretty amazing thread about how Amazon AWS started: https://twitter.com/danrose999/status/1347677573900242944?s=21&lt;/li&gt;
  &lt;li&gt;I really enjoyed Amanda Gorman’s poem at the inauguration &lt;a href=&quot;https://youtu.be/Wz4YuEvJ3y4&quot;&gt;YouTube&lt;/a&gt; I looked at quite a few of her other performances and was again reminded of the power of words.&lt;/li&gt;
  &lt;li&gt;Co-Pilot of the plane that went down in the Hudson River tells his story: https://youtu.be/qr5SxnDom7g&lt;/li&gt;
  &lt;li&gt;Stumbled across this history YouTube Channel: &lt;a href=&quot;https://youtu.be/vVgCy6iwrHQ&quot;&gt;YouTube&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;How car seat laws have impacted the birthrate. Spoiler it is a bigger hassle/expensive to drive 3 kids vs 2 kids. &lt;a href=&quot;https://overcast.fm/+WaLEzH_Wc&quot;&gt;447. How Much Do We Really Care About Children? — Freakonomics Radio — Overcast&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Some good leadership lessons here: &lt;a href=&quot;https://overcast.fm/+I6DC--ISU&quot;&gt;8 reliable lessons for unreliable times — Masters of Scale with Reid Hoffman — Overcast&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;this was interesting when he got into talking about skills-domain-field… &lt;a href=&quot;https://overcast.fm/+BcN3hQ3Jc&quot;&gt;My Favorite Things: How to Find Success No MATTER What Your Interest Is! — The James Altucher Show — Overcast&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;wow if this really works https://twitter.com/mashable/status/1353034007517171712&lt;/li&gt;
  &lt;li&gt;Very inspirational and detailed story how a guy built his own business: &lt;a href=&quot;https://www.listennotes.com/blog/how-i-accidentally-built-a-podcast-api-business-46/&quot;&gt;How I accidentally built a Podcast API business : Listen Notes&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;Mozilla Engineer Track: https://twitter.com/Gankra_/status/1046438955439271936&lt;/li&gt;
  &lt;li&gt;The origin of the Beatles track “Dear Prudence” - &lt;a href=&quot;https://youtu.be/_EENbm2oeX0&quot;&gt;YouTube&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;to-try&quot;&gt;To Try&lt;/h2&gt;

&lt;h3 id=&quot;linux--raspberry-pi-tools&quot;&gt;Linux &amp;amp; Raspberry Pi Tools&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;n³ The unorthodox terminal file manager.&lt;/li&gt;
  &lt;li&gt;
    &lt;ul&gt;
      &lt;li&gt;Raspberry Pi terminal based activity monitor &lt;a href=&quot;https://github.com/PierreKieffer/pitop&quot;&gt;GitHub - PierreKieffer/pitop: Raspberry Pi terminal based activity monitor&lt;/a&gt;&lt;/li&gt;
    &lt;/ul&gt;
  &lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;web-development-tools&quot;&gt;Web Development Tools&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/itchyny/mmv&quot;&gt;GitHub - itchyny/mmv: rename multiple files with editor&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;programming-language-learning-aids&quot;&gt;Programming Language Learning Aids&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://fasterthanli.me/articles/a-half-hour-to-learn-rust&quot;&gt;A half-hour to learn Rust&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;miscellaneous-links&quot;&gt;Miscellaneous Links&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;I don’t write much CSS/HTML at the moment but this looks like a useful tool &lt;a href=&quot;https://docs.emmet.io/&quot;&gt;Emmet&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.balancethegrind.com.au/daily-routines/haruki-murakami-daily-routine/&quot;&gt;Haruki Murakami: Daily Routine - Balance The Grind : Conversations On Work, Life &amp;amp; Balance&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;This is the kind of website that I want to build. I might make a static site generator to make this site look like it. &lt;a href=&quot;https://www.gwern.net/About&quot;&gt;Gwern.net&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.snorkel.org/&quot;&gt;Snorkel&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.openculture.com/2021/01/mits-introduction-to-economics-a-free-online-course.html&quot;&gt;MIT’s Introduction to Economics: A Free Online Course :  Open Culture&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;To listen: &lt;a href=&quot;https://80000hours.org/podcast/episodes/we-are-not-worried-enough-about-the-next-pandemic/&quot;&gt;Howie Lempel on why we aren’t worried enough about the next pandemic — and specifically what we can do to stop it. - 80,000 Hours&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=-knZwdd1ScU&amp;amp;feature=emb_logo&quot;&gt;YouTube&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;https://twitter.com/thingskatedid/status/1316074032379248640?s=12&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://www.sutori.com/story/hendrik-marius-jonkers-and-self-healing-concrete--VRqdpkdTCK13o6ABHoWGC3tF&quot;&gt;Sutori&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://jvns.ca/blog/2021/01/12/day-36--server-sent-events-are-cool--and-a-fun-bug/&quot;&gt;Server-sent events: a simple way to stream events from a server&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://carlschwan.eu/2020/12/29/adding-comments-to-your-static-blog-with-mastodon/&quot;&gt;Adding comments to your static blog with Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;tldr jq     

  A command-line JSON processor that uses a domain-specific language.
  More information: &amp;lt;https://stedolan.github.io/jq&amp;gt;.

  Output a JSON file, in pretty-print format:

      jq . file.json

  Output all elements from arrays (or all the values from objects) in a JSON file:

      jq &apos;.[]&apos; file.json

  Read JSON objects from a file into an array, and output it (inverse of `jq .[]`):

      jq --slurp . file.json

  Output the first element in a JSON file:

      jq &apos;.[0]&apos; file.json

  Output the value of a given key of the first element in a JSON text from `stdin`:

      cat file.json | jq &apos;.[0].key_name&apos;

  Output the value of a given key of each element in a JSON text from `stdin`:

      cat file.json | jq &apos;map(.key_name)&apos;

  Output the value of multiple keys as a new JSON object (assuming the input JSON has the keys `key_name` and `other_key_name`):

      cat file.json | jq &apos;{my_new_key: .key_name, my_other_key: .other_key_name}&apos;

  Combine multiple filters:

      cat file.json | jq &apos;unique | sort | reverse&apos;

  Output the value of a given key to a string (and disable JSON output):

      cat file.json | jq --raw-output &apos;&quot;some text: \(.key_name)&quot;&apos;

&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;to-learn&quot;&gt;To Learn&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;https://datasette.io/&lt;/li&gt;
  &lt;li&gt;How to write a simple slack bot on PythonAnywhere&lt;/li&gt;
  &lt;li&gt;Find out how to use a different template on GitHub Pages.&lt;/li&gt;
  &lt;li&gt;Slack API&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;blogs&quot;&gt;Blogs&lt;/h2&gt;
&lt;ul&gt;
  &lt;li&gt;New https://martin.kleppmann.com/&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;tools&quot;&gt;Tools&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;TabNine&lt;/li&gt;
  &lt;li&gt;Vim&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;tools-used-to-make-this-page&quot;&gt;Tools Used to Make This Page&lt;/h2&gt;

&lt;h3 id=&quot;ios&quot;&gt;iOS&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;Textastic&lt;/li&gt;
  &lt;li&gt;Working Copy&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;services&quot;&gt;Services&lt;/h3&gt;

&lt;ul&gt;
  &lt;li&gt;GitHub Pages&lt;/li&gt;
  &lt;li&gt;Hover Domain Hosting&lt;/li&gt;
&lt;/ul&gt;

&lt;h3 id=&quot;todo&quot;&gt;TODO&lt;/h3&gt;
&lt;ul&gt;
  &lt;li&gt;TODO: A shortcut or script that will make a nicely formatted insert from a raw YouTube URL&lt;/li&gt;
  &lt;li&gt;TODO: Look again at Python JobLib https://joblib.readthedocs.io/en/latest/persistence.html&lt;/li&gt;
&lt;/ul&gt;

</description>
        <pubDate>Fri, 01 Jan 2021 20:21:00 +0000</pubDate>
        <link>https://stuartcw.com/2021/01/01/what-i-learned-this-month.html</link>
        <guid isPermaLink="true">https://stuartcw.com/2021/01/01/what-i-learned-this-month.html</guid>
        
        
      </item>
    
      <item>
        <title>What I learned this month - April 2020</title>
        <description>&lt;h1 id=&quot;what-i-learned-in-april-2020&quot;&gt;What I learned in April 2020&lt;/h1&gt;

&lt;h2 id=&quot;python&quot;&gt;Python&lt;/h2&gt;

&lt;h1 id=&quot;deepdiff-to-find-out-what-changed-between-data-structures&quot;&gt;DeepDiff to find out what changed between data structures.&lt;/h1&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;from deepdiff import DeepDiff

def compareLists(l1,l2,sortby=None):
	l1.sort(key=sortby)
	l2.sort(key=sortby)
	
	changes=DeepDiff(l1,l2,ignore_order=True)
	print(changes)
	
	if &apos;iterable_item_added&apos; in changes: 
		addedItems=changes[&apos;iterable_item_added&apos;]
		for addition in addedItems:
			print(&quot;New:&quot;,addedItems[addition])
		
	if 	&apos;iterable_item_removed&apos; in changes:
		missingItems=changes[&apos;iterable_item_removed&apos;]
		for missing in missingItems:
			print(&quot;Missing:&quot;,missingItems[missing])
	
l1=[10,20,30,40]
l2=[10,20,30,40,50]

compareLists(l1, l2 )
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Results&lt;/p&gt;

&lt;div class=&quot;language-plaintext highlighter-rouge&quot;&gt;&lt;div class=&quot;highlight&quot;&gt;&lt;pre class=&quot;highlight&quot;&gt;&lt;code&gt;{&apos;iterable_item_added&apos;: {&apos;root[4]&apos;: 50}}
New: 50
&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;/div&gt;

&lt;h2 id=&quot;shell&quot;&gt;Shell&lt;/h2&gt;

&lt;h3 id=&quot;shellcheck&quot;&gt;ShellCheck&lt;/h3&gt;

&lt;p&gt;Finds bugs in your shell scripts.&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://github.com/koalaman/shellcheck&quot;&gt;ShellCheck&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;nginx&quot;&gt;Nginx&lt;/h2&gt;

&lt;h3 id=&quot;logs&quot;&gt;Logs&lt;/h3&gt;

&lt;p&gt;/usr/local/Cellar/nginx/1.17.7/logs&lt;/p&gt;

&lt;h3 id=&quot;settings&quot;&gt;Settings&lt;/h3&gt;

&lt;p&gt;/usr/local/etc/nginx/&lt;/p&gt;

&lt;h2 id=&quot;to-learn&quot;&gt;To Learn&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;How to write a simple slack bot on PythoAnywhere&lt;/li&gt;
  &lt;li&gt;Find out how to use a different template on GitHub Pages.&lt;/li&gt;
  &lt;li&gt;Slack API&lt;/li&gt;
&lt;/ul&gt;
</description>
        <pubDate>Wed, 01 Apr 2020 13:49:00 +0000</pubDate>
        <link>https://stuartcw.com/2020/04/01/what-i-learned-this-month.html</link>
        <guid isPermaLink="true">https://stuartcw.com/2020/04/01/what-i-learned-this-month.html</guid>
        
        
      </item>
    
      <item>
        <title>What I learned this month - March 2020</title>
        <description>&lt;h1 id=&quot;what-i-learned-in-march-2020&quot;&gt;What I learned in March 2020&lt;/h1&gt;

&lt;h2 id=&quot;another-meta-learning-experience&quot;&gt;Another Meta Learning Experience&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;https GitHub pages. I updated the DNS and tinkered around with the Github settings to enable https. I’m still not sure about what exactly multiple A records achieve but it seems to be working now.. at least on Safari.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;python&quot;&gt;Python&lt;/h2&gt;

&lt;h3 id=&quot;arrow-better-dates--times-for-python&quot;&gt;Arrow: Better dates &amp;amp; times for Python&lt;/h3&gt;

&lt;p&gt;&lt;a href=&quot;https://arrow.readthedocs.io&quot;&gt;Arrow&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p&gt;Arrow is a Python library that offers a sensible and human-friendly approach to creating, manipulating, formatting and converting dates, times and timestamps. It implements and updates the datetime type, plugging gaps in functionality and providing an intelligent module API that supports many common creation scenarios. Simply put, it helps you work with dates and times with fewer imports and a lot less code.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2 id=&quot;python-anywhere&quot;&gt;Python Anywhere&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://help.pythonanywhere.com/pages/UploadingAndDownloadingFiles&quot;&gt;How to upload and download content&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://docs.bolt.cm/3.7/howto/making-sure-htaccess-works&quot;&gt;Testing .htaccess&lt;/a&gt; This is kind of old school but how do you know if your .htaccess is setup and working? A simple test is adding redirect and see if it works.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2 id=&quot;to-learn&quot;&gt;To Learn&lt;/h2&gt;

&lt;ul&gt;
  &lt;li&gt;How to write a simple slack bot on PythoAnywhere&lt;/li&gt;
  &lt;li&gt;
    &lt;p&gt;Find out how to use a different template on GitHub Pages.&lt;/p&gt;
  &lt;/li&gt;
  &lt;li&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
        <pubDate>Sun, 01 Mar 2020 13:49:00 +0000</pubDate>
        <link>https://stuartcw.com/2020/03/01/what-i-learned-this-month.html</link>
        <guid isPermaLink="true">https://stuartcw.com/2020/03/01/what-i-learned-this-month.html</guid>
        
        
      </item>
    
      <item>
        <title>What I learned this month - November 2016</title>
        <description>&lt;h1 id=&quot;what-i-learned-in-november-2016&quot;&gt;What I learned in November 2016&lt;/h1&gt;

&lt;h1 id=&quot;beacon-technology-standards&quot;&gt;Beacon Technology Standards&lt;/h1&gt;
&lt;ul&gt;
  &lt;li&gt;&lt;a href=&quot;https://developer.apple.com/ibeacon/&quot;&gt;iBeacon&lt;/a&gt;&lt;/li&gt;
  &lt;li&gt;&lt;a href=&quot;https://developers.google.com/beacons/&quot;&gt;Eddystone&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
        <pubDate>Tue, 01 Nov 2016 13:49:00 +0000</pubDate>
        <link>https://stuartcw.com/2016/11/01/what-i-learned-this-month.html</link>
        <guid isPermaLink="true">https://stuartcw.com/2016/11/01/what-i-learned-this-month.html</guid>
        
        
      </item>
    
      <item>
        <title>What I learned this month - March 2015</title>
        <description>&lt;h2 id=&quot;github-pages&quot;&gt;Github Pages&lt;/h2&gt;

&lt;p&gt;Force an update.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;git commit &lt;span class=&quot;nt&quot;&gt;-m&lt;/span&gt; &lt;span class=&quot;s1&quot;&gt;&apos;rebuild pages&apos;&lt;/span&gt; &lt;span class=&quot;nt&quot;&gt;--allow-empty&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

</description>
        <pubDate>Wed, 01 Jul 2015 12:00:00 +0000</pubDate>
        <link>https://stuartcw.com/bash/shell-scripting/git/2015/07/01/what-i-learned-this-month.html</link>
        <guid isPermaLink="true">https://stuartcw.com/bash/shell-scripting/git/2015/07/01/what-i-learned-this-month.html</guid>
        
        
        <category>bash</category>
        
        <category>shell-scripting</category>
        
        <category>git</category>
        
      </item>
    
      <item>
        <title>What I learned this month - June 2014</title>
        <description>&lt;h1 id=&quot;what-i-learned-this-month&quot;&gt;What I learned this month&lt;/h1&gt;

&lt;h3 id=&quot;bro&quot;&gt;Bro&lt;/h3&gt;

&lt;p&gt;https://www.bro.org/index.html&lt;/p&gt;

&lt;p&gt;“Bro is a passive, open-source network traffic analyzer. It is primarily a security monitor that inspects all traffic on a link in depth for signs of suspicious activity. More generally, however, Bro supports a wide range of traffic analysis tasks even outside of the security domain, including performance measurements and helping with trouble-shooting.&lt;/p&gt;

&lt;p&gt;The most immediate benefit that a site gains from deploying Bro is an extensive set of log files that record a network’s activity in high-level terms. These logs include not only a comprehensive record of every connection seen on the wire, but also application-layer transcripts such as, e.g., all HTTP sessions with their requested URIs, key headers, MIME types, and server responses; DNS requests with replies; SSL certificates; key content of SMTP sessions; and much more. By default, Bro writes all this information into well-structured tab-separated log files suitable for post-processing with external software. Users can however also chose from a set of alternative output formats and backends to interface directly with, e.g., external databases.”&lt;/p&gt;

&lt;h2 id=&quot;linux&quot;&gt;Linux&lt;/h2&gt;

&lt;p&gt;getent hosts&lt;/p&gt;

&lt;h3 id=&quot;bash--u&quot;&gt;bash -u&lt;/h3&gt;
&lt;p&gt;I should have know this, but bash -u finds undeclared variables for you.&lt;/p&gt;

</description>
        <pubDate>Sun, 01 Jun 2014 12:00:00 +0000</pubDate>
        <link>https://stuartcw.com/bash/shell-scripting/2014/06/01/what-i-learned-this-month.html</link>
        <guid isPermaLink="true">https://stuartcw.com/bash/shell-scripting/2014/06/01/what-i-learned-this-month.html</guid>
        
        
        <category>bash</category>
        
        <category>shell-scripting</category>
        
      </item>
    
      <item>
        <title>What I learned this month - March 2014</title>
        <description>&lt;h2 id=&quot;shell-scripting&quot;&gt;Shell Scripting&lt;/h2&gt;

&lt;p&gt;This is Mac specific. This converts your Safari history to JSON.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;plutil &lt;span class=&quot;nt&quot;&gt;-convert&lt;/span&gt; json ~/Library/Safari/History.plist &lt;span class=&quot;nt&quot;&gt;-o&lt;/span&gt; ~/History.plist.json&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

</description>
        <pubDate>Wed, 05 Mar 2014 12:00:00 +0000</pubDate>
        <link>https://stuartcw.com/bash/shell-scripting/2014/03/05/what-i-learned-this-month.html</link>
        <guid isPermaLink="true">https://stuartcw.com/bash/shell-scripting/2014/03/05/what-i-learned-this-month.html</guid>
        
        
        <category>bash</category>
        
        <category>shell-scripting</category>
        
      </item>
    
      <item>
        <title>What I learned this month - December 2013</title>
        <description>&lt;h2 id=&quot;shell-scripting&quot;&gt;Shell Scripting&lt;/h2&gt;

&lt;p&gt;Not exactly something learnt this month but something I had to look up again. How to password protect a ZIP file from the command line.&lt;/p&gt;

&lt;figure class=&quot;highlight&quot;&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot; data-lang=&quot;bash&quot;&gt;zip &lt;span class=&quot;nt&quot;&gt;-P&lt;/span&gt; password myzipfile.zip filetobezipped&lt;/code&gt;&lt;/pre&gt;&lt;/figure&gt;

</description>
        <pubDate>Sun, 01 Dec 2013 12:00:00 +0000</pubDate>
        <link>https://stuartcw.com/bash/shell-scripting/2013/12/01/what-i-learned-this-month.html</link>
        <guid isPermaLink="true">https://stuartcw.com/bash/shell-scripting/2013/12/01/what-i-learned-this-month.html</guid>
        
        
        <category>bash</category>
        
        <category>shell-scripting</category>
        
      </item>
    
      <item>
        <title>What I learned this month - October 2013</title>
        <description>&lt;h2 id=&quot;shell-scripting&quot;&gt;Shell Scripting&lt;/h2&gt;

&lt;p&gt;You can grep inside gzipping files directly using zcat. See below:&lt;/p&gt;

&lt;table&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;td&gt;find . -name “acc*.gz” -exec zcat “{}” +&lt;/td&gt;
      &lt;td&gt;grep “error”&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;This is especially useful for grepping logfiles that have been compressed.&lt;/p&gt;

</description>
        <pubDate>Tue, 15 Oct 2013 12:52:00 +0000</pubDate>
        <link>https://stuartcw.com/bash/shell-scripting/2013/10/15/what-i-learned-this-month.html</link>
        <guid isPermaLink="true">https://stuartcw.com/bash/shell-scripting/2013/10/15/what-i-learned-this-month.html</guid>
        
        
        <category>bash</category>
        
        <category>shell-scripting</category>
        
      </item>
    
  </channel>
</rss>
