Posts from Heidelberg

šŸ”’ Accessing git Servers Over Another Port When 22 is Blocked and Cloning Hangs Waiting for Connection

Itā€™s been awhile since Iā€™ve setup my last work system a year back, so this past month Iā€™ve gone through the usual pains of preparing a new machine. One of those pains was realizing some network segments at one of the libraries I am a regular at have port 22 blocked at an internal boundary. Without falling into discussions about how useful such a thing is from a defensive security point of view, I wanted to share a trick not many folks know of. It turns out that, precisely for those situations, all renowned Git hosting providers offer access to their Git service via an alternative port: 443.

Read more ...


RTF(M|L): Error Installing Ruby 3.3.1 via asdf on MacOS Due to Missing libyaml

This is the first in a rapid-fire series of howto posts regarding MacOS development environments and common blockers people face when setting them up. It should also serve as your daily reminder to Read the Freaking Manual|Logs[1]! As for Ruby, I needed to set up Ruby 3.3.1 for a new customer engagement. As usual, I started setting it up via asdf-vm; see šŸŖ„ Install asdf: One Runtime Manager to Rule All Dev Environments for the reasoning behind doing so and my view on language runtime management.

Read more ...


šŸ”¢ Are Two N-Dimensional Real Subspaces Equal If They Have The Same Dimensions?

The topic of vector spaces and subspaces came up during a conversation with a dear friend and I could not resist reminiscing the past. They were studying for an upcoming test and I wanted to try and reinforce their intuition in some areas through a couple of examples and counter-examples.

Read more ...


Amigos cual gotas šŸ”–

https://g.co/arts/N3DhgVLuLYnDE45K7

Read more ...


šŸ“ Emulating Semgrep SAST Pro Taint Mode with Join Mode

Semgrepā€™s Join Mode[1] is a seldom discussed yet interesting experimental feature of the Semgrep OSS SAST engine which can be used to achieve rudimentary taint interprocedural and interfile analyses. In this snippet I document how to combine one search mode and two join mode rules in order to identify intrafile, intraprocedural, interfile and interprocedural tainted sinks.

Read more ...


šŸ„‹ Codewars: Opposites Attract

Some members from http://guayahack.co came up with the idea for us to practise and discuss some code katas together and I couldnā€™t resist.

Read more ...


šŸ§Ŗ Snippet: General Publishing Test

In the best spirit of over-engineering for fun, this minimalistic post documents the way my snippets land over at jdsalaro/jdsalaro.com.

Read more ...


Voces: distantes caricias šŸ”–

Bastante se ha escrito sobre la experiencia y tribulaciones del migrante, sin embargo poco se habla sobre aquello que le permite mantenerse incĆ³lume y continuar su curso. Ɖste poema es un recordatorio precisamente de aquellas voces lejanas, voces que actuan como frazadas en las tormentas de la vida lejos de casa.

../../../_images/caspar-david-friedrich-wanderer-ueber-dem-nebelmeer-1817.jpg

Read more ...


šŸŖ„ Install asdf: One Runtime Manager to Rule All Dev Environments

Almost everyone I know who uses a computer, for fun or work, is overtaken by a slight nervousness when installing a new library, package, service or application on their operating system. The horror stories underpinning these reservations vary slightly between Linux, Unix, Windows and MacOS users, but everyone knows, regardless of preferred ecosystem, that installing software can do a number on their computer and the task should not be taken lightly. Especially for programmers, that struggle is no stranger. Therefore, any tool looking to simplify this task and eliminate potential points of failure is, in my book, a very welcome occurrence.

../../../_images/xkcd-1987-python-environment.png

Read more ...


šŸšØ On the XZ Utils Backdoor (CVE-2024-3094): FOSS Delivered on its Pitfalls and Strengths

