diff --git a/src/about-me.org b/src/about-me.org
index b6405d5..f46ae95 100644
--- a/src/about-me.org
+++ b/src/about-me.org
@@ -61,7 +61,7 @@ This will certainly be the best way for me to notice you among notifications.
:CUSTOM_ID: who-am-i
:END:
-I am mostly known for some of my older blog post.
+My Internet presence is mostly known from older blog post.
In particular:
- [[http://yannesposito.com/Scratch/en/blog/Learn-Vim-Progressively/][Learn Vim Progressively]]
@@ -91,13 +91,172 @@ Right now there is no plan to make it opensource.
In our programmer community, tooling is essential.
-- emacs (former vim user)
- - spacemacs
- - org-mode / org-journal / org-roam
- - magit / forge / github-review
-- weechat
- - weeslack
+- macOS
+ - [[https://nixos.org][nix]] with [[https://github.com/nix-community/home-manager][home-manager]]
+ - [[https://yadm.io][yadm]] for things home-manager had difficult to handle
+- [[https://www.gnu.org/software/emacs/][emacs]] (former vim user)
+ - [[https://github.com/hlissner/doom-emacs][doom-emacs]] (used [[https://www.spacemacs.org][spacemacs]] before)
+ - [[https://orgmode.org][org-mode]] / [[https://github.com/bastibe/org-journal][org-journal]] / [[https://www.orgroam.com][org-roam]]
+ - [[https://magit.vc][magit]] / [[https://magit.vc/manual/forge/][forge]] / [[https://github.com/charignon/github-review][github-review]]
+- [[https://weechat.org][weechat]]
+ - [[https://github.com/wee-slack/wee-slack][wee-slack]]
+** Internet consumption
+:PROPERTIES:
+:CUSTOM_ID: internet-consumption
+:END:
+
+*** News
+:PROPERTIES:
+:CUSTOM_ID: news
+:END:
+
+- [[https://lobste.rs/][lobsters]]
+- [[https://news.ycombinator.com/][HN]]
+- [[https://laarc.io][laarc]]
+- [[https://www.discoverdev.io][discoverdev]]
+- [[https://reddit.com/r/haskell][/r/haskell]]
+- [[https://reddit.com/r/clojure][/r/clojure]]
+
+*** RSS
+:PROPERTIES:
+:CUSTOM_ID: rss
+:END:
+
+I mostly consume them via [[https://github.com/skeeto/elfeed][elfeed]] in emacs:
+
+**** Imported Feeds :elfeed:
+:PROPERTIES:
+:CUSTOM_ID: imported-feeds
+:END:
+***** news :news:
+:PROPERTIES:
+:CUSTOM_ID: news-0675
+:END:
+****** [[https://hnrss.org/newest?points=1200][HN]]
+:PROPERTIES:
+:CUSTOM_ID: --https---hnrss-org-newest-points-1200--hn--
+:END:
+****** [[https://beepb00p.xyz/atom.xml][beepb00p.xyz ]] :tech:
+:PROPERTIES:
+:CUSTOM_ID: --https---beepb00p-xyz-atom-xml--beepb00p-xyz---
+:END:
+****** [[https://esoteric.codes/rss][esoteric.codes]] :tech:
+:PROPERTIES:
+:CUSTOM_ID: --https---esoteric-codes-rss--esoteric-codes--
+:END:
+***** haskell :haskell:fp:
+:PROPERTIES:
+:CUSTOM_ID: haskell
+:END:
+****** [[http://feeds.feedburner.com/ezyang][Inside 206-105]]
+:PROPERTIES:
+:CUSTOM_ID: --http---feeds-feedburner-com-ezyang--inside-206-105--
+:END:
+****** [[http://blog.jle.im/rss][in Code — Entries]]
+:PROPERTIES:
+:CUSTOM_ID: --http---blog-jle-im-rss--in-code---entries--
+:END:
+****** [[http://5outh.blogspot.com/feeds/posts/default][Abstract Nonsense]]
+:PROPERTIES:
+:CUSTOM_ID: --http---5outh-blogspot-com-feeds-posts-default--abstract-nonsense--
+:END:
+****** [[http://byorgey.wordpress.com/feed/][blog :: Brent -> String]]
+:PROPERTIES:
+:CUSTOM_ID: --http---byorgey-wordpress-com-feed---blog----brent----string--
+:END:
+****** [[http://www.haskellforall.com/feeds/posts/default][Haskell for all]]
+:PROPERTIES:
+:CUSTOM_ID: --http---www-haskellforall-com-feeds-posts-default--haskell-for-all--
+:END:
+****** [[http://themonadreader.wordpress.com/feed/][The Monad.Reader]]
+:PROPERTIES:
+:CUSTOM_ID: --http---themonadreader-wordpress-com-feed---the-monad-reader--
+:END:
+****** [[http://blog.poisson.chat/./rss.xml][Lysxia's blog]]
+:PROPERTIES:
+:CUSTOM_ID: --http---blog-poisson-chat---rss-xml--lysxia's-blog--
+:END:
+****** [[http://blog.docmunch.com/blog?format=rss][The Docmunch blog]]
+:PROPERTIES:
+:CUSTOM_ID: --http---blog-docmunch-com-blog-format-rss--the-docmunch-blog--
+:END:
+****** [[http://bitemyapp.com/rss.xml][bitemyapp]]
+:PROPERTIES:
+:CUSTOM_ID: --http---bitemyapp-com-rss-xml--bitemyapp--
+:END:
+****** [[http://www.serpentine.com/blog/feed/][teideal glic deisbhéalach]]
+:PROPERTIES:
+:CUSTOM_ID: --http---www-serpentine-com-blog-feed---teideal-glic-deisbhéalach--
+:END:
+****** [[http://sigfpe.blogspot.com/feeds/posts/default][A Neighborhood of Infinity]]
+:PROPERTIES:
+:CUSTOM_ID: --http---sigfpe-blogspot-com-feeds-posts-default--a-neighborhood-of-infinity--
+:END:
+****** [[http://neilmitchell.blogspot.com/feeds/posts/default][Neil Mitchell's Haskell Blog]]
+:PROPERTIES:
+:CUSTOM_ID: --http---neilmitchell-blogspot-com-feeds-posts-default--neil-mitchell's-haskell-blog--
+:END:
+****** [[http://blog.jakubarnold.cz/feed.xml][Jakub Arnold Blog]]
+:PROPERTIES:
+:CUSTOM_ID: --http---blog-jakubarnold-cz-feed-xml--jakub-arnold-blog--
+:END:
+***** Functional :fp:
+:PROPERTIES:
+:CUSTOM_ID: functional
+:END:
+****** [[https://christine.website/blog.rss][Christine Dodrill]]
+:PROPERTIES:
+:CUSTOM_ID: --https---christine-website-blog-rss--christine-dodrill--
+:END:
+****** [[http://martintrojer.github.io/atom.xml][Martin's Blog]]
+:PROPERTIES:
+:CUSTOM_ID: --http---martintrojer-github-io-atom-xml--martin's-blog--
+:END:
+****** [[http://lambda-the-ultimate.org/rss.xml][Lambda the Ultimate]]
+:PROPERTIES:
+:CUSTOM_ID: --http---lambda-the-ultimate-org-rss-xml--lambda-the-ultimate--
+:END:
+****** [[http://feeds.feedburner.com/7sharp9][7Sharp9]]
+:PROPERTIES:
+:CUSTOM_ID: --http---feeds-feedburner-com-7sharp9--7sharp9--
+:END:
+****** [[http://okmij.org/ftp/rss.xml][oleg]]
+:PROPERTIES:
+:CUSTOM_ID: --http---okmij-org-ftp-rss-xml--oleg--
+:END:
+***** clojure :clojure:fp:
+:PROPERTIES:
+:CUSTOM_ID: clojure
+:END:
+****** [[http://blog.juxt.pro/rss.xml][JUXT Blog]]
+:PROPERTIES:
+:CUSTOM_ID: --http---blog-juxt-pro-rss-xml--juxt-blog--
+:END:
+****** [[http://feeds.cognitect.com/blog/feed.rss][Cognitect Blog]]
+:PROPERTIES:
+:CUSTOM_ID: --http---feeds-cognitect-com-blog-feed-rss--cognitect-blog--
+:END:
+***** misc :misc:
+:PROPERTIES:
+:CUSTOM_ID: misc
+:END:
+****** [[https://nesslabs.com/feed][nesslabs ]] :life:
+:PROPERTIES:
+:CUSTOM_ID: --https---nesslabs-com-feed--nesslabs---
+:END:
+****** [[https://solar.lowtechmagazine.com/feeds/all.rss.xml][lowtechmag]]
+:PROPERTIES:
+:CUSTOM_ID: --https---solar-lowtechmagazine-com-feeds-all-rss-xml--lowtechmag--
+:END:
+***** Philo :philo:
+:PROPERTIES:
+:CUSTOM_ID: philo
+:END:
+****** [[https://bluelabyrinths.com/category/philosophy/feed/][bluelabyrinths]]
+:PROPERTIES:
+:CUSTOM_ID: --https---bluelabyrinths-com-category-philosophy-feed---bluelabyrinths--
+:END:
* former websites
:PROPERTIES:
:CUSTOM_ID: old-websites
diff --git a/src/css/y.css b/src/css/y.css
index f657646..f46d9b0 100644
--- a/src/css/y.css
+++ b/src/css/y.css
@@ -1,6 +1,6 @@
html {
- font-family: Courier,monospace;
- font-size: 14px;
+ font-family: Menlo, Monaco, monospace;
+ font-size: 1rem;
line-height: calc(1ex/0.37); }
#TOC {text-align: left;}
html,body { margin: 0; padding: 0; border: 0; }
@@ -12,11 +12,12 @@ h1,h2,h3,h4,h5,h6 {
p { text-align: justify; hyphens: auto; }
pre { overflow-x: scroll; border: solid 1px; padding: 1ex; }
pre > code { font-size: 0.875em; background: none; }
-code,pre { font-family: Courier, monospace; }
+code,pre { font-family: Menlo, Monaco, monospace; }
figure { margin: 1rem 0; padding: 0; }
.meta { font-size: small;}
-.abstract { margin: 1rem; font-size: 0.875em; font-style: italic; }
-#logo { display: inline-block; }
+.abstract { margin: 2rem 4rem; font-size: 0.875em; font-style: italic; }
+#logo { display: inline-block;
+ vertical-align: middle;}
#logo svg { width: 3em; }
#preamble, #postamble { text-align: center; }
#content,.content,#preamble,#postamble {
@@ -26,6 +27,12 @@ figure { margin: 1rem 0; padding: 0; }
margin: 0 auto;
}
figure img { width: 100%; }
+sup, sub {
+ vertical-align: baseline;
+ position: relative;
+ top: -0.4em;
+}
+sub { top: 0.4em; }
.footdef > sup { vertical-align: top; font-size: medium; }
.footdef > sup > a { padding: 0.5em; }
.footpara { display: inline; }
@@ -48,6 +55,7 @@ body>input { display: none; }
label { font-weight: 700; }
label:hover { cursor: pointer; }
label ~ pre { margin-top: 0; }
+figcaption { text-align: right; font-family: italic; }
:root {
--b03: #2E3440;
@@ -67,18 +75,19 @@ label ~ pre { margin-top: 0; }
--b0: #989ea8;
--b1: #b0bac7;
--b2: #ECEFF4;
- --b3: #fff;
+ --b3: rgb(248,249,251);
/* default light */
--bg: var(--b3);
--rbg: var(--b2);
--fg0: var(--b0);
- --fg: var(--b02);
- --rfg: #000;
+ --fg: #4c566a; /* var(--b02); */
+ --rfg: var(--b03);
--hl: var(--o);
}
/* dark preferred */
+/*
@media (prefers-color-scheme: dark)
{
:root {
@@ -102,7 +111,7 @@ label ~ pre { margin-top: 0; }
background: hsl(218,20%,18%);
border-color: hsl(218,15%,23%);
}
-}
+} */
/* light checked */
input#l:checked ~ div {
@@ -167,7 +176,7 @@ body, body > div {
background: var(--bg);
color: var(--fg);
}
-a,a:visited { color: var(--hl); }
+label:hover, a,a:visited { color: var(--hl); }
code { background: var(--rbg); }
/* ---- SYNTAX HIGHLIGHTING ---- */
diff --git a/src/drafts/XXXX-org-mode-intro/index.org b/src/drafts/XXXX-org-mode-intro/index.org
deleted file mode 100644
index 2545c23..0000000
--- a/src/drafts/XXXX-org-mode-intro/index.org
+++ /dev/null
@@ -1,242 +0,0 @@
-:PROPERTIES:
-:ID: 21c48431-c0db-4a34-95fe-7228fea6233f
-:END:
-#+TITLE: How I use org-mode
-#+AUTHOR: Yann Esposito
-#+EMAIL: yann@esposito.host
-#+DATE: [2019-09-30 Mon]
-#+KEYWORDS: org-mode
-#+DESCRIPTION: How I use org-mode
-#+OPTIONS: auto-id:t toc:t
-
-In this article I'll try to give an overview of my current use of [[https://orgmode.org][org mode]].
-I use org mode for:
-
-- tasks management & tracking
-- writing documents (articles, book, etc...)
-- note taking ; which I consider slightly different from just writing documents
-
-It took me a few month to discover a few great org-mode features that
-really changed the way I looked at it.
-After discovering those it is a real life changer.
-
-I hope that I could help you discover why org mode is so praised and be
-able to take advantage of its awesomeness faster than I did.
-
-* Workflows
-:PROPERTIES:
-:CUSTOM_ID: workflows
-:END:
-
-** Worfklow 1: See Things to do: org-agenda + clock
-:PROPERTIES:
-:CUSTOM_ID: worfklow-1--org-agenda---clock
-:END:
-
-1. look at the current tasks planned for today
-2. select a task, clock it
-3. work on the task
-4. back to the task and clock it out.
-
-I work most of my using emacs[fn:emacs-digression].
-Generally the first thing I do in the morning is opening `org-calendar`.
-It looks like this:
-
-#+ATTR_ORG: :width 400
-#+CAPTION: Org super calendar view
-#+NAME: fig:org-super-agenda
-[[./img/org-super-agenda.png]]
-
-Pretty brutalist interface which is a great thing to me.
-Distraction free interface going to the essential.
-
-With this view, I see what I planned to do today.
-I also see a few "Due Soon" tasks in case I have the time to handle those.
-
-When I start working on a task I start a clock on it (I simply type =I=
-when my cursor is on the TODO line).
-When I finished some task I change its status from TODO to something else.
-Mainly I'm prompted when doing so:
-
-#+BEGIN_SRC
-{ [t] TODO [p] IN-PROGRESS [h] HOLD [w] WAITING
- [d] DONE [c] CANCELLED [l] HANDLED }
-#+END_SRC
-
-And that's it.
-The time spent on the task as been clocked I can work on another task.
-
-Looking at the agenda view you could notice habits.
-They start to become green when you are doing them correctly.
-
-But generally, I don't use much direct clocking from the agenda.
-Most of the time I prefer the capture mechanism.
-Which bring us to "Worfklow 2".
-
-
-** Workflow 2: Tracking; org-capture
-:PROPERTIES:
-:CUSTOM_ID: workflow-2--org-capture-org-refile
-:END:
-
-Most of the tasks I perform on the day are not planned.
-I have a generic routine + some prepared events and tasks to performs.
-But during the day you have multiple interruptions, and part of my job is
-to write code reviews too.
-I cannot plan those.
-
-In that case I use =org-capture= along =org-refile=.
-Mainly =org-capture= helps you create a new TODO entry.
-And =org-refile= will help you move that TODO entry to the correct place.
-
-So let say I get a direct message in the chat asking me to do something.
-I generally start org capture (for me it's =SPC X=).
-I am presented with the following choice:
-
-#+BEGIN_SRC
-Select a capture template
-=========================
-
-[t] todo
-[c] chat
-[e] email
-[m] meeting
-[p] pause
-[r] review
-[w] work
-[i] interruption
-[f] chore
----------------------------------------------------------------------------
-[q] Abort
-#+END_SRC
-
-In my example it was a chat interruption.
-So I type =i= that presents me with this
-
-#+BEGIN_SRC
- **** IN-PROGRESS | :interruption:
- :LOGBOOK:
- [2020-09-23 Wed 08:01]
- ref :: [link-to-where-I-was-in-emacs-when-captured]
-#+END_SRC
-
-My cursor placed where the =|= is displayed.
-Here I add the tag =chat= and a small description, "dm from John about X" for example.
-Then I type =C-c C-c= and the TODO is placed in a =tracker.org= file under
-a date tree that looks like this:
-
-#+BEGIN_SRC org-mode
- * 2020
- ** 2020-W39
- *** 2020-09-21 Monday
- *** 2020-09-22 Tuesday
- *** 2020-09-23 Wednesday
- **** IN-PROGRESS Chat with John about X :interruption:chat:
- :LOGBOOK:
- CLOCK: [2020-09-23 Wed 17:58]
- :END:
- [2020-09-23 Wed 17:58]
- ref ::
- ...
-#+END_SRC
-
-So the clock for this task started at the moment at made the capture.
-In my workflow, I prefer to finish the capture and stop clock later.
-So after I finished the capture, the clock is still running while the task
-is put in my tracker file.
-
-Once I finished with that task.
-I can:
-
-1. Jump to the tasks with =SPC n o= (=org-clock-goto=), and stop the
- clock =SPC m c o= (=clock-out=).
-2. Jump to the task and change its status to =DONE= which will stop the clock.
-3. Capture another tasks which will stop the clock on the current task and
- will start on the new one.
-
-By the end of the day, my tracker file will contain a date tree with all
-the tasks I done in the day.
-All tasks nicely clocked.
-I generally create a clock report that look like this:
-
-#+BEGIN_SRC
- #+BEGIN: clocktable :scope subtree :maxlevel 4 :timestamp t
- #+CAPTION: Clock summary at [2020-09-23 Wed 08:20]
- | Timestamp | Headline | Time | | | |
- |------------------------+------------------------------------------------+--------+---+------+------|
- | | *Total time* | *6:40* | | | |
- |------------------------+------------------------------------------------+--------+---+------+------|
- | | \_ 2020-09-21 Monday | | | 7:40 | |
- | [2020-09-21 Mon 08:54] | \_ check chat | | | | 0:36 |
- | [2020-09-21 Mon 09:30] | \_ check reviews | | | | 0:41 |
- | [2020-09-21 Mon 10:11] | \_ check emails | | | | 0:07 |
- | [2020-09-21 Mon 10:37] | \_ review PR about xxx | | | | 0:44 |
- | [2020-09-21 Mon 11:21] | \_ update my PR from feedbacks | | | | 0:36 |
- | [2020-09-21 Mon 12:08] | \_ review John's PR about Foo | | | | 0:12 |
- | [2020-09-21 Mon 13:41] | \_ review M's PR about Bar | | | | 0:11 |
- | [2020-09-21 Mon 13:53] | \_ another thing | | | | 0:16 |
- | [2020-09-21 Mon 14:09] | \_ review PR | | | | 0:51 |
- | [2020-09-21 Mon 15:00] | \_ work on PR | | | | 1:30 |
- | [2020-09-21 Mon 16:49] | \_ check another PR | | | | 0:33 |
- | [2020-09-21 Mon 17:03] | \_ answer email | | | | 0:55 |
- | [2020-09-21 Mon 17:58] | \_ Chat John about X | | | | 0:28 |
-
-#+END_SRC
-
-And that's mostly it for TODOs and tasks handling.
-
-** Workflow 3: Add new tasks; org-capture / org-refile
-:PROPERTIES:
-:CUSTOM_ID: workflow-3--org-capture---org-refile
-:END:
-Another thing I do quite often.
-I need to add new task to be done.
-Be it for today or another day.
-
-In that case, I generally use org-capture again.
-This time I choose =t= for TODO and I generally detail the task to be done.
-I add either a SCHEDULE (when I plan to start) or a DEADLINE (when this
-must be finished) and I refile it.
-
-So refile will start a fuzzy search to put this task under some subtree.
-So instead of going to my =tracker.org= file, this goes to my =inbox.org=
-file.
-
-And it will appear in my agenda.
-
-* Footnotes
-:PROPERTIES:
-:CUSTOM_ID: footnotes
-:END:
-
-[fn:emacs-digression]
-/Short digression/:
-Historically, I coded using different IDEs.
-Then I worked for a company that forced me to use terrible keyboards and
-after just a few weeks I started to have serious wrist issues.
-So to minimize that pain I switched to vim.
-And it was /awesome/.
-Once you're use to the power of vim keybinding forever your soul will bound
-to them.
-So learning vim is a bit like learning a new music instrument.
-You need to construct some muscle memory and integrate one after one new
-tricks.
-Once learned your personal editing power start to become overwhelming.
-
-After a few years of vim, I wanted to try to explore new editor tooling.
-So I switched to emacs using the spacemacs distribution.
-So mainly it's vim but with even better keybindgs, helpers and within
-emacs.
-The main reason for the switch was that vimscript is a really bad language
-to configure your editor.
-Emacs use emacs-LISP.
-For editor customization a LISP looked perfect to me.
-LISP is still one of the most powerful and easy to use programming language
-to date.
-
-And recently, as my personal configuration started to grow so much I
-switched to [[https://github.com/hlissner/doom-emacs][doom-emacs]].
-I was quite hesitant to do the switch but so far its been a pleasure.
-IMHO using [[https://github.com/hlissner/doom-emacs][doom-emacs]] is a lot better than using my own personal
-configuration from scratch because I wouldn't be able to end up with so
-much configuration quality.
diff --git a/src/index.org b/src/index.org
index 5d77ec3..68573a8 100644
--- a/src/index.org
+++ b/src/index.org
@@ -9,6 +9,19 @@
#+MACRO: br @@html:
@@
#+MACRO: pemail @@html: Yann Esposito <yann@esposito.host>@@
+
+@@html:@@
+
I'm a functional programmer, working remotely for Cisco.{{{br}}}
I work in Clojure and use Haskell/Purescript during the weekends.
diff --git a/src/posts/0002-troll-2/index.org b/src/posts/0002-troll-2/index.org
index ed07fe5..95855e6 100644
--- a/src/posts/0002-troll-2/index.org
+++ b/src/posts/0002-troll-2/index.org
@@ -44,6 +44,7 @@ goblins.
Those costume looks very bad and cheap.
So much you can only find them not terrorizing but funny and ridiculous.
+#+ATTR_ORG: :width 560
#+ATTR_HTML: A goblin
#+CAPTION: One goblin during the introduction scene of Troll 2
#+NAME: fig:troll-2-intro
@@ -55,6 +56,7 @@ To give you an idea, the only equal bad acting I ever witnessed was while
looking at amateurs first Youtube movies trying to follow a scenario.
Apparently most actors were amateurs, it was their first and last movie.
+#+ATTR_ORG: :width 560
#+ATTR_HTML: A bad acting demonstration
#+CAPTION: One particularly terrible acting scene
#+NAME: fig:bad-acting
@@ -83,6 +85,7 @@ They win against the monsters with, what I believe was a failed attempt at
humor.
It misses the point so bad, that the irony still make it funny.
+#+ATTR_ORG: :width 560
#+ATTR_HTML: Eliott prevents his family to eat the food by urinating on the table
#+CAPTION: Our hero save the day by urinating on the table. His family is frozen for 30s said grandpa, they were for 70s.
#+NAME: fig:prevent-eating
diff --git a/src/posts/0006-modern-irc/index.org b/src/posts/0006-modern-irc/index.org
index 1be8a87..1e1973a 100644
--- a/src/posts/0006-modern-irc/index.org
+++ b/src/posts/0006-modern-irc/index.org
@@ -27,15 +27,15 @@ browser or mobile phone app.
How geeks should chat in 2019?
-To answer this question here is my opinion after having tried many
+This post is about my opinion on the subject after having tried many
different chat solutions[fn:tries].
-Here are the feature I think a modern solution should have:
+Here is a list of the features I think a modern solution should have:
1. *terminal client* or *terminal-like UI* (in emacs for example).
All modern UI looks cool for screenshots, but if you are going to use it
a lot, you will prefer density over good looking.
- Most app, web app are terrible related to information by number of pixel
- ratio.
+ Most web apps are terrible when looking at delivered information by
+ number of pixels ratio.
2. *multi-platform*: If you do not have a terminal at hand (or emacs) then,
you should be able to get your message on your phone or via a web
interface for portability.
@@ -49,9 +49,10 @@ Here are the feature I think a modern solution should have:
Chat should be about TEXT, not images, not videos, not presentations and
PDF.
7. *No anti-features*: show when someone is typing, show when someone
- as read your message, etc... Those functionality are in fact increasing
- social insecurity and forces you to answer sooner instead of really
- taking the time to answer correctly.
+ as read your messages, etc... Those functionalities increase your
+ social insecurities feeling. They forces you to answer sooner instead of
+ really take the time to answer correctly. You can read Digitial
+ minimalism to know more about that subject[fn:dm].
8. *Free software*
I am quite disappointed by /modern/ chat applications.
@@ -60,7 +61,7 @@ Their major problems are:
- *resource-heavy*; most those client applications (slack, gitter, riot,
mattermost, etc...) easily consume more than 300MB of RAM.
- Most of the time those clients are all electron app.
+ Most of the time those clients are electron applications.
- *not private*; most solution do not encrypt your conversations.
Even if using encryption mechanism and you trust your client, and you
will still reveal your social network topology.
@@ -207,7 +208,7 @@ server {
gzip off;
proxy_redirect off;
- ## Some requests take more than 30 seconds.
+ ## Some requests take more than 30 seconds.
proxy_read_timeout 30s;
proxy_connect_timeout 30s;
@@ -218,10 +219,10 @@ server {
proxy_set_header X-Forwarded-Ssl on;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
- proxy_set_header X-Client-Verify SUCCESS;
- proxy_set_header X-Client-DN $ssl_client_s_dn;
- proxy_set_header X-SSL-Subject $ssl_client_s_dn;
- proxy_set_header X-SSL-Issuer $ssl_client_i_dn;
+ proxy_set_header X-Client-Verify SUCCESS;
+ proxy_set_header X-Client-DN $ssl_client_s_dn;
+ proxy_set_header X-SSL-Subject $ssl_client_s_dn;
+ proxy_set_header X-SSL-Issuer $ssl_client_i_dn;
}
}
diff --git a/src/posts/0013-how-to-choose-your-tools/2020-05-09_12-48-31_.jpeg b/src/posts/0013-how-to-choose-your-tools/2020-05-09_12-48-31_.jpeg
deleted file mode 100644
index 0d85629..0000000
Binary files a/src/posts/0013-how-to-choose-your-tools/2020-05-09_12-48-31_.jpeg and /dev/null differ
diff --git a/src/posts/0013-how-to-choose-your-tools/2020-05-09_12-49-34_.jpeg b/src/posts/0013-how-to-choose-your-tools/2020-05-09_12-49-34_.jpeg
deleted file mode 100644
index b5875e8..0000000
Binary files a/src/posts/0013-how-to-choose-your-tools/2020-05-09_12-49-34_.jpeg and /dev/null differ
diff --git a/src/posts/0013-how-to-choose-your-tools/Welcome-to-Halsingland.jpg b/src/posts/0013-how-to-choose-your-tools/Welcome-to-Halsingland.jpg
new file mode 100644
index 0000000..617af09
Binary files /dev/null and b/src/posts/0013-how-to-choose-your-tools/Welcome-to-Halsingland.jpg differ
diff --git a/src/posts/0013-how-to-choose-your-tools/index.org b/src/posts/0013-how-to-choose-your-tools/index.org
index e345974..ca025f4 100644
--- a/src/posts/0013-how-to-choose-your-tools/index.org
+++ b/src/posts/0013-how-to-choose-your-tools/index.org
@@ -1,3 +1,6 @@
+:PROPERTIES:
+:ID: c2e61938-8493-434a-9ffa-9fd4698d9863
+:END:
#+Title: How to choose your tools
#+Author: Yann Esposito
#+Email: yann@esposito.host
@@ -7,7 +10,7 @@
#+LANGUAGE: en
#+LANG: en
#+OPTIONS: H:5 auto-id:t
-#+STARTUP: showeverything
++STARTUP: showeverything
This week I didn't take a look at HN to grab some news.
And this week-end, in the morning I read those:
@@ -16,13 +19,11 @@ And this week-end, in the morning I read those:
- [[https://news.ycombinator.com/item?id=23107123][Making Emacs popular again]]
- [[https://news.ycombinator.com/item?id=23092904][Github Codespace]]
+#+ATTR_ORG: :width 560
#+ATTR_HTML: :alt Midsommar Welcome
-#+DOWNLOADED: https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.g7OSuCGH0u7OIUA9vdxlTAEsCo%26pid%3DApi&f=1 @ 2020-05-09 12:49:34
-#+NAME: Welcome
-#+CAPTION: Midsommar Welcome
-[[file:2020-05-09_12-49-34_.jpeg]]
-
-
+#+NAME: Welcome to Halsingland
+#+CAPTION: Welcome to Halsingland
+[[file:Welcome-to-Halsingland.jpg]]
Similar articles have existed for years on different products.
What is their common point?
@@ -92,10 +93,10 @@ For the single developers and open source developers this offer:
But the price to pay is hidden.
+#+ATTR_ORG: :width 560
#+ATTR_HTML: :alt Midsommar Sorrow
-#+DOWNLOADED: https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Ftse1.mm.bing.net%2Fth%3Fid%3DOIP.FrCRrhENMjdfD4pUcAwKEgHaEK%26pid%3DApi&f=1 @ 2020-05-09 12:48:31
#+CAPTION: Midsommar Sorrow
-[[file:2020-05-09_12-48-31_.jpeg]]
+[[file:midsommar-cry.jpg]]
@@ -178,9 +179,10 @@ future.
:CUSTOM_ID: post-conclusion
:END:
+#+ATTR_ORG: :width 560
#+ATTR_HTML: :alt Midsommar Joy
#+CAPTION: Midsommar Joy
-[[./midsommar-joy.jpeg]]
+[[./midsommar-joy.jpg]]
To go beyond my opinion, I'd like to share my experience with editors and
emacs.
diff --git a/src/posts/0013-how-to-choose-your-tools/midsommar-cry.jpg b/src/posts/0013-how-to-choose-your-tools/midsommar-cry.jpg
new file mode 100644
index 0000000..e6f0d7c
Binary files /dev/null and b/src/posts/0013-how-to-choose-your-tools/midsommar-cry.jpg differ
diff --git a/src/posts/0013-how-to-choose-your-tools/midsommar-joy.jpeg b/src/posts/0013-how-to-choose-your-tools/midsommar-joy.jpeg
deleted file mode 100644
index a3f4dbe..0000000
Binary files a/src/posts/0013-how-to-choose-your-tools/midsommar-joy.jpeg and /dev/null differ
diff --git a/src/posts/0013-how-to-choose-your-tools/midsommar-joy.jpg b/src/posts/0013-how-to-choose-your-tools/midsommar-joy.jpg
new file mode 100644
index 0000000..55a98f7
Binary files /dev/null and b/src/posts/0013-how-to-choose-your-tools/midsommar-joy.jpg differ
diff --git a/src/posts/0014-change-emacs-theme-automatically/index.org b/src/posts/0014-change-emacs-theme-automatically/index.org
index 46c2b11..e77a9c1 100644
--- a/src/posts/0014-change-emacs-theme-automatically/index.org
+++ b/src/posts/0014-change-emacs-theme-automatically/index.org
@@ -43,9 +43,9 @@ So here is my piece of code I added to my doom-emacs =config.el=:
(t 'doom-laserwave))))
(when (not (equal doom-theme theme))
(setq doom-theme theme)
- (load-theme doom-theme t)
- ;; run that function again next hour
- (run-at-time (format "%02d:%02d" (+ hour 1) 0) nil 'y/auto-update-theme))))
+ (load-theme doom-theme t))
+ ;; run that function again next hour
+ (run-at-time (format "%02d:%02d" (+ hour 1) 0) nil 'y/auto-update-theme)))
(y/auto-update-theme)
#+END_SRC
diff --git a/src/drafts/XXXX-org-mode-intro/img/org-super-agenda.png b/src/posts/0015-how-i-use-org-mode/img/org-super-agenda.png
similarity index 100%
rename from src/drafts/XXXX-org-mode-intro/img/org-super-agenda.png
rename to src/posts/0015-how-i-use-org-mode/img/org-super-agenda.png
diff --git a/src/posts/0015-how-i-use-org-mode/index.org b/src/posts/0015-how-i-use-org-mode/index.org
new file mode 100644
index 0000000..2f2d923
--- /dev/null
+++ b/src/posts/0015-how-i-use-org-mode/index.org
@@ -0,0 +1,612 @@
+:PROPERTIES:
+:ID: 21c48431-c0db-4a34-95fe-7228fea6233f
+:END:
+#+TITLE: How I use org-mode
+#+AUTHOR: Yann Esposito
+#+EMAIL: yann@esposito.host
+#+DATE: [2020-10-29 Thu]
+#+KEYWORDS: org-mode
+#+DESCRIPTION: How I use org-mode
+#+OPTIONS: auto-id:t toc:t
+
+#+begin_abstract
+In this article I'll try to give an overview of my current use of [[https://orgmode.org][org mode]].
+I use org mode for:
+
+- tasks management & time tracking
+- writing documents (articles, book, etc...)
+- note taking ; which I consider slightly different from just writing documents
+
+TL;DR:
+
+- =SPC y a= ⇒ Show agenda view for today
+- =SPC X= ⇒ Capture a new task, write a description, then =C-c C-c=, save
+ that in =tracker.org= (or =inbox.org= depending of the capture template)
+- =SPC n o= ⇒ jump to the current time tracked tasks
+- =SPC m c o= ⇒ stop the clock on that task; if you capture a new time
+ tracking tasks you don't need to clock-out
+- =SPC y o r= ⇒ =org-refile=, meaning move that task somewhere else
+- =SPC q= ⇒ add/remove tags to that task
+#+end_abstract
+
+In this article I would like to share a tool that was a real life changer
+to me: [[http://orgmode.org][org mode]].
+
+In my opinion emacs is worth learning just for org-mode.
+This is by far the best solution I ever used to manage my tasks.
+I tried a lot of differents tools before it, and this is the only one I
+really stick with.
+It is so versatile that it can adapt to your very specific needs.
+
+The major difficulty faced by tasks management application is the wrong
+level of complexity facing the user.
+This is a very hard problem to tackle.
+
+If your system is too simple, the users will not be able to manage the
+tasks how they would like.
+If your system is too complex, the user will be faced with too much
+details.
+So most successful systems have a way to adapt their apparent complexity to
+the need of their users.
+And org mode is exactly like that.
+Not only starting with org mode can be extremely simple but also there are
+mostly no complexity limit.
+
+Either org mode already handle one of your need, or most of the time you
+will find a package to fulfill your need.
+And if not, it is easy to write your own.
+
+Here is the result of a few years of improving my use of org mode.
+Today I can say that org mode is part of my day to day life.
+I still invest a bit of time to improve minor details of my workflow time
+to time.
+But now my daily workflow is mostly stable.
+So I think I can share it.
+
+** Overview
+:PROPERTIES:
+:CUSTOM_ID: overview
+:END:
+
+*** daily routine
+:PROPERTIES:
+:CUSTOM_ID: daily-routine
+:END:
+
+The first thing I do in the morning is to open =org-agenda= view for today.
+It shows me the tasks planned for today.
+What are urgent tasks, deadlines, tasks that have deadlines in a few days, etc...
+I also have a glimpse of my habits, tasks that I should start at some hour
+in the day, etc...
+
+#+ATTR_ORG: :width 560
+#+CAPTION: Org super calendar view
+#+NAME: fig:org-super-agenda
+[[./img/org-super-agenda.png]]
+
+I then start to track (/clock/) the tasks I'm currently working on.
+
+Often during the day, I need to create new tasks.
+Most of the time I create a task and I add either a deadline or a schedule
+date.
+
+Sometime I also need to deal with interruptions.
+In that case, I /capture/ the interruption that will also create a new task
+being clocked.
+
+At the end of the day, every tasks I worked on are saved in a =tracker.org=
+file.
+That file look like a date tree.
+And I generally generate a /report/ that tell me how much hours I worked
+today.
+Some tasks are tagged =work=.
+The report filter only on the =work= tagged tasks.
+
+Also I have some repeating tasks like review memory cards using a spaced
+repetition plugin.
+I start it, and it shows me a few =cards= with questions that I review.
+So mainly those cards contain info I want to keep in my mind and not only
+in my notes.
+
+*** document writing
+:PROPERTIES:
+:CUSTOM_ID: document-writing
+:END:
+
+Writing documents with org mode and in particular technical document is
+just incredible.
+Org mode feels a lot like markdown.
+
+But org mode shine with its use of *org-babel*.
+*org-babel* is used to execute code inside your document.
+So you can execute block of code and get their result in block of code.
+For technical writing this is extremely useful.
+
+For example, I wrote most part of an OAuth2 provider in Clojure.
+And to generate a documentation to some of our advanced users it is very
+nice to provide the full HTTP request along the response.
+
+But I also often need to play a few tricks in the doc and directly use our
+Clojure code to generate JWT for example.
+The great part is the ability to use those JWT generated from Clojure code
+in the following code block making HTTP call.
+
+That plus the natural ability to fold/unfold the tree structure of the org
+mode file is great.
+
+*** note taking
+:PROPERTIES:
+:CUSTOM_ID: note-taking
+:END:
+
+Time to time, I need to really take the time write note on a technical
+subject or sometime about articles I read about anything.
+For that I use [[https://github.com/org-roam/org-roam][org roam]].
+I only started to use it a few months ago.
+But this is a great addition to my previous workflow that used =deft= (that
+I still use).
+But I must say, this is pretty perfect as a note taking app.
+
+Mainly you capture notes quite easily and put links about the subject, but
+also tags.
+In the end that generate a graph of notes that you could use later to dig
+into your own notes.
+*** journal
+:PROPERTIES:
+:CUSTOM_ID: journaling
+:END:
+
+Along with note taking.
+I also try to write a journal note everyday.
+For that I use org-journal (another org mode related package).
+I have a default template which take care of a few metrics I want to focus on.
+And I guess it is different for anyone of us.
+
+** Task Management
+:PROPERTIES:
+:CUSTOM_ID: task-management
+:END:
+
+So here is a more detailed description about my org mode usage.
+
+*** Workflow 1; planned tasks : org-agenda + clock
+:PROPERTIES:
+:CUSTOM_ID: worfklow-1--planned-tasks---org-agenda---clock
+:END:
+
+1. look at the current tasks planned for today
+2. select a task, clock it
+3. work on the task
+4. back to the task and clock it out.
+
+I work most of my using emacs[fn:emacs-digression].
+Generally the first thing I do in the morning is opening `org-calendar`.
+It looks like this:
+
+#+ATTR_ORG: :width 560
+#+CAPTION: Org super calendar view
+#+NAME: fig:org-super-agenda
+[[./img/org-super-agenda.png]]
+
+Pretty brutalist interface which is a great thing to me.
+Distraction free interface going to the essential.
+
+With this view, I see what I planned to do today.
+I also see a few "Due Soon" tasks in case I have the time to handle those.
+
+When I start working on a task I start a clock on it (I simply type =I=
+when my cursor is on the TODO line).
+When I finished some task I change its status from TODO to something else.
+Mainly I'm prompted when doing so:
+
+#+BEGIN_SRC
+{ [t] TODO [p] IN-PROGRESS [h] HOLD [w] WAITING
+ [d] DONE [c] CANCELLED [l] HANDLED }
+#+END_SRC
+
+And that's it.
+The time spent on the task as been clocked I can work on another task.
+
+Looking at the agenda view you could notice habits.
+They start to become green when you are doing them correctly.
+
+But generally, I don't use much direct clocking from the agenda.
+Most of the time I prefer the capture mechanism.
+Which bring us to "Workflow 2".
+
+*** Workflow 2: Tracking; org-capture
+:PROPERTIES:
+:CUSTOM_ID: workflow-2--org-capture-org-refile
+:END:
+
+Most of the tasks I perform on the day are not planned.
+I have a generic routine + some prepared events and tasks to performs.
+But during the day you have multiple interruptions, and part of my job is
+to write code reviews too.
+I cannot plan those.
+
+In that case I use =org-capture= along =org-refile=.
+Mainly =org-capture= helps you create a new TODO entry.
+And =org-refile= will help you move that TODO entry to the correct place.
+
+So let say I get a direct message in the chat asking me to do something.
+I generally start org capture (for me it's =SPC X=).
+I am presented with the following choice:
+
+#+BEGIN_SRC
+Select a capture template
+=========================
+
+[t] todo
+[c] chat
+[e] email
+[m] meeting
+[p] pause
+[r] review
+[w] work
+[i] interruption
+[f] chore
+---------------------------------------------------------------------------
+[q] Abort
+#+END_SRC
+
+In my example it was a chat interruption.
+So I type =i= that presents me with this
+
+#+BEGIN_SRC
+ **** IN-PROGRESS | :interruption:
+ :LOGBOOK:
+ [2020-09-23 Wed 08:01]
+ ref :: [link-to-where-I-was-in-emacs-when-captured]
+#+END_SRC
+
+My cursor placed where the =|= is displayed.
+Here I add the tag =chat= and a small description, "dm from John about X" for example.
+Then I type =C-c C-c= and the TODO is placed in a =tracker.org= file under
+a date tree that looks like this:
+
+#+BEGIN_SRC org-mode
+ * 2020
+ ** 2020-W39
+ *** 2020-09-21 Monday
+ *** 2020-09-22 Tuesday
+ *** 2020-09-23 Wednesday
+ **** IN-PROGRESS Chat with John about X :interruption:chat:
+ :LOGBOOK:
+ :END:
+ [2020-09-23 Wed 17:58]
+ ref ::
+ ...
+#+END_SRC
+
+So the clock for this task started at the moment at made the capture.
+In my workflow, I prefer to finish the capture and stop clock later.
+So after I finished the capture, the clock is still running while the task
+is put in my tracker file.
+
+Once I finished with that task.
+I can:
+
+1. Jump to the tasks with =SPC n o= (=org-clock-goto=), and stop the
+ clock =SPC m c o= (=clock-out=).
+2. Jump to the task and change its status to =DONE= which will stop the clock.
+3. Capture another tasks which will stop the clock on the current task and
+ will start on the new one.
+
+By the end of the day, my tracker file will contain a date tree with all
+the tasks I done in the day.
+All tasks nicely clocked.
+I generally create a clock report that look like this:
+
+#+BEGIN_SRC
+ #+BEGIN: clocktable :scope subtree :maxlevel 4 :timestamp t :narrow 36! :match "work"
+ #+CAPTION: Clock summary at [2020-09-23 Wed 08:20]
+ | Timestamp | Headline | Time | | | |
+ |------------------------+--------------------------------------+--------+---+------+------|
+ | | *Total time* | *6:40* | | | |
+ |------------------------+--------------------------------------+--------+---+------+------|
+ | | \_ 2020-09-21 Monday | | | 7:40 | |
+ | [2020-09-21 Mon 08:54] | \_ check chat | | | | 0:36 |
+ | [2020-09-21 Mon 09:30] | \_ check reviews | | | | 0:41 |
+ | [2020-09-21 Mon 10:11] | \_ check emails | | | | 0:07 |
+ | [2020-09-21 Mon 10:37] | \_ review PR about xxx | | | | 0:44 |
+ | [2020-09-21 Mon 11:21] | \_ update my PR from feedbacks | | | | 0:36 |
+ | [2020-09-21 Mon 12:08] | \_ review John's PR about Foo | | | | 0:12 |
+ | [2020-09-21 Mon 13:41] | \_ review M's PR about Bar | | | | 0:11 |
+ | [2020-09-21 Mon 13:53] | \_ another thing | | | | 0:16 |
+ | [2020-09-21 Mon 14:09] | \_ review PR | | | | 0:51 |
+ | [2020-09-21 Mon 15:00] | \_ work on PR | | | | 1:30 |
+ | [2020-09-21 Mon 16:49] | \_ check another PR | | | | 0:33 |
+ | [2020-09-21 Mon 17:03] | \_ answer email | | | | 0:55 |
+ | [2020-09-21 Mon 17:58] | \_ Chat John about X | | | | 0:28 |
+
+#+END_SRC
+
+And that's mostly it for TODOs and tasks handling.
+
+*** Workflow 3: Add new tasks; org-capture / org-refile
+:PROPERTIES:
+:CUSTOM_ID: workflow-3--org-capture---org-refile
+:END:
+Another thing I do quite often.
+I need to add new task to be done.
+Be it for today or another day.
+
+In that case, I generally use org-capture again.
+This time I choose =t= for TODO and I generally detail the task to be done.
+I add either a SCHEDULE (when I plan to start) or a DEADLINE (when this
+must be finished) and I refile it.
+
+So refile will start a fuzzy search to put this task under some subtree.
+So instead of going to my =tracker.org= file, this goes to my =inbox.org=
+file.
+
+And it will appear in my agenda.
+
+*** Configuration
+:PROPERTIES:
+:CUSTOM_ID: configuration
+:END:
+
+So to have all of that, I added a lot of configuration over time.
+But here is the most important part.
+
+Most of that config is what I personally think are better defaults.
+And a minor part of it only is about how I organize myself.
+
+#+BEGIN_SRC emacs-lisp
+(defun org-mode-config ()
+ "Org-mode."
+ (setq org-extend-today-until 4
+ org-use-effective-time t)
+ (setq org-todo-keywords
+ '((sequence "TODO(t)"
+ "IN-PROGRESS(p)"
+ "|"
+ "DONE(d)"
+ "HOLD(h@/!)"
+ "CANCELED(c@/!)"
+ "HANDLED(l@/!)")
+ (sequence "|" "PAUSE(p)" "CHAT(c)" "EMAIL(e)" "MEETING(m)" "REVIEW(r)" "GEEK(g)")))
+
+ ;;; Look & Feel
+
+ ;; I like to have something different than ellipsis because I often use them
+ ;; myself.
+ (setq org-ellipsis " [+]")
+ (custom-set-faces '(org-ellipsis ((t (:foreground "gray40" :underline nil)))))
+
+ (defun my-org-settings ()
+ (org-display-inline-images)
+ (setq fill-column 75)
+ (abbrev-mode)
+ (org-indent-mode)
+ nil)
+
+ (add-hook 'org-mode-hook #'my-org-settings)
+
+ (setq org-tags-column 69)
+
+ ;; src block indentation / editing / syntax highlighting
+ (setq org-src-fontify-natively t
+ org-src-window-setup 'current-window ;; edit in current window
+ org-src-preserve-indentation t ;; do not put two spaces on the left
+ org-src-tab-acts-natively t)
+
+ ;; *** Templates
+ ;; the %a refer to the place you are in emacs when you make the capture
+ ;; that's very neat when you do that in an email for example.
+ (setq org-capture-templates
+ '(("t" "todo" entry (file "~/.org/inbox.org")
+ "* TODO %?\n%U\n- ref :: %a\n")
+ ;; time tracker (clocked tasks)
+ ("g" "geek" entry (file+olp+datetree "~/.org/tracker.org")
+ "* GEEK %? :perso:\n%U\n- ref :: %a\n"
+ :prepend t :tree-type week :clock-in t :clock-keep t)
+ ("c" "chat" entry (file+olp+datetree "~/.org/tracker.org")
+ "* CHAT %? :work:chat:\n%U\n- ref :: %a\n"
+ :prepend t :tree-type week :clock-in t :clock-keep t)
+ ("e" "email" entry (file+olp+datetree "~/.org/tracker.org")
+ "* EMAIL %? :work:email:\n%U\n- ref :: %a\n"
+ :prepend t :tree-type week :clock-in t :clock-keep t)
+ ("m" "meeting" entry (file+olp+datetree "~/.org/tracker.org")
+ "* MEETING %? :work:meeting:\n%U\n- ref :: %a\n"
+ :prepend t :tree-type week :clock-in t :clock-keep t)
+ ("r" "review" entry (file+olp+datetree "~/.org/tracker.org")
+ "* REVIEW %? :work:review:\n%U\n- ref :: %a\n"
+ :prepend t :tree-type week :clock-in t :clock-keep t)
+ ("w" "work" entry (file+olp+datetree "~/.org/tracker.org")
+ "* IN-PROGRESS %? :work:\n%U\n- ref :: %a\n"
+ :prepend t :tree-type week :clock-in t :clock-keep t)
+ ("p" "pause" entry (file+olp+datetree "~/.org/tracker.org")
+ "* PAUSE %? :pause:\n%U\n- ref :: %a\n"
+ :prepend t :tree-type week :clock-in t :clock-keep t)
+ ("i" "interruption" entry (file+olp+datetree "~/.org/tracker.org")
+ "* IN-PROGRESS %? :interruption:work:\n%U\n- ref :: %a\n"
+ :prepend t :tree-type week :clock-in t :clock-keep t)
+ ("f" "chore" entry (file "~/.org/inbox.org")
+ "* IN-PROGRESS %? :chore:\n%U\n"
+ :clock-in t :clock-keep t)))
+
+ ;; How to create default clocktable
+ (setq org-clock-clocktable-default-properties
+ '(:scope subtree :maxlevel 4 :timestamp t :link t :tags t :narrow 36! :match "work"))
+
+ ;; How to display default clock report in agenda view
+ (setq org-agenda-clockreport-parameter-plist
+ '(:lang "en" :maxlevel 4 :fileskip0 t :link t :indent t :narrow 80!))
+
+ ;; *** Projectile; default TODO file to create in your projects
+ (setq org-projectile-file "inbox.org")
+
+ ;; *** Refile mapped to SPC y o r
+ (map! :leader :desc "org-refile" "y o r" #'org-refile)
+
+ ;; Refile to either the =refile.org= file or to =agenda.org= org =standup.org=
+ (setq org-refile-target-files
+ '("~/.org/tracker.org"
+ "~/.org/inbox.org"))
+
+ (setq org-refile-targets
+ '((nil :maxlevel . 5)
+ (org-refile-target-files :maxlevel . 5)))
+
+ ;; *** Agenda
+ (setq org-log-into-drawer t) ;; hide the log state change history a bit better
+ (setq org-agenda-files org-refile-target-files)
+ (setq org-deadline-warning-days 7)
+ (setq org-agenda-skip-scheduled-if-deadline-is-shown t)
+ (setq org-habit-show-habits-only-for-today nil)
+ (setq org-habit-graph-column 65)
+ (setq org-duration-format 'h:mm) ;; show hours at max, not days
+ (setq org-agenda-compact-blocks t)
+ ;; default show today
+ (setq org-agenda-span 'day)
+ (setq org-agenda-start-day "-0d")
+ (setq org-agenda-start-on-weekday nil)
+ (setq org-agenda-custom-commands
+ '(("d" "Done tasks" tags "/DONE|CANCELED")
+ ("g" "Plan Today"
+ ((agenda "" ((org-agenda-span 'day)))
+ (org-agenda-skip-function '(org-agenda-skip-deadline-if-not-today))
+ (org-agenda-entry-types '(:deadline))
+ (org-agenda-overriding-header "Today's Deadlines ")))))
+ (setq org-agenda-window-setup 'only-window)
+
+ (defun y/go-to-today-agenda ()
+ (interactive)
+ (org-agenda nil "a"))
+ ;; Faster jump to agenda today keybinding shortcut (SPC y a)
+ (map! :leader
+ :desc "Today's agenda"
+ "y a" #'y/go-to-today-agenda)
+
+ ;; ** Org Annotate
+
+ ;; Ability to take annotate some files, can of double usage with org-capture.
+ ;; Still, I keep that keyboard shortcut here.
+ ;; (evil-leader/set-key "oa" 'org-annotate-file)
+ (setq org-annotate-file-storage-file "~/.org/annotations.org")
+
+
+ ;; ** Org colums
+ ;; Can be nice sometime to have that column view
+ ;; give a felling of Excel view
+ (setq org-columns-default-format
+ "%TODO %3PRIORITY %40ITEM(Task) %17Effort(Estimated Effort){:} %CLOCKSUM %8TAGS(TAG)")
+ (map! :leader "y o c" #'org-columns)
+
+ ;; ** Deft
+ ;; useful to find files and jump to them
+ (setq deft-extensions '("org" "gpg" "md" "txt"))
+ (setq deft-recursive t)
+ (setq deft-use-filter-string-for-filename t)
+ (setq deft-default-extension "org")
+ (setq deft-directory "~/.org")
+
+
+ ;; Org Babel
+ (org-babel-do-load-languages
+ 'org-babel-load-languages
+ '(;; other Babel languages
+ (shell . t)
+ (http . t)
+ (clojure . t)
+ (haskell . t)
+ (plantuml . t) ;; UML graphs
+ (gnuplot . t)))
+ (setq org-plantuml-jar-path "~/bin/plantuml.jar"))
+
+(use-package! org
+ :config (org-mode-config))
+#+END_SRC
+
+And also
+
+#+BEGIN_SRC emacs-lisp
+(use-package! org-super-agenda
+ :after org-agenda
+ :custom (org-super-agenda-groups
+ '( ;; Each group has an implicit boolean OR operator between its selectors.
+ (:name "Overdue" :deadline past :order 0)
+ (:name "Evening Habits" :and (:habit t :tag "evening") :order 8)
+ (:name "Habits" :habit t :order 6)
+ (:name "Today" ;; Optionally specify section name
+ :time-grid t ;; Items that appear on the time grid (scheduled/deadline with time)
+ :order 3) ;; capture the today first but show it in order 3
+ (:name "Low Priority" :priority "C" :tag "maybe" :order 7)
+ (:name "Due Today" :deadline today :order 1)
+ (:name "Important"
+ :and (:priority "A" :not (:todo ("DONE" "CANCELED")))
+ :order 2)
+ (:name "Due Soon" :deadline future :order 4)
+ (:name "Todo" :not (:habit t) :order 5)
+ (:name "Waiting" :todo ("WAITING" "HOLD") :order 9)))
+ :config
+ (setq org-super-agenda-header-map nil)
+ (org-super-agenda-mode t))
+#+END_SRC
+
+** Conclusions
+:PROPERTIES:
+:CUSTOM_ID: conclusions
+:END:
+
+That article is already quite long.
+But if you intend to dig into org mode, this can be a nice default starting point.
+
+I haven't really dig into some details but only given you the ability to
+start not completely from scratch and with decent default values for an
+already advanced usage.
+
+To resume:
+
+- =SPC y a= ⇒ Show agenda view for today
+- =SPC X= ⇒ Capture a new task, write a description, then =C-c C-c=, save
+ that in =tracker.org= (or =inbox.org= depending of the capture template)
+- =SPC n o= ⇒ jump to the current time tracked tasks
+- =SPC m c o= ⇒ stop the clock on that task; if you capture a new time
+ tracking tasks you don't need to clock-out
+- =SPC y o r= ⇒ =org-refile=, meaning move that task somewhere else
+- =SPC q= ⇒ add/remove tags to that task
+
+** Footnotes
+:PROPERTIES:
+:CUSTOM_ID: footnotes
+:END:
+:PROPERTIES:
+:CUSTOM_ID: footnotes
+
+:END:
+
+[fn:emacs-digression]
+/Short digression/:
+Historically, I coded using different IDEs.
+Then I worked for a company that forced me to use terrible keyboards and
+after just a few weeks I started to have serious wrist issues.
+So to minimize that pain I switched to vim.
+And it was /awesome/.
+Once you're use to the power of vim keybinding forever your soul will bound
+to them.
+So learning vim is a bit like learning a new music instrument.
+You need to construct some muscle memory and integrate one after one new
+tricks.
+Once learned your personal editing power start to become overwhelming.
+
+After a few years of vim, I wanted to try to explore new editor tooling.
+So I switched to emacs using the spacemacs distribution.
+So mainly it's vim but with even better keybindgs, helpers and within
+emacs.
+The main reason for the switch was that vimscript is a really bad language
+to configure your editor.
+Emacs use emacs-LISP.
+For editor customization a LISP looked perfect to me.
+LISP is still one of the most powerful and easy to use programming language
+to date.
+
+And recently, as my personal configuration started to grow so much I
+switched to [[https://github.com/hlissner/doom-emacs][doom-emacs]].
+I was quite hesitant to do the switch but so far its been a pleasure.
+IMHO using [[https://github.com/hlissner/doom-emacs][doom-emacs]] is a lot better than using my own personal
+configuration from scratch because I wouldn't be able to end up with so
+much configuration quality.
diff --git a/templates/main.mustache b/templates/main.mustache
index 8629892..0e7328a 100644
--- a/templates/main.mustache
+++ b/templates/main.mustache
@@ -16,12 +16,8 @@