@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.

eshel, to emacs

Bad NEWS,

With a heavy heart, I want to share some thoughts about a recent
development with Emacs that I found really disappointing :(

https://eshelyaron.com/posts/2023-12-10-bad-news.html

galdor,
@galdor@emacs.ch avatar

@louis @eshel @bthalpin @offset___cyan @ericsfraga

Apparently this new (annoying) behaviour will be controlled by register-use-preview.

It is highly frustrating to see maintainers accept this kind of change to the default behavior of Emacs, especially for such an important feature (I use registers all the time and shortcuts are ingrained in my muscle memory).

As for the "good reason":

> Because the original discussion of these changes, between two people who were interested and involved, indicated that the new behavior makes much more sense than the old one. Now, that others chimed in with the opposite views, we are still discussing what should be the behavior, and once that is concluded, we can talk about the defaults.

Not much to add, and given the toxicity of emacs-devel I'm not touching this discussion with a 10 foot pole.

galdor, to random
@galdor@emacs.ch avatar

I've worked with a lot of software engineers in my career. For three of the best among them:

  • One has zero presence on social media.
  • One writes Brainfuck for fun.
  • One does not have a resume because he thinks they are stupid.

All of them know C very well, all of them use Linux or BSD on a daily basis, all of write code in Vim or Emacs.

Some lessons here.

galdor, to random
@galdor@emacs.ch avatar

Ubuntu logic: nooo you cannot use root! But you can use ubuntu. Which can sudo to root and thus can do exactly the same thing as root. Makes total sense.

galdor,
@galdor@emacs.ch avatar

@defanor I'm talking about Ubuntu 22.04 LTS on servers, which is still the simplest option if you want to minimize compatibility problems with various external packages (CUDA, etc.).

And yes, users will learn to use ubuntu instead of root, both being able to do everything. But they won't have to learn to be careful since ubuntu is supposed to be nice and safe while root is supposed to be scary. The usual infantilization process.

galdor,
@galdor@emacs.ch avatar

@defanor Yes there is an "ubuntu" user created by default and thou shall not login as root. Instead you login as "ubuntu" then use sudo (or in practice "sudo su -" because I'm managing servers) Because reason. Security theatre.

galdor, to random
@galdor@emacs.ch avatar

A lot of projects are managed with the assumption that having more contributors is intrinsically good for the project. From what I've seen both in the open source world and in companies, it is actually quite the opposite.

galdor, to random
@galdor@emacs.ch avatar

Stack Overflow did not exist when I learned programming and I'm grateful for that. I'm convinced that this website is a net negative for beginners:

  1. You mostly do not have to figure things out by yourself and can just copy/paste/adapt complete answers. Digging in documentations and source codes is essential.

  2. You mostly learn to do it wrong: there is good information out there, but the signal/noise ratio is incredibly low and you as a beginner have no way to distinguish good and bad advices.

louis, to webdev
@louis@emacs.ch avatar

In the last few days I’m experimenting with substituting CRUD API code with Stored Procedures which directly produce the endpoints JSON as a single-row scalar value. API is then just a wrapper that authenticates, validates input and streams the DB’s JSON directly to the client.

  • No ORMs, no SQL generators etc.
  • All SQL is where it should belong: in the database
  • API does only single „CALL myfunc(…)“ db calls
  • A simple centralised error handler can accurately report errors from the database
  • No weird mixed row/json columns scanning into structs and re-marshalling everything to JSON
  • Codebase is collapsing to 20% (by LOCs)
  • Stored Procedures can use wonderfully declarative SQL code
  • Response times in the microseconds, even for multiple queries, all happens inside the DB

More side effects:

  • the data model can change and evolve without touching the API at all
  • Zero deploys mean zero downtime
  • the API application is so tiny, I could easily switch it to any programming language I want (yes, even Common Lisp) without worrying about available databases libraries, type mapping and rewriting tens of thousands of lines of intermixed language/SQL-code.

The general direction of the dev industry is heading in the opposite direction. More ORMs, more layers, more database abstraction. More weird proprietary cloud databases with each their own limited capabilities and query language.

So you tell me: Is it crazy? Is it wrong? Why do I have doubts despite everything working out beautifully?

galdor,
@galdor@emacs.ch avatar

@louis

It is not a bad idea as long as your application is mostly a thin layer above stored data. If you start having to compose objects from a mix of data from the database and data computed from other sources (e.g. network calls), you'll end up having to build final objects in your code anyway.

I would also be concerned by how annoying it is iterate on PostgreSQL during development. In a traditional application, you can just modify the code, recompile and execute. With PostgreSQL functions, you'll need to drop/update the right functions/types all the time, and sometimes it gets really annoying (e.g. remove enum values). But I imagine one can build tooling to help with that.

galdor, to random
@galdor@emacs.ch avatar

I just finished my article on interactive development. Turned out to more than I expected and less that it should be. One could probably write a small book on the subject. Hopefully it will still be useful.

https://www.n16f.net/blog/interactive-common-lisp-development/

galdor,
@galdor@emacs.ch avatar

@louis Thank you I appreciate that! Writing it forced me to double check a lot of things, I learned a lot. Also (re)learned how useful CLtL2 is.

arch, to emacs
@arch@floofy.tech avatar

The new font GitHub released looks really cool, and the texture healing looks like it will do a lot for readability - I hope other fonts adopt the concept. It's just a shame I can't figure out how to get it working in .

galdor,
@galdor@emacs.ch avatar

@arch What does not work?

galdor, to emacs
@galdor@emacs.ch avatar

I just learned today that the builtin sqlite module cannot load arbitrary SQLite extensions: there is a short list of allowed extensions, and you cannot work around it without patching Emacs.

I really hope Emacs is one day freed from the FSF, this is getting embarassing.

galdor,
@galdor@emacs.ch avatar

@louis @cmeier @amszmidt
RMS and the FSF have always been about preaching some kind of moral high ground which never really made sense.

It starts with the whole copyright assignment process, and extends to dubious technical decisions. See for example the debacle of Bazaar or past GCC limitations because they were terrified of companies writing proprietary tools based on the output of the compiler (they changed their tune with the arrival of Clang when they realized they were going the way of the dodo).

This is slowly getting better (GCC dropped copyright assignment), but Emacs has a special place in RMS heart, so we're still stuck with him and the maintainers he chose (and these maintainers do a good job in general, even though I really dislike this trend of bundling up everything in the base distribution).

louis, to random
@louis@emacs.ch avatar

We've reached a point where YouTubers compare the performance of language XYZ with the "performance" of TypeScript.

And not even care to mention that TypeScript is just a transpiler, not a runtime.

Maybe I'm just too old for this.

galdor,
@galdor@emacs.ch avatar

@louis To be fair if you're expecting random YouTubers to be sources of valid and useful information on any subject, you're bound to be disappointed. They are entertainers, nothing more.

galdor, to random
@galdor@emacs.ch avatar

I've seen some of the most recents improvements on LLMs and I'm now convinced of how useful they can be as interfaces to obtain information from large amount of data.

But all large models are heavily censored, that kills the buzz for me. We need open data, not just open source.

galdor,
@galdor@emacs.ch avatar

@louis I wasn't thinking about it, but I doubt that it is entirely open. Given the controversy around uncensored models, with multiple companies, organizations and individual denouncing them as irresponsible, I doubt any company is going to take the risk to release a fully open agent.

galdor, to random
@galdor@emacs.ch avatar

A frustrating aspect of niche programming languages is that their small communities are easily dominated by even a tiny number of toxic people. In larger communities they are marginalized and easy to ignore. In small ones, they can dominate most discussions and poison the well.

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

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 emacs
@galdor@emacs.ch avatar

I just released rfc-mode v1.4.1, an mode to help navigating RFC documents. It fixes page-based navigation which was broken with Emacs 29.

galdor, to random
@galdor@emacs.ch avatar

Guess what is printed here. Yes the Go type system is completely broken. Act surprised.

galdor, to random
@galdor@emacs.ch avatar

It is often said that one of the upsides of Lisp is its homoiconicity. And yet this is not true for : various types have printed representations which are not readable, for example hash tables. Erlang is surprisingly better at this.

galdor,
@galdor@emacs.ch avatar

@louis The major downside of structures is that they cannot be redefined. CL is often praised as being an interactive language, but various parts of the language are absolutely not dynamic. See DEFPACKAGE, or the various elements which cannot be "undefined".

Again Erlang does it better (you can unload entire modules).

galdor,
@galdor@emacs.ch avatar

@louis

CLHS DEFSTRUCT:

"The consequences of redefining a defstruct structure are undefined."

http://www.lispworks.com/documentation/HyperSpec/Body/m_defstr.htm

This was probably defined this way to allow the compiler to perform various optimizations without having to expect the possibility of a redefinition later.

dekkzz76, to random
@dekkzz76@emacs.ch avatar
galdor,
@galdor@emacs.ch avatar

@louis @phenlix @dekkzz76

You need CLisp compiled with --with-threads. Which has the nice "highly experimental - use at your own risk" warning…

No real point in using CLisp though.

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