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

louis, (edited ) to webdev
@louis@emacs.ch avatar

To you, what looks like a proper field naming/casing convention in a public JSON data model ?

... so many possibilities ... 🤔​

galdor,
@galdor@emacs.ch avatar

@louis No multiple choice polls with Mastodon?

provider_url and providerURL are the two most common.

Of course in Go I would always use providerURI, but we can easily argue for hours about it (RFC vs WhatWG, the eternal struggle).

louis, (edited ) to webdev
@louis@emacs.ch avatar

Is the huge additional effort to implement an API with GraphQL support as opposed to a simple JSON/REST model for a moderately complex API (with an SQL backend) in Go make sense?

Any opinions, hints, experiences, pro and cons?

galdor,
@galdor@emacs.ch avatar

@louis Last time I was in this situation, it took a lot of work to make sure there would be no GraphQL no matter what. The concept is interesting, but the ecosystem is insanely complex.

We went instead with a backend-for-frontend system, where you put a service between the core and the web applications to aggregate, transform and serve data in a way that works for frontend devs, without affecting the internal architecture.

louis, to random
@louis@emacs.ch avatar

New spam wave incoming from mastodon.social

galdor,
@galdor@emacs.ch avatar

@louis @hirad
In general when trying to understand why people do things, you look at incentives.

As long as users stay on mastodon.social, then spam is not really a problem. Of course all small instances could start blocking mastodon.social, but the Mastodon leadership does not care because they have already hinted that they have no real interest in the distributed nature of Mastodon and want to focus on big instances.

Is there a plan for a money grab or just incompetence? Impossible to know without reading minds. Infortunately and as always, all you need is a couple bad actors (even a single one is enough) to destroy a large group effort.

galdor, (edited )
@galdor@emacs.ch avatar

@louis @hirad

I don't want to be that guy, but this not surprising. Why would they bother with that?

Feel free to correct me, but my understand is that there are getting 30-40k€ a month from sponsorships and Patreon. I do not how many people they employ, but I'm pretty sure there's no motivation to hire a dedicated support/monitoring team.

And people are still going to use it in this state, so who cares? I'm guessing they are focused on growing and finding a way to monetize.

louis, (edited ) to random
@louis@emacs.ch avatar

deleted_by_author

  • Loading...
  • galdor,
    @galdor@emacs.ch avatar

    @svw @louis @Gargron
    Yes I remember getting similar good result with a trivial filter developed as an exercise when I was in college. And that was a long time ago.

    The well known "A Plan for Spam" by @paulg (http://www.paulgraham.com/spam.html) still works.

    Paul if you are reading this, your paper was a lot of fun the first time I read it and implemented the algorithm, thank you!

    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.

    galdor,
    @galdor@emacs.ch avatar

    @louis @dekkzz76 It is not designed to be a "true" functional language. It is clearly a procedural language, and there is nothing wrong with that (even though my personal preferences lie elsewhere).

    Trying to build a functional layer in Go is just going against the grain. But to each their own.

    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

    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.

    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.

    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

    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.

    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.

    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

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

    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, 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 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,
    @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, 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 I find the lag tolerable, but I imagine it depends on the IMAP servers you are connecting to.

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

    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.

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