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

strypey, to internet
@strypey@mastodon.nzoss.nz avatar

"But social media also exposes movements to many vulnerabilities. The solidiarities it generates are often superficial: movement use of social media can easily devolve into repetitive messaging in echo chambers without collective gains in narrative power—a change in the stories and values that hold sway in society—or a translation to real-world militancy."

, , 2022

https://logicmag.io/pivot/when-we-were-the-media/

galdor,
@galdor@emacs.ch avatar

@strypey @screwtape @mjgardner

> Better than having them imposed down a hierarchy, surely?

I do not know where you work, but in France as in most countries, you negotiate your salary with your employer. If you are not satisfied, you are free to seek employment elsewhere or build a business yourself.

Having to play politics to get my colleagues to agree about my compensation would be a special kind of hell.

galdor,
@galdor@emacs.ch avatar

@mjgardner @screwtape @strypey

Mark, your approach is exactly what I'm leaning towards.

Funny thing is that at an individual level, optimizing for money is how you get to a point where you can afford the time to build Open Source software the way you want to.

galdor,
@galdor@emacs.ch avatar

@screwtape @strypey @mjgardner

> Hmm @galdor did you ever consider a cooperative, such as a platform cooperative?

I'd love to see an alternate way to build software, especially if it could allow the creation of quality software without the pressure of short term profit. But I have no idea on how to build a sustainable model out of the traditional way (i.e. a company).

> It seems to be a generic term for a platform software that prioritises providing the service it is intended to provide over monetisation, but there's still monetisation.

At the end of the day, you need money to build anything, and people working on it need money to live. The Open Source world is comfortable pushing for "contributions", also known as "free labour", but it is not sustainable. It's no surprise so many big tech companies love to pretend they support Open Source software (i.e. they do the minimum to profit from this free labour).

An interesting system is one where individual developers sell support and custom development on Open Source software, Sidekiq being maybe the best example.

I have no idea how to make it work with an entire team without a traditional company though.

rml, to random

"I tried , and something I noticed was that for any simple function, takes a moment to compile, which isn't acceptable for a "

Is this really the case?? Doesn't sound right at all.

and both feel faster than , for example.

https://www.youtube.com/watch?v=dCbTw9UOuS8

galdor,
@galdor@emacs.ch avatar

@rml @nilmethod

Shameless self promotion: https://www.n16f.net/blog/counting-lines-with-common-lisp/

See the "Finding files" section. TLDR you need a "wild" pathname, and there are a few non-obvious tricks.

If I were to build anything serious in CL right now, one of the first things I would do is to bypass pathnames entirely and write a proper filesystem API.

galdor, to random
@galdor@emacs.ch avatar

Daily standups and biweekly cycles are the embodiment of the assembly line mentality. They are based on the belief that you must slice and dice development into fixed parts and micro manage "human resources" at each step. Of course it does not solve anything.

galdor,
@galdor@emacs.ch avatar

@michael @gausby I'd give you that: if it works for you and your team is genuinely happy with it, then there is no problem.

galdor,
@galdor@emacs.ch avatar

@michael @gausby Daily updates via team chat are way better (at least because they are async), but still highly infantilizing. I had more autonomy as an intern.

I'm curious about this way to "signal they are blocked in their work". Surely grown ups are able to communicate without having precise slots allocated for this purpose. Unless of course you're actively hiring 12 years old employees ;)

galdor,
@galdor@emacs.ch avatar

@michael @gausby

Pretty much no one need to be up-to-date with what everyone else is doing daily, this is a huge amount of irrelevant information.

Working as part of a team has nothing to do with this level of micro control, but clearly I'm not going to convince you :)

Ultimately managers love this warm fuzzy feeling of having everyone reporting to them as often as possible. But feeling like you are on top of thing and actually being on top of things are two very different things.

dekkzz76, (edited ) to random
@dekkzz76@emacs.ch avatar
galdor,
@galdor@emacs.ch avatar

@louis @dekkzz76 Correct, in general Go is not big on immutability. I could be snarky and say there is a reason why it is fast, but let's stay polite.

Note that as an exception, strings are immutable.

hl, to random
@hl@social.lol avatar

I think that is great, and being able to use my preferred formatting for posts awesome, but I have to admit, the combined markdown for links is perhaps a /little/ over the top e.g.: [[{{< relRef other-page-name >}}][Link Text]]
I almost feel sorry for the round brackets who somehow weren't invited to this bracket fest, but perhaps the round brackets were already occupied keeping my running.

galdor,
@galdor@emacs.ch avatar

@hl Double curly brackets come from the Go template package which is used by Hugo. Not much you can do about it infortunately.

galdor,
@galdor@emacs.ch avatar

@hl You could probably do that with a custom Emacs Lisp function using completion based on the current page, indeed. Something to think about.

galdor, to random
@galdor@emacs.ch avatar

The reason you want to cut code lines at 80 columns is not to blindly respect an old tradition, it is to improve readability. This is a well known fact in typography. Being able to have three columns in your text editor is a bonus.

galdor,
@galdor@emacs.ch avatar

@rml @veer66 The 80 column thing comes from IBM in 1928 and has nothing to do with Hitler or any ideology.

And again, I never said 80 column was about typography. But keeping lines short is about it.

galdor,
@galdor@emacs.ch avatar

@rml @veer66 Obviously my point is that you cut lines short because it makes code easier to read. The original reason is irrelevant.

