GNU social JP
  • FAQ
  • Login
GNU social JPは日本のGNU socialサーバーです。
Usage/ToS/admin/test/Pleroma FE
  • Public

    • Public
    • Network
    • Groups
    • Featured
    • Popular
    • People

Notices by Nicolas Martyanoff (galdor@emacs.ch)

  1. Embed this notice
    Nicolas Martyanoff (galdor@emacs.ch)'s status on Sunday, 11-Aug-2024 05:01:49 JST Nicolas Martyanoff Nicolas Martyanoff

    One of the many infortunate consequences of the success of GitHub is that lots of developers are now convinced that development has to be a public, social activity.

    You do not have to release everything you build. You do not have to accept patches. You do not have to answer to emails or to issues. You do not have to fix bugs or implement features. You do not even have to continue working on your projects.

    If any aspect of your public work stresses you, remember that.

    In conversation about 10 months ago from emacs.ch permalink
  2. Embed this notice
    Nicolas Martyanoff (galdor@emacs.ch)'s status on Thursday, 01-Feb-2024 01:27:37 JST Nicolas Martyanoff Nicolas Martyanoff
    • Gosha

    @gosha I imagine you're talking about restarting the implementation (",restart-inferior-lisp"). If the slime-repl contribution is enabled, the REPL buffer should appear automatically. As for your call to QuickLisp, you restarted the implementation so obviously your project is not loaded and you'll have to do it again.

    Fortunately you rarely have to restart the implementation during development.

    In conversation Thursday, 01-Feb-2024 01:27:37 JST from emacs.ch permalink
  3. Embed this notice
    Nicolas Martyanoff (galdor@emacs.ch)'s status on Wednesday, 29-Nov-2023 20:56:53 JST Nicolas Martyanoff Nicolas Martyanoff

    The idea that you should use third party software because it is "battle tested" is a joke. Most of the software I have to use on a daily basis is buggy and incomplete.

    Use less external dependencies! When something goes wrong, you can at least fix it.

    In conversation Wednesday, 29-Nov-2023 20:56:53 JST from emacs.ch permalink
  4. Embed this notice
    Nicolas Martyanoff (galdor@emacs.ch)'s status on Thursday, 09-Nov-2023 07:03:35 JST Nicolas Martyanoff Nicolas Martyanoff

    I just learned today that the builtin sqlite #Emacs 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.

    In conversation Thursday, 09-Nov-2023 07:03:35 JST from emacs.ch permalink
  5. Embed this notice
    Nicolas Martyanoff (galdor@emacs.ch)'s status on Tuesday, 22-Aug-2023 23:09:14 JST Nicolas Martyanoff Nicolas Martyanoff

    The old "we don't want competitors to undercut us" thing is such a bad justification for switching to non Open Source licenses (e.g. Elastic, Hashicorp…). You can absolutely keep some features in proprietary extensions and make them available to enterprise clients while keeping the main software OSS.

    Cluster mode, SSO, SCIM, audit logs, account impersonation, integrations with proprietary software, the list goes on and on. And these features are usually hard to replicate, good for you.

    In conversation Tuesday, 22-Aug-2023 23:09:14 JST from emacs.ch permalink
  6. Embed this notice
    Nicolas Martyanoff (galdor@emacs.ch)'s status on Tuesday, 22-Aug-2023 23:09:12 JST Nicolas Martyanoff Nicolas Martyanoff
    in reply to
    • Bahman Movaqar

    @bahmanm In my opinion, using AGPLv3 is very good at making sure no company is going to touch your software.

    If this is what you want, great. But if you want professional developers using your software hoping that it will lead to companies paying for support/features, you need a license which is not an instant mood killer.

    In conversation Tuesday, 22-Aug-2023 23:09:12 JST from emacs.ch permalink
  7. Embed this notice
    Nicolas Martyanoff (galdor@emacs.ch)'s status on Tuesday, 22-Aug-2023 23:09:10 JST Nicolas Martyanoff Nicolas Martyanoff
    in reply to
    • Bahman Movaqar

    @bahmanm AGPLv3 does not stop Amazon from using your products, it stops them from hiding their modifications.

    But no one care about Amazon modifications in that case. AWS users will use the Amazon version because it's all magically integrated.

    This is why Elastic and other companies have a clause stating that you cannot sell access to an hosted version of the service.

    If you instead keep enterprise-oriented extensions proprietary, Amazon now has to actually develop and maintain them, this is a bit harder.

    In conversation Tuesday, 22-Aug-2023 23:09:10 JST from emacs.ch permalink
  8. Embed this notice
    Nicolas Martyanoff (galdor@emacs.ch)'s status on Friday, 11-Aug-2023 01:11:37 JST Nicolas Martyanoff Nicolas Martyanoff

    Go 1.21 introducing min and max is good. Go devs finally realized that "c := max(a,b)" is better than:

    c := a
    if b > a {
    c = b
    }

    If we're lucky in a couple years they'll finally understand why so many have been asking for the conditional ternary operator. One can dream.

    In conversation Friday, 11-Aug-2023 01:11:37 JST from emacs.ch permalink
  9. Embed this notice
    Nicolas Martyanoff (galdor@emacs.ch)'s status on Tuesday, 08-Aug-2023 20:18:54 JST Nicolas Martyanoff Nicolas Martyanoff

    TIL you can use tr to replace all sequences of multiple whitespaces to a single one with "tr -s ' '" ("s" for "squeeze"). Very useful for example when you want to use cut but columns are separated by multiple whitespaces. And yes, "-s" for tr is part of POSIX.

    In conversation Tuesday, 08-Aug-2023 20:18:54 JST from emacs.ch permalink
  10. Embed this notice
    Nicolas Martyanoff (galdor@emacs.ch)'s status on Tuesday, 08-Aug-2023 20:18:52 JST Nicolas Martyanoff Nicolas Martyanoff

    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.

    In conversation Tuesday, 08-Aug-2023 20:18:52 JST from emacs.ch permalink
  11. Embed this notice
    Nicolas Martyanoff (galdor@emacs.ch)'s status on Tuesday, 08-Aug-2023 20:18:51 JST Nicolas Martyanoff Nicolas Martyanoff

    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.

    In conversation Tuesday, 08-Aug-2023 20:18:51 JST from emacs.ch permalink
  12. Embed this notice
    Nicolas Martyanoff (galdor@emacs.ch)'s status on Tuesday, 08-Aug-2023 20:18:48 JST Nicolas Martyanoff Nicolas Martyanoff

    This is a screenshot of a Go project I'm working on. But sure, #Lisp expressions are bad because they have too many parenthesis… And of course you cannot manipulate Go expressions the same way as Paredit.

    In conversation Tuesday, 08-Aug-2023 20:18:48 JST from emacs.ch permalink

    Attachments


    1. https://media.emacs.ch/media_attachments/files/110/824/472/632/786/665/original/0bb8e43973da35a5.png
  13. Embed this notice
    Nicolas Martyanoff (galdor@emacs.ch)'s status on Tuesday, 08-Aug-2023 20:17:16 JST Nicolas Martyanoff Nicolas Martyanoff
    in reply to
    • Elias Mårtenson

    @loke I'm well aware of what a pointer is.

    By masking the pointer type in some cases but not others, you are making your code inconsistent.

    You also hide useful information: if a function accepts a parameter of type ssh_key, it is reasonable to wonder if it is a structure passed by copy, a pointer to something you must allocate yourself, or something more complicated altogether.

    One good thing with C is that what's happening is usually obvious. Hiding types because you cannot be bothered to write "struct ssh_key *" is a terrible idea.

    You may think it's ok because you know that "ssh_key" is a pointer type. But when you have worked with very large C codebases, you learn than you cannot expect to remember what is behind each typedef and must keep things explicit.

    In conversation Tuesday, 08-Aug-2023 20:17:16 JST from emacs.ch permalink
  14. Embed this notice
    Nicolas Martyanoff (galdor@emacs.ch)'s status on Tuesday, 08-Aug-2023 20:16:39 JST Nicolas Martyanoff Nicolas Martyanoff
    in reply to
    • Elias Mårtenson

    @loke It makes it hard to reason on what's happening.

    For example in libssh, some functions take a "const ssh_key *". So now you retain the explicit pointer type in some cases but not others.

    Especially annoying for people binding the library.

    In conversation Tuesday, 08-Aug-2023 20:16:39 JST from emacs.ch permalink
  15. Embed this notice
    Nicolas Martyanoff (galdor@emacs.ch)'s status on Tuesday, 08-Aug-2023 20:16:36 JST Nicolas Martyanoff Nicolas Martyanoff

    If you're writing C code and you are hiding pointer types with typedef, there is a special hell waiting for you.

    I'm looking at you libssh with "typedef struct ssh_key_struct* ssh_key". It's already bad enough to hide "struct".

    In conversation Tuesday, 08-Aug-2023 20:16:36 JST from emacs.ch permalink
  16. Embed this notice
    Nicolas Martyanoff (galdor@emacs.ch)'s status on Tuesday, 08-Aug-2023 20:14:56 JST Nicolas Martyanoff Nicolas Martyanoff

    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.

    In conversation Tuesday, 08-Aug-2023 20:14:56 JST from emacs.ch permalink
  17. Embed this notice
    Nicolas Martyanoff (galdor@emacs.ch)'s status on Wednesday, 26-Apr-2023 20:39:09 JST Nicolas Martyanoff Nicolas Martyanoff

    How to scale your server software, TLDR version:

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

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

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

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

    In conversation Wednesday, 26-Apr-2023 20:39:09 JST from emacs.ch permalink
  18. Embed this notice
    Nicolas Martyanoff (galdor@emacs.ch)'s status on Thursday, 09-Mar-2023 18:50:22 JST Nicolas Martyanoff Nicolas Martyanoff

    I spent 30min entertaining the idea of building a no-BS european registrar following the merger of Gandi. Then I read about ICANN requirements. Got it. This is why there are so few options on the market.

    In conversation Thursday, 09-Mar-2023 18:50:22 JST from emacs.ch permalink
  19. Embed this notice
    Nicolas Martyanoff (galdor@emacs.ch)'s status on Thursday, 09-Mar-2023 18:50:12 JST Nicolas Martyanoff Nicolas Martyanoff
    in reply to
    • Alexander Kamiński

    @xlii Most regitrars out there are just hosting companies with domain management on the side. Most of the time you get a crappy interface, limited security, zero or bad support…

    Gandi is an outlier: it is mostly centered around domains (they have diversified), everything about their website is simple and practical, and they have excellent support. They have built a reputation around these values.

    They have merged with an entity which is simply not a tech company. Gandi's CEO will become *non executive* director. History is full of stories like this one, and everyone knows how it will end up.

    Porkbun (and others) has a similar reputation, but it is US based.

    In conversation Thursday, 09-Mar-2023 18:50:12 JST from emacs.ch permalink

User actions

    Nicolas Martyanoff

    Nicolas Martyanoff

    Contrarian software engineer. Hire me to solve your technical problems.$argon2id$v=19$m=64,t=512,p=2$0rwNagYG9nw58bd3D5HBfw$ZDMVWlX+adPhtQKcnrqI5A

    Tags
    • (None)

    Following 0

      Followers 0

        Groups 0

          Statistics

          User ID
          105635
          Member since
          9 Mar 2023
          Notices
          19
          Daily average
          0

          Feeds

          • Atom
          • Help
          • About
          • FAQ
          • TOS
          • Privacy
          • Source
          • Version
          • Contact

          GNU social JP is a social network, courtesy of GNU social JP管理人. It runs on GNU social, version 2.0.2-dev, available under the GNU Affero General Public License.

          Creative Commons Attribution 3.0 All GNU social JP content and data are available under the Creative Commons Attribution 3.0 license.