diff options
29 files changed, 402 insertions, 44 deletions
@@ -2,6 +2,8 @@ REMOTE := root@dc0 REMOTE_DIR := /var/www/htdocs/rgoncalves.se +OUTPUT_DIR := ./out +TEMPORARY_DIR := ./tmp .PHONY: all \ site \ @@ -11,9 +13,12 @@ site: clean ./bin/ssg ./bin/rssg +preview: site + python3 -m http.server --directory $(OUTPUT_DIR) --bind 127.0.0.1 + clean: - - rm -r out tmp + - rm -r $(OUTPUT_DIR) $(TEMPORARY_DIR) deploy: site - rsync -e ssh -avz --delete ./out/ $(REMOTE):$(REMOTE_DIR) + rsync -e ssh -avz --delete $(OUTPUT_DIR)/ $(REMOTE):$(REMOTE_DIR) ssh $(REMOTE) chown -R www:www $(REMOTE_DIR) @@ -22,6 +22,12 @@ date_default_timezone="+0200" uname=$(uname) +__sha256="sha256" + +if [ "${uname}" = "Linux" ]; then + __sha256="sha256sum" +fi + __to_html_id() { cat /dev/stdin | sed 's/ /%20/g' } @@ -96,7 +102,7 @@ __get_out_filename() { _filename="${1}" if $(__get_value "${1}" draft || false); then - _filename="$(dirname ${1})/$(basename ${1} | sha256).html" + _filename="$(dirname ${1})/$(basename ${1} | "${__sha256}").html" fi echo "${_filename}" | @@ -145,6 +151,10 @@ __lowdown() { lowdown --html-no-skiphtml --html-no-escapehtml "${1}" } +__generate_rss_body() { + lowdown -tgemini "${1}" | sed 's/&/\&/g; s/</\</g; s/>/\>/g; s/"/\"/g; s/'"'"'/\'/g' +} + __apply_template() { # 1: template name or default m4 "templates/${1:-default}" @@ -223,14 +233,14 @@ __handle_md() { __generate_metadata "${1}" > "${tmp_file}.metadata" - if [ ! "$(__get_value ${1} index)" = "" ]; then + if [ ! "$(__get_value "${1}" index)" = "" ]; then __generate_index "${1}" > "${tmp_file}.index" else [ -f "${tmp_file}.index" ] && rm "${tmp_file}.index" fi - __apply_template "$(__get_value ${1} template)" > "${tmp_file}" - __install "${tmp_file}" "$(__get_out_filename ${1})" + __apply_template "$(__get_value "${1}" template)" > "${tmp_file}" + __install "${tmp_file}" "$(__get_out_filename "${1}")" } __handle() { @@ -5,7 +5,6 @@ set -e current_date=$(date +"%a, %d %b %Y %H:%M:%S %z") -uname=$(uname) cat <<-EOF > "${rss_out_file}" <rss version="2.0"> @@ -25,21 +24,20 @@ cat <<-EOF > "${rss_out_file}" EOF for file in $(__list_files_date "${rss_dir}"); do + __get_value "${file}" "draft" >/dev/null && continue + title=$(__get_value_title "${file}") date=$(__get_value_date_publication "${file}") - link="${website_link}/$(__get_final_filename ${file})" - if [ "${uname}" = "Linux" ]; then - guid="$(echo ${link} | sha256sum | cut -d ' ' -f 1)" - else - guid="$(echo ${link} | sha256)" - fi - + link="${website_link}/$(__get_final_filename "${file}")" + guid="$(echo "${link}" | "${__sha256}" | cut -d ' ' -f 1)" + description=$(__generate_rss_body "${file}") cat <<-EOF >> "${rss_out_file}" <item> <title>${title}</title> <link>${link}</link> <pubDate>${date}</pubDate> <guid>${guid}</guid> + <description>${description}</description> </item> EOF done diff --git a/src/a/curated-content.md b/src/a/curated-content.md index ef587d0..f11006e 100644 --- a/src/a/curated-content.md +++ b/src/a/curated-content.md @@ -1,10 +1,14 @@ +--- title: Curated content +--- ## books - [Out of the Tar Pit](http://curtclifton.net/papers/MoseleyMarks06a.pdf) - [Raw Thought, Raw Nerve](https://archive.org/details/RawThoughtRawNerveInsideTheMindOfAaronSwartz/page/n5/mode/2up) - [Team Geek](https://www.oreilly.com/library/view/team-geek/9781449329839) +- [The Pragmatic Programmer](https://pragprog.com/titles/tpp20/the-pragmatic-programmer-20th-anniversary-edition/) +- [The Subtle Art of Not Giving a Fuck](https://en.wikipedia.org/wiki/The_Subtle_Art_of_Not_Giving_a_F*ck) ## blogs @@ -13,14 +17,17 @@ title: Curated content - https://dabase.com - https://dkb.io - https://drewdevault.com +- https://fenollp.github.io/ - https://geohot.github.io - https://grimgrains.com - https://jcs.org - https://johnnyrodgers.is - https://mrshll.com - https://natalian.org +- https://simonmenner.com - https://webzine.puffy.cafe - https://www.xyte.ch +- https://www.yannick.acephale.fr - https://yukiisbo.red ## devices @@ -33,7 +40,9 @@ thinkpad laptops! ## engineering - [getting unstuck](https://www.kevinlondon.com/2021/10/14/asking-for-help.html) -- [Make met think!](https://xsrus.com/life-school-and-the-80-20-rule) +- [things your manager might not know](https://jvns.ca/blog/things-your-manager-might-not-know/) +- [staff engineer](https://staffeng.com/) +- [feeling stuck is the creative process](https://writing.fm/feeling-stuck-is-the-creative-process/) ## life @@ -42,18 +51,29 @@ thinkpad laptops! - [Life, School, and the 80:20 Rule](https://xsrus.com/life-school-and-the-80-20-rule) - [impostor syndrome and me](https://www.kevinlondon.com/2015/05/27/impostor-syndrome-and-me.html) - [your time is the furthest thing from free](https://teddit.net/r/nosurf/comments/awujub/your_time_is_the_furthest_thing_from_free) +- [Just Don't](https://www.tbray.org/ongoing/When/202x/2022/11/07/Just-Dont) ## music +- Massive attack - Nine inch nails +- Ratatat - Sister machine gun +- Vangelis ## movies +- 2046 +- Aftersun +- Being john malkovich - Bladerunner +- Enter the void - Fight club +- In the mood for love - Matrix - Office space +- Point break +- Stalker ## webrings diff --git a/src/a/gear.md b/src/a/gear.md index 0358961..367c5b3 100644 --- a/src/a/gear.md +++ b/src/a/gear.md @@ -1,4 +1,6 @@ +--- title: Gear +--- > I don't have any intentions to have monthly blog posts about my current gear, > mostly because I have spent a lot of time finding the right devices for the @@ -9,18 +11,10 @@ title: Gear ## Machines -- Thinkpad X220, **Laptop**: - - *i5-2540M, 8GB of RAM, IPS Panel* - - Secondary development machine running Archlinux. - - Two different boot config: with and without CPU mitigations for maximum - performance. - -- Thinkpad X220, **Laptop**: - - *i5-2540M, 16GB of RAM, TN Panel* - - OpenBSD development laptop running -current. - - One of the right USB slot has been scrapped and replaced with a USB Type-C - female slot that I hand soldered myself (useful for Yubikeys, as the - motherboard only supports USB 2.0 for that slot). +- Thinkpad X330, **Laptop**: + - *i7-3520M, 8GB of RAM, IPS Panel* + - Current main station on Archlinux + - X220 keyboard mode, BIOS mode, USB-C mode - Dell XPS 9370, **Laptop**: - *i7-xxx?, 16GB of RAM, Touchscreen + 4K + glossy* @@ -48,6 +42,21 @@ title: Gear - *32GB of RAM* - Currently unused! +--- + +- Thinkpad X220, **Laptop**: + - *i5-2540M, 8GB of RAM, IPS Panel* + - Secondary development machine running Archlinux. + - Two different boot config: with and without CPU mitigations for maximum + performance. + +- Thinkpad X220, **Laptop**: + - *i5-2540M, 8GB of RAM, TN Panel* + - OpenBSD development laptop running -current. + - One of the right USB slot has been scrapped and replaced with a USB Type-C + female slot that I hand soldered myself (useful for Yubikeys, as the + motherboard only supports USB 2.0 for that slot). + ## Accessories - HHKB Professial Classic, **Keyboard**: @@ -65,13 +74,20 @@ title: Gear - two Benq xxx?, **Monitor**: - dual-screen for my primary development machine. -- Fairphone 2, **Smartphone**: - - *Lineageos 11, microG, transparent case* +- Pixel One, **Smartphone**: + - *Lineageos 18, microG* - Primary phone. + - Battery feels old but performances are excellent for a 2016 phone. + +- Fairphone 2, **Smartphone**: + - *Lineageos 17, microG, transparent case* + - Backup phone. - Used as a *dumbphone* as much as I can (black and white screen, no extra or so-called social apps). - Perfect network hotspot via USB when I am on the move. +--- + - Motorola G7 Power, **Smartphone**: - *Lineageos 11, microG* - Backup phone. I screw up my primary phone occasionally! diff --git a/src/a/homelab.md b/src/a/homelab.md index 726b141..4b73319 100644 --- a/src/a/homelab.md +++ b/src/a/homelab.md @@ -1,4 +1,6 @@ +--- title: Homelab +--- ## Bill of materials diff --git a/src/a/index.md b/src/a/index.md index 3cdc446..99e040c 100644 --- a/src/a/index.md +++ b/src/a/index.md @@ -1,6 +1,15 @@ +--- title: about +--- -Software developer, devops, hacker. +Software engineer, ~~devops~~, hacker. + +I can work on various tasks: from software engineering to infrastructure +automation, system administration, deployment pipelines, hacky shell scripts, +... + +I am comfortable and want to work with: BSD operating systems, +system programming, git + rebase/squash workflow, suckless software, ... ## contact @@ -24,3 +33,7 @@ Software developer, devops, hacker. - [random thoughts](random-thoughts.html) - [rice](rice.html) - [resume](resume.html) + +## resources + +- [my dotfiles](https://git.rgoncalves.se/dots/tree) diff --git a/src/a/level-design.md b/src/a/level-design.md index d726ebd..50f0edc 100644 --- a/src/a/level-design.md +++ b/src/a/level-design.md @@ -1,4 +1,6 @@ +--- title: Level design +--- ## Source Engine diff --git a/src/a/random-thoughts.md b/src/a/random-thoughts.md index 7852287..9ea77aa 100644 --- a/src/a/random-thoughts.md +++ b/src/a/random-thoughts.md @@ -1,4 +1,6 @@ +--- title: Random thoughts +--- > Skills first diff --git a/src/a/resume.md b/src/a/resume.md index 5b0fecd..830d80c 100644 --- a/src/a/resume.md +++ b/src/a/resume.md @@ -1,17 +1,19 @@ +--- header: false footer: false template: none +--- # [Romain Gonçalves](/) -> Devops engineer at VIPERdev +> Software engineer ## about -- Besançon, France +- Paris, France - me@rgoncalves.se - [linkedin](https://linkedin.com/in/rgoncalvesse) -- [generic infomations](/a) +- [generic informations](/a) ## skills @@ -24,9 +26,10 @@ template: none ### programming -- Python + Django +- Python + Django + FastAPI + SQLAlchemy - POSIX shell - The C Programming Language +- gRPC + Protobuf - Dart, TypeScript, Java, PHP ### languages @@ -36,9 +39,21 @@ template: none ## experiences -- Devops engineer +- *burnout recovery and enjoying life (since 2023-06)* + +- Hardware Devops Engineer + - *at [Scaleway](https://www.scaleway.com)* + - *from 2022-04 to 2023-06* + - software engineering, maintenance and automation of internal toolings + - agnostic firmware management: configuration + flash for dozens of server + types + - site-reliability of pre-production assembly line: software + system + debugging + - orchestration of BMCs, NICs, BIOS configuration + +- Devops Engineer - *at [VIPERdev](https://viperdev.io)* - - *from 2021-07 (ongoing)* + - *from 2021-07 to 2022-03* - infrastructure maintenance and deployments to production - backend development, agile methodology and code review - cloud providers such as: digitalocean / scaleway / netlify @@ -47,13 +62,13 @@ template: none - Intern (django/devops) - *at [VIPERdev](https://viperdev.io)* - - *from 2020-04 to 2020-06* + - *from 2021-04 to 2021-06* - backend development and code review - contribution to existing projects - Homelab and internal network - *for fun!* - - *from 2020 (ongoing)* + - *since 2020 (ongoing)* - with OpenBSD + FreeBSD, AlpineLinux and love! - Level designer @@ -71,15 +86,29 @@ template: none - 32 players maps with bot support and game-engine scripting - creation and modifications to 2D and 3D assets +## certifications + +- Electrical accreditation (France): H0 - B0 - BS - Be manoeuvre + +## preferences + +- git rebase + squash workflow +- atomic commits with nice commit title + body +- [stupid and simple implementations](https://peps.python.org/pep-0020/) + +## conferences + +- OCP Regional Summit 2023 *(visitor*) +- FOSDEM 2023 *(visitor)* + ## extra When I am not playing *factorio* or *squashing my commits*, I enjoy *riding my -bicycle*, *going for a run* or *even hiking*! +bicycle*, *going for a run*, *hiking*, *climbing* or even *exploring the +catacombs*! I have had a lot of fun being a *dungeon master* when playing *Dungeons and Dragons* with my friends! -I love using my *Thinkpad X220* with *OpenBSD* for daily life =) - -And yes, I do have two entreprise servers running next to me 24/7! I am always -open to talk about them! +I love using my *Thinkpad X330* with *Archlinux/OpenBSD*. *dwm* + *st* + *tmux* +is the perfect combo, change my mind! diff --git a/src/a/rice.md b/src/a/rice.md index 9675f71..d5507ee 100644 --- a/src/a/rice.md +++ b/src/a/rice.md @@ -1,4 +1,6 @@ +--- title: Rice +--- > Even if all the cool kids seems to be on > [r/unixporn](https://www.reddit.com/r/unixporn) (which is not true) I have diff --git a/src/b/2020-07-archlinux-installation.md b/src/b/2020-07-archlinux-installation.md index 86a6c45..4f47b14 100644 --- a/src/b/2020-07-archlinux-installation.md +++ b/src/b/2020-07-archlinux-installation.md @@ -1,5 +1,7 @@ +--- date: 2020-07-01 title: Archlinux Bulletproof Installation +--- Through my 5 years with different Archlinux installations, I made up my mind to document the one that fullfills my needs. The main goal is a minimal arch install diff --git a/src/b/2020-08-wireguard-and-ipv6.md b/src/b/2020-08-wireguard-and-ipv6.md index 9a91dc8..e5f8040 100644 --- a/src/b/2020-08-wireguard-and-ipv6.md +++ b/src/b/2020-08-wireguard-and-ipv6.md @@ -1,5 +1,7 @@ +--- date: 2020-08-26 title: Wireguard and IPV6 +--- > I decided to connect all my services and servers behind my domain controller, > which has a dedicated IPv4 and IPv6 address, and which basically host that diff --git a/src/b/2021-08-status.md b/src/b/2021-08-status.md index 33fac8f..9e52f92 100644 --- a/src/b/2021-08-status.md +++ b/src/b/2021-08-status.md @@ -1,5 +1,7 @@ +--- title: Status update, August 2021 date: 2021-08-12 +--- This is the first status update! You can expect regular status updates each month. diff --git a/src/b/2021-09-status.md b/src/b/2021-09-status.md index f6f70eb..b63cd4e 100644 --- a/src/b/2021-09-status.md +++ b/src/b/2021-09-status.md @@ -1,5 +1,7 @@ +--- title: Status update, September 2021 date: 2021-09-19 +--- ## Analog diff --git a/src/b/2021-10-thoughts-from-cold-autumn.md b/src/b/2021-10-thoughts-from-cold-autumn.md index 1873d27..0f4d9ce 100644 --- a/src/b/2021-10-thoughts-from-cold-autumn.md +++ b/src/b/2021-10-thoughts-from-cold-autumn.md @@ -1,5 +1,7 @@ +--- title: Thoughts from a cold autumn date: 2021-10-23 +--- Some thoughts that need to get out and written there. They might be turned into individual blog posts later, once I sort them out. diff --git a/src/b/2021-11-status.md b/src/b/2021-11-status.md index 3021d09..c930f7b 100644 --- a/src/b/2021-11-status.md +++ b/src/b/2021-11-status.md @@ -1,5 +1,7 @@ +--- title: Status update, November 2021 date: 2021-11-24 +--- It has been colder and colder, although I still go running two or three times a week! diff --git a/src/b/2021-12-status.md b/src/b/2021-12-status.md index c9a2507..62a9071 100644 --- a/src/b/2021-12-status.md +++ b/src/b/2021-12-status.md @@ -1,5 +1,7 @@ +--- title: Status update, December 2021 date: 2021-12-19 +--- ## Software development diff --git a/src/b/2022-01-status.md b/src/b/2022-01-status.md index 7d680a0..80019bb 100644 --- a/src/b/2022-01-status.md +++ b/src/b/2022-01-status.md @@ -1,5 +1,7 @@ +--- title: Status update, January 2022 date: 2022-01-19 +--- ## Thinkpad madness diff --git a/src/b/2022-07-organizing-qutebrowser-hyperlinks.md b/src/b/2022-07-organizing-qutebrowser-hyperlinks.md new file mode 100644 index 0000000..b8f5655 --- /dev/null +++ b/src/b/2022-07-organizing-qutebrowser-hyperlinks.md @@ -0,0 +1,130 @@ +--- +title: Organizing qutebrowser hyperlinks +date: 2022-07-18 +--- + +## Actual state + +Qutebrowser offers two strategies for saving an hyperlink [^1]: + +- `bookmark`: a link relates to a title (without any format constraint). +- `quickmark`: a link relates to a tag (which must be unique). + +I have always used the bookmark strategy, but it lacks a propper +quality-of-life update for sorting and formatting entries. + +## Intended workflow + +I have decided to pick the following workflow: + +1. Do not use the quickmark strategy. +2. Store hyperlinks as bookmarks. +3. Format the bookmarks titles, but allow duplicates. +4. Sort the bookmarks per title. +5. Show the same ui of quickmark-add when adding a new bookmark. + +A bookmark entry in `.config/qutebrowser/bookmarks/urls` would then look like +this: + +``` +[hyperlink] [tag+1] [tag+2] ... [tag+n] + +https://beej.us/guide/bgnet/html/ +network +soft +wiki +http://cat-v.org/ +wiki +https://why-vi.rocks/ +wiki +``` + +While (1) and (2) are purely related to human behaviors, (3), (4) and (5) +requires the implementation of logic on qutebrowser side, which does not exist +on the upstream (yet). + +I originally produced multiple hacky scripts for sorting and formatting my +bookmark file, but ended up doing Python injection from the qutebrowser +configuration file. Thanks to the functions injection, the sorting and +formatting operations are hooked to the `bookmark-add` keybind. + +![qutebrowser-bookmark-popup](/img/b/qutebrowser-bookmark-popup.jpg) + +## Implementation + +1. Sort the tags of each bookmark entries, then sort the bookmarks entries by + their title: + + ``` + from os import path + from io import SEEK_SET + + from qutebrowser.browser.urlmarks import UrlMarkManager + + + def sort_bookmarks(url_filepath: str) -> None: + file = open(url_filepath, 'r+') + marks = ( + (link, sorted(tags.split())) for link, tags in + (line.split(maxsplit=1) for line in file.readlines()) + ) + lines = ( + f'{link} {" ".join(tags)}' for link, tags in + sorted(marks, key=lambda mark: mark[1]) + ) + file.seek(SEEK_SET) + file.writelines('\n'.join(lines)) + file.close() +``` + +2. Hook the sort function when an new entry is added to the url file (Note: I + wanted to reuse the original `UrlMarkManager.save` method and extend it, but + pythonic shenanigans forced me to copy/paste two loc from the source code): + + + ``` + def urlmarkmanager_save(manager: UrlMarkManager, configdir: str) -> None: + """Override Qutebrowser builtin method for saving bookmarks.""" + manager._lineparser.data = [' '.join(tpl) for tpl in manager.marks.items()] + manager._lineparser.save() + sort_bookmarks(path.join(configdir, 'bookmarks/urls')) + + from qutebrowser.browser.urlmarks import UrlMarkManager + + UrlMarkManager.save = ( + lambda manager: urlmarkmanager_save(manager, config.configdir) + ) + ``` + +3. Hook the save function with an homemade pop-up, that appears when adding a + new bookmark entry: + + ``` + from qutebrowser.api import cmdutils + + @cmdutils.register() + def bookmark_save(url: QUrl): + """Save the current page as a bookmark.""" + manager = objreg.get('bookmark-manager') + tags = message.ask( + title="Add bookmark:", + mode=PromptMode.text, + url=url.toString(QUrl.RemovePassword | QUrl.FullyEncoded), + text=( + "Please enter bookmark tags for<br/><b>" + f"{html.escape(url.toDisplayString())}</b>" + ), + ) + + if not tags: + return + + try: + manager.add(url, tags) + except UrlAlreadyExistsError: + message.warning("Bookmark already exists.") + ``` + +Now all my bookmark entries are sorted by their titles automatically, and it +looks way better when I preview them! + +![qutebrowser-bookmark-entries](/img/b/qutebrowser-bookmark-entries.jpg) + +(Next step: integrate a fuzzy-finder for searching bookmarks) + +[^1]: https://github.com/qutebrowser/qutebrowser/issues/882 diff --git a/src/b/2022-12-human-ingress.md b/src/b/2022-12-human-ingress.md new file mode 100644 index 0000000..fc97302 --- /dev/null +++ b/src/b/2022-12-human-ingress.md @@ -0,0 +1,29 @@ +--- +title: Human ingress +date: 2022-12-18 +--- + +```sh +$ curl https://rgoncalves.se/robots.txt +User-agent: * +Disallow: / +``` + +```sh +$ curl -s https://rgoncalves.se/index.html | grep "googlebot" +<meta name="googlebot" content="noindex"> +``` + +```sh +$ wc -l /etc/hosts +224395 /etc/hosts +``` + +--- + +Computers and technologies are cool, but don't waste too much time with them. +They ultimately suck and create more problem than they solve. + +Embrace real human interactions. + +Read a book or start here: http://www.aaronsw.com/weblog/rawnerve diff --git a/src/b/2023-01-03-in-the-mood-to-reset.md b/src/b/2023-01-03-in-the-mood-to-reset.md new file mode 100644 index 0000000..c1bdb4b --- /dev/null +++ b/src/b/2023-01-03-in-the-mood-to-reset.md @@ -0,0 +1,29 @@ +--- +title: In the mood to reset +date: 2023-01-03 +--- + +[Remember that computers suck](/b/2022-12-human-ingress.html). + +I do not get the point of daily routines consisting of commuting to work +just for [pushing buttons](https://en.wikipedia.org/wiki/The_Stanley_Parable). +Pushing or not those buttons for days, months, then years. Nothing ultimately +changes in the grand scheme of things. + +I am in the mood for better writing habits. + +I am in the mood for +[taking notes more often](http://www.aaronsw.com/weblog/productivity), +especially when my mind has been wandering. + +I am in the mood for consistent reading habits. + +I am in the mood for driving recruiters nuts. + +I am in the mood to listen to other people. + +I am in the mood for not giving a fuck about your bullshit startups and your +sterile ten word job title. + +And I am in the mood for believing in Weihnachtsmann. Everything was so simple +back then. diff --git a/src/b/2023-05-computers-praha.md b/src/b/2023-05-computers-praha.md new file mode 100644 index 0000000..a87a2f6 --- /dev/null +++ b/src/b/2023-05-computers-praha.md @@ -0,0 +1,46 @@ +--- +title: Computers in Praha +date: 2023-05-03 +--- + +![cell-site-in-praha](/img/b/praha-cell-site.jpg) + +## Open Compute + +Watercooled and Open Rack V3 chassis + racks were displayed in the exposition +hall: + +- Prototype of a 3U liquid cooled Nokia AirFrame Edge chassis. +- Qarnot server: around 20 units are deployed per site, for an average of 240 + motherboards. +- HPE latest ARM server with an Ampere cpu: RL300, supporting + [OpenBMC](https://en.wikipedia.org/wiki/OpenBMC). + +## Frontier + +This is [the world's first and fastest supercomputer](https://en.wikipedia.org/wiki/Frontier_(supercomputer)). +I have visited one of the assembly line and server room used in the fabrication +process. + +### Components + +The chassis are 1U tall, composed of two servers spread on one motherboard, +with a total of 8 cpus. The BMCs are on one extension card, directly plugged +on one side of the motherboard, and connected via a cable to the opposite side +for controlling the second server. + +The chassis are stacked at the backside of the rack, while the power units and +water pipes are present at the fronside. + +Note that each power unit can draw up to 15KW and is vertically plugged in the +rack. + +### Water leaks + +Big drainage pipes circulate above the racks, probably the closed water loop. +Huge recipients with water detectors are present underneath, avoiding the +fluid to fall down over the chassis. + +Thin conductive wires are also present in each chassis. They seem to be +connected to the motherboard or BMCs extension card. This helps to detect any +internal leak and gracefully shutdown the servers. diff --git a/src/index.md b/src/index.md index 86451aa..9371915 100644 --- a/src/index.md +++ b/src/index.md @@ -1,3 +1,5 @@ +--- index: b index_date: true show_title: false +--- diff --git a/src/style/style.css b/src/style/style.css index b8c073c..1c47ae6 100644 --- a/src/style/style.css +++ b/src/style/style.css @@ -2,7 +2,6 @@ * { font-family: monospace, monospace; - text-align: justify; } html { diff --git a/src/w/dell-r710.md b/src/w/dell-r710.md index 80c2070..6a05ee8 100644 --- a/src/w/dell-r710.md +++ b/src/w/dell-r710.md @@ -1,4 +1,6 @@ +--- title: dell r710 +--- ## internal ssd diff --git a/src/w/index.md b/src/w/index.md index 1c32de5..e22c745 100644 --- a/src/w/index.md +++ b/src/w/index.md @@ -1,2 +1,4 @@ +--- title: wiki index: w +--- diff --git a/src/w/sun-x4170.md b/src/w/sun-x4170.md index fbb9aa7..cb31fdb 100644 --- a/src/w/sun-x4170.md +++ b/src/w/sun-x4170.md @@ -1,3 +1,5 @@ +--- title: sun x4170 +--- // todo diff --git a/src/w/thinkpad-x220.md b/src/w/thinkpad-x220.md index 2cb7f7e..5c58737 100644 --- a/src/w/thinkpad-x220.md +++ b/src/w/thinkpad-x220.md @@ -1,4 +1,6 @@ +--- title: thinkpad x220 +--- ## performances |