1. 3

    Blog author here. It looks like my little intro got shared on HN and here. There’s a lot more power to recutils than the bits I showed in the post. I recommend you look deeper if the format appeals to you. For you emacs users out there, it integrates well with org-mode too.

    1. 2

      My personal hub is https://tomasino.org (static HTML/CSS) which links to all my other sites. It’s designed to mimic a markdown file in design, but it itself is not. It implements a few indieweb features, avoids JS, loads quickly and cleanly in lynx, and overall just gets the job done. Here’s a few notable things of mine:

      1. 7

        https://duncan.bayne.id.au/

        gopher://eyeblea.ch:70/1/~duncanb

        The website is a pretty straightforward static site. Built with Jekyll, served out of S3 through CloudFront, and with the bare minimum of styling necessary to work cleanly on mobile and desktop.

        The Gopher hole is … less straightforward :) It’s my personal place on an experiment to see if I can drive adoption of Gopher and (system-local) mail, Usenet, and IRC as an alternative to conventional social media here in Melbourne (Australia).

        1. 2

          I’m always happy to stumble on new gopher holes. We’ve got a decent number of aussie gopherites hanging out with us in the tildeverse and on SDF. Come by IRC sometimes and connect with us in #gopher.

        1. 3

          I’ve been doing this for years and it’s wonderful. I’ve left banks and other services when it quickly became apparent who was selling my contact information to spammers. On the technical side, a solution like simplelogin might very well make this more accessible to non-technical folks. I started with the unique email per site process when I was self-hosting my email, where it was easiest to get just the way I wanted it. Once I moved to hosted providers I’ve had to be careful that they supported all my needs. Tuffmail, Neomailbox, and Fastmail have all proven reliable. Some services limit or charge for aliases, which rules out their use.

          While the + tag trick works for simple cases, I don’t like it reveals your true email address to anyone familiar with the syntax. It’s too easy for someone to parse it and spam your main account. Fastmail’s alternative form using subdomains is more interesting.

          1. 3

            I’m with you. It takes some discipline to keep things in order but this seems to be one of the least terrible approaches. I use a ring model for managing my email world:

            • I have an single email address that is for meatspace use only
            • I use per-site emails on my domain for services I want to read emails from
            • I consolidate behind burner addresses - {shop, bills, burner}@ - for emails I don’t care about seeing. These are shunted into archive folders I never look at but can grep if I truly cared. And if the noise gets too intense, I turn them off entirely
            • For things I trust the least, I have a pseudonymous domain that is completely disconnected from my online identity

            Fastmail makes managing this almost seamless - I get one inbox with things I care about and some folders that automatically capture and hide the dross. The most overhead I get is logging in to blacklist a per-site email because they’ve become naughty.

            1. 3

              While the + tag trick works for simple cases, I don’t like it reveals your true email address to anyone familiar with the syntax. It’s too easy for someone to parse it and spam your main account.

              What I do is filter out any email sent to the bare/true address. i.e. for me to see an email (under normal circumstances), it must be sent a tagged email address.

              1. 1

                That’s a really good idea and a super-easy way to negate most of the negatives of that method.

            1. 3

              Is there some tmux trigger key that doesn’t interfere with readline? Maybe this is a bad habit on my part, but I frequently use C-a to go to the beginning of the line. This is mostly why I’ve been hesitant to use tmux. Similarly with C-b to go back a single character, though I use that much less frequently.

              1. 3

                I use the backtick (`) character. I unbind C-b, bind backtick, and then set a double-backtick to produce a literal one. The character comes up infrequently for me, and double-tapping it to make a literal one isn’t much of a challenge when it happens. The key position is close to the escape key, which I enjoy as a vim regular. (I also rebind most movement keys to vim-like as well)

                Here’s the code that sets my leader

                1. 2

                  You’ll get a ton of different answers here, but I like M-a

                  1. 2

                    I’ve been using screen and then tmux with the same keybindings, and typing C-a a to go to the start of a line is now second nature to me. So much so that I get tripped up outside tmux

                    1. 2

                      I’ve been using ctrl-v in both screen and tmux for as long as I can remember for exactly this reason. Ctrl-v is only rarely used (it’s for inserting a literal control character).

                      1. 2

                        I use C-o but it could be that it only makes sense with Dvorak as keyboard layout. On the other hand I tend to always have both hands on the keyboard.

                        1. 2

                          I use C-z.

                          There’s a huge discussion of that in this superuser question.

                          1. 2

                            This SU question may be related: https://superuser.com/q/74492/18192

                          1. 1

                            I’ve done some creative substitution work to create good file-based targets in the past and take advantage of Make’s laziness. The sentinel file, though, is a very nice hack that gets some of the benefit without much work. I appreciate that tid-bit. As for the rest, I agree with the others that going all in on GNU and Bash can be helpful, but it cuts down on portability. People still do run BSD systems, after all.

                            1. 2

                              Writing this post I was made aware of the empty target, which I now think is the traditional name for this pattern. Though it’s not documented as being useful for rules that output multiple files.

                            1. 1

                              I like how you carefully slotted in a potential solution with graceful degradation. I also hope some of the popular gopher clients pick up on this.

                              1. 25

                                Merging instead of rebasing doesn’t save you from creating a bad merge commit either, with or without merge conflicts. Whether you rebase or you merge, the final commit on top (i.e. the final snapshot of your files) will be in the same state. You’d get the same merge conflicts whether you rebase or you merge (possibly in a different order). It’s still your responsibility either way to make sure this commit is semantically correct – git doesn’t know your programming language and line-oriented diffs, whether by merging or by rebasing, can be wrong.

                                The article is also making the case that having the merge commit instead indicates that a whole batch of commits introduced a bug. You can just look at the merge commits and know which merge commit was the problem. This still doesn’t indicate which commit in the batch was buggy. So you have the same problem, except it’s more swept under the rug. Throwing out a whole series of commits because of one bad commit in the batch seems like too much baby bathwater to me.

                                1. 12

                                  Another reason I stay away from merge commits is the train track wreck graph of history. Try running git log --graph --oneline on any google project (chromium, etc) and trying to sort out the history visually. Often times I find the tracks completely fill up my terminal and I have to scroll to the right in order to see what the commits are.

                                  1. 7

                                    Merging instead of rebasing doesn’t save you from creating a bad merge commit either, with or without merge conflicts. Whether you rebase or you merge, the final commit on top (i.e. the final snapshot of your files) will be in the same state.

                                    That’s correct but it does make the merge point more obvious and explicit, which if the author is to be believed, makes it easier to untangle subtle errors of the type under discussion.

                                    I don’t buy it though - I’ve been using Git as a release engineer for years and as an IC for years more and I can think of maybe 1 instance where such a bug was introduced but not immediately caught by the developer doing the merging.

                                    That said one person’s experience does not make a thing true, so I’d be curious as to whether others have been bitten hard by this kind of subtle rebase induced bug?

                                    1. 4

                                      I’ve had similar problems. Write some code, thoroughly test it, merge and commit. Later a problem is discovered. Didn’t I test for this? Unfortunately it’s not possible to recreate the exact artifact that was previously tested.

                                      Features interfere in complex ways. After rebase you can no longer untangle this feature from all the features in its new base.

                                      1. 3

                                        Unfortunately it’s not possible to recreate the exact artifact that was previously tested.

                                        This in no way contradicts your point, which I appreciate you chiming in with - but best practice with Git whenever you want to freeze a point in time is to use tags.

                                      2. 0

                                        My experience has been very close to this author’s. I’ve also run into issues with git blame when a feature is rebased, effectively hiding the true author of the code. Over my many years of git use in various sized organizations I’ve come to join Paul Stadig’s philosophy of “Thou Shall Not Lie”.

                                        It’s easy to customize a git worflow to speed along deployments and releases. Git’s first and most important role is the safety-net. Keeping your history accurate is the safest way to keep that safety-net strong.

                                        If you have challenges with git log when you have many branches, there are plenty of tools to help visualize that. Monorepos also make all of this much more complicated (i’m not a fan).

                                        1. 8

                                          I’ve also run into issues with git blame when a feature is rebased, effectively hiding the true author of the code

                                          Rebasing a feature branch doesn’t hide its author.

                                          1. 0

                                            It can when the history is rewritten by another user, especially when squashing. Squashing commits leaves only the author of the base, hiding both the other contributors and the identify of the squasher.

                                            1. 2

                                              Nope. Squashing a feature branch on a base only allows you to squash the commits of the feature branch into one another. It doesn’t allow you to squash them into the base commit. To lose commit authorship information, you’d need to very deliberately go outside normal rebasing commands like git rebase master.

                                              1. 1

                                                Squashing multiple commits into one is exactly what I’m decribing. If a feature branch has commits from multiple authors then when it is squashed to one commit only one author is listed. Whatever the “base” is that you’ve squashed down to is the remaining author unless you override it.

                                                More importantly, the purpose of my comment is to answer the above comment’s question “… I’d be curious as to whether others have been bitten hard by this kind of subtle rebase induced bug?” My answer is yes, and now I avoid the situation entirely by the choice to merge and keep accurate history.

                                                1. 1

                                                  If a feature branch has commits from multiple authors

                                                  Is this a regular occurrence? It certainly isn’t in any team I’ve ever worked in. If you regularly have to deal with feature branches where multiple people are committing, that points to a different issue: the team isn’t breaking up their work properly into discrete chunks.

                                                  the purpose of my comment is to answer the above comment’s question “… I’d be curious as to whether others have been bitten hard by this kind of subtle rebase induced bug?”

                                                  I think you really answered a different question; imho the original question was about when a bug might have been introduced, not who might have committed it:

                                                  it does make the merge point more obvious and explicit, which if the author is to be believed, makes it easier to untangle subtle errors of the type under discussion.

                                                  1. 1

                                                    Is this a regular occurrence? It certainly isn’t in any team I’ve ever worked in.

                                                    We all work in different environments and on different types of projects. Yes, this happens quite frequently in my industry.

                                                    The awesome power of git is that we can do things in different ways to meet our individual needs. There doesn’t have to be a single “right” way.

                                    1. 2

                                      Really cool stuff. It reminds me of the sites on gopher://fritterware.org/1/. I’ve added your gopher hole to my aggregator on gopher.black. Keep up the awesome work

                                      1. 2

                                        Thank you for adding me! Could you maybe tell a bit more on what runs gopher.black? Self written scripts, language, how do you track GopherHoles without rss, etc?

                                        Fritterware looks like my idea indeed. Most of the rss feeds are incomplete due to the html parsing I guess. That is always an uphill battle sadly.

                                        1. 1

                                          gopher.black runs on a raspberry pi from my apartment. I run motsognir as my main gopherd, but also have gophernicus running for tor (I could have done both over motsognir, but did the gophernicus bit for more complex silly reasons). I author content using my gopher helper, burrow (https://github.com/jamestomasino/burrow) and push all content into git where it is mirrored through cron-job pulls on several other systems (sdf, tilde.town, etc). I have a few stand-alone scripts that do things like pull my reading lists out of goodreads (via rss). Most importantly I run a very large aggregator using Alex Schroeder’s moku-pona (http://github.com/kensanata/moku-pona). This is updated on a cron 4 times a day. My site list for moku-pona is tracked in git (https://github.com/jamestomasino/dotfiles/blob/master/mokupona/sites.txt) in case the pi dies or I get eaten by a whale.

                                          Come join us in irc.sdf.org or irc.tilde.chat in the #gopher rooms

                                          1. 1

                                            That is really cool! Let’s hope the whale 🐋 thing doesn’t happen anytime soon. This would be worthy of it’s own article even if you have some time for that.

                                      1. 1

                                        @tomasino@mastodon.sdf.org - I post about gopher (A LOT). Command line stuff, keto, retro tech, books, and random life stuff. Come chat with me.

                                        1. 3

                                          This is so much fun and great work. On a whim I was curious if I could set the base measurement with a font-size property and do the rest of the math with ems. Here’s the result… as you can see, changing the font size scales it!

                                          https://www.tomasino.org/a.html

                                          edit: I should have set the font-size to the height property and worked from there so the font-size would actually measure correctly to the font. No matter. If someone were to do this for real they can do it right. It’s possible.

                                          1. 9

                                            I haven’t found a free moment to build this into a browser extension just yet, but here’s the crux:

                                            Array.from(document.getElementsByTagName(‘a’)).map(a => { if (a.getAttribute(‘ping’) !== null) { a.removeAttribute(‘ping’); } })

                                            This will check the page for anchors with ping attributes and remove them.

                                            1. 2

                                              Love this concept, but not for the multiple orgs. It may make sense to you personally to have an “old projects” org, but it changes URLs for people that may have bookmarked your old junk. I did create an org for forks, though. That’s brilliant. Most of those were done to make a single PR.

                                              1. 1

                                                Assuming the PR was merged, why not delete the fork?

                                                1. 2

                                                  As trousers said, sometimes the PRs aren’t merged in quick order. In other cases I will continue to make contributions to the project over time and want to keep my fork around. I’ll rebase in upstream as time goes on and make new feature branches for PRs. But, even in the case where I just made a single PR, I like to have that record around where I can find it or point to it in case the need arises. If a future employer was curious what my relationship is like with the open source community this new “org” is a great place to send them.

                                                  1. 2

                                                    I’ve had PRs hanging out for /months/. Sometimes I just forget to go clean up the repo later.

                                                1. 5

                                                  It’s a fantastic server for playing around and learning openBSD! I’m working through all the manpages on it.

                                                  1. 3

                                                    Another nice simple tool is drist: https://dataswamp.org/~solene/2018-11-29-drist-intro.html and https://dataswamp.org/~solene/tag-drist.html . It is written by solene (an OpenBSD ports developer). In a nutshell it is a simple well-structured shellscript that uses SSH and rsync to sync files to hosts.

                                                    1. 3

                                                      … (an OpenBSD ports developer) …

                                                      An OpenBSD developer - her contributions aren’t confined only to ports :^)

                                                      1. 3

                                                        From solene in IRC:

                                                        dunno if you can post on lobste.rs or if somebody has an account, but on https://lobste.rs/s/6bk4pp/rdist_1_when_ansible_is_too_much#c_fdspzh it’s said that drist copy files, but it miss the important part that it also execute scripts :D

                                                        1. 1

                                                          That does indeed look very interesting.

                                                        1. 3

                                                          We’re taking the kiddo to the zoo today. I’ll probably keep working on my speed reading plugin, stutter (https://github.com/jamestomasino/stutter) for a bit, and keep reading the many, many books in my queue.

                                                          1. 2

                                                            I’ve been collecting introductory gopher tutorials over on https://gopher.zone. I’ll have to contact the author of this one to see if I can pull it in.

                                                            1. 1

                                                              The author is I think @alynpost, admin here and owner or at least employee of prgmr

                                                              1. 1

                                                                Thank you @raymii for highlighting me. James I would love to have this article on gopher.zone.

                                                                The author of the article is Paul Scott. I’ve previously spoken with him about publishing this article on gopher.zone. He would like to be able to extend and republish it in the future but verbally non-exclusivity was the only issue he raised with you publishing this article. I would like attribution on the article stating where it was originally published.

                                                                I’ve sent you an email to the address on your resume restating this and including the relevant parties. I’m glad you’re interested in incorporating this material.

                                                                1. 1

                                                                  The site is on github :)

                                                                2. 1

                                                                  Hi, James! I’m glad you like the article. :)

                                                                1. 3

                                                                  I’ve been observing this community over the last few months with great interest. http://tilde.club/ seemed very interesting the first time I found it (I wished it had existed when I was limited to using Windows), but it was closed (which of course has it’s benefits too, as this site shows). Nevertheless I consider http://tilde.town/ to be more successful in it’s message and idea.

                                                                  It’s kind of a more general, and larger, community like the one around suckless/cat-v/nixers that I found very interesting around a year ago. They have common opinions that go against contemporary trends, forging a community that does stuff and creates stuff. But what makes it even more interesting is how it transcends just one site, while not loosing it’s character. The affinity to the fediverse also delights me.

                                                                  Sadly it seems to be kind of a 10%/90% affair when it comes to activity: Just look at http://tilde.town/ as you’ll see most people still have the little more added than the default index.html (examples 1, 2). What I read into this is that although this exists, and people find it interesting, many don’t know what to do with it. Kind of sad… General lack of creativity maybe? But I haven’t seen it from the other side, so maybe they are more active in other ways.

                                                                  1. 5

                                                                    Not all people are super creative with their sites; at least for me most of the social activity occurs on the irc net and the mailing lists.

                                                                    1. 3

                                                                      I think it’s important to note that many of these pubnix servers are not oriented toward generating a lot of public web content, but rather to intra-system activities. IRC chat, bulletin boards, local gaming, “botany”, grafitti walls, and so on are extremely popular. tilde.town is a lush playground of activity of all sorts, just not a lot of it bleeds out through the web. But that’s also kind of the point. Everyone on a tilde knows how to toss a webpage out there in some form or another. They congregate for the community. The outputs are very different.

                                                                      Now, there are other tildes, like my own https://cosmic.voyage (or gopher://cosmic.voyage) which ARE oriented toward a public channel (collaborative storytelling in our case). Our activity is still more robust in IRC with people talking and planning than the output suggests.

                                                                      Finally, you touched on federation and that’s some new and exciting territory for the tildeverse. While we do have a round-robin of IRC servers that all federate, there’s also some novel experimentation going on. The circumlunar pubnix servers are rsyncing their local bulletin boards to one another. Cosmic, baud.baby, and circumlunar are experimenting with a low-fi social networking system built on top of fingerd. There’s a lot of playing around of this sort as people push limits and turn their hobby eye toward community building.

                                                                      1. 2

                                                                        maybe they are more active in other ways.

                                                                        Yes. The community is super active on IRC, 24 hours a day. They also have a local intranet for more private things that users don’t want indexed by google. There are a number of CLI apps that don’t have a web presence, also, such as feels, bbj, botany etc…

                                                                      1. 5

                                                                        A great write-up! I’ve also been collecting tutorials and guides for aspiring gopher content creators. You can find it over at https://gopher.zone

                                                                        1. 3

                                                                          That’s so cool! Although deep down I know it probably won’t, I’d love for Gopher to make a comeback (where comeback is “more software understands gopher://”).

                                                                          Will you be providing links to the other articles up at gopher://sdf.org:70/1/sdf/faq/GOPHER as well?

                                                                          1. 3

                                                                            There’s a small but thriving phlogging community on gopher.