diff options
| author | Paul Buetow <paul@buetow.org> | 2023-04-08 12:16:21 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2023-04-08 12:16:21 +0300 |
| commit | 5015efc990b82e42749549d7e705f2079bc98b1b (patch) | |
| tree | a4fb70566ab2be16b9595ef7648593e339733fa5 /gemfeed | |
| parent | 6d94a49f2f7b4c5ca7c78127b78dc349008de78e (diff) | |
Update content for gemtext
Diffstat (limited to 'gemfeed')
| -rw-r--r-- | gemfeed/atom.xml.tmp | 7609 |
1 files changed, 7609 insertions, 0 deletions
diff --git a/gemfeed/atom.xml.tmp b/gemfeed/atom.xml.tmp new file mode 100644 index 00000000..b632dace --- /dev/null +++ b/gemfeed/atom.xml.tmp @@ -0,0 +1,7609 @@ +<?xml version="1.0" encoding="utf-8"?> +<feed xmlns="http://www.w3.org/2005/Atom"> + <updated>2023-04-08T12:16:03+03:00</updated> + <title>foo.zone feed</title> + <subtitle>To be in the .zone!</subtitle> + <link href="gemini://foo.zone/gemfeed/atom.xml" rel="self" /> + <link href="gemini://foo.zone/" /> + <id>gemini://foo.zone/</id> + <entry> + <title>'Never split the difference' book notes</title> + <link href="gemini://foo.zone/gemfeed/2023-04-01-never-split-the-difference-book-notes.gmi" /> + <id>gemini://foo.zone/gemfeed/2023-04-01-never-split-the-difference-book-notes.gmi</id> + <updated>2023-04-01T20:00:17+03:00</updated> + <author> + <name>Paul Buetow</name> + <email>hi@paul.cyou</email> + </author> + <summary>These are my personal takeaways after reading 'Never split the difference' by Chris Voss. Note that the book contains much more knowledge wisdom and that these notes only contain points I personally found worth writing down. This is mainly for my own use, but you might find it helpful too.</summary> + <content type="xhtml"> + <div xmlns="http://www.w3.org/1999/xhtml"> + <h1 style='display: inline'>"Never split the difference" book notes</h1><br /> +<br /> +<span class=quote>Published at 2023-04-01T20:00:17+03:00</span><br /> +<br /> +<span>These are my personal takeaways after reading "Never split the difference" by Chris Voss. Note that the book contains much more knowledge wisdom and that these notes only contain points I personally found worth writing down. This is mainly for my own use, but you might find it helpful too.</span><br /> +<br /> +<pre> + ,.......... .........., + ,..,' '.' ',.., + ,' ,' : ', ', + ,' ,' : ', ', + ,' ,' : ', ', + ,' ,'............., : ,.............', ', +,' '............ '.' ............' ', + '''''''''''''''''';''';'''''''''''''''''' + ''' +</pre> +<br /> +<h2 style='display: inline'>Tactical listening, spreading empathy</h2><br /> +<br /> +<span>Be a mirror, copy each other to be comfy with each other to build up trust. Mirroring is mainly body language. A mirror is to repeat the words the other just said. Simple but effective.</span><br /> +<br /> +<ul> +<li>A mirror needs space and silence between the words. At least 4 seconds.</li> +<li>A mirror might be awkward to be used at first, especially with a question coupled to it.</li> +<li>We fear what's different and are drawn to what is similar.</li> +</ul><br /> +<span>Mirror training is like Jedi training. Simple but effective. A mirror needs space. Be silent after "you want this?" </span><br /> +<br /> +<h2 style='display: inline'>Mindset of discovery</h2><br /> +<br /> +<span>Try to have multiple realities in your mind and use facts to distinguish between real and false.</span><br /> +<br /> +<ul> +<li>Focus on what the counterpart has to say and what he needs and wants. Understanding him makes him vulnerable.</li> +<li>Empathy understanding the other person from his perspective, but it does not mean agreeing with him.</li> +<li>Detect and label the emotions of others for your powers. </li> +<li>To be understood seems to solve all problems magically.</li> +</ul><br /> +<span>Try: to put a label on someone's emotion and then be silent. Wait for the other to reveal himself. "You seem unhappy about this?"</span><br /> +<br /> +<h3 style='display: inline'>More tips </h3><br /> +<br /> +<ul> +<li>Put on a poker face and don't show emotions.</li> +<li>Slow things down. Don't be a problem solver.</li> +<li>Smile while you are talking, even on the phone. Be easy and encouraging.</li> +<li>Being right is not the key to successful negotiation; being mindful is.</li> +<li>Be in the safe zone of empathy and acknowledge bad news.</li> +</ul><br /> +<h2 style='display: inline'>"No" starts the conversation</h2><br /> +<br /> +<span>When the opponent starts with a "no", he feels in control and comfortable. That's why he has to start with "no".</span><br /> +<br /> +<ul> +<li>"Yes" and "maybe" might be worthless, but "no" starts the conversation.</li> +<li>If someone is saying "no" to you, he will be open to what you have to say next.</li> +<li>"No" is not stopping the negotiation but will open up opportunities you were not thinking about before.</li> +<li>Start with "no". Great negotiators seek "no" because that's when the great discussions begin.</li> +<li>A "no" can be scary if you are not used to it. If your biggest fear is "no", then you can't negotiate.</li> +</ul><br /> +<span>Get a "That's right" when negotiating. Don't get a "you're right". You can summarise the opponent to get a "that's right".</span><br /> +<br /> +<h2 style='display: inline'>Win-win</h2><br /> +<br /> +<span>Win-win is a naive approach when encountering the win-lose counterpart, but always cooperate. Don't compromise, and don't split the difference. We don't compromise because it's right; we do it because it is easy. You must embrace the hard stuff; that's where the great deals are.</span><br /> +<br /> +<h2 style='display: inline'>On Deadlines</h2><br /> +<br /> +<ul> +<li>All deadlines are imaginary.</li> +<li>Most of the time, deadlines unsettle us without a good reason.</li> +<li>They push a deal to a conclusion.</li> +<li>They rush the counterpart to cause pressure and anxiety.</li> +</ul><br /> +<h2 style='display: inline'>Analyse the opponent</h2><br /> +<br /> +<ul> +<li>Understand the motivation of people behind the table as well.</li> +<li>Ask how affected they will be.</li> +<li>Determine your and the opposite negotiation style. Accommodation, analyst, assertive.</li> +<li>Treat them how they need to be treated.</li> +</ul><br /> +<span>The person on the other side is never the issue; the problem is the issue. Keep this in mind to avoid emotional issues with the person and focus on the problem, not the person. The bond is essential; never create an enemy.</span><br /> +<br /> +<h2 style='display: inline'>Use different ways of saying "no."</h2><br /> +<br /> +<span class=quote>I had paid my rent always in time. I had positive experiences with the building and would be sad for the landlord to lose a good tenant. I am looking for a win-win agreement between us. Pulling out the research, other neighbours offer much lower prices even if your building is a better location and services. How can I effort 200 more.... </span><br /> +<br /> +<span>...then put an extreme anker.</span><br /> +<br /> +<span>You always have to embrace thoughtful confrontation for good negotiation and life. Don't avoid honest, clear conflict. It will give you the best deals. Compromises are mostly bad deals for both sides. Most people don't negotiate a win-win but a win-lose. Know the best and worst outcomes and what is acceptable for you.</span><br /> +<br /> +<h2 style='display: inline'>Calibrated question</h2><br /> +<br /> +<span>Calibrated questions. Give the opponent a sense of power. Ask open-how questions to get the opponent to solve your problem and move him in your direction. Calibrated questions are the best tools. Summarise everything, and then ask, "how I am supposed to do that?". Asking for help this way with a calibrated question is a powerful tool for joint problem solving</span><br /> +<br /> +<span>Being calm and respectful is essential. Without control of your emotions, it won't work. The counterpart will have no idea how constrained they are with your question. Avoid questions which get a yes or short answers. Use "why?".</span><br /> +<br /> +<span>Counterparts are more involved if these are their solutions. The counterpart must answer with "that's right", not "you are right". He has to own the problem. If not, then add more why questions.</span><br /> +<br /> +<ul> +<li>Tone and body language need to align with what people are saying.</li> +<li>Deal with it via a labelled question. </li> +<li>Liers tend to talk with "them" and "their" and not with "I".</li> +<li>Also, liars tend to talk in complex sentences.</li> +</ul><br /> +<span>Prepare 3 to 5 calibrated questions for your counterpart. Be curious what is really motivating the other side. You can get out the "Black Swan".</span><br /> +<br /> +<h2 style='display: inline'>The black swan </h2><br /> +<br /> +<span>What we don't know can break our deal. Uncovering it can bring us unexpected success. You get what you ask for in this world, but you must learn to ask correctly. Reveal the black swan by asking questions.</span><br /> +<br /> +<h2 style='display: inline'>More</h2><br /> +<br /> +<span>Establish a range at top places like corp. I get... (e.g. remote London on a project basis). Set a high salary range and not a number. Also, check on LinkedIn premium for the salaries.</span><br /> +<br /> +<ul> +<li>Give an unexpected gift, e.g. show them my pet project and publicity for engineering.</li> +<li>Use an odd number, which makes you seem to have thought a lot about the sum and calculated it.</li> +<li>Define success and metrics for your next raise.</li> +<li>What does it take to be successful here? Ask the question, and they will tell you and guide you.</li> +<li>Set an extreme anker. Make the counterpart the illusion of losing something.</li> +<li>Hope-based deals. Hope is not a strategy.</li> +<li>Tactical empathy, listening as a martial art. It is emotional intelligence on steroids.</li> +<li>Being right isn't the key to a successful negotiation, but having the correct mindset is.</li> +<li>Don't shop the groceries when you are hungry.</li> +</ul><br /> +<span>Slow.... it.... down....</span><br /> +<br /> +<span>Other book notes of mine are:</span><br /> +<br /> +<a class=textlink href='./2023-04-01-never-split-the-difference-book-notes.html'>2023-04-01 "Never split the difference" book notes (You are currently reading this)</a><br /> +<a class=textlink href='./2023-03-16-the-pragmatic-programmer-book-notes.html'>2023-03-16 "The Pragmatic Programmer" book notes</a><br /> +<br /> +<span>E-Mail your comments to hi@paul.cyou :-)</span><br /> +<br /> +<a class=textlink href='../'>Back to the main site</a><br /> + </div> + </content> + </entry> + <entry> + <title>Gemtexter 2.0.0 - Let's Gemtext again^2</title> + <link href="gemini://foo.zone/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi" /> + <id>gemini://foo.zone/gemfeed/2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.gmi</id> + <updated>2023-03-25T17:50:32+02:00</updated> + <author> + <name>Paul Buetow</name> + <email>hi@paul.cyou</email> + </author> + <summary>I proudly announce that I've released Gemtexter version `2.0.0`. What is Gemtexter? It's my minimalist static site generator for Gemini Gemtext, HTML and Markdown written in GNU Bash.</summary> + <content type="xhtml"> + <div xmlns="http://www.w3.org/1999/xhtml"> + <h1 style='display: inline'>Gemtexter 2.0.0 - Let's Gemtext again^2</h1><br /> +<br /> +<span class=quote>Published at 2023-03-25T17:50:32+02:00</span><br /> +<br /> +<pre> +-=[ typewriters ]=- 1/98 + + .-------. + _|~~ ~~ |_ .-------. + =(_|_______|_)= _|~~ ~~ |_ + |:::::::::| =(_|_______|_) + |:::::::[]| |:::::::::| + |o=======.| |:::::::[]| + jgs `"""""""""` |o=======.| + mod. by Paul Buetow `"""""""""` +</pre> +<br /> +<span>I proudly announce that I've released Gemtexter version <span class=inlinecode>2.0.0</span>. What is Gemtexter? It's my minimalist static site generator for Gemini Gemtext, HTML and Markdown written in GNU Bash.</span><br /> +<br /> +<a class=textlink href='https://codeberg.org/snonux/gemtexter'>https://codeberg.org/snonux/gemtexter</a><br /> +<br /> +<span>This is a new major release, so it contains a breaking change (see "Meta cache made obsolete").</span><br /> +<br /> +<span>Let's list what's new!</span><br /> +<br /> +<h2 style='display: inline'>Minimal template engine</h2><br /> +<br /> +<span>Gemtexter now supports templating, enabling dynamically generated content to <span class=inlinecode>.gmi</span> files before converting anything to any output format like HTML and Markdown.</span><br /> +<br /> +<span>A template file name must have the suffix <span class=inlinecode>gmi.tpl</span>. A template must be put into the same directory as the Gemtext <span class=inlinecode>.gmi</span> file to be generated. Gemtexter will generate a Gemtext file <span class=inlinecode>index.gmi</span> from a given template <span class=inlinecode>index.gmi.tpl</span>. A <span class=inlinecode><<<</span> and <span class=inlinecode>>>></span> encloses a multiline template. All lines starting with <span class=inlinecode><< </span> will be evaluated as a single line of Bash code and the output will be written into the resulting Gemtext file.</span><br /> +<br /> +<span>For example, the template <span class=inlinecode>index.gmi.tpl</span>:</span><br /> +<br /> +<pre> +# Hello world + +<< echo "> This site was generated at $(date --iso-8601=seconds) by \`Gemtexter\`" + +Welcome to this capsule! + +<<< + for i in {1..10}; do + echo Multiline template line $i + done +>>> +</pre> +<br /> +<span>... results into the following <span class=inlinecode>index.gmi</span> after running <span class=inlinecode>./gemtexter --generate</span> (or <span class=inlinecode>./gemtexter --template</span>, which instructs to do only template processing and nothing else):</span><br /> +<br /> +<pre> +# Hello world + +> This site was generated at 2023-03-15T19:07:59+02:00 by `Gemtexter` + +Welcome to this capsule! + +Multiline template line 1 +Multiline template line 2 +Multiline template line 3 +Multiline template line 4 +Multiline template line 5 +Multiline template line 6 +Multiline template line 7 +Multiline template line 8 +Multiline template line 9 +Multiline template line 10 +</pre> +<br /> +<span>Another thing you can do is insert an index with links to similar blog posts. E.g.:</span><br /> +<br /> +<pre> +See more entries about DTail and Golang: + +<< template::inline::index dtail golang + +Blablabla... +</pre> +<br /> +<span>... scans all other post entries with <span class=inlinecode>dtail</span> and <span class=inlinecode>golang</span> in the file name and generates a link list like this:</span><br /> +<br /> +<pre> +See more entries about DTail and Golang: + +=> ./2022-10-30-installing-dtail-on-openbsd.gmi 2022-10-30 Installing DTail on OpenBSD +=> ./2022-04-22-programming-golang.gmi 2022-04-22 The Golang Programming language +=> ./2022-03-06-the-release-of-dtail-4.0.0.gmi 2022-03-06 The release of DTail 4.0.0 +=> ./2021-04-22-dtail-the-distributed-log-tail-program.gmi 2021-04-22 DTail - The distributed log tail program (You are currently reading this) + +Blablabla... +</pre> +<br /> +<h2 style='display: inline'>Added hooks</h2><br /> +<br /> +<span>You can configure <span class=inlinecode>PRE_GENERATE_HOOK</span> and <span class=inlinecode>POST_PUBLISH_HOOK</span> to point to scripts to be executed before running <span class=inlinecode>--generate</span>, or after running <span class=inlinecode>--publish</span>. E.g. you could populate some of the content by an external script before letting Gemtexter do its thing or you could automatically deploy the site after running <span class=inlinecode>--publish</span>.</span><br /> +<br /> +<span>The sample config file <span class=inlinecode>gemtexter.conf</span> includes this as an example now; these scripts will only be executed when they actually exist:</span><br /> +<br /> +<pre> +declare -xr PRE_GENERATE_HOOK=./pre_generate_hook.sh +declare -xr POST_PUBLISH_HOOK=./post_publish_hook.sh +</pre> +<br /> +<h2 style='display: inline'>Use of safer Bash options</h2><br /> +<br /> +<span>Gemtexter now does <span class=inlinecode>set -euf -o pipefile</span>, which helps to eliminate bugs and to catch scripting errors sooner. Previous versions only <span class=inlinecode>set -e</span>.</span><br /> +<br /> +<h2 style='display: inline'>Meta cache made obsolete</h2><br /> +<br /> +<span>Here is the breaking change to older versions of Gemtexter. The <span class=inlinecode>$BASE_CONTENT_DIR/meta</span> directory was made obsolete. <span class=inlinecode>meta</span> was used to store various information about all the blog post entries to make generating an Atom feed in Bash easier. Especially the publishing dates of each post were stored there. Instead, the publishing date is now encoded in the <span class=inlinecode>.gmi</span> file. And if it is missing, Gemtexter will set it to the current date and time at first run.</span><br /> +<br /> +<span>An example blog post without any publishing date looks like this:</span><br /> +<br /> +<pre> +% cat gemfeed/2023-02-26-title-here.gmi +# Title here + +The remaining content of the Gemtext file... +</pre> +<br /> +<span>Gemtexter will add a line starting with <span class=inlinecode>> Published at ...</span> now. Any subsequent Atom feed generation will then use that date.</span><br /> +<br /> +<pre> +% cat gemfeed/2023-02-26-title-here.gmi +# Title here + +> Published at 2023-02-26T21:43:51+01:00 + +The remaining content of the Gemtext file... +</pre> +<br /> +<h2 style='display: inline'>XMLLint support</h2><br /> +<br /> +<span>Optionally, when the <span class=inlinecode>xmllint</span> binary is installed, Gemtexter will perform a simple XML lint check against the Atom feed generated. This is a double-check of whether the Atom feed is a valid XML.</span><br /> +<br /> +<h2 style='display: inline'>More</h2><br /> +<br /> +<span>Additionally, there were a couple of bug fixes, refactorings and overall improvements in the documentation made. </span><br /> +<br /> +<span>Other related posts are:</span><br /> +<br /> +<a class=textlink href='./2023-03-25-gemtexter-2.0.0-lets-gemtext-again-2.html'>2023-03-25 Gemtexter 2.0.0 - Let's Gemtext again^2 (You are currently reading this)</a><br /> +<a class=textlink href='./2022-08-27-gemtexter-1.1.0-lets-gemtext-again.html'>2022-08-27 Gemtexter 1.1.0 - Let's Gemtext again</a><br /> +<a class=textlink href='./2021-06-05-gemtexter-one-bash-script-to-rule-it-all.html'>2021-06-05 Gemtexter - One Bash script to rule it all</a><br /> +<a class=textlink href='./2021-04-24-welcome-to-the-geminispace.html'>2021-04-24 Welcome to the Geminispace</a><br /> +<br /> +<span>E-Mail your comments to hi@paul.cyou :-)</span><br /> +<br /> +<a class=textlink href='../'>Back to the main site</a><br /> + </div> + </content> + </entry> + <entry> + <title>'The Pragmatic Programmer' book notes</title> + <link href="gemini://foo.zone/gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.gmi" /> + <id>gemini://foo.zone/gemfeed/2023-03-16-the-pragmatic-programmer-book-notes.gmi</id> + <updated>2023-03-16T00:55:20+02:00</updated> + <author> + <name>Paul Buetow</name> + <email>hi@paul.cyou</email> + </author> + <summary>These are my personal takeaways after reading 'The Pragmatic Programmer' by David Thomas and Andrew Hunt. Note that the book contains much more knowledge wisdom and that these notes only contain points I personally found worth writing down. This is mainly for my own use, but you might find it helpful too.</summary> + <content type="xhtml"> + <div xmlns="http://www.w3.org/1999/xhtml"> + <h1 style='display: inline'>"The Pragmatic Programmer" book notes</h1><br /> +<br /> +<span class=quote>Published at 2023-03-16T00:55:20+02:00</span><br /> +<br /> +<span>These are my personal takeaways after reading "The Pragmatic Programmer" by David Thomas and Andrew Hunt. Note that the book contains much more knowledge wisdom and that these notes only contain points I personally found worth writing down. This is mainly for my own use, but you might find it helpful too.</span><br /> +<br /> +<pre> + ,.......... .........., + ,..,' '.' ',.., + ,' ,' : ', ', + ,' ,' : ', ', + ,' ,' : ', ', + ,' ,'............., : ,.............', ', +,' '............ '.' ............' ', + '''''''''''''''''';''';'''''''''''''''''' + ''' +</pre> +<br /> +<span>Think about your work while doing it - every day on every project. Have a feeling of continuous improvement. </span><br /> +<br /> +<ul> +<li>Be a realist.</li> +<li>Smell challenges.</li> +<li>Care about your craft.</li> +<li>Code can always be flawed, but it can meet the requirements.</li> +<li>You should be proud of your code, though.</li> +</ul><br /> +<span>No one writes perfect code, including you. However:</span><br /> +<br /> +<ul> +<li>Paranoia is good thinking.</li> +<li>Practice defensive programming and crash early.</li> +<li>Crashing is often the best thing you can do. </li> +<li>Changes should be reversible.</li> +</ul><br /> +<span>Erlang: Defensive programming is a waste of time. Let it crash. "This can never happen" - don't practise that kind of self-deception when programming. </span><br /> +<br /> +<span>Leave assertions in the code, even in production. Only leave out the assertions causing the performance issues.</span><br /> +<br /> +<span>Take small steps, always. Get feedback, too, for each of the steps the code does. Avoid fortune telling. If you have to involve in it, then the step is too large.</span><br /> +<br /> +<span>Decouple the code (e.g. OOP or functional programming). Prefer interfaces for types and mixins for a class extension over class inheritance.</span><br /> +<br /> +<ul> +<li>Refactor now and not later.</li> +<li>Later, it will be even more painful.</li> +</ul><br /> +<span>Don't think outside the box. Find the box. The box is more extensive than you think. Think about the hard problem at hand. Do you have to do it a certain way, or do you have to do it at all?</span><br /> +<br /> +<span>Do what works and not what's fashionable. E.g. does SCRUM make sense? The goal is to deliver deliverables and not to "become" agile.</span><br /> +<br /> +<h2 style='display: inline'>Continuous learning</h2><br /> +<br /> +<span>Add new tools to your repertoire every day and keep the momentum up. Learning new things is your most crucial aspect. Invest regularly in your knowledge portfolio. The learning process extends your thinking. It does not matter if you will never use it.</span><br /> +<br /> +<ul> +<li>Learn a new programming language every year.</li> +<li>Read a technical book every month.</li> +<li>Take courses.</li> +</ul><br /> +<span>Think critically about everything you learn. Use paper for your notes. There is something special about it.</span><br /> +<br /> +<h2 style='display: inline'>Stay connected</h2><br /> +<br /> +<span>It's your life, and you own it. Bruce Lee once said: </span><br /> +<br /> +<span class=quote>"I am not on the world to life after your expectations, neither are you to life after mine."</span><br /> +<br /> +<ul> +<li>Go to meet-ups and actively engage.</li> +<li>Stay current.</li> +<li>Dealing with computers is hard. Dealing with people is harder. </li> +</ul><br /> +<span>It's your life. Share it, celebrate it, be proud and have fun.</span><br /> +<br /> +<h2 style='display: inline'>The story of stone soup</h2><br /> +<br /> +<span>How to motivate others to contribute something (e.g. ideas to a startup):</span><br /> +<br /> +<span class=quote>A kindly, old stranger was walking through the land when he came upon a village. As he entered, the villagers moved towards their homes, locking doors and windows. The stranger smiled and asked, why are you all so frightened. I am a simple traveler, looking for a soft place to stay for the night and a warm place for a meal. "There's not a bite to eat in the whole province," he was told. "We are weak and our children are starving. Better keep moving on." "Oh, I have everything I need," he said. "In fact, I was thinking of making some stone soup to share with all of you." He pulled an iron cauldron from his cloak, filled it with water, and began to build a fire under it. Then, with great ceremony, he drew an ordinary-looking stone from a silken bag and dropped it into the water. By now, hearing the rumor of food, most of the villagers had come out of their homes or watched from their windows. As the stranger sniffed the "broth" and licked his lips in anticipation, hunger began to overcome their fear. "Ahh," the stranger said to himself rather loudly, "I do like a tasty stone soup. Of course, stone soup with cabbage -- that's hard to beat." Soon a villager approached hesitantly, holding a small cabbage he'd retrieved from its hiding place, and added it to the pot. "Wonderful!!" cried the stranger. "You know, I once had stone soup with cabbage and a bit of salt beef as well, and it was fit for a king." The village butcher managed to find some salt beef . . . And so it went, through potatoes, onions, carrots, mushrooms, and so on, until there was indeed a delicious meal for everyone in the village to share. The village elder offered the stranger a great deal of money for the magic stone, but he refused to sell it and traveled on the next day. As he left, the stranger came upon a group of village children standing near the road. He gave the silken bag containing the stone to the youngest child, whispering to a group, "It was not the stone, but the villagers that had performed the magic." </span><br /> +<br /> +<span>By working together, everyone contributes what they can, achieving a greater good together.</span><br /> +<br /> +<span>Other book notes of mine are:</span><br /> +<br /> +<a class=textlink href='./2023-04-01-never-split-the-difference-book-notes.html'>2023-04-01 "Never split the difference" book notes</a><br /> +<a class=textlink href='./2023-03-16-the-pragmatic-programmer-book-notes.html'>2023-03-16 "The Pragmatic Programmer" book notes (You are currently reading this)</a><br /> +<br /> +<span>E-Mail your comments to hi@paul.cyou :-)</span><br /> +<br /> +<a class=textlink href='../resources.html'>More books and other resources I found useful.</a><br /> +<a class=textlink href='../'>Back to the main site</a><br /> + </div> + </content> + </entry> + <entry> + <title>How to shut down after work</title> + <link href="gemini://foo.zone/gemfeed/2023-02-26-how-to-shut-down-after-work.gmi" /> + <id>gemini://foo.zone/gemfeed/2023-02-26-how-to-shut-down-after-work.gmi</id> + <updated>2023-02-26T23:48:01+02:00</updated> + <author> + <name>Paul Buetow</name> + <email>hi@paul.cyou</email> + </author> + <summary>Do you need help fully discharging from work in the evenings or for the weekend? Shutting down from work won't just improve your work-life balance; it will also significantly improve the quality of your personal life and work. After a restful weekend, you will be much more energized and productive the next working day. So it should not just be in your own, but also your employers' interest that you fully relax and shut down after work. </summary> + <content type="xhtml"> + <div xmlns="http://www.w3.org/1999/xhtml"> + <h1>How to shut down after work</h1> +<p class="quote"><i>Published at 2023-02-26T23:48:01+02:00</i></p> +<pre> + |\ "Music should be heard not only with the ears, but also the soul." +|---|--\-----------------------|-----------------------------------------| +| | |\ | |@ |\ | +|---|---|--\-------------------|-------------/|----|------|--\----|------| +| @| | |\ |O | 3 / | |@ | | | +|---|--@|---|--\--------|------|---------/----|----|------|-------|------| +| @| @| \ |O | / | | |@ @| @|. | +|-----------|-----|-----|------|-----/---|---@|----|--------------|------| +| @| | |O | | | | @|. | +|-----------|----@|-----|------|----|---@|------------------------|------| + @| | | Larry Komro @|. + -@- [kom...@uwec.edu] +</pre><br /> +<p>Do you need help fully discharging from work in the evenings or for the weekend? Shutting down from work won't just improve your work-life balance; it will also significantly improve the quality of your personal life and work. After a restful weekend, you will be much more energized and productive the next working day. So it should not just be in your own, but also your employers' interest that you fully relax and shut down after work. </p> +<h2>Have a shutdown routine</h2> +<p>Have a routine. Try to finish work around the same time every day. Write any outstanding tasks down for the next day, so you are sure you will remember them. Writing them down brings wonders as you can remove them from your mind for the remainder of the day (or the upcoming weekend) as you know you will surely pick them up the next working day. Tidying up your workplace could also count toward your daily shutdown routine. </p> +<p>A commute home from the office also greatly helps, as it disconnects your work from your personal life. Don't work on your commute home, though! If you don't commute but work from home, then it helps to walk around the block or in a nearby park to disconnect from work. </p> +<h2>Don't work when you officially don't work</h2> +<p>Unless you are self-employed, you have likely signed an N-hour per week contract with your employer, and your regular working times are from X o'clock in the morning to Y o'clock in the evening (with M minutes lunch break in the middle). And there might be some flexibility in your working times, too. But that kind of flexibility (e.g. extending the lunch break so that there is time to pick up a family member from the airport) will be agreed upon, and you will counteract it, for example, by starting working earlier the next day or working late, that one exception. But overall, your weekly working time will stay N hours. </p> +<p>Another exception would be when you are on an on-call schedule and are expected to watch your work notifications out-of-office times. But that is usually only a few days per month and, therefore, not the norm. And it should also be compensated accordingly. </p> +<p>There might be some maintenance work you must carry out, which can only be done over the weekend, but it should be explicitly agreed upon and compensated for. Also, there might be a scenario that a production incident comes up shortly before the end of the work day, requiring you (and your colleagues) to stay a bit longer. But this should be an exceptional case.</p> +<p>Other than that, there is no reason why you should work out-of-office hours. I know many people who suffer "the fear of missing out", so slack messages and E-Mails are checked until late in the evening, during weekends or holidays. I have been improving here personally a lot over the last couple of months, but still, I fall into this trap occasionally. </p> +<p>Also, when you respond to slack messages and E-Mails, your colleagues can think that you have nothing better to do. They also will take it for granted and keep slacking and messaging you out of regular office times. </p> +<p>Checking for your messages constantly outside of regular office times makes it impossible to shut down and relax from work altogether. </p> +<h2>Distract your mind</h2> +<p>Often, your mind goes back to work-related stuff even after work. That's normal as you concentrated highly on your work throughout the day. The brain unconsciously continues to work and will automatically present you with random work-related thoughts. You can counteract this by focusing on non-work stuff, which may include:</p> +<ul> +<li>Exercise. A half an hour workout or yoga session, followed by some stretching, helps to calm your mind after work. </li> +<li>Play (with your family, pets, friends, or video game)</li> +<li>Mindfully listen to music. When have you ever "really" listened to music? I mean, not just as a background stimulation but really paid attention to the melody, rhythm, voice and lyrics? That requires focused attention and distracts you from other thoughts. </li> +<li>Think of or work on that fun passion project. I currently, for example, like to learn and code a bit in Rakulang. </li> +<li>Read. Nothing beats reading a good Science Fiction Novel (or whatever you prefer) before falling asleep.</li> +</ul> +<p>Some of these can be habit-stacked: Exercise could be combined with watching videos about your passion project (e.g. watching lectures about that new programming language you are currently learning for fun). With walking, for example, you could combine listening to an Audiobook or music, or you could also think about your passion project during that walk. </p> +<h2>Get a pet</h2> +<p>Even if you have children, it helps wonders to get a pet. My cat, for example, will remind me a few times daily to take a few minute's breaks to pet, play or give food. So my cat not only helps me after work but throughout the day.</p> +<p>My neighbour also works from home, and he has dogs, which he regularly has to take out to the park.</p> +<h2>Journal your day</h2> +<p>If you are upset about something, making it impossible to shut down from work, write down everything (e.g., with a pen in a paper journal). Writing things down helps you to "get rid" of the negative. Especially after conflicts with colleagues or company decisions, you don't agree on. This kind of self-therapy is excellent. Brainstorm all your emotions and (even if opinionated) opinions so you have everything on paper. Once done, you don't think about it so much anymore, as you know you can access that information if required. But stopping ruminating about it will be much easier now. You will likely never access that information again, though. But at least writing the thoughts down saved your day. </p> +<p>Write down three things which went well for the day. This helps you to appreciate the day. </p> +<h2>Don't stress about what your employer expects from you</h2> +<p>Think about what's fun and motivates you. Maybe the next promotion to Principal or a Manager role isn't for you. Many fall into the trap of stressing themselves out to satisfy the employer so that the next upgrade will happen and think about it constantly, even after work. But it is more important that you enjoy your craftsmanship. Work on what you expect from yourself. Ideally, your goals should be aligned with your employer. I am not saying you should abandon everything what your manager is asking you to do, but it is, after all, your life. And you have to decide where and on what you want to work. But don't sell yourself short. Keep track of your accomplishments.</p> +<h2>Call it a day</h2> +<p>Every day you gave your best was good; the day's outcome doesn't matter. What matters is that you know you gave your best and are closer to your goals than the previous day. This gives you a sense of progress and accomplishment.</p> +<p>There are some days at work you feel drained afterwards and think you didn't progress towards your goals at all. It's more challenging to shut down from work after such a day. A quick hack is to work on a quick win before the end of the day, giving you a sense of accomplishment after all. Another way is to make progress on your fun passion project after work. It must not be work-related, but a sense of accomplishment will still be there.</p> +<p> </p> +<p>E-Mail your comments to hi@paul.cyou :-)</p> +<a class="textlink" href="../">Back to the main site</a><br /> + </div> + </content> + </entry> + <entry> + <title>Why GrapheneOS rox</title> + <link href="gemini://foo.zone/gemfeed/2023-01-23-why-grapheneos-rox.gmi" /> + <id>gemini://foo.zone/gemfeed/2023-01-23-why-grapheneos-rox.gmi</id> + <updated>2023-01-23T15:31:52+02:00</updated> + <author> + <name>Paul Buetow</name> + <email>hi@paul.cyou</email> + </author> + <summary>Art by Joan Stark</summary> + <content type="xhtml"> + <div xmlns="http://www.w3.org/1999/xhtml"> + <h1>Why GrapheneOS rox</h1> +<p class="quote"><i>Published at 2023-01-23T15:31:52+02:00</i></p> +<pre> +Art by Joan Stark + _.===========================._ + .'` .- - __- - - -- --__--- -. `'. + __ / ,'` _|--|_________|--|_ `'. \ + /'--| ; _.'\ | ' ' | /'._ ; | + // | |_.-' .-'.' ___ '.'-. '-._| | + (\) \"` _.-` / .-'`_ `'-. \ `-._ `"/ + (\) `-' | .' .-'" "'-. '. | `-` + (\) | / .'(3)(2)(1)'. \ | + (\) | / / (4) .-. \ \ | + (\) | | |(5) ( )'==,J | | + (\) | \ \ (6) '-' (0) / / | + (\) | \ '.(7)(8)(9).' / | + (\) ___| '. '-.._..-' .' | + (\) /.--| '-._____.-' | + (\) (\) |\_ _ __ _ __ __/| + (\) (\) | | +(\)_._._.__(\) | | + (\\\\jgs\\\) '.___________________.' + '-'-'-'--' +</pre><br /> +<p>In 2021 I wrote "On Being Pedantic about Open-Source", and there was a section "What about mobile?" where I expressed the dilemma about the necessity of using proprietary mobile operating systems. With GrapheneOS, I found my perfect solution for personal mobile phone use. </p> +<a class="textlink" href="https://foo.zone/gemfeed/2021-08-01-on-being-pedantic-about-open-source.html">On Being Pedantic about Open-Source</a><br /> +<p>What is GrapheneOS?</p> +<p class="quote"><i>GrapheneOS is a privacy and security-focused mobile OS with Android app compatibility developed as a non-profit open-source project. It's focused on the research and development of privacy and security technologies, including substantial improvements to sandboxing, exploits mitigations and the permission model.</i></p> +<p>GrapheneOS is an independent Android distribution based on the Android Open Source Project (AOSP) but hardened in multiple ways. Other independent Android distributions, like LineageOS, are also based on AOSP, but GrapheneOS takes it further so that it can be my daily driver on my phone.</p> +<a class="textlink" href="https://GrapheneOS.org">https://GrapheneOS.org</a><br /> +<a class="textlink" href="https://LineageOS.org">https://LineageOS.org</a><br /> +<h2>User Profiles</h2> +<p>GrapheneOS allows configuring up to 32 user profiles (including a guest profile) on a single phone. A profile is a completely different environment within the phone, and it is possible to switch between them instantly. Sessions of a profile can continue running in the background or be fully terminated. Each profile can have completely different settings and different applications installed.</p> +<p>I use my default profile with primarily open-source applications installed, which I trust. I use another profile for banking (PayPal, various proprietary bank apps, Amazon store app, etc.) and another profile for various Google services (which I try to avoid, but I have to use once in a while). Furthermore, I have configured a profile for Social Media use (that one isn't in my default profile, as otherwise I am tempted to scroll social media all the time, which I try to avoid and only want to do intentionally when switching to the corresponding profile!).</p> +<p>The neat thing about the profiles is that some can run a sandboxed version of Google Play (see later in this post), while others don't. So some profiles can entirely operate without any Google Play, and only some profiles (to which I rarely switch) have Google Play enabled. </p> +<p>You notice how much longer (multiple days) your phone can be on a single charge when Google Play Services isn't running in the background. This tells a lot about the background activities and indicates that using Google Play shouldn't be the norm.</p> +<h2>Proxying some of the Google offerings </h2> +<p>There's also the case that I am using an app from the Google Play store (as the app isn't available from F-Droid), which doesn't require Google Play Services to run in the background. Here's where I use the Aurora Android store. The Aurora store can be installed through F-Droid. Aurora acts as an anonymous proxy from your phone to the Google Play Store and lets you install apps from there. No Google credentials are required for that!</p> +<a class="textlink" href="https://f-droid.org">https://f-droid.org</a><br /> +<p>There's a similar solution for watching videos on YouTube. You can use the NewPipe app (also from F-Droid), which acts as an anonymous proxy for watching videos from YouTube. So there isn't any need to install the official YouTube app, and there isn't any need to login to your Google account. What's so bad about the official app? You don't know which data it is sending about you to Google, so it is a privacy concern. </p& |