Also, congratulations on the fastest Godwin point I ever saw on the Internet.

galdor, to random
@galdor@emacs.ch avatar

If you're trying to sell me on a programming language which uses "+" for string concatenation, you've lost. You should not have to ask why.

galdor,
@galdor@emacs.ch avatar

@louis This is the problem.

Common Lisp and Erlang are both way better designed as languages, but their ecosystems are wastelands.

galdor,
@galdor@emacs.ch avatar

@louis As I always said, Go is a terrible language in itself. Does not mean it cannot be used productively.

You're allowed (and often required) to work with things you don't like.

louis, to random
@louis@emacs.ch avatar

I find it increasingly difficult to self-host a database and have full confidence that it runs in a fully optimized way. There are so many settings, many targeting the underlying VM/hardware. Often I don't even have enough information about the VM/hardware to know what the most optimal settings are.

PostgreSQL devs are adding tons of new features and settings with every release.

There should be a lightweight "auto" mode where PG figures out the most appropriate settings with only a few hints.

But PG is now an enterprise RDBMS primarily targeting Oracle customers. Simplicity is not a quality they expect and I understand that.

I think it is time to explore the route as an alternative. There is https://rqlite.io a fault-tolerant distributed SQLite server with an HTTP API written in Go, with automatic S3 backup and restore.

galdor,
@galdor@emacs.ch avatar

@louis I've been running PostgreSQL in production with simple setups. Defaults are good enough unless you have very large (terabytes) databases.

The only settings I update are shared_buffers (25% of available memory) and work_mem if my queries fetch and process a large number of rows. And of course the maximum number of connections.

Have you had any issue with the default configuration?

galdor, to random
@galdor@emacs.ch avatar

Gnus often asks how many messages to fetch. Annoying. If your connection is fast enough to fetch lots of messages, you can disable these prompts:

(setq gnus-large-newsgroup nil)
(setq gnus-large-ephemeral-newsgroup nil)

The first line is for groups (i.e. IMAP folders), the second for ephemeral groups (e.g. search results).

#Emacs

galdor,
@galdor@emacs.ch avatar

@rml To each its own, of course, but why would you let Gnus run automatically? I run it when I want to read my emails, why would I want to be interrupted?

I could get convinced to keep Gnus but switch to a nnmaildir backend and synchronize the directory with mbsync. I haven't found the time to test it yet.

galdor,
@galdor@emacs.ch avatar

@rml I find the lag tolerable, but I imagine it depends on the IMAP servers you are connecting to.

galdor, to random
@galdor@emacs.ch avatar

Please don't hate me, I still love Common Lisp I swear.

galdor,
@galdor@emacs.ch avatar

@michael Any public info on this game yet ? I’m always curious about Lisp projects!

galdor,
@galdor@emacs.ch avatar

@michael In general most software won't ever be mentioned on Hacker News or Reddit.

What we see on tech enthusiast websites is not necessarily representative of software engineering in the world. In practice, most big software is made of Java/C++/C#, and yes you will also see a lot of products or internal tools built with niche languages.

Something to keep in mind.

galdor, to random
@galdor@emacs.ch avatar

The Golang compiler ignoring invalid format strings even though "go vet" is perfectly able to detect them is infuriating. A compiler not reporting a clearly invalid construct is defective, there is no excuse.

And don't get me started on "%v" vs "%w".

galdor,
@galdor@emacs.ch avatar

@louis Of course not. I have been using it for years, and it works.

But part of being experienced with something is that you feel the pain of every little design error.

civodul, to random
@civodul@toot.aquilenet.fr avatar

✨ New! ✨ The 🐑 now keeps track of what happens and when.

galdor,
@galdor@emacs.ch avatar

@civodul Naïve question from someone who does not know anything about Shepherd. What do you gain compared to Systemd?

I'm aware of the controversy around Systemd (or more precisely around the way it was forced into most Linux distributions), but at the end of the day it does the job.

galdor, to random
@galdor@emacs.ch avatar

I was playing around with SpaceTraders (of course to build a Common Lisp client), and learned that Curl has a --json option. E.g.:

jo symbol=test faction=VOID | curl -s --json @- https://stoplight.io/mocks/spacetraders/spacetraders/96627693/register | jq .

Good tools make life so much easier.

galdor,
@galdor@emacs.ch avatar

@glitzersachen My pleasure. Both jq and jo are life savers (even though the jq query syntax does not make any sense to me).

galdor, to random
@galdor@emacs.ch avatar

How to scale your server software, TLDR version:

  1. Start with a monolith and one tiny server until you have actual paying clients. Then upgrade to two tiny app servers (load balancing or failover depending on the app) and a database server if needed.

  2. Update to faster servers. Repeat until there's nothing faster on the market.

  3. Rent another server. Repeat until your CFO is looking at you funny.

  4. Pay someone experienced to tell you how inefficient your software is. Fix it and go back to step 2.

The astute reader will notice that none of that includes Kubernetes, Kafka, gRPC, autoscaling, nosql, microservices… You are welcome.

Feel free to contact me for part 3.

galdor, to random
@galdor@emacs.ch avatar

I just learned that OpenSSL does not automatically use the server name TLS extension. If the server requires it, you'll get a "sslv3 alert handshake failure" error which does not really explain anything.

Fixed in the Common Lisp TLS client of Tungsten!

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.

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