@galdor@emacs.ch
@galdor@emacs.ch avatar

galdor

@galdor@emacs.ch

Contrarian software engineer. Hire me to solve your technical problems.

$argon2id$v=19$m=64,t=512,p=2$0rwNagYG9nw58bd3D5HBfw$ZDMVWlX+adPhtQKcnrqI5A

This profile is from a federated server and may be incomplete. Browse more on the original instance.

galdor, to emacs
@galdor@emacs.ch avatar

The value of is not in the packages that are available (Gnus, org-mode, Magit, etc.). It is the fact that these packages live in the same application, manipulate text the same way, and can interact with each other to do exactly what you want them to do.

galdor, to random
@galdor@emacs.ch avatar

This morning I had to edit a list in Notion: transform elements using a regexp and sort them. of course impossible in Notion. Took less than a minute to copy in Emacs, do the work, and paste back in Notion.

Notion Labs is a $10B company, and yet their product cannot do a fraction of what I can do with free tools. Oh and what I write in these free tools is not locked in a proprietary ecosystem…

galdor, to emacs
@galdor@emacs.ch avatar

While the LSP protocol is useful for completion or access to symbol definitions, some of its features are less appealing. In , you can instruct Eglot to ignore any feature you dislike.

E.g. (setq eglot-ignored-server-capabilities '(:inlayHintProvider)) to remove annoying hints mixed with the code in c-mode with clangd.

galdor, to random
@galdor@emacs.ch avatar

PyPI suspending registration and project creation due to malicious uploads is a good example of the dangers of centralization. Forcing everyone into a single global namespace perceived as official leads to abuse, as NPM learned before. They now realize that they cannot control what goes in.

Golang does it better: package are referenced by absolute URIs and there is no official index. Similarly, Emacs 29 will support package installation from Git repositories; this is a step forward.

You should never be forced to fetch software (libraries, extensions, plugins…) from a single centralized source.

galdor, to random
@galdor@emacs.ch avatar

The world is full of successful small businesses doing crazy things with niche tech.

If you're using in production, talk about it! So many believe it's a dead language. If you don't want it to disappear, show what you're doing with it.

galdor, to random
@galdor@emacs.ch avatar

There are interesting posts on HN, but many more unfounded opinions, usually generously upvoted by inexperimented crowds. Remember, something is not true because people on HN (or anywhere else really) say so.

galdor, to random
@galdor@emacs.ch avatar

One of the things you learn early in your career is that SLA advertised by SaaS platforms aren't worth anything. Unless there are severe, enforceable penalties for SLA breaches (emphasis on "enforceable"), you're shit out of luck.

Can't prove a SLA breach happened? Service status page is all green? You get nothing. Oh maybe you do, it's a small percentage of your monthly bill. So again, nothing.

Remember that when offloading tech systems to an external provider.

galdor, to random
@galdor@emacs.ch avatar

Firefox tip of the day: create/update "userChrome.css" in the "chrome" subdirectory of your profile directory and add:

moz-input-box.urlbar-input-box {
font-family: monospace !important;
}

Do not forget to set "toolkit.legacyUserProfileCustomizations.stylesheets" to "true" in "about:config" (blame Mozilla for this BS).

Because yes, URIs should be readable in your browser.

galdor, to random
@galdor@emacs.ch avatar

Fun fact, GitHub still does not support IPv6 in 2023. IPv6 in general has been one of the largest engineering failure of the last decades.

galdor, to programming
@galdor@emacs.ch avatar

I would argue than is more suitable for writing compilers than just because it has built-in pattern matching, tuples and map literals. Clojure got literals right but no pattern matching. Oh and DESTRUCTURING-BIND in CL does not count.

galdor, to random
@galdor@emacs.ch avatar

Ignoring unknown fields when decoding data (e.g. configuration files or request payloads) serves a clear purpose, forward compatibility.

Useful when client and server are adding features separately and want to keep working together in the mean time.

galdor, to random
@galdor@emacs.ch avatar

Is there an Emacs package providing a visual, interactive client for PostgreSQL? Would be nice to have full introspection, table display, query saving, etc.

galdor, to random
@galdor@emacs.ch avatar

As a software engineer working 8+ hours a day on a computer, a good chair, keyboard, screen, headphones are not luxury: they are essential both for your health and for your productivity. Also ergonomics are not just for people with disabilities; forget it and you will get hurt.

galdor, to random
@galdor@emacs.ch avatar

Funny how so many whine about SBCL executable cores. But with compression, my example program is 12MB even though it comes with a complete compiler. In comparison Go static binaries can easily grow beyond 100MB and I don't remember anyone complaining.

Lots of complaints are just a way to avoid saying "I don't like parentheses".

galdor, to random
@galdor@emacs.ch avatar

TIL you can pass parameters to each public key in ~/.ssh/authorized_keys files. For example you can restrict connections based on the source address with from="<addr1>, <addr2>,…".

See the man page of sshd ("AUTHORIZED_KEYS FILE FORMAT") for documentation.

galdor, to random
@galdor@emacs.ch avatar

"Nobody uses ". See pgloader:

https://pgloader.io

And I know at least one company using it intensively. Was even told they paid for an extra feature.

galdor, to random
@galdor@emacs.ch avatar

If you're still learning, stay clear of graphical UIs and get comfortable with the command line. Use psql instead of DBeaver, kubectl instead of Portainer, git instead of GitHub Desktop… You'll learn how it actually works and will be able to script with them.

galdor, to random
@galdor@emacs.ch avatar

Everytime someone talks about creating a foundation to help a programming language or software, this is what I see.

galdor, to random
@galdor@emacs.ch avatar

I used to think that software should fully implement standards, trying to get as compliant as possible. Not anymore. Software is meant to be used. Nowadays I just implement the bare minimum and add the rest either when I need it or someone pays me to. Less work, less stress.

galdor, to random
@galdor@emacs.ch avatar

I wish GNU make had not make the Guile dependency a compilation option. Because of that, most packagers skip it and the feature is unusable.

Not too late to change that and make it mandatory, but you can bet some packagers will patch it in a misguided effort to save a few MBs.

galdor, to random
@galdor@emacs.ch avatar

There is a fundamental misconception about how software licenses and copyright work. Since Redis Labs relicensed Redis, I've read multiple times that it would not have happened if Redis had been GPL-licensed. This is incorrect. The entity (or entities if they all agree when there are multiple copyright holders) owning the software, company or individual, can relicense it at any time, and no license can change that.

Using the GPL license would also not have prevented Amazon from making money by hosting Redis (nothing wrong with that btw). Making it AGPL would have forced them to release any modification, but then again if it was AGPL, lots of companies would not have touch it (for good reasons).

There is absolutely nothing stopping anyone from forking the last BSD-licensed release of Redis and continuing the work with another name ("Redis" is a trademark that belongs to Redis Labs).

galdor, to random
@galdor@emacs.ch avatar

I had some fun: went through chapter 2 (Syntax) of the standard and bootstrapped a reader. I learned a few things:

  • Pure C99 is (still) easy to read and to write.
  • The standard is very well written: just do what is described and it works.
  • If you did not read the standard, there are a lot of things you do not know about Common Lisp.

Now I need minimal support for arbitrary-precision arithmetic, and I do not want any dependency.

galdor, to random
@galdor@emacs.ch avatar

Some say you must start with a simple programming language and learn your way up. Others tell you to learn a low level language such as C to understand how everything works.

I've seen plenty of developers who started with Python or JS, and some who started with C. Comparing them, there is no doubt about which method yields the best developers.

The good news is that it's never too late to go back to the fundamentals.

galdor, to emacs
@galdor@emacs.ch avatar

I find it hilarious that people perceive Firefox as a bastion of freedom when it makes it impossible to install add-ons which have not been signed by Mozilla. You cannot add new signing keys. You cannot event install your own unsigned add-on on your own Firefox instance on your own computer.

Imagine if did not let you install a package if it was not signed by the FSF…

galdor, to random
@galdor@emacs.ch avatar

I love SQLite, but everytime I see someone claiming you do not need PostgreSQL, I feel the need to remind them that SQLite has very limited type handling and that you'll seriously miss row locking as soon as you want HA. And it's just the tip of the iceberg.

galdor,
@galdor@emacs.ch avatar

@loke My point is that every debate on the subject is focused on performances, which is mostly irrelevant unless you have a ton of concurrent writes.

What people do not realize is how many features SQLite is missing compared to PostgreSQL. And do not get me started on the brain dead idea of allowing NULL primary keys…

  • All
  • Subscribed
  • Moderated
  • Favorites
  • megavids
  • everett
  • Durango
  • mdbf
  • magazineikmin
  • InstantRegret
  • rosin
  • modclub
  • Youngstown
  • slotface
  • thenastyranch
  • cubers
  • kavyap
  • DreamBathrooms
  • JUstTest
  • khanakhh
  • GTA5RPClips
  • osvaldo12
  • ngwrru68w68
  • normalnudes
  • cisconetworking
  • Leos
  • ethstaker
  • tester
  • tacticalgear
  • provamag3
  • anitta
  • lostlight
  • All magazines