The newly discovered backdoor[1] in the XZ Utils package[2] affecting numerous Linux distributions[3] and assigned CVE-2024-3094[4] is being dismissed by some members of the technology and security communities as yet another supply chain attack; relevant only because of how blatant it was and that it affected the Open Source ecosystem but in essence nothing out of the ordinary. Regardless of whether this perspective is gaining traction due to cynicism, as hyperbole for clicks or as a coping mechanism, I vehemently disagree with that stance.

../../../_images/openwall-andres-freund-report.png

Read more ...


šŸ“¦ Multiple Git Configurations and Identities with Folder-Dependent Includes for GitLab, GitHub et al

People, shout out to some of my friends and collegues, like to configure their development environments in a myriad of ways. Even setting oneā€™s Git author identity, a seemingly boring and mundane task, is sometimes approached in the most creative ways. This, of course, includes not only configuring git, the tool itself, but also any relevant repositories as well as the platforms where those eventually end up hosted. In this brief tutorial I show how to properly handle multiple identities and configurations as well as how to manage Git projects which might be spread throughout multiple Git backends.

Please beware this tutorial will likely only be relevant or interesting to you if you already have some experience with Git, otherwise this sort of setup may feel like unnecessary or overly complicated. In case you are new to Git, I highly recommend you go through Git for Beginners: Zero to Hero šŸ™ and also have a look at Git Cheatsheet: Commands, Tips and Tricks šŸ“.

../../../_images/linus-fake-commit.png

Read more ...


Excellent Quotes from Marcus Aureliusā€™ Meditations

While on a military campaign which started in 170 and ended in 180, Marcus Aurelius[1] wrote his Meditations in Greek for his own guidance and self-development. The original title of the work, if it had one, is unknown. ā€˜Meditationsā€™ ā€“ as well as other titles including ā€˜To Himselfā€™ ā€“ were adopted later. He had a logical mind, and his notes were representative of Stoic philosophy and spirituality.

Read more ...


Benjamin Franklin on the Tension between Liberty, Virtue, Safety, Wealth and Power

Those who would give up essential Liberty, to purchase a little temporary Safety, deserve neither Liberty nor Safety.

Read more ...


Ghost in the Shell (2017)

Read more on Wikipedia

Read more ...


šŸ‚ Ryōkan: In the scenery of spring ā€¦

Read more on Wikiquote

This poem by Ryōkan was quoted by Alan Watts[1] in one of his lectures[2]; this was what originally motivated me to look for it in full and reproduce it here. The source of the painting is not related to Ryōkan[3].

../../../_images/toshi-yoshida-birds-of-the-seasons-set-of-four-horizontal.webp

Read more ...


Fix runtimeerror: no .dist-info has pip in broken pipenv installs and virtualenv wheels

As mentioned in āŒ RuntimeError: no .dist-info at ... has pip for pipenv install managed via asdf-vm, I was initially confronted with issue some weeks ago but could attribute and fix the problem to asdf misbehaving. The issue, however, resurfaced and that was no longer the case. To my surprise, asdf seemed to be behaving as expected and was therefore of no relevance to the problem I was observing:

If you are experiencing this problem and do not use asdf, this post might be of help as I managed to further narrow down its root cause.

Read more ...


Folklore Night Sky: Overcoming Ancestry

This poem was originally written for KAMINAā€™s[1] act at the Heidelberger Literaturherbst 2023[2].

Read more ...


Paths are Made by Walking

paths are made by walking

This aphorism is also found in German as follows:

Wege entstehen dadurch, dass wir sie gehen

../../../_images/adrianus-van-everdingen-horseman-forest-path-1856.jpg

Read more ...


Freier Fall: ein Gedicht Ć¼ber die Migrantenpsyche

Dieses Gedicht wurde ursprĆ¼nglich fĆ¼r den Akt von KAMINA[1] beim Heidelberger Literaturherbst 2023[2] geschrieben.

Read more ...


āŒ RuntimeError: no .dist-info at ... has pip for pipenv install managed via asdf-vm1

