1. 9

    I self-host. Pretty easy with sovereign. Or if you want to use NixOS: simple-nixos-mailserver

    Definitely worth it, even just for learning how email works.

    1. 1

      Have you encountered any problems with sent mail being caught in spam? that’s one of the most common problems I’ve heard about with self-hosting.

      1. 1

        Yeah, but it’s not so bad after you setup the DKIM etc records properly. The sovereign README has instructions on how to do all that. The situation improves as the age of your domain increases too, I think.

    1. 18

      If you haven’t clicked the article already, it essentially boils down to: if you’re not a proponent of CSS in front-end design, you’re a misogynist.

      1. 8

        That’s definitely a strawman.

        1. 5

          That is very much not what it says. The argument is “both technical choices are valid in some situations, so many of the people who are arguing one side are doing so for sexist reasons.” You may disagree with that claim, but your summary is just plain wrong.

          1. 0

            definitely a good faith reading of the article, please continue to add more substantive insights like this.

            1. 0

              I usually peek at the comments before reading the articles, this time I didn’t and I paid for it… (with neurons)

            1. 2

              Key quote:

              An honest discussion of the technologies involved would highlight the importance of context to deciding which tools to use.

              I often forget that many people aren’t honest. Fact of life.

              1. 9

                A little more telling:

                It’s become increasingly clear that the “debate” about CSS is not about technology. It’s about gender privilege and exclusion.

                This article started out in a place I could get behind, and then…went somewhere else entirely.

                1. 2

                  Maybe I read it with a bit more charity but it seems rather clear to me that the CSS vs React/JavaScript debate often reduces to a personal power struggle, not a discussion of technical merits and trade offs.

                  1. 1

                    Just like the discussion on these kinds of posts.

              1. 7

                since you tagged this with C++, I’m assuming you are familiar/would like to use to C++, in that case, CommonMark written in C, by the same author as Pandoc should be of interest to you.

                1. 2
                  1. 1

                    exactly. I was wondering if someone would notice (maybe others did but didn’t say anything). Thanks!

                    1. 3

                      Merged and deployed. Thanks, @bsima.

                      1. 3

                        Thank you!! I privately predicted that these two messages would appear and my example text would no longer depict the problem and that the fix would be a minor CSS change. All came true and it is very satisfying! Open source rocks!

                        Update: Oh, I forgot another prediction that did not occur: that somebody would name the source of the sample texts off the top of their head… :)

                    1. 1

                      Sounds like a good time to finally set up my bouncer. If only there were one that had good Emacs compatibility.

                      1. 4

                        I just run weechat on a server and connect to the weechat relay with weechat.el. There’s a few bugs in weechat.el (e.g. nicks go out of sync) and some things missing (e.g. nick list), but that’s a small price to pay for replacing another standalone app with emacs :)

                        1. 1

                          I did this at the beginning but quickly switched over to ZNC because of bugs like that, the inability to have per-client history rollback, and other little details… I still use Weechat half the time on the client side though :) (I also use Textual on macOS, and Palaver on iOS).

                        2. 1

                          Znc is what I use with erc

                          1. 1

                            I’ve been trying to set this configuration up for half a year now, but I never get anything I’m satisfied with. The ZNC documentation is quite bad and confused, imo. And when I manage to set it up, even using ZNC.el it won’t work with IRCnet. Switching between multiple servers is another annoyance.

                            But maybe I’ve just messed up somewhere.

                          2. 1

                            I used to use znc, seemed to work just fine with ERC.

                            Now I use weechat (a bit more features, nice Android app), again with ERC. There is weechat.el, but I prefer ERC (connecting to what weechat calls an “irc relay”, instead of using the weechat protocol). I use https://gist.github.com/unhammer/dc7d31a51dc1782fd1f5f93da12484fb as helpers to connect to multiple servers.

                            1. 1

                              Ive used znc with Circe, works great

                              1. 1

                                What did you find in Circe that made it better than ERC or Rcirc?

                                1. 2

                                  In case it’s useful - I used to use ERC, and I switched to Circe long enough ago that I can’t exactly remember, but I think the issue was that I wanted to connect to both freenode and an internal IRC server at the same time, and ERC made that awkward or impossible to do. It may well have improved in the last 5 years though.

                                  1. 2

                                    It was easy for me to setup and use so I stick with it. Never tried those other two

                              1. 4

                                TLDR “everything has tradeoffs”

                                1. 2

                                  For Java / Python we have one. You need to have a passport from one of the member states. 5 years contract. (https://careers.cern/content/member-states) https://jobs.smartrecruiters.com/CERN/743999674157079-software-engineer-be-co-aps-2018-84-ld-

                                  1. 1

                                    I think this is the correct link for member states: https://home.cern/about/member-states

                                    1. 1

                                      Thanks it is now corrected in the job advert.

                                  1. 6

                                    Atlassian is hiring anybody interested in functional programming in Bengaluru. I’ll be available for training in any FP topics you want to learn. Haskell and Scala experience are beneficial but not necessary.

                                    Senior Full Stack Software Engineer

                                    Senior Front End Developer

                                    1. 1

                                      Nix and/or NixOS experience is super useful too. We use it to ship all of our team’s software.

                                      1. 1

                                        OT but do you have any thoughts about using Nix in anger?

                                        1. 6

                                          We build Docker images from Nix then deploy them to Atlassian’s internal PaaS.

                                          The benefits we get:

                                          • I can build any image we ship to production, byte-for-byte
                                          • When we change 1 line of code, we’re 100% confident only what we changed will be shipped
                                          • All of our services use the same build commands

                                          The problems we have:

                                          • Documentation is not great, so Nix is hard to teach
                                          • Very common things like pinning cause lots of questions (e.g. what’s problems are caused by Import From Derivation?)
                                          • Therefore most team members rely on the few people who have invested the time reading nixpkgs and the Nix source

                                          I think the problems are mostly solvable and the benefits can’t be obtained from any existing tools.

                                          1. 2

                                            It would be helpful for me to see an example of this (Nix->Docker->PaaS) with an example app, if you’re looking for things to write about on your blog.

                                            1. 3

                                              This shows the Nix and Docker tooling: http://lethalman.blogspot.com/2016/04/cheap-docker-images-with-nix_15.html

                                              The PaaS part is mostly a docker push to a repo.

                                      2. 1

                                        Indian nationals only?

                                        1. 1

                                          Atlassian will support relocation to offices, including Bengaluru.

                                        2. 1

                                          I am located in bangalore. How can we discuss this further?

                                          1. 1

                                            Sent you a direct message

                                        1. 9

                                          FWIW I really like Overcast, an independent mobile podcatcher (iOS/web) https://overcast.fm

                                          Anyone else have a podcatcher they recommend?

                                          1. 5

                                            I use antennapod. I’m a heavy podcast listener, 3h of traffic everyday, 100 hours a month.
                                            The application doesn’t limit itself to itune you can also search on https://www.gpodder.net/ and others, or still add your own RSS feeds. It’s open source, so no ads and only good features that the people use.

                                            1. 2

                                              +1 for Antennapod. It has its bugs, but the UI is simple but still functional enough for me.

                                            2. 1

                                              I really like PocketCasts.

                                              1. 1

                                                I’ve used them all and for IOS Overcast is the clear winner IMO. I wish they’d polish their web player a bit but other than that it’s totally fab.

                                              1. 3

                                                14 newsletters is way too many

                                                1. 5

                                                  This is textbook example of a link-spam article.

                                                1. 3

                                                  ProTip: after you finish the whiteboard puzzle the interviewer gave you, turn around and give them a puzzle to solve.

                                                  1. 2

                                                    I use the Atreus and I love it. I haven’t had to program it but I probably will eventually.

                                                    1. 4

                                                      I am amazed that mutt is still alive and kicking. Fond memories of another Internet

                                                      1. 4

                                                        It’s very much alive and kicking - there’s even NeoMutt, a fork with added features. As someone who’s used Mutt/NeoMutt almost every day for 20+ years, it’s still very much useable today. Yes, HTML email does make things a bit painful, but there are workarounds.

                                                        1. 1

                                                          I’m using a stripped down version of elinks to do HTML -> plaintext conversions, both for mail and some other projects. w3m is also popular for this task.

                                                          Do you have other solutions you’d like to share?

                                                          1. 3

                                                            I’m using pretty much the same, albeit with w3m. I use a modified version of view_attachment.sh to handle attachments (grabbed from The Homely Mutt - there are plenty of other great tips in that article).

                                                            1. 1

                                                              Thanks. I’m working on a bidirectional mail gateway which does Unicode/MIME/RFC-5322/RFC-6854 <—> ASCII-ANSI-X3.4-1986/RFC-822 conversions.

                                                              Converting MIME/Base64 encoded parts into to UUENCODE and back is straightforward (and lossless).

                                                              The lossy transliteration of Unicode characters into plaintext equivalents is less straightforward and there is a wealth of prior art.

                                                              The task of ceating a usable presentation of modern HTML mail as plaint text, however, is more of an art than a science.

                                                            2. 2

                                                              FWIW urlscan is another useful tool https://github.com/firecat53/urlscan

                                                              In mutt I bind this to C-b so I can quickly open some link in my browser

                                                          2. 2

                                                            I’m actually still an elm user, myself.

                                                            1. 2

                                                              I also still use it. Works great, no nonsense. Sure, when I want to see an image I have to scp it to my local system, but hey :)

                                                            1. 2

                                                              I’m glad we still have such a stripped-down email implementation being kept up. I’d probably only use it in cases where I needed the extensibility though, as automatic email filtering is far too big a boon to give up.

                                                              1. 4

                                                                You can always use Sieve on the IMAP side, or fdm, maildrop, or the venerable procmail for local filtering.

                                                                1. 2

                                                                  Honestly I find notmuch to be a better filtering/tagging system than all of my gmail filters.

                                                                  1. 1

                                                                    To clarify: I’m specifically thinking of Inbox.

                                                                  1. 5

                                                                    Road tripping to Montana for this symposium https://ancestralhealth.org

                                                                    1. 2

                                                                      Neat, I’m originally from MT, you’ve inspired to me to look at visiting again!

                                                                    1. 1

                                                                      Is there any well known PGP alternative other than this? Based from history, I cannot blindly trust code written by one human being and that is not battle tested.

                                                                      In any case, props to them for trying to start something. PGP does need to die.

                                                                      1. 7

                                                                        a while ago i found http://minilock.io/ which sounds interesting as pgp alternative. i don’t have used it myself though.

                                                                        1. 2

                                                                          Its primitives and an executable model were also formally verified by Galois using their SAW tool. Quite interesting.

                                                                        2. 6

                                                                          This is mostly a remix, in that the primitives are copied from other software packages. It’s also designed to be run under very boring conditions: running locally on your laptop, encrypting files that you control, in a manual fashion (an attacker can’t submit 2^## plaintexts and observe the results), etc.

                                                                          Not saying you shouldn’t be ever skeptical about new crypto code, but there is a big difference between this and hobbyist TLS server implementations.

                                                                          1. 5

                                                                            I’m Enchive’s author. You’ve very accurately captured the situation. I didn’t write any of the crypto primitives. Those parts are mature, popular implementations taken from elsewhere. Enchive is mostly about gluing those libraries together with a user interface.

                                                                            I was (and, to some extent, still am) nervous about Enchive’s message construction. Unlike the primitives, it doesn’t come from an external source, and it was the first time I’ve ever designed something like that. It’s easy to screw up. Having learned a lot since then, if I was designing it today, I’d do it differently.

                                                                            As you pointed out, Enchive only runs in the most boring circumstances. This allows for a large margin of error. I’ve intentionally oriented Enchive around this boring, offline archive encryption.

                                                                            I’d love if someone smarter and more knowledgeable than me had written a similar tool — e.g. a cleanly implemented, asymmetric archive encryption tool with passphrase-generated keys. I’d just use that instead. But, since that doesn’t exist (as far as I know), I had to do it myself. Plus I’ve become very dissatisfied with the direction GnuPG has taken, and my confidence in it has dropped.

                                                                            1. 2

                                                                              I didn’t write any of the crypto primitives

                                                                              that’s not 100% true, I think you invented the KDF.

                                                                              1. 1

                                                                                I did invent the KDF, but it’s nothing more than SHA256 applied over and over on random positions of a large buffer, not really a new primitive.

                                                                          2. 6

                                                                            Keybase? Kinda?…

                                                                            1. 4

                                                                              It always bothers me when I see the update say it needs over 80 megabytes for something doing crypto. Maybe no problems will show up that leak keys or cause a compromise. That’s a lot of binary, though. I wasn’t giving it my main keypair either. So, I still use GPG to encrypt/decrypt text or zip files I send over untrusted mediums. I use Keybase mostly for extra verification of other people and/or its chat feature.

                                                                            2. 2

                                                                              Something based on nacl/libsodium, in a similar vein to signify, would be pretty nice. asignify does apparently use asymmetric encryption via cryptobox, but I believe it is also written/maintained by one person currently.

                                                                              1. 1

                                                                                https://github.com/stealth/opmsg is a possible alternative.

                                                                                Then there was Tedu’s reop experiment: https://www.tedunangst.com/flak/post/reop

                                                                              1. 16

                                                                                The underlying factor that caused the github purchase to be a problem was that github was free. As long as the service is free, then selling out is always a risk.

                                                                                Why not take the total server costs at the end of the month, divide by the number of users, and charge that as a monthly subscription to keep the lights on? If the system is even marginally profitable, that makes any kind of selling out (via acquisition or selling user data) less attractive.

                                                                                If the system is costing the administrators money, then they have a high incentive to sell out.

                                                                                1. 11

                                                                                  Why not take the total server costs at the end of the month, divide by the number of users, and charge that as a monthly subscription to keep the lights on?

                                                                                  Nah, charge them based on use like in mainframe and cloud models. That’s more fair. Safer, too, for the host. There probably should be a baseline fee that covers administrative overhead or at least contributes something to it. The usage charges go on top of that. There could be some usage that comes with the baseline fee, though.

                                                                                  1. 6

                                                                                    That’s an interesting point, and I’ll have to consider it. Though, I don’t see the user base growing enough to make selling out a possibility. My philosophy is that there should be many services like this one to prevent any one from growing too large and making selling out a possibility (that’s why the goal is to make everything open source - if someone wants to clone Asymptote they have my blessing).

                                                                                    1. 8

                                                                                      I don’t see the user base growing enough to make selling out a possibility.

                                                                                      I think the more likely case is it becomes too expensive and you don’t want to keep paying so the service shuts down and many users lose access to their email.

                                                                                      1. 7

                                                                                        You would be amazed how well a donation meter works.

                                                                                        Have a monthly goal of expenses + overhead. Show it on the homepage. Near the end of each month, if the goal isn’t met, nag the users a bit. Give those who donate some flair or something silly.

                                                                                        1. 4

                                                                                          True. In that circumstance I would run a cheap ($2.50/mo) VPS to keep essential services running (such as email) while fundraising.

                                                                                      2. 2

                                                                                        Bingo! I’d like to see people putting their effort into distributed alternatives, in the same way that Peertube is an alternative to Youtube ans Mastodon to Twitter.

                                                                                        1. 1

                                                                                          What is the fear with github being bought out? Is the prediction that there will now be ads on the site like source forge?

                                                                                          1. 12

                                                                                            Asymptote’s existance isn’t because of fear of what Microsoft might do to GitHub. I made it to test out a midpoint between large, centralized services and everybody self-hosting. I don’t think Microsoft will screw up GitHub, it’s just that the discussion around the purchase prompted this idea.

                                                                                            1. 1

                                                                                              There are many concerns but one obvious one is that they will integrate it with LinkedIn. Software is one of the only professions where you can still find a job without a LinkedIn; M$ will do what they can to change this.

                                                                                            2. -10

                                                                                              We can just make sure that the admins publish inappropriate stuff like ‘women are weaker then men’ or ‘women make less money because they make different choices compared to men’ on its blog every month. Then the site would be ‘unbuyable’ because of the outvogue apparent social position of the owners. The people in the know would know to ignore such posts, but the bad-headline potential of these blogs would poison the site against any future buyouts.

                                                                                              1. 1

                                                                                                This is a rather sarcastic way of making a reasonable point - what sorts of rules about host content will Asymptote Club (or other similar “middle-ground” services) enforce, and how resistant will it be to social/political pressure to censor content? What if I want to use Asymptote Club’s gitea/CI service to actively develop machine-learning software that’s illegal in some jurisdictions but not others? What if I want to use their matrix service to host a misogynist chatroom because I believe that the accusations that the content of the chatroom actually constitutes misogyny are complete bullshit? If something hosted on Asymptote Club got into the news and invokes a social media shitstorm against it, how much can I trust that Asymptote Club will keep hosting it, and how much do I have to know about the personal politics of zebMcCorkle in order to ascertain that?

                                                                                                1. 1

                                                                                                  Sad fact is that these things being published even in jest still provides fodder to people who do believe this stuff and want to feel justified in their opinions.

                                                                                              1. 25

                                                                                                I did a PhD in maths where I had to do a lot of algebraic geometry, so I’m comfortable with category theory and its concepts and applications. I’ve never seen those ideas being used in nontrivial or useful ways in programming, and by now think that either me or a lot of other people are missing some point. I’m not sure which.

                                                                                                Category theory became popular in mathematics, and especially algebraic geometry, because it provided a “one higher level” from which to look upon the fields and see that a lot of the ideas we were working with were actually a shadow of a single more abstract idea. For example, the direct products of groups, rings, fields, vector spaces and so on were understood as different incarnations of the category-theoretic product. This helped to standardize a lot of arguments, and give names to some concepts differing groups had been grappling with in isolation before. Grothendieck was able to wield these abstract notions so deftly that he could use them to “take compass bearings” and figure out in what directions he should go. That is unbelievably powerful.

                                                                                                In programming, I can see how one would model the state of a program as a monad. A monad is basically defined around the idea that we can’t always undo whatever we just did, so that makes sense. I’ve also read a fair number of Haskell programmers and their explanations of how category theory fits into programming. None of it seems to even have the promise of the same levels of usefulness as we’ve seen in mathematics, and a lot of it seems to be actively harmful by raising jargon barriers around trivial ideas.

                                                                                                1. 8

                                                                                                  That is a great story, I would definitely read more of your writing about math if you shared it somewhere.

                                                                                                  1. 4

                                                                                                    I too have encountered category theory during my maths degree (never managed to get the PhD, though), and I also agree that category theory in programming seems very out of place. The most interesting application I’ve seen for it is in homological algebra, but I’m pretty sure no programmer has any interest in abelian categories. The most prototypical functor for me is the Galois functor, which programmers have no need for.

                                                                                                    The result is that when I see computer people talk about category theory, it’s all utterly foreign to me. They tell me I should like it because I like mathematics, but I do not. I’ve made some effort to understand why they like it and have never been very convinced by it, as unconvinced as you seem yourself.

                                                                                                    1. 4

                                                                                                      I’ve also read a fair number of Haskell programmers and their explanations of how category theory fits into programming.

                                                                                                      I’d be interested in your take on this discussion, in particular the first comment by Gershom Bazerman, as well as his post here. It seems like he has a good perspective on it, but I don’t have the mathematical knowledge to really confirm that one way or the other. Or maybe you’ve already read this particular stuff and dismissed it; in either case it’d be handy to get a sense of what you think to place it in context, if you’re willing.

                                                                                                      Here is another post which your comment reminded me of, which I wish I had the mathematical ability to fully understand; I’d also love to hear what you think about that as well.

                                                                                                      I’m really not trying to challenge anything you said about the misapplication of CT in Haskell/programming in general (if I haven’t emphasized this enough at this point, I don’t think I’m qualified to do so), I’m just always interested in adding more data to my collection, hoping that at some point I’ll have built up the mathematical maturity to understand the different positions better.

                                                                                                      None of it seems to even have the promise of the same levels of usefulness as we’ve seen in mathematics, and a lot of it seems to be actively harmful by raising jargon barriers around trivial ideas.

                                                                                                      As a programmer who barely understands category theory, all I can say is that I’ve personally found the small number of concepts I’ve encountered useful, and, most importantly, more useful than anything else out there (which I’ll generalize as “design patterns and other vague, poorly specified stuff”) for providing a basis for designing modular structures to base programs on. I find that the most basic concepts presented in category theory map well to the kind of abstraction present in programming, and I’d love to get a better sense of where you find the jargon barriers to be and how we could eliminate those (and fwiw I think this is a general problem in programming, not limited to Haskell nerds dropping category theory terms into their discussions). In particular I’ve found concepts like Monoid, Monad, and Functor to be useful–especially in understanding how they interrelate and can be used together. They’ve enhanced my ability to think conceptually and logically about the kinds of structures I deal with in programming all the time, even where I may not be applying these structures directly in whatever program I’m considering. I may be doing it wrong, but insofar as I’ve developed the correct intuition around these things, they seem useful to me.

                                                                                                      So I can readily accept that we have not been able (and maybe never will be able!) to harness category theory at the level Grothendieck did, but it seems like right now it’s yielding results, and part of the value is simply in the exploration and application of a different rigor to programming as a practice. Maybe in ten or twenty years we’ll look back at the folly of applying category theory to programming, but I rather think it’s more likely that we’ll see it as a step on the path toward discovering something deeper, more rigorous and powerful, and more beautiful than what we can imagine for designing programs right now.

                                                                                                      Or maybe we’ll go back to being obsessed with design patterns and UML. If that’s the case I hope I’ll have quit and gone into being an organic farmer in Vermont or something.

                                                                                                      1. 1

                                                                                                        I’m interested in hearing more about this as well. It’s been a long-standing question for me whether continuing to investigate category theory would help me write better programs. I have no background in higher math, but my understanding/assumption has been that category theory is relevant to programming insofar as it facilitates composition.

                                                                                                        As I see it, the fundamental problem of software design is economically accommodating change. We try to facilitate this by selectively introducing boundaries into our systems in the hopes that the resulting structures can be understood, modified, and rearranged as atomic units. I don’t think it’s controversial to say that our overall success at this is mixed at best.

                                                                                                        The promise of category theory seems to be that, rather than relying on hearsay (design patterns) or our own limited experience, we can inform our choices of where to introduce boundaries from a more fundamental, abstract space where the compositional properties of various structures are rigorously understood.

                                                                                                        But like I said, this is very much an open question for me. I would love to be convinced that, although there is clearly some overlap, the fields of category theory and software design are generally independent and irrelevant to each other.

                                                                                                      1. 9

                                                                                                        I know this is not the point of your article, but did you ever find the Maybe monad instance that is in Elm core library? ie. Maybe.andThen?

                                                                                                        With it the motivating example looks like:

                                                                                                        comments
                                                                                                            |> Maybe.andThen List.first
                                                                                                            |> Maybe.map (\c -> div [ id "first-comment" ] [ text c ])
                                                                                                            |> Maybe.withDefault (div [] [ text "No comments" ])
                                                                                                        
                                                                                                        1. 5

                                                                                                          I did not, but I figured there would be something like this somewhere in the Elm ecosystem. I wrote this a while ago and I haven’t used Elm in at least 8 months so excuse my ignorance, and thank you for pointing this out.