Threads for adam_kruszewski

  1. 2

    Sometimes it is useful or even required from the performance point of view to have computation near the data just to not transfer it through the network - not talking about data validation but, for example, reporting. There are other solutions to reporting problems but most straightforward and requiring often less code is to just run a stored procedure. With all of the drawbacks of stored procedures.

    1. 2

      Sometimes it is useful or even required from the performance point of view to have computation near the data just to not transfer it through the network

      This is a really good point on data locality. If your database server’s hardware specs are significantly better than your app servers, then this could help improve performance a lot

    1. 4

      So I can just take a photo of someone’s vaccine QR-cert and use that to jump over the paywall? No, I won’t do that because that would be lying, and I’m a good person who does not lie.

      1. 5

        You could, but identity makes “limit one per customer” easy to enforce.

        1. 3

          that just means the real person who owns the ID may get locked out if their thing is “stolen” and used before they use it.

          1. 1

            Also some people were sharing pictures of theirs after vaccination - and we have an instant problem.

        2. 2

          This seems a bunch like SSNs. A unique but easily copied fact.

        1. 5

          Bullet journalling has worked really well for me. Coupled with a personal wiki, it’s very powerful. Has anyone else had serious success?

          1. 6

            Yes, it’s great. I’ve been using it for 2,5 years in a manner similar to the article: Not artistic, just minimal and functional.

            1. 2

              Same here, been using Bullet journals for home and work for about three years, and really like it.

              I previously had separate written books for work and home, but since Covid am now using a paper journal (small Leuchturm 1917 pocket book) for personal activities, and Emacs journal mode and org mode for work. Mostly because I don’t have the desk space at home to lay out my old work journal, but I’m enjoying being able to quickly take notes in meetings, work with tables, embed links, and keep track of citations from co-workers.

              1. 2

                Googling “journal mode” yielded a lot of org-journal links, is that what was meant? I’m curious

                1. 2

                  Ah, correct, org-journal is the proper name. I had forgotten that it was part of org.

                  1. 1

                    I’m using org-journal for this purpose and it works really well for me. I do use it with a weekly file not separate daily files (for which it is designed it seems) and have each day as a top level org heading.

                2. 1

                  What do you use for a personal wiki, and how do you take advantage of it with bullet journaling?

                  1. 2

                    I use Roam, mostly. Also, I keep todos and logs in the BuJo but information and such in the Wiki. Does that make any sense?

                    1. 1

                      Yes. Thanks.

                1. 11

                  One of my most used non-obvious features of IntelliJ-based IDEs is Local History; basically a permanent undo history of a file, with a diff viewer for each change. It’s not always the most convenient (or reliable), and I often still end up doing the undo/redo thing mentioned in the article, but it comes in useful often enough when I need to look at something from 5 minutes (or days) ago that I didn’t anticipate needing to look back on.

                  1. 3

                    Yes! I’m amazed this is not in Visual Studio. IntelliJ just saves your changes all the time and you can go back 5 minutes. I don’t need it often but it’s a life saver.

                    1. 2

                      Eclipse had the same feature since I remember - in times very useful indeed.

                      1. 0

                        wow, TIL!

                      1. 16

                        You know, it would be nice to have a “simple HTML” mode for lobsters. We’re most of the way there, but there are some actions that require JS. Notable examples include voting and replying to comments. I’m posting this comment from a text-mode browser, but if someone replies to me and I want to reply to them, I’ll need to spin up firefox.

                        Would patches be welcome? I’m willing to put my money where my mouth is, so to speak. Where would I start?

                        1. 18

                          Would patches be welcome? I’m willing to put my money where my mouth is, so to speak. Where would I start?

                          @pushcx has stated in the past that he’s willing to accept patches to the Lobsters codebase that makes JS optional for replying/voting/&c. (I think. It was a while back and I’m not entirely sure I remember correctly.)

                          I’m posting this comment from a text-mode browser

                          Just FYI: there is a mailing list mode that you can enable from your settings, and which can be used to comment and reply on stories without a browser. I’m using it right now to reply to you :^)

                          1. 11

                            Yes, that’s correct. I’d take patches to make js entirely optional. A contributor doesn’t need to do it all in one PR, either.

                            1. 7

                              Speaking of, I don’t know how stupid I am for waiting this, but an NNTP mode would be very neat.

                              1. 3

                                technetium e-mailed

                                Well what do you know!

                                1. 2

                                  That’s awesome. I never realized you could use mailing list mode to reply to comments. I’ve been using it to receive story submissions for a while.

                                  FWIW I tried replying to you with it, but since the “Technetium has replied to you” email didn’t come through mailing list mode, my reply got dropped on the floor.

                                2. 12

                                  I don’t find the small amount of Javascript objectionable.

                                  Lobste.rs is as about as simple as you can get without having to do a bunch of clunky navigation for commenting etc.

                                  1. 20

                                    I do not find lobste.rs use of JavaScript egregious most of the time. But when I’m in my living room, using my Raspberry Pi, spinning up Firefox is kind of annoying. And I find the phone to be suboptimal for writing anything more than “k thx lol”.

                                    I’m blind and I use a screen reader. I’m not complaining about anything; I’m interested in adding something optional to the site to help me and perhaps others, not in imposing “clunky navigation”. I have skin in the game, and skin in the game is a huge driver of open source.

                                    1. 8

                                      It is quite disappointing if we look at the web in absolute terms, that we got to the point where people even need to state that they have skin in the game. Everyone has skin in the game. Here I am today without any disability… who knows about tomorrow, my sight could go bad for whatever reason, I could have an accident and end up in a wheelchair. Accessibility should be everyone’s concern, specially so where it is basically free as with simple HTML.

                                      In browser javascript is a tremendously useful technology, I’m not challenging its merits by any means. But the fact that virtually no one resisted the temptation of adding if for aesthetic reasons is a sad outcome. A huge percentage of the web would work just fine without javascript. Sure, some things could have a bit of a humbler look, but it is sad and conter productive for us as a species to give that much preference to the looks instead of content.

                                      It mirrors a society where things like braille, accessibility ramps or even public transportation don’t exist because they don’t look good to those who don’t need them. The developed world has such things and their gains are well studied, not to mention the ethical obligation they are in themselves.

                                      1. 3

                                        I must admit I totally forgot about the accessibility angle, and that’s doubly bad because my wife is blind.

                                        I think that if JS is used in a way that’s prejudicial to a11y, it should be reworked/removed. I was reacting to the puritanical aversion to JS in all its forms because some bad actors misuse it for ad tracking etc.

                                        1. 4

                                          Yes, there are legitimate uses for JavaScript. Yes, there are sites that use it in a positive, user-experience-enhancing, non-egregious way. Case in point: lobste.rs. However, tons of sites use it for user-hostile purposes, such as ad-tech and tracking. And another fraction of sites use it to add glitz and bling that breaks the web for folks like me. I do on some level object to the proposition that in order to use a website, I need to let randos execute un-vetted code in a Turing-complete language on my devices. Again, lobsters is the exception rather than the norm: I can easily vet the code, and I trust the people who are in charge.

                                          I don’t know how to square the above tangle of conflicting assertions. I’d love a solution that works for all of the stakeholders – excluding surveillance capitalists; they can pound sand.

                                          Another point to note here is that we are in the middle of a climate crisis. “Buy a faster / more capable machine” is not an acceptable answer to “the web is too complex for my device”. It never was, and that’s doubly true right now.

                                          1. 2

                                            I can quickly think of another bunch of disadvantages too: battery life, mobile network congestion, device longevity, load times, development costs, latency (html is a single request from primary domain), security, etc.

                                            Further, i’ve seen websites that I’m guessing destroy accessibility by using fancy things likes clickable divs instead of actual buttons.

                                      2. 4

                                        Making the vote things work without javascript should be trivial: the same UI, just put them in a form object. Onsubmit javascript, ajax submit it instead. But without javascript, it would POST the appropriate data and then send you back where you started.

                                        It is right now an <a> element it appears, which is a bit nonsensical anyway, a form with a button (but styled the same way) is surely better for several reasons.

                                        1. 1

                                          It might actually stay as an anchor html element I think. Should be even easier then (at least should be less code to change/add). I guess one will need just to implement the web endpoint that would redirect after registering the upvote and can leave the actual javascript stuff in, just short-circuit the event at the end so if javascript is present it will do the upvote as it now does, no change in most of the code needed, and if it is not present the normal link behavior will do the job.

                                          Haven’t looked at the code base, just guessing based on my own experiences. So take it with a pinch of a salt.

                                          1. 3

                                            Might be fun with webbrowser that want to preload certain links.. Suddenly you’ve upvoted most comments in the thread you were reading. I think @adam_d’s idea is better, to have a form POST.

                                            1. 1

                                              Good point! There is always rel=“nofollow” option for the preloading problem and browsers as far as I know should not prefetch if the link does not have rel equal to “prerender”, “prefetch” or “dns-prefetch” but I guess there might be some broken web browsers so it would be safer to go with forms.

                                            2. 2

                                              Semantically, a link is always a GET and gets are never supposed to have side effects. (I know they do a lot in practice but they aren’t supposed to - and this is a potential security problem too since doing a XSRF for a get is trivial; just put an img tag on your website and all your visitors who happen to be logged into lobsters will automatically upvote you! (unless your session cookie is explicitly SameSite=Strict of course).)

                                              So since it changes something, it should be a POST, and that means html form. But you can css style it so it looks identical to the current button, and encapsulate the html in the template so even developers can kinda forget about it too.

                                              Though the current code isn’t even a link, it is just an anchor w/o href, still the same logic applies.

                                              1. 1

                                                You are right. Just checked again and HTTP protocol states that GET’s should be idempotent just as you said. even if it is so easy to use them as not to ;-) My bad.

                                                Cheers, a.

                                      1. 2

                                        Cool idea.

                                        One other solution that may require less work, depending on your email hosting and mobile client application (assuming you’re willing to install one) – use rules.

                                        Let’s say you host your own mail and you allow literally-anything@mydomain.com land in your inbox. This is called a “catchall” or “wildcard” alias in the parlance of a provider like Fastmail. Now let’s say your email client allows the creation of rules and push notifications associated with rules.

                                        Create rule in email client:

                                        1. Trigger is to: limited-availability-foo-corp-product@yourdomain.com
                                        2. Action: Push Notification

                                        Voilá!

                                        1. 1

                                          Most smtp servers (and email providers) also allow appending “+anything” to email addresses, so might not really need a catch-all account - normal accounts should work too. So just set up a rule on “my.email+foo-corp-product@gmail.com” and it will still end up in your inbox. The only problem you can encounter is some email validation rules on some websites are incomplete/broken/RFC-not-compliant and doesn’t allow “+” characters, but I think those are a minority (I’m using such addresses with the “+” suffix to know the source of spam I’m getting ;-))

                                          1. 2

                                            I use the catchall technique for the same reason :)

                                        1. 5

                                          Wow. Half-ish of the users who responded use evil mode or similar to have vi key bindings. That surprises me even though I frequently use emacs that way myself.

                                          I guess the old joke that “Emacs is a great system. It just needs a decent text editor” had more truth to it than I imagined.

                                          1. 1

                                            Indeed I believe I would not stick with Emacs if there would not be VI support. I use Emacs only for org-mode, but now for years. And I remember that at the beginning I just installed standard Emacs and was researching how to enable evil mode. Later I switched to Spacemacs. This works for my case, though for coding and console work I still reach mostly to VIM.

                                            1. 1

                                              It looks it correlates with the Doom + Spacemacs user numbers and as far as I remember they have ViM keybindings as defaults or at least suggested as defaults. I know they helped me as a long time ViM user with easing the emacs adoption curve.

                                            1. 8

                                              I would never make use of another internet service based in Germany.

                                              I had a VPS with Nexus Bytes in Germany. The drive that it was on was seized by the German authorities – and all of the innocent parties lost their servers along with whoever had committed an offence. They never even contacted the server admin. According to him, when clients filed service requests he had the server checked, only to learn that the hard drives had been taken.

                                              I’m self-hosting at home now. It’s probably the best idea anyways.

                                              1. 5

                                                People in replies seem to be panicking and changing locations or providers, but I feel like your case is more of an exception than anything. I’ve been hosting a lot in several servers located in Germany for the past several years, all of them hosted at half a dozen (small and large) providers, and I’ve had absolutely zero issues involving anything like that.

                                                Besides, if someone can dive in and take out drives without your server admin noticing or being informed by datacenter staff… you have bigger issues.

                                                1. 2

                                                  You’re quite right.
                                                  My initial reaction in this thread was, I admit, quite an overreaction.

                                                  Not only that, but I am too busy (lazy) to change my box’s location at the moment, but I no longer feel like it’s an urgent issue.

                                                2. 4

                                                  The Linode box my site runs on is located in Germany. Will be changing locations ASAP.

                                                  1. 2

                                                    The drive that it was on was seized by the German authorities –

                                                    wait what. No redundancy?

                                                    1. 2

                                                      Super-cheap service. Back it up yourself. I had a bash-scripted backup of my files and configs, but I hadn’t done one for a bit. That part’s my fault. I can’t say how others were impacted, but judging from the admin’s response, he was dealing with a number of tickets.

                                                      1. 1

                                                        It might depend on how the provider had backup strategy set up – if backups or redundant servers/drives also included the offending material[1] that was the cause of seizure then those also had to be taken by the authorities.

                                                        [1] because for example they backup the whole machine “all in one go” and store it together for all clients using VMs on this host - which is probably the easiest to set up.

                                                        1. 2

                                                          I live in this fantasy world where people use HA clusters, so that you could remove a server or two without any issues for the VMs running on them. But I guess you get what you pay for…

                                                          1. 2

                                                            That doesn’t look so clean in reality I think - when the police knocks, they don’t have procedures that says - ask nicely and give time for a graceful transition/shutdown - their job is to secure the illegal material and that’s what they do and at least in some instances it is not that they take just the hard disks out - they can even take servers, the more the merrier, so it may even include the whole ha-cluster if present (in most instances I guess policeman is not a trained IT engineer to know where those illegal activities are or are not performed).

                                                    1. 2

                                                      It’s my understanding that AGPL3 mean you also have to open source any application that uses this library?

                                                      1. 2

                                                        If the javascript snippet one have to put on their web page to have analytics work [1] is also covered by AGPL3 then it seems that would be the case. But I’m not a lawyer.

                                                        [1] don’t know if that’s the case, just assuming as they are competing with google analytics that does this.

                                                        1. 3

                                                          In other comment they stated that they will keep MIT for the JS parts of the system for that reason.

                                                          1. 1

                                                            Thanks for clarifying, in such case this shouldn’t be a problem for anyone (beside those who just don’t like projects changing licenses as it indicates potential future risk factor).

                                                      1. 7

                                                        Mail-in-a-Box does everything for me or tells me what I need to do.

                                                        I’d been annoyed at my emails ending up in spam but chalked it up to the perils of self-hosting. A couple weeks ago I decided to look into it and found in the admin panel, all the params I needed to add to my DNS records for DKIM, SPF, and more.

                                                        I want to figure out how to create a similar package for JMAP.

                                                        1. 4

                                                          Mail-in-a-Box, for those who haven’t checked it out yet: https://mailinabox.email/

                                                          1. 1

                                                            Another “batteries included” solution that holds your hand is Mailcow: https://github.com/mailcow/mailcow-dockerized/

                                                          1. 7

                                                            I actually stopped doing this a little while ago partly because of the user environment stuff mentioned in the article but mostly because of some oddities that crept up when connecting to my machine over SSH and attaching to the Emacs daemon. Sometimes it would refuse to start a TTY client for reasons that remain a mystery.

                                                            As for the environment stuff, I consider exec-path-from-shell to be an awful hack that I simply can’t trust. (Going so far as to say “it gives Emacs a bad name” is on the cusp of acceptable, but too damning.) If you’re going to set enviroment variables for use by Emacs started through systemd, then you should look at environment.d. If you know it’s going to be started through GDM, then you can take advantage of the fact that $HOME/.profile is sourced by /etc/gdm3/Xsession.

                                                            And if you do use environment.d, then beware of the contents of /usr/lib/environment.d/99-environment.conf on Ubuntu 20.04 (and possibly others) that sets PATH without any regard for the current value; it will probably be the last environment conf file run if you follow the number-prefix model. You can run

                                                            SYSTEMD_LOG_LEVEL=debug /usr/lib/systemd/user-environment-generators/30-systemd-environment-d-generator
                                                            

                                                            to see how the environment conf files will be processed.

                                                            1. 3

                                                              Recently I have stumbled on https://gitlab.com/blak3mill3r/emacs-ludicrous-speed/ and have decided to recreate the results with simple shell scripts combined with sudo (so without a service at all, and directly using criu not the python wrapper) and it does make emacs process restore blazing fast as advertised.

                                                              When dumping “emacs –daemon” it runs within my user’s own environment - no magic required, and is pretty much good enough for me.

                                                              Only hiccup I had was the need to recompile Emacs without dbus for the dump process to work flawlessly but that’s a small price I think (criu can’t dump a process with connected unix sockets and disabling dbus in emacs was easier than shutting down dbus daemon).

                                                              I’m running this setup just for couple of days only, so can’t say anything about stability of the approach but even now I can say I love it. I might dump the approach (pun intended) when native compilation gets merged to master just to have even less apparent complexity. I guess it won’t be faster - hard to beat restoring from a process image probably but might be good enough.

                                                              1. 2

                                                                Thanks for the feedback! I’ll add a mention of environment.d in the article.

                                                              1. 1

                                                                A historical debugger for .NET and Java. You really get to appreciate all the hard work people put into writing virtual machines and compilers (ahead of time and jit).

                                                                1. 17

                                                                  I can happily recommend the Ergodox EZ (https://ergodox-ez.com/). It really holds up to expectations. I’m using it at my day job and also at home.

                                                                  1. 4

                                                                    The Ergodox legitimately changed the way I see peripherals and even at a deeper level computer interaction. The combination of ortho-linear and split, thumb clusters, and layers made me feel like I’d never been using a keyboard properly my whole life. I’ve been chasing that same thing for mouse input ever since. Obviously I highly suggest haha.

                                                                    1. 1

                                                                      I’m very interested in whether anyone has found a mouse that is similarly game-changing. I think part of what makes Ergodox EZ so impressive is its open source nature, including the firmware, configuration tools, and hardware. I haven’t found any meaningfully open source mouse in production. I just might make a separate post on Lobste.rs asking for mouse recommendations!

                                                                      1. 2

                                                                        I can’t speak for open source but the Logitech MX Ergo has been wonderful.

                                                                        1. 2

                                                                          Not a game changer in the way you’re talking about (open source) - but from a personal ergonomic perspective I got similar benefits to the split ortholinear keyboard from a vertical mouse and prefer to pair the two if possible. I’m not aware of a similarly successful open source vertical mouse design. I use a Kinesis VM4.

                                                                          1. 1

                                                                            I also recommend it. Also have it paired with the ergodox. Very happy with this setup.

                                                                      2. 3

                                                                        I got one a few weeks ago and I’m loving it. It has user swappable key switches which make it super customisable. You can get the exact feeling you want on each individual key if you want to.

                                                                        1. 3

                                                                          I have an Ergodox EZ and I also have a Kinesis Advantage2. I really prefer the Advantage, but both are great keyboards.

                                                                          1. 3

                                                                            I went with Redox (https://github.com/mattdibi/redox-keyboard) - a modified version of Ergodox which is slightly smaller. If one is living in EU and don’t have time/supplies/heart for hardware hacking you may order one from falba.tech (I’m not affiliated, just a happy customer).

                                                                            1. 3

                                                                              I bought an Ergodox EZ this past summer and it’s one of the best decisions I’ve made. It was expensive but certainly worth it- the quality is great. I plan to eventually build a second one when I get the time.

                                                                              1. 1

                                                                                One of the best choices I made! I’m using the Ergodox Infinity, but that’s kinda similar. Makes typing super comfy. I’m using my mouse in the middle (when using the mouse…).

                                                                              1. 14

                                                                                Very good article @burntsushi.

                                                                                I think what ends up happening—and this isn’t exactly an original insight—is that the negativity eclipses the neutral and the positive. The negative interactions stick in my memories and make it difficult to remember all the good that has come from being a FOSS maintainer. Even sitting down and writing the list above helped me remember how much positivity there is in FOSS. It was almost cathartic.

                                                                                I believe it takes something like six positive interactions to cancel out one negative interaction.

                                                                                One of my frustrations is that not enough people take the time to explain how to interact better. Communicating over text is hard. Really hard. In person, feedback is immediate so if I say something awkwardly phrased then I can correct it immediately, especially when the other party acts negatively (which doesn’t even need to be verbalized, but can be subtle body language clues).

                                                                                Over text, you just make an awkward comment and then there is no feedback at all and I can’t correct it. Effective communication over text is a learned skill.

                                                                                This is why adding comments like “hey, this is how that comment came across to me” is so important, as it provides the kind of feedback you have in real-life but is absent in text-only communication.

                                                                                I also don’t like the “code of conducts” that are basically just a lazily written bullet list rephrasing “don’t be an asshole” in several ways – something everyone already agreed on in the first place – and then provides an in-depth explanation on how to punish people. That’s just not helpful in getting people to improve their behaviour, and a massive distraction at actually improving the situation.

                                                                                1. 7

                                                                                  I also don’t like the “code of conducts” that are basically just a lazily written bullet list rephrasing “don’t be an asshole” in several ways – something everyone already agreed on in the first place – and then provides an in-depth explanation on how to punish people.

                                                                                  I have seen and experienced so much harassment coming from CoC-toting projects that participation in projects with CoCs has mostly become a red flag and an immediate “no thanks” for me.

                                                                                  A project will have to do something really interesting and important to override this stance (the only project that managed to do this recently was Rust, but only barely).

                                                                                  1. 3

                                                                                    Every unwanted behaviour seen from far enough can be summed up as “being an asshole”. CoC need to spell out examples because we do not share a definition of what being an asshole is and giving most common problematic behaviours as explicit descriptions helps to draw a sketch of what is not wanted. Which of course does not mean that every CoC does it well.

                                                                                    1. 12

                                                                                      The problem is that many don’t even seem to “spell out examples”, but rather just list a bunch of terms as unwanted behaviour which are very open to interpretation. The “Contributor covenant” - by far the most popular CoC – does this. What it notably doesn’t do is actually give people guidance on how to avoid negative interactions, explain how certain behaviours/phrasings might be perceived, how people can do better, how to constructively handle things when a conflict does arrive in such a way that everyone leaves the interaction on a positive note, etc.

                                                                                      It’s just a mostly useless list of things almost everyone already agrees on. It provides no guidance, no advice, or anything of real value at all. No one who has read it will be one iota better at participating. Making such a list is easy whereas giving the above guidance is hard, hence my comment calling it “lazy”.

                                                                                      Now, if your goal is communicate “do this, or else be banned” then okay, fair enough. But I don’t think that’s very helpful or useful for anyone involved.

                                                                                      1. 3

                                                                                        What it notably doesn’t do is actually give people guidance on how to avoid negative interactions, explain how certain behaviours/phrasings might be perceived, how people can do better, how to constructively handle things when a conflict does arrive in such a way that everyone leaves the interaction on a positive note, etc.

                                                                                        I’m still collecting links on all of that both for continuous personal improvement and handing out to others trying to improve themselves. You or other readers can feel free to message me any that you have which you thought were really helpful. I’ll pass them along to others.

                                                                                      2. 2

                                                                                        CoC need to spell out examples because we do not share a definition of what being an asshole is

                                                                                        That’s nice in theory, but in practice I think it’s actually harmful to spell out specifics too much. It leads to people rules lawyering instead of discussing things based on general principles. I don’t think we need to share a definition of what being an arsehole is. Our definitions are close enough, and if they really differ a lot then we should have our own separate communities with our own standards.

                                                                                        This is a pretty off-topic aside, but I see the same contrast in how Americans tend to think of important issues (as issues relating to the interpretation of an important document) vs how Britons tend to think of important issues. The ‘rights-based’ approach in America tends to lead people towards rules lawyering about the interpretation of particular passages of pretty ambigious text. It’s anecdotal, but I see a lot of appeals to the constitution in American discussions of what the law should be, but more appeals to ethics, morality, religion, rule of law and other general principles in British discussions of what the law should be.

                                                                                        The purpose of this admittedly off-topic point is that I think we’d be better off with codes of conduct that say ‘Don’t be a dick’ and then leave being a dick up to the decision of the people in charge on a case-by-case basis, rather than specifiying a set of rules that is only going to get rules-lawyered by the person that’s being an arsehole. Like, if the person is being an arsehole just tell them to stop and if they don’t, kick them out. ‘Oh but technically your rules don’t say anything about [arseholish behaviour type 1242]’ should be met with ‘yeah but you’re an arsehole, goodbye’ not a big debate around whether the rules are comprehensive enough.

                                                                                        In the real world we have laws because our communities are so big we can’t have consistentcy and fairness without them. In an 99.9% of open source projects simply giving 1-5 people the right to decide what is appropriate behaviour seems much more sensible. If you’re having so many issues you need to write down a set of rules for dealing with them, that’s a pretty big red flag!

                                                                                      3. 1

                                                                                        I also don’t like the “code of conducts” that are basically just a lazily written bullet list rephrasing “don’t be an asshole” in several ways – something everyone already agreed on in the first place – and then provides an in-depth explanation on how to punish people.

                                                                                        I agree that this kind of CoC is not ideal. Have you seen examples of really effective CoCs? I would love to see examples of what has actually worked well before.

                                                                                        1. 6

                                                                                          The places I’ve seen CoCs working the best were not software projects but conferences. I’ve seen many instances where CoC acted as a good mechanism to prevent and react to abusive people.

                                                                                          1. 4

                                                                                            Interesting, in my opinion, take on the subject sircmpwn published recently: https://drewdevault.com/2020/01/17/Effective-project-governance.html

                                                                                            1. 2

                                                                                              ZeroMQ proces by Hintjens: https://rfc.zeromq.org/spec:42/C4/

                                                                                              Basically extends sircmpwn’s one with maintainers and an explicit default-to-merge policy.

                                                                                          2. 4

                                                                                            Have you seen examples of really effective CoCs?

                                                                                            Don’t know if effective, but the coreboot CoC was a result of lots of debate to counter the fear/threat of a “weaponized CoC”. It’s based on a (by now rather old) version of the Citizen Code of Conduct, which was perceived to be less harsh than the Covenant, and we added to it to resolve further concerns:

                                                                                            • “Remember that people might be sensitive to other things than you are.”
                                                                                            • “Most of our community members are not native English speakers, thus misunderstandings can (and do) happen. Assume that others are friendly and may have picked less-than-stellar wording by accident as long as you possibly can.”
                                                                                            • “Using this code of conduct aggressively against other people in the community might also be harassment. Be considerate when enforcing the code of conduct and always try to listen to both sides before passing judgment.”

                                                                                            The first one is an appeal to remember that the project has global reach: what’s appropriate with the buddies you grew up with while you’re in your living-room may not be appropriate when broadcasted to the world (even if you’re, in fact, in your living-room). It may be received in a horribly unintended way.

                                                                                            The second one was added because some folks come across as rather harsh and inconsiderate, but their only flaw is a limited command of the English language. We don’t kick out folks for stuff like that!

                                                                                            The third one is the “don’t abuse the anti-abuse tool” clause. I don’t think we’d have achieved rough consensus on adopting the CoC without that one.

                                                                                            Generally speaking, I found it the most effective though to already handle minor transgressions in a friendly manner (pointing out that things veered off towards the edge - friendly tone, no sanctions, open to discussion) and point out the global reach issue. It’s a real issue, it doesn’t delve into the political fight of the day, and it allows people to adapt their behavior to community norms while in the community without feeling knocked down for being who they are.

                                                                                            1. 1

                                                                                              I found a few when I searched last year which at least attempted it to some degree, but I’m not aware of any that I really like. I’ve written draft versions of my own CoC and companion rationale document, which I’d like to put out there with some fanfare in the future, but it’s not ready yet (it’s actually still in a rather rough state).

                                                                                              Feel free to contact me (email on profile) if you’d like to read and criticize drafts and/or collaborate in the pre-release. I won’t have much time in the coming weeks though as I’m focused on other things, but I’d very much like to pick this up in a few month’s time.

                                                                                          1. 1

                                                                                            https://adam.kruszewski.name/ - A very low traffic hugo based static-html blog; posts written in org-mode markup, theme “borrowed” from someone else and tweaked slightly. I plan to launch gopher server alongside.

                                                                                            1. 3

                                                                                              But can you do a static portable binary from that Lisp code, comparable to C version in terms of file size?

                                                                                              1. 13

                                                                                                You absolutely can, on a system that has Lisp based runtime instead of C based runtime.

                                                                                                1. 6

                                                                                                  Well-put. Probably still could with a Lisp designed for no-overhead interoperability with C compiled with a zero-runtime profile kind of like Ada/SPARK do. I don’t know if one like that currently exists, though.

                                                                                                  1. 4

                                                                                                    Not sure if Embeddable Common Lisp (ECL: https://common-lisp.net/project/ecl/ ) fits the bill but I guess it might?

                                                                                                    1. 2

                                                                                                      I forgot about ECL. Found this in its docs:

                                                                                                      “ECL (ECL for short) uses standard C calling conventions for Lisp compiled functions, which allows C programs to easily call Lisp functions and vice versa. No foreign function interface is required: data can be exchanged between C and Lisp with no need for conversion.

                                                                                                      ECL is based on a Common Runtime Support (CRS) which provides basic facilities for memory management, dynamic loading and dumping of binary images, support for multiple threads of execution. The CRS is built into a library that can be linked with the code of the application. ECL is modular: main modules are the program development tools (top level, debugger, trace, stepper), the compiler, and CLOS. A native implementation of CLOS is available in ECL. A runtime version of ECL can be built with just the modules which are required by the application.

                                                                                                      The ECL compiler compiles from Lisp to C, and then invokes the GNU C compiler to produce binaries.”

                                                                                                      That’s exactly the kind of design I’m talking about. It even matches the calling conventions for easy interoperability like I suggested for every language trying to [incrementally] replace C. Thanks for mentioning it.

                                                                                                2. 4

                                                                                                  Not without packing the runtime with it, which is what a Lisp image does. Even after stripping unecessary stuff from the image, the binary is quite big.

                                                                                                  I’m a big Lisp fan, but let’s be honest.

                                                                                                1. 4

                                                                                                  Cool project :-) Personally I went plain text-files - just putting my bookmarks in an org-mode file alongside tags and description pulled from the HTML meta. Lately I was thinking writing some simple CLI based crawler that would archive those websites as many of the older collected links are becoming dead.

                                                                                                  1. 2

                                                                                                    Thanks Your idea seems really cool

                                                                                                  1. 50

                                                                                                    I’m not suggesting that we give up React and es7 and go back to writing server-templated web-apps like it’s 2012 again

                                                                                                    ok. I’ll be the one to suggest going back to server templates. They’re low fat and gluten free, and come in all your favorite flavors. Try one today!

                                                                                                    1. 8

                                                                                                      The amazing thing is we managed to let a company whose application consists almost entirely of static content and buttons decide for us the best way to program rich and interactive web applications.

                                                                                                      1. 2

                                                                                                        Who?

                                                                                                        1. 1

                                                                                                          Facebook I presume, since this in response to a comment about React.

                                                                                                      2. 1

                                                                                                        Phoenix Live View comes to mind. Maybe not usable for mobile much, but it felt like a breath of fresh air to me and at the same time can be quite low-latency from user’s perspective.

                                                                                                      1. 8

                                                                                                        One must also make sure that the feature flags are ephemeral. We have 310 different configuration options in our application at the time of writing this. Many of them are flags to enable or disable certain features. This makes sense because not every customer wants it alike.

                                                                                                        I would have used a more temporal system for flags if we were to implement them during A/B testing or similar. Every configuration option that has every existed must be kept around for legacy reasons.

                                                                                                        1. 10

                                                                                                          This was a hard-learned lesson for me. I have “temporary” feature flags that have been in production for nearly a decade now. Any feature flag system I’d be integrating today needs some kind of expiry date and notification process.

                                                                                                          1. 2

                                                                                                            Yeah, I think you have to have a process in place to integrate feature flagged stuff into your product after a while so you don’t have to deal with them a decade later. That’s, of course, can be done if you have SaaS or single-install-source solution. If you have a situation like Enpo above with different, customized, installations for each client you are pretty much toast.

                                                                                                          2. 2

                                                                                                            That is … mind boggling. How on earth do you even attempt to test any amount of the 796945721845778842475919139075620414921136393375300542318387282866272704053390430589730860455603066078739412704697191536795836240056697896249671921625859110264739008206646881054299114131923686294626708836563443497056478753259286321601841784170972278535996798204378021886389407248684599038298054366260840551142981370313185123638250325060383962886770938435048882386658766596481560405515515254199457134973524360454582648135836670684347420975064802837641388048575559158251497106943523511427144443326952041559678971773755844300171372821558992540618349430789236271936082094239920238839249942858712222326623974397184065086164132932404402666686761 setup options?

                                                                                                            How many of those flags are single-deploy / single-user ones written sort of on-demand for a certain client and hence only used by one deploy? Was doing it as a fork / patch / (other way using version control) ever considered? How is it day to day to work with?

                                                                                                            Sorry, I have so many questions – it is just such an extreme case I am so curious how it actual works day to day – is it pain most days or just something you don’t think about?

                                                                                                          1. 9

                                                                                                            For those who aren’t aware of it, I’d like to put in a recommendation for Spacemacs. For me, as a 30-year Emacs user and 8-year Vim user, it’s the best of both worlds. The modal editing language of vim, the discoverable sensible space menu system, and all the power of Emacs (e.g., Magit).

                                                                                                            1. 8

                                                                                                              There is also a lightweight alternative - “Doom Emacs”, almost all of the benefits of Spacemacs but fast as a cacodaemon ;-) Feels really snappy and starts in less than a second.

                                                                                                              1. 1

                                                                                                                Thanks for the tip! Yeah, Spacemacs pretty much requires you to use an Emacs daemon. Very slow startup.