ā„¹ļø Several folks who are not using asdf-vm but are facing similar issues have asked me for advice, Iā€™ve detailed how you can troubleshoot and fix this issue on Fix runtimeerror: no .dist-info has pip in broken pipenv installs and virtualenv wheels.

Having said that, Iā€™ve mentioned in several occasions that pipenv is my virtual environment manager of choice in Python projects and that I use it in tandem with asdf-vm[1], which allows me to seemlesly switch between Python versions depending on the project Iā€™m working on. However, after updating one of my Ubuntu test systems (20.04.6 LTS) and installing a couple of Python versions via asdf-vm, pipenv suddenly stopped working. In this brief HOWTO I hope to provide a couple of hints as to how you may debug and ultimately fix a PipEnv installation which finds itself in a weird state.

Read more ...


Calipso: amores complicados

En la mitologĆ­a griega Calipso (ĪšĪ±Ī»Ļ…ĻˆĻŽ: Ā«la que ocultaĀ») era una ninfa que vivĆ­a en la isla de Ogigia, donde, segĆŗn la Odisea de Homero, detuvo a Odiseo durante siete aƱos [2].

../../../_images/james-draper-calypso-waiting-1897.jpg

Read more ...


Standing on the Shoulders of Giants

If I have seen further, it is by standing on the shoulders of giants.

Read more ...


Oppenheimer: Death, the Destroyer of Worlds

We waited until the blast had passed, walked out of the shelter and then it was extremely solemn. We knew the world would not be the same. A few people laughed; a few people cried. Most people were silent. I remembered the line from the Hindu scripture, the Bhagavad Gita; Vishnu is trying to persuade the prince that he should do his duty, and to impress him, takes on his multiarmed form and says, ā€œNow I am become Death, the destroyer of worlds.ā€ I suppose we all thought that, one way or another.

Read more ...


Thurstonā€™s Paean

On an uneventful Tuesday afternoon I was, as usual, enjoying my lunch while mindlessly scrolling HackerNews and, also as usual, a post caught my attention which hit home[1]

Read more ...


The Great Wave off Kanagawa by Hokusai

Although it might be a clichĆ© by now, Iā€™ve always been quite fond of ukiyo-e, the Japanese art of woodblock printing[1], and of course of Hokusaiā€™s work. As for many, my earliest exposure to this type of art was Hokusaiā€™s The Great Wave off Kanagawa [2] and so itā€™s here for posterity.

../../../_images/1024x688.jpg

Read more ...


Git Revision Selection and Expressions Aā€¦B

While using git itā€™s common to use object identifiers to operate on the underlying objects: checking branches out, reverting a commit, resetting to a given point in the history, and more.

../../../_images/revision-parents-ancestors.png

Read more ...


šŸ–‹ A Look into Aptos, Microsoftā€™s New Default Font

icrosoft has been planning a design revamp when it comes to the typography of their whole Office product line; and probably beyond that. They have worked on selecting their new default font for quite a bit[1]. The finalists among which the successor to the familiar Calibri typeface[2] was to be chosen were long known: Bierstadt, Grandview, Seaford, Skeena, and Tenorite. The decision, however, hadnā€™t been made and apparently no winner was yet selected nor known. That all changed today, though, as The Verge has reported [3].

../../../_images/calibri-over-aptos.png

Read more ...


Grieving the Early Internet šŸ’¾

This is a topic Iā€™ve wanted to write about for a while; and one for which I had way too many references stored. Until now, I hadnā€™t found a way to jump-start my internal monologue on the matter and spur the necessary motivation to put my thoughts to paper. That, however, changed last week when I engaged in a couple of conversations online on HackerNews [1] and Tildes[2] about the openness and diversity of our present-day Internet.

../../../_images/carta-marina-olaus-magnus-1539-cropped.jpg

Read more ...


Kill (9-TERM) Processes with Expression(s) in Name or Call

