Compare commits
15 commits
Author | SHA1 | Date | |
---|---|---|---|
f5a82e8d21 | |||
45ce87e6b1 | |||
70005c9228 | |||
5066f456f1 | |||
ca36f290b4 | |||
8a84b11503 | |||
f0af5efd81 | |||
6a3440dd1a | |||
c28b99933e | |||
be3345736b | |||
fa15d60ae1 | |||
eacb2c685b | |||
6911b53616 | |||
b73a81a129 | |||
c6543c3669 |
|
@ -24,3 +24,11 @@ HTML_TEMPLATE = main.html
|
|||
JPG_OPT = -quality 80 -strip -interlace Plane
|
||||
!blur_mini = |> ^ %f -> blur mini^ convert %f -resize 400x400 -blur 0x8 $(JPG_OPT) %o |> blur_mini.jpg
|
||||
!thumbnail = |> ^ %f -> thumbnail^ convert %f -resize 200x200 $(JPG_OPT) %o |>
|
||||
|
||||
#
|
||||
# Slides
|
||||
#
|
||||
MARP = npx @marp-team/marp-cli@latest
|
||||
MARP_OPTS = --allow-local-files --bespoke.progress
|
||||
!marp_pdf = |> $(MARP) $(MARP_OPTS) %f --pdf --output %o |> %B.pdf
|
||||
!marp_html = |> $(MARP) $(MARP_OPTS) %f --html --output %o |> %B.html
|
||||
|
|
2
about.md
2
about.md
|
@ -66,7 +66,7 @@ work on smart homes. I work in the Vision team, making home cameras smarter. I
|
|||
am thrilled to work on computer vision again.
|
||||
|
||||
<div style="text-align:center; padding-top:2em;">
|
||||
<a href="https://octodon.social/@ffreling">
|
||||
<a href="https://mas.to/@ffreling">
|
||||
<img src="images/mastodon.svg" alt="Mastodon" style="height:40px; padding-inline:5px">
|
||||
</a>
|
||||
<a href="http://code.ffreling.com">
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
include_rules
|
||||
HTML_TEMPLATE = article.html
|
||||
|
||||
: *.md |> ./generate_listing.sh > %o |> index.md
|
||||
: *.md |> ./generate_listing.nu > %o |> index.md
|
||||
: foreach *.md |> !html |>
|
||||
|
|
32
articles/generate_listing.nu
Executable file
32
articles/generate_listing.nu
Executable file
|
@ -0,0 +1,32 @@
|
|||
#!/usr/bin/env nu
|
||||
|
||||
def get_metadata [path: string] {
|
||||
let lines = open $path | lines
|
||||
let anchors = $lines | enumerate | filter {|l| ($l.item | str starts-with "---")} | take 2
|
||||
let header = $lines
|
||||
| range (($anchors | first | get 'index') + 1)..(($anchors | last | get 'index') - 1)
|
||||
let metadata = $header | split column -n 2 --regex '\s*:\s*' | rename key value
|
||||
let record = $metadata | reduce -f {} {|it, acc| $acc | upsert $it.key ($it.value | str trim --char '"') }
|
||||
$record |
|
||||
}
|
||||
|
||||
let pages = (glob *.md) ++ (glob **/index.md)
|
||||
let sorted_pages = $pages | wrap 'path'
|
||||
| upsert metadata {|row| (get_metadata $row.path)}
|
||||
| sort-by --reverse metadata.date
|
||||
|
||||
print "---
|
||||
title: Articles
|
||||
---
|
||||
"
|
||||
|
||||
let _ = $sorted_pages | each {|p|
|
||||
let rel_path = $p.path | path relative-to (pwd)
|
||||
let html_path = $rel_path | path parse --extension md | upsert extension { 'html' } | path join
|
||||
print --no-newline $"- ($p.metadata.date): [($p.metadata.title)]\(($html_path)\)"
|
||||
if $p.metadata.update? != null {
|
||||
print $" \(Updated: ($p.metadata.update)\)"
|
||||
} else {
|
||||
print ""
|
||||
}
|
||||
}
|
|
@ -1,23 +0,0 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -euo pipefail
|
||||
|
||||
cat << EOF
|
||||
---
|
||||
title: Articles
|
||||
---
|
||||
|
||||
EOF
|
||||
|
||||
listing=""
|
||||
for file in *.md; do
|
||||
if [ $file = "index.md" ]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
link=$(basename $file .md).html
|
||||
date=$(sed -n 's/date: \(.*\)/\1/p' $file)
|
||||
title=$(sed -n 's/title: \(.*\)/\1/p' $file)
|
||||
listing="$listing- $date: [$title]($link)\n"
|
||||
done
|
||||
echo -e $listing | sort --reverse
|
6
articles/jujutsu/Tupfile
Normal file
6
articles/jujutsu/Tupfile
Normal file
|
@ -0,0 +1,6 @@
|
|||
include_rules
|
||||
HTML_TEMPLATE = article.html
|
||||
|
||||
: slides.md |> !marp_pdf |> jujutsu_slides.pdf ./<deps>
|
||||
: index.md | ./<deps> |> !html |>
|
||||
|
40
articles/jujutsu/index.md
Normal file
40
articles/jujutsu/index.md
Normal file
|
@ -0,0 +1,40 @@
|
|||
---
|
||||
title: "Lightning talk: Jujutsu"
|
||||
date: 2024-11-26
|
||||
---
|
||||
|
||||
_This article is also available as a lightning talk: [pdf](./jujutsu_slides.pdf)_
|
||||
|
||||
## What is it?
|
||||
|
||||
[Jujutsu](https://github.com/martinvonz/jj) is a new version control software
|
||||
(VCS), like git, mercurial, etc. Git is the actual gold standard for VCS, even if its
|
||||
UX could be better. There is a whole ecosystem around git that makes switching
|
||||
to similar projects (eg. mercurial) a daunting task. How does jujutsu plans on
|
||||
making us switch?
|
||||
|
||||
Jujutsu separates the frontend (what the user interacts with) and the
|
||||
backend (how the information is stored). And the main backend is actually git
|
||||
repositories. There is a native backend being developed but it's not ready for
|
||||
prime time. Sharing the same backend as the most popular VCS, Jujutsu aims to
|
||||
improve on the frontend.
|
||||
|
||||
## How does it compare?
|
||||
|
||||
### No branch, only revisions
|
||||
|
||||
Jujutsu understand git commits, but operates at a higher level with revisions.
|
||||
Revisions wrap commits, however as you move revisions around (edit with changes,
|
||||
or rebase), they keep their id. Only their underlying commit id changes.
|
||||
|
||||
With revision ids being stable, you don't need branches to start working: create
|
||||
a new revision, and start working. You will need to create a branch (or bookmark
|
||||
in jujutsu world) to push your changes, but it can be done at the end.
|
||||
|
||||
There is no special mode like git's "Detached HEAD", you are always on a revision. You can jump around
|
||||
|
||||
## VCS landscape
|
||||
> I was part of the team at Meta that built Sapling for many years. I’m no
|
||||
> longer at Meta and I use jj full time.
|
||||
>
|
||||
> _[Discussion on Lobste.rs](https://lobste.rs/s/rojoz1/jujutsu_jj_git_compatible_vcs#c_foqya4)_
|
BIN
articles/jujutsu/jj_revision.drawio.png
Normal file
BIN
articles/jujutsu/jj_revision.drawio.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 7 KiB |
23
articles/jujutsu/slides.md
Normal file
23
articles/jujutsu/slides.md
Normal file
|
@ -0,0 +1,23 @@
|
|||
---
|
||||
marp: true
|
||||
theme: gaia
|
||||
footer: '**Fabien Freling** - 2024-11-26'
|
||||
paginate: true
|
||||
---
|
||||
|
||||
<style>
|
||||
section::after {
|
||||
content: attr(data-marpit-pagination) '/' attr(data-marpit-pagination-total);
|
||||
}
|
||||
</style>
|
||||
|
||||
|
||||
<!--
|
||||
_class: lead
|
||||
-->
|
||||
|
||||
# Jujutsu
|
||||
|
||||
Life after Git
|
||||
|
||||
---
|
|
@ -1,6 +1,7 @@
|
|||
---
|
||||
title: Web stack
|
||||
date: 2019-06-26
|
||||
update: 2024-11-26
|
||||
---
|
||||
|
||||
Previous stacks
|
||||
|
|
Loading…
Reference in a new issue