I often find myself needing to terminate processes containing certain string literals or whose call matches a given regular expression. For that reason I probably re-write and tweak this one-liner several times a month; which is why Iā€™m putting it out there.

Read more ...


Fixing āŒ ā€œPoetry configuration is invalidā€ Errors in pre-commit.ci GitHub Actions

Last Sunday I decided to try and understand the Sphinx codebase better after playing around with Jupyter Book and experiencing issue#1414. After falling down the codebase review rabbit hole I felt like fixing the bug itself was worthwhile. Eventually, fixing the issue proved to be easier than understanding where and what to fix or how to get the GitHub actions maze of checks to properly pass.

Read more ...


Load Sphinx environment.pickle and List all Labels

In order to come up with a reliable and standardized way of referring to document sections and document it in MySt and Markdown for Sphinx Cheatsheet, I went down a pretty deep rabbit hole of Sphinx label manipulations.

Read more ...


šŸŽ­ Best Fonts for Programming

It seems like thereā€™s never enough time to be really passionate about aesthetics, so thatā€™s why when the opportunity presents itself I just roll with it and indulge that inclination. This post is the result of one such opportunity.

Seeing as many of us spend a considerable amount of time in front of some sort of computing device, which is specially true for those of us who program, I wanted to put the list of my favorite programming typefaces out there for your enjoyment.

hack

Read more ...


How to Add šŸ‘‰ šŸ‘ˆ Padding to the Ubuntu Gnome Terminal

I often make screen captures of terminal outputs while documenting my work or helping colleagues and was always bothered when its contents were too close to the left border.

Adding padding to the gnome terminal on Ubuntu, and likely any distribution using Gnome, is trivial, as it suffices to edit ~/.config/gtk-3.0/gtk.css.

../../../_images/load-gtk-theme-error.png

Read more ...


Wrist-friendly Git Shortcuts and Aliases #ļøāƒ£

Things tend to get repetitive with git after you start consistently using it. Of course, itā€™s still an irreplaceable tool, but that doesnā€™t mean we cannot try to abide by DVORAK principles and minimize the distance our fingers travel on the keyboard.

As past and current colleagues can attest, Iā€™m a serial keyboard customizer and shortcut afficionado, so my suggestion to give git console aliases a try should not come as a surprise.

Read more ...


šŸ¦Š Create GitLab Projects for Directory List via API

Read more ...


Git LFS Usage on GitLab Repositories

In newer GitLab versions LFS Storage needs to be specifically enabled for projects; you can achieve this in the settings of your project [1].

Read more ...


Seneca: We Suffer more from Imagination than Reality

In his thirteenth letter[1], ā€œOn groundless fearsā€, Seneca the Younger[2] writes to Lucilius about, predictably, human fear and how we, often without sufficient grounds, are affraid of that which is yet to come.

Read more ...


Scarbleed: Closed, yet Open, Wounds

While experiencing traumatic circumnstances it is not uncommon to ask oneself whether the feeling of unease, desperation and sorrow will eventually pass. As impermanence[1] would have it, suffering passes eventually in order to give room to other, not necessarily pleasant, feelings and experiences. Scarbleed is a poem about the aftermath of intense pain. When sorrow has passed and wounds have allegedly healed can, and do, scars bleed?

Read more ...


Epictetus: Decide, Do, Become

In the third volume, chapter XXIII Ā§1, of his discourses compiled by Arrian[1], Epictetus[2] gives his advice ā€œto those who read and discuss for the purpose of displayā€.

Read more ...


John Wick: Chapter 4 (2023)

Read more on Wikipedia

Read more ...


Invictus by William Ernest Henley āœŠ

Read more on Wikipedia

Read more ...


šŸ’” Idea: A Placeholder for Topics I Want to Write About

This is a simplistic and implicit backlog to which I can link from other places. This makes it easier to remember what I want or wanted to write about as well as programmatically generate a listing.

Read more ...