1. 31

    I thought this was going to be about small websites, in the sense of individuals putting together a non-commercial, unmonetized page to talk about the things that they enjoy on the public internet. Gems like stormthewalls.dhs.org, or hovercrafter.com. This kind of site seemed to be everwhere in the 90s through the late 2000s, but they seem to have retreated behind walled gardens, or gotten squeezed out of search results by large commercial pages with far worse content. They’re run by hobbyists, and can’t compete with SEO.

    I miss them.

    1. 3

      That’s what I was expecting to and was sorely disappointed to see it was not that.

      1. 1

        likewise. i would have loved to read that article, and the lobsters discussion around it.

      2. 1

        https://neocities.org/browse turns up fun stuff like that sometimes.

      1. 3

        Tell Mozilla to stop removing features and adding bloaty slow garbage, and tell them to DISABLE CTRL-Q, and maybe I’ll go back to using and supporting Firefox

        1. 5

          i am mystified at their refusal to addres the ctrl-q bug. it’s been open for over a decade now and i could be missing even earlier bugs filed for it.

          1. 4

            I imagine it’s internal bureaucracy about the specifics of the implementation: I believe there was the consideration of a layer for rebinding all key combinations (completely unnecessary imo) and it got lost in boring technical discussion that eventually fizzled out

          2. 3

            As an aside, a useful hack is to bind ctrl-q in the window manager so that it never reaches firefox. Eg in i3:

            bindsym Ctrl+q exec /bin/false

            1. 2

              Then I can’t use Ctrl+Q elsewhere.

            2. 2

              I wonder if they might entertain a patch from some contributor..

            1. 6

              Question for the group. If you use Stylus (or used to use Stylish), what do you use it for?

              I headed over the the userstyles.org site and most of the styles seem to be “dark themes” or other cosmetic changes like changing the background of a site. Are there more practical uses of the extension? Can it modify HTML or Javascript (where the real power would be), or is it CSS only?

              1. 27

                other cosmetic changes like changing the background of a site

                You call it cosmetic changes, other people call it accessibility.

                1. 7

                  I use it to tweak the layout of some of the sites I use, like moving a fixed top navbar to the side, and making it smaller. Or making narrow columns wider. Small stuff like that, which make the browsing experience much more bearable. I rarely use the social or sharing aspects of it. I haven’t found anything useful there, and I’m not sharing my tweaks either, because they’re very personal anyway.

                  I rarely use it to hide things, my adblocker can do that more conveniently indeed.

                  1. 6

                    I apply a style of body { max-width: 800px; } on a few blogs that weren’t designed with wide browser windows in mind—they spill text across the entire width of the screen, which makes them really hard to read. (You could use your browser’s “reading mode” to fix this, too, but this CSS change usually does the job without breaking any layouts.)

                    1. 4

                      Now that I’ve started using Dark Reader, I use Stylus for well-made, site-specific dark themes. Previously I was using the Gruvbox Dark Everywhere userstyle, but its shotgun approach leaves much to be desired. Beware: Dark Reader has some major performance issues on Firefox.

                      Edit: My installed themes (which I enable along with Dark Reader after sunset): https://ptpb.pw/nUrG.png

                      Edit 2: Also I enable the Firefox and Tree Style Tabs dark themes. This really needs to get more streamlined.

                      Edit 3: And then I get to enable dark/night mode on sites that support it natively, one-by-one as I visit them. Sigh.

                      1. 2

                        Man, Dark Reader is great. Thanks for bringing my attention to that.

                        1. 1

                          Funny that you mention this. I don’t often long for the days when I had a CSS styling addon installed, but exactly this Dark Reader page made me bob my head back 20cm. That page seems to be made for a mobile phone or tablet screen, not a 27” monitor. Wow.

                        2. 3

                          Fixing fonts on the most obnoxious websites.

                          1. 3

                            I like to use it to remove ads in core apps I use. I’d like to share the styles I create with others who use those apps. I use the free version of toggl, and they have a persistent, animated thing in the bottom-right corner that tells me the benefits of “going pro”. I just made a stylish thing to display: none the element which matches that rule. It’s great.

                            1. 1

                              Is there an advantage to that over the “block element” feature that exist in most ad blockers?

                              1. 1

                                I use brave and Firefox which have some built in blocking. I haven’t thought of that, but I’ll take a look!

                            2. 3

                              I used to use Stylish - and a predecessor the name of which has slipped my mind - to reduce the size of the UI in Firefox - smaller tabs, less wasted space -> more space for page content.

                              1. 2

                                i’m considering using it to shrink the gmail sidebar label font - they recently increased it from the same size as email body text to a size bigger, and it’s very annoying.

                                1. 1

                                  I sometimes use it to tweak interfaces, like get rid of annoying panels or adding bold to certain elements

                                  1. 1

                                    I just started using this again after forgetting that it existed. Another forum I visit regularly now is ad free and doesn’t waste a bunch of whitespace where these were removed. I created an ironic one for hiding the ads for stylish for android on userstyles.org… :D Also, my day job involves using a console that has a lot of useless (to me) menu items - bye bye.

                                    1. 1

                                      Can it modify HTML or Javascript (where the real power would be), or is it CSS only?

                                      Is it possible for extensions to request access only to modify CSS?

                                      1. 4

                                        CSS can still exfiltrate sensitive page content (albeit attacks are harder to write).

                                        1. 1

                                          If you write your own CSS this is no longer a problem :P.

                                          1. 1

                                            That’s good to know. I’m going to do some reading on this, but do you have anything you recommend?

                                        2. 1

                                          There are two sites I frequent that have awful stylesheets that I can’t stand so I have custom stylesheets that make them look better.

                                        1. 3

                                          I have many features in AdaChess that makes the engine slower (and therefore weaker) than the equivalent without those features. But they are those features that makes the identity of AdaChess. I am confident that I could also write a stronger engine in C. But it would not be fun, neither would worth it.

                                          a person after my own heart!

                                          1. 8

                                            the problem with css as a language is that it does not make conceptually simple things simple. particularly when it comes to the sort of neat, grid-based layout that app developers are used to from using frameworks like gtk, qt, windows forms, etc.

                                            if i can sketch a layout in a few minutes on a piece of paper, it should not take days of fighting with css to get it to work right, even if i (admittedly) don’t have much experience in front end development; there is no other UI library, toolkit or framework that i found so hard to get to grips with.

                                            1. 12

                                              I’d argue that when using windows forms, qt, wpf, etc I find myself stifled by lack of freedom whenever I try to make an interface of any sort of complexity. Usually it takes a few lines of CSS (especially with modern CSS features like grid and flex) to get most layouts set up, where in native application frameworks, doing things like trying to style all buttons the same color are frustratingly difficult. In some things like windows forms, it’s practically impossible to style components as a group instead of individually.

                                              I don’t think this is a problem with CSS as it exists today, though the argument may have been valid 10 years ago.

                                              1. 10

                                                I think this arises from a fundamental difference between UI philosophies.

                                                In web applications, your design should represent your unique brand. Buttons shouldn’t be buttons, but should be your buttons.

                                                In client apps, consistency is key, so all buttons should be the OS-standard buttons.

                                                The problem becomes, who is in control of their experience? My current desktop environment is light text on a dark background. Any website I load is apparently free to override this. I have to leverage browser extensions to trick websites into looking the way I want them to look. Worse- because my desktop foreground color is light, and my desktop background color is dark, I’m playing a game of roulette with websites. Some of them change the foreground text color, others change the background color, but many don’t change both, which means I’m left with dark-on-dark or light-on-light text.

                                                The fundamental unit of control should be the end user, not the designer. I should decide what a button looks like, and if I delegate that responsibility to another piece of software, it should be my OS/DE first. The worst thing about the web is the idea that each website needs to look their own way. Fuck your website. Buttons should always look like buttons. Text fields should always look like text fields. The font I set as my default font should be the only font that displays text for readability (feel free to use bullshit fonts for shit I don’t care about, like logos or ads, bullshit deserves bullshit).

                                                Users should be the owners of their experience. Always and forever. And yes, I do override your CSS. All the time.

                                                1. 2

                                                  You mean with firvor that the content should be bundled rather than the content + the style + the platform ?

                                                  I agree that extracting the actual content out of the website is getting challenging…

                                                  No, I do not want to subscribe, just the text. No I wish to not send you cookies tokens. Oh, sub-sub menu to disable them, let’s do them all. Now what ? Ad blocking does not work ? Oh right, self promotion from publisher… And I can’t read with these 3em quotes all over the article.

                                                  sight Do you serve the article as FTP or Gopher ? Hehe, no of course.

                                                  Ah text browser does not even load the page, content loads through JavaScript.

                                                  Ok, let’s stick to the website.

                                                  1. 1

                                                    And on publishing side: I may have lost 500~1000 words texts due to the session I was logged in timed out, this about a 50 times.

                                                2. 4

                                                  Let’s not forget the stack that lies below: it just takes a few lines of CSS and a zillion of lines of code in the web browser. Chromium has more lines of code than FreeBSD, OpenBSD, DragonflyBSD and NetBSD altogether for instance.

                                                3. 6

                                                  Yeah the native app toolkits rend to work on a “place things on a grid” strategy, whereas CSS is much more about “flowing the content according to the viewport”

                                                  It was definitely the right choice in the end given smartphones becoming people’s main browsing devices, but it’s unlike what a lot o programmers were used to.

                                                  I think once you think about the box model deeply, and stop trying to place things at certain parts of the screen, you can reach acceptance of the system more quickly.

                                                  This post on CSS positioning was a huge eye opener for me in this regard. Stuff goes where it goes

                                                  1. 5

                                                    Hmm often when conceptually simple things aren’t simple it may be because it’s not as simple as it appears. I use Bulma.io for css, and it’s pretty light as far as frameworks go, and gives me some sane defaults, but if I were actually a front end developer I can see where I would use less and less of the provided classes.

                                                    1. 3

                                                      So, depending on what level of browser support you’re willing to work with, CSS grid is rather good at doing that sort of grid-based layout you speak of. At least at the basic levels where I have experience with it.

                                                      If you’ve never used it, it is very worth a look

                                                      1. 1

                                                        thanks, i’ll give it a try. this is what i ended up with using flex (which i thought was the way to go, but was way fiddlier than i expected)

                                                        1. 2

                                                          Flex is good for when you want things to flow in one dimension (with the possibility of wrapping to “fake” a second dimension) but don’t care about the exact sizes. For instance, a bunch of text blobs that you want to sit next to each other and spread out to take up the available space.

                                                          For actual grid stuff though, you should use CSS grid, which allows you to place elements in a 2 dimensional grid and give them exact sizes.

                                                          Both features have their uses cases, but neither is a complete solution in and of themselves.

                                                          Here are some good articles on the use cases for each:

                                                          Also here’s a comprehensive guide to using CSS Grid: https://css-tricks.com/snippets/css/complete-guide-grid/

                                                      2. 2

                                                        Personally I’d take CSS over WPF or Winforms any day. CSS certainly has its annoyances, but I found it far less annoying to work with for anything nontrivial.

                                                      1. 2

                                                        Deleted my original rant response because, as @sgreben rightfully pointed out, my rant was exactly the kind of thing i ranted about.

                                                        But, yes, I’d like to see a freeze in new users for a while, to avoid lobste.rs from collapsing under its own weight.

                                                        I’d also suggest:

                                                        1. Culling users who have been new members for X months and never posted (but once you post/comment once, you’re in for forever?)
                                                        2. Requiring more than one invitation for joining?
                                                        3. Moving to a subscription model. I get enough enjoyment out of this site that I’d be happy to pay for it.

                                                        But, that’s just my USD$0.02.

                                                        1. 15

                                                          Culling users who have been new members for X months and never posted (but once you post/comment once, you’re in for forever?)

                                                          I will note that there are people who primarily lurk in any online community. This site has a private message system and possibly other features of value to members who never post publicly.

                                                          Original research I was privy to in my first moderating position suggested that about 20 percent of users were active participants who posted regularly or semi regularly, another 10 percent posted only once or very rarely and the rest lurked. Anecdotal observation suggests that these figures probably are fairly representative of other communities I have engaged in.

                                                          1. 8

                                                            Lurkers are harmful to communities like this, because they have influence in shaping the site but also don’t bother to engage beyond being a silent majority that can be pandered to (purposefully or not) they amplify any democratic issues the site might have.

                                                            Better to purge them and leave control of the site (what little there is) in the hands of the people who bother participating.

                                                            Edit: lurkers here being those who have accounts but don’t post.

                                                            1. 7

                                                              Hi friendlysock, I’m malxau and I’m a lurker.

                                                              The reason I ended up like this is because the technology landscape is very broad today (and getting broader), and I have firsthand knowledge or experience with a tiny fraction of topics that get discussed. So the best way I can see to keep the signal-to-noise ratio high is to read about things that I don’t know, including comments from people more familiar with them, and avoid contributing to or moderating those posts.

                                                              Occasionally there will be something I know, but something I deeply know and have firsthand knowledge of is still rather rare. (In my case, I’ve spent the last 14 years working in Windows kernel mode; I’m an active practitioner, but looking at submissions you’ll see why I don’t feel like I know the breadth of topics being discussed, including things like the Palantir thread.)

                                                              Do you still think I’m a problem? Do you think the site would work better if I commented or moderated more?

                                                              1. 4

                                                                I can’t see your upvotes or flags, so I can’t comment on that front. That said, I think the site would definitely be improved by your participation and submissions of things relating to your background with Windows arcane programming!

                                                                Thank you for giving your perspective here.

                                                                1. 1

                                                                  Your site was refreshingly different since it covered stuff I don’t usually see on Lobsters. Doing low-level kernel stuff, I bet you ran into both content and lessons learned that Lobsters might have found interesting regardless of you writing on Windows. There’s also Lobsters on Windows. There’s also a lot of Lobsters that hate Windows.

                                                                  I have no idea how well your stuff would’ve been received. There’s a chance people might have found it interesting, though. If it’s Windows-like as someone said, an easy example is Minoca OS getting lots of appreciation. Another thread on its documentation had 10 votes. So, there’s potential.

                                                                2. 6

                                                                  Hey there. That seems like a fairly strong opinion. Any research or data you can point me to? I’m not aware of evidence that lurkers are somehow harmful in most cases.

                                                                  1. 5

                                                                    Have you seen HN or Reddit? I’m serious. It’s called hivemind for a reason.

                                                                    People that care enough about a site to post content, or even comment, are, by definition, more involved in the site than users who maintain accounts but don’t do anything but vote up and down.

                                                                    Lurkers who just vote and flag look an awful lot like slacktivists. They’re freeloaders, contributing no content of their own and no discussion, but they can still screw up conversations by voting with a knee-jerk reaction.

                                                                    One of the things that sets Lobsters apart is that is made up quite largely of people that actually write code frequently (instead of, say, being growth hackers, or bloggers, or marketers, or bankers, or whatever else) and that those people are given transparency and tools for interacting with the running of the community. Lurkers run counter to at least the latter of those key characteristics.

                                                                    1. 11

                                                                      Yes, I’ve seen both HN and Reddit.

                                                                      I don’t think I’ve ever seen a forum that didn’t have a lot of lurkers. Do you know of any forums where “post or leave” is actual policy? Do you know of any research on this angle?

                                                                      I’m not making any recommendations here. I’m just seeing people saying “I think we should do X!” and the things I’m seeing don’t fit with my understanding of best practices. But I certainly don’t know everything, so I’m trying to share what I know concerning actual (pertinent) data and asking if anyone knows of any supporting research for their positions.

                                                                      To be clear, I’m absolutely not trying to tell anyone how lobsters should be run. I was given an invitation by a coder who wants to start a discussion board and he asked if I would consider taking on the role of lead moderator. I tentatively agreed.

                                                                      So I’m not actually a programmer, though I have some technical training and so on. I’m genuinely interested in learning if there is good data and research supporting the various proposals in this discussion because I’m looking for, among other things, stuff pertinent to the project I’m trying to collaborate on.

                                                                      I’m genuinely curious and open to seeing good information on such things. I’m aware these questions may be unwelcome here, both because I’m new and because people will tend to interpret my comments as intent to shape policy on lobsters the very day I joined.

                                                                      A best case outcome is that my comments and questions serve to be helpful and thought provoking for people here who are trying to shape lobsters while I get useful resources to support my project. But a less nice and more likely outcome is that people decide my questions are somehow bad behavior and I get told to gtfo of the discussion or something.

                                                                      1. 7

                                                                        I’ve never thought about how lurkers skew voting until this thread, but it seems commonsensical now. You end up with the posters performing for a silent audience, instead of interacting with each other.

                                                                        Maybe a half-measure we could try is giving people a pool of votes that’s replenished when you post, and you spend from that pool when you up or down a story or comment; one post (submission or comment) could earn you 10 votes or something. That way votes come from the people who are actually engaging with the site, but we’re not kicking anyone off for not being chatty.

                                                                        1. 10

                                                                          Maybe a half-measure we could try is giving people a pool of votes that’s replenished when you post

                                                                          No no no no no no no. That would result in users creating a large number of low-effort comments in order to refuel. It’s bad enough that internet users will do almost anything to make a number go up. It’s even worse when you attach actual incentives to that number.

                                                                          1. 3

                                                                            We could do something like requiring a comment/post have at least +3 or something before it counts towards your vote pool; that might be enough to frustrate a lot of the system-gaming, no?

                                                                            1. 1

                                                                              The low-effort posts on popular topics get lots of votes. Probably won’t work.

                                                                          2. 2

                                                                            I’ve never thought about how lurkers skew voting until this thread, but it seems commonsensical now. You end up with the posters performing for a silent audience, instead of interacting with each other.

                                                                            This is an empirical question worth empirically validating before believing. There is also a plausible just-so story that older users feel more confident voting strategically to enforce their political opinions, etc. Form your hypothesis, write a query, decide how to interpret possible results, and then send it to me to run.

                                                                            1. 1

                                                                              That’s a neat idea and I’d be in favor of trying it. I don’t know to what extent that would affect the upvote/downvote dynamics of the site, but I’m interested in finding out, and I don’t think it’s an onerous requirement on people.

                                                                              1. 1

                                                                                a pool of votes that’s replenished when you post, and you spend from that pool when you up or down a story or comment; one post (submission or comment) could earn you 10 votes or something.

                                                                                I think that this is great idea. Personally I would go with 1-2 votes per submission but whatever the number I think we should try it.

                                                                                1. 1

                                                                                  Yeah; I originally said 10 because voting serves a real purpose, and I’d worry that only getting one vote per comment could reduce the quality of the front page, because people would hoard their precious votes. I’m no expert on this stuff, though.

                                                                                2. 1

                                                                                  This idea sounds great. I’m not sure what the dynamics would look like, but it’s be interested in trying it out.

                                                                                3. 6

                                                                                  but they can still screw up conversations by voting with a knee-jerk reaction

                                                                                  Yes, voting does screw up conversations. If I had my way, lobsters wouldn’t have votes on comments, exactly because I don’t think that meaningful conversations should be democratized like that. Lobsters isn’t a very good system for conversations in my very humble opinion (I keep linking to Discourse.org as the model to live up to for a reason). But I don’t think lurkers are necessarily any worse at knee-jerk voting than active commenters.

                                                                                  Lobsters is, however, pretty much the gold standard for link aggregation, for surfacing content from elsewhere. Voting, flagging, and submitting articles without ever commenting is something I think we should be encouraging, because that’s what the Lobsters software is actually good at. Less conversations, more stories.

                                                                              2. 5

                                                                                voting satisfies the “me too” impulse. absent that, I suspect you’d see a lot more actual me too comments.

                                                                                1. 4

                                                                                  If you change the rules to ‘post or get out!’, I suspect you will see:

                                                                                  1. People who are slow to integrate into the community but will eventually post good stuff lose their connection to lobsters and go elsewhere instead of slowly ramping up from just looking to joining to voting to commenting/submitting.
                                                                                  2. Lots of comments along the lines of “I have nothing to say right now, I’m just trying to say something so I don’t get purged”
                                                                                  1. 4

                                                                                    Voting lurkers could indeed be problematic. Perhaps adding a min-karma-threshold for upvoting (similar to flagging), could be a useful experiment.

                                                                                    1. 1

                                                                                      Is the problem with vote lurking the up or down votes?

                                                                                    2. 3

                                                                                      Downvotes are inaccessible until a user reaches a certain karma threshold. Would it make sense to do the same thing for upvotes too, reducing the pool of users that can vote?

                                                                                      I don’t think outright purging users is very helpful, since reading for a while before posting is a common practice (and probably not something that should be discoraged). I agree having a silent voting majority is potentially quite harmful to a forum.

                                                                                      1. 1

                                                                                        reading for a while before posting is a common practice (and probably not something that should be discoraged)

                                                                                        You don’t need an account to read.

                                                                                        1. 2

                                                                                          You don’t, but there are features that are useful for people who are only reading (tag filtering, hiding stories).

                                                                                        2. 1

                                                                                          That inversion is worth thinking on more. The political folks currently do more upvoting of political stuff than submissions or comments. It isn’t limited to them. We see the same thing in the technical threads for some people or types of comments.

                                                                                          1. 1

                                                                                            I was under the impression votes were anonymous, is this not correct?

                                                                                            1. 1

                                                                                              The site won’t tell other users what your votes are, but it needs to know, both to prevent multiple votes and to show you what you’ve voted on. Obviously the site administrators, who have direct database access, can query that information.

                                                                                              1. 1

                                                                                                This is accurate, and I’ve written elsewhere in this thread about that access and the practices around it.

                                                                                              2. 1

                                                                                                They usually vote and comment together. So, you know who some of the likely voters are.

                                                                                          2. 2

                                                                                            how about limiting the votes one has? dota2 does that for reports to keep the reporting system valuable. one of:

                                                                                            • fixed number of votes per time-unit (easiest, but limited impact i think)
                                                                                            • votes per time-unit limited by karma, eg. votes * karma / maxKarma (could become a lobsters ingame currency)
                                                                                            • votes per time-unit limited by submission count (facilitates spamming)
                                                                                            • votes per time-unit limited by combined submission count and karma (i don’t have an idea for a good function to do that ;)

                                                                                            this should at least limit the lurker influence. i for one wouldn’t care if i’d have to manage my votes a bit.

                                                                                            edit: haldean had posted this idea before me, i should have read this thread more thoroughly :)

                                                                                            1. 3

                                                                                              If the intent is to limit the effect of upvotes, and avoid knee-jerk voting, one could also make it mirror the current downvote choices and simply make a user think about why they are up-voting a comment. So an upvote arrow should offer choices such as [technical|meta|..].

                                                                                              1. 1

                                                                                                Or “MAS” for “mutual appreciation society” ;)

                                                                                            2. 2

                                                                                              Wouldn’t that just cause stupid posts like “not lurker” or “first” to trigger account “lock in” – possibly even on very old threads.

                                                                                              1. 1

                                                                                                My concern with a negative eye towards people like myself who don’t post much is that it suggests posting is mandatory regardless of quality or relevance. I am a lurker, but only because I don’t want to clutter up threads with poorly informed or nontechnical content. I wish I had the depth of experience that some more frequent posters have; should I be excluded for being more of a generalist?

                                                                                          1. 1

                                                                                            This document lists changes in Perl 6.d (Diwali) language from Perl 6.c (Christmas) version.

                                                                                            wonder if perl6.e is due on easter

                                                                                            1. 5

                                                                                              Oy, another build tool.

                                                                                              I kind of weary of seeing them show up. Each subtle in their own right, with deep strangenesses and incompatibilities. One Ring to Rule Them All would be grand.

                                                                                              1. 4

                                                                                                An important thing to preserve: for most projects, you can cd into the project directory, and type make (with sometimes configure) and end of the story.

                                                                                                1. 6

                                                                                                  (this reply may or may not contain trolling)

                                                                                                  • Doesn’t apply to Windows,
                                                                                                  • Sometimes you need to run ./autogen.sh
                                                                                                  • Sometimes you need to install a few packages (you have to know the names) because autoconf isn’t bundled as one package on most distros,
                                                                                                  • Sometimes autoconf scripts require its tool packages to be installed in specific versions,
                                                                                                  • Learning to use autoconf requires you to learn a build system which contains backward compatibility for shells/systems that are installed on maybe 10 machines worldwide.
                                                                                                  1. 3

                                                                                                    autotools can be used by developers or maintainers, the release tarballs will not require you to run autogen nor install autoconf/automake

                                                                                                    1. 4

                                                                                                      Except cases where you’re the user and you need to use the git version, because it contains a fix for some obscure bug only you’re encountering ;)

                                                                                                      1. 4

                                                                                                        Or, as is increasingly common, there are no releases and the git repo is rolling-release.

                                                                                                    2. 2

                                                                                                      And then you spend hours tracing m4 scripts because there’s a bug in autofools.

                                                                                                      1. 1

                                                                                                        What a joy to dig into the autogenerated configure file to debug what is going wrong when you compile statically a project with 10+ libraries !

                                                                                                        1. 1

                                                                                                          That’s true, but normally you shouldn’t dig into autogenerated makefiles, unless you’re debugging CMake itself. Standard case is that you debug your build on CMakeLists level (if you’re using CMake).

                                                                                                        2. 1

                                                                                                          Doesn’t apply to Windows,

                                                                                                          I’m there now with a work project that can build on Linux with some of it also on Windows but uses all of CMake and premake on top of autotools, gmake/nmake, gcc toolchain/VC++ toolchain. For a mixed Python/C project this is too much baggage for external users so I’m trying the waf build system. I happen to be stuck on a peculiar and possibly locally inflicted Windows linking behavior but writing rules in a Python DSL is great.

                                                                                                          1. 1

                                                                                                            I’ve tried waf some time ago. It was nice on the beginning, but after a year of using it I’ve stopped understanding my own build systems, because they were nearly standalone Python programs in their own right. Still it was better than pure Makefiles though.

                                                                                                          2. 1

                                                                                                            Learning to use autoconf requires you to learn a build system which contains backward compatibility for shells/systems that are installed on maybe 10 machines worldwide.

                                                                                                            And people like me thank them for that!

                                                                                                          3. 4

                                                                                                            yeah…. that is why, despite its manifest and many defects, I tend to default to make for projects that aren’t deeply intermeshed into a single build system. It often calls out to the ecosystem-specific toolsystem (my home work these days is mostly ocaml, for instance).

                                                                                                            ./build.sh is also a nice standard to have.

                                                                                                            I’m not opposed to redo or another build system. But new generalized systems IMO have to be clearly and visibly The Better Way Forward: 10x or more the obvious effectiveness of make, for someone comfortable writing make.

                                                                                                            (mumble: maybe if we stopped writing C/C++, build systems coagulated around that arcane world would stop appearing, letting us get on with writing new scala build systems)

                                                                                                            1. 3

                                                                                                              I often write a trivial makefile that calls whatever other build tool I’m using, just to preserve this.

                                                                                                              1. 2

                                                                                                                In all my projects, the Makefile is the entrypoint to building, developing, testing & sometimes even deploying the software.

                                                                                                                Yes, you usually end up calling out to programming-language-specific tools underneath (like mix or cabal), but the ability to organize tasks in a dependency tree and to have a single place where they’re all listed is great. Especially when you come back to a project after a long break.

                                                                                                              2. 4

                                                                                                                One Ring to Rule Them All would be grand

                                                                                                                Unlikely. But here’s One Theory to Classify Them All:

                                                                                                                (Yes, same work posted twice, six months apart, by different people.)

                                                                                                                1. 1

                                                                                                                  Thanks for links. I just tied a knot around them to facilitate easier discovery of both for anyone who lands on just one.

                                                                                                              1. 7

                                                                                                                Ceylon came out in that very productive couple of years that also gave us Rust and Go. Ceylon was, IMHO, the most elegant of the three, but (sadly) it ended up going largely nowhere.

                                                                                                                1. 9

                                                                                                                  I really wish this had taken off instead of Kotlin; their null-handling approach seemed a lot more sensible.

                                                                                                                  1. 3

                                                                                                                    Yeah, many things in Ceylon I like more semantics wise, especially when it comes to the type system. Just wish I could use more of Kotlin’s syntax in Ceylon… sadly the C-style type syntax was the main thing I couldn’t stomach. Seems strange that a type-rich language like Celyon went with it :/

                                                                                                                    1. 3

                                                                                                                      Yeah, it was disheartening to that they couldn’t realize that Type ident works very poorly with Generics, despite it being readily apparent in their own language.

                                                                                                                      These problems are the reason why most modern language go with ident: Type instead.

                                                                                                                      I guess the other changes felt to many people as just an useless hurdle to jump over (like actual and formal).

                                                                                                                      Plus the whole nonsense around wanting all modifiers to be annotations and introducing mandatory ; to work around the issues. Don’t take me wrong, I think it’s a good idea to get rid of the arbitrary distinction between syntax for modifiers and syntax for annotations, but trading in semicolon inference for it is a very bad deal.

                                                                                                                  2. 4

                                                                                                                    Why do think it was the most elegant of the three?

                                                                                                                    1. 6

                                                                                                                      That was my impression when all three languages were young years ago. I can’t speak at all for “modern” Rust, though I have used Go fairly extensively.

                                                                                                                      (Rust seems to have changed a lot in that time too, which struck me as…unfortunate? I was never a Rustician, but I gave up even cursorily following the language during the times of great change. Go, by comparison, changed little – though it’s a smaller language.)

                                                                                                                      Ceylon’s type system allows you to express things in a much more natural fashion for the problems that actually come up a lot, IMHO. The way union/intersection typing and flow typing is handled are quite elegant. Mypy, of all places, is starting to kinda match up (though the underpinnings are not as clear) and is really pleasant to use.

                                                                                                                      There’s also the nice part that everything in Ceylon is a class: there are no primitive types. Additionally, all of the fundamental classes are derivable within the type system, thanks to things like enumerated classes. That means that even classes like Integer are, in principle, derivable within the type system itself.

                                                                                                                      The emphasis on declarative data and syntax support for it is likewise nice. I know that Rust’s macro system allows you to do even more, but it seems more fiddly to me (at least from my cursory glances). Go’s module-level init code let’s you do basically anything, but it’s not as “declarative”.

                                                                                                                      Go ticks a whole lot of my boxes: I’ve always loved Rob Pike’s work on concurrency and the Squeak papers are go-tos for when I need something interesting to reread, and I’ve always loved Oberon…and Go is concurrent Oberon with some C thrown in. I’ve written some fairly hefty production Go code and contributed patches to Google’s gopacket library. It’s a great language but I still often end up writing in C for the low-level stuff and Python for the high-level stuff…maybe it’s just because those are the languages I’m most fluent in, though, I don’t know.

                                                                                                                      Rust seems very…large to me. I get why, and I understand and I’m not complaining, but it just feels “big”. Like C++. I will readily admit that I’ve not looked at Rust in years and never wrote any real code with it so I will happily change my mind. I’ve got a copy of The Rust Programming Language sitting in my Amazon cart and will give it a read when things die down at work.

                                                                                                                      Of course, the three languages target different things: Ceylon is an application language, Rust is a systems language, and Go is somewhere in between.

                                                                                                                      1. 3

                                                                                                                        (Rust seems to have changed a lot in that time too, which struck me as…unfortunate? I was never a Rustician, but I gave up even cursorily following the language during the times of great change. Go, by comparison, changed little – though it’s a smaller language.)

                                                                                                                        Rust was always a very open project and was announced at the same time as Go, but in a very different state: as a research project. The massive changes stem from the fact that it wasn’t even remotely done back then.

                                                                                                                        I find that great, of the languages you mention, it’s the only one that was very open to contributions and all the decisions and changes can be traced.

                                                                                                                        That did make it unusable for people wanting a stable language for that time, I agree with that.

                                                                                                                        1. 1

                                                                                                                          have you looked at stanza at all? i haven’t had a chance to use it yet, but it has a nice application-oriented philosophy and is designed around gradual typing.

                                                                                                                    1. 3

                                                                                                                      Hopefully we’re not bored by rust is not other languages stories yet. Not sure if I learned more about rust or ruby here.

                                                                                                                      Rust is telling me that iter() yielded references to integers, but my code expected an actual integer, not a reference to an integer.

                                                                                                                      Now the array was mutated! It turns out Ruby passed integers to the closure by value, but strings by reference. Updating each string inside the loop also updated that string inside the array.

                                                                                                                      I managed to be surprised by both those statements.

                                                                                                                      1. 1

                                                                                                                        ruby passes everything by reference; the issue in the code is that i = i + 1 rebinds i as a reference to a new integer object. the other half of the puzzle is that integers are immutable, and strings are not. the writer managed to confuse the issue by saying

                                                                                                                        str = str << "-mutated"
                                                                                                                        

                                                                                                                        instead of

                                                                                                                        str = str + "-mutated"
                                                                                                                        

                                                                                                                        in both cases, str is rebound to the result of the RHS, but the + operator adds two strings and returns a new string, whereas the << operator modifies a string object in place and returns the same object.

                                                                                                                        1. 1

                                                                                                                          Ok, using << seems pretty sneaky here. Thanks for pointing that out.

                                                                                                                        2. 1

                                                                                                                          Have you ever changed the value of 4?

                                                                                                                          In a language other than FORTRAN?

                                                                                                                          (In a more modern take on that old story, I have done it in Python…)

                                                                                                                          1. 3

                                                                                                                            Yes. To great amusement I have played around with reflection in Java and changed the values of signed bytes.

                                                                                                                            For those who haven’t played around with it previously, the JVM has an internal array that caches all signed byte values1.

                                                                                                                            While both private, internal and static it’s still possible to access the field using reflection.

                                                                                                                            If you swap references in that array, sudden 5 becomes 4.

                                                                                                                            1. 1

                                                                                                                              I’ve done the “redefining the value of true” gag in squeak smalltalk. It ends about as poorly as you’d expect.

                                                                                                                          1. 1

                                                                                                                            would be neat to have a set of whitelisted commands it could run, to avoid the issue of a dangerous command being a prefix of the one you want.

                                                                                                                            1. 2

                                                                                                                              I dunno how the hell I missed this when it was originally posted, but oh man this tickles my fancy!

                                                                                                                              The first programming environment that REALLY blew my mind and got me hooked was Atari LOGO. I still find the ideas behind turtle graphics kind of magical in their simplicity.

                                                                                                                              1. 2

                                                                                                                                same :) i have fond memories of reading a magazine article on logo and then implementing turtle graphics in bbc basic

                                                                                                                              1. 3

                                                                                                                                Is OCaml making something of a comeback, or is this some Baader-Meinhof stuff? I just started working with it a bit to do a new plugin for LiquidSoap, and suddenly it seems it’s all over my feeds.

                                                                                                                                1. 5

                                                                                                                                  I’m not sure, but I think ReasonML might be raising a bit of interest and/or awareness. It certainly has for me - ReasonML and ReasonReact are are about at the top of my new-things-to-try list.

                                                                                                                                  1. 3

                                                                                                                                    i think even before that, ocaml has been making a steady if gradual comeback over the last few years. opam, for instance, has been a pretty big boost for it (never underestimate the value of a good package manager in growing an ecosystem!), jane street’s dune is really exciting snce build systems have always been a bit of a weak spot, and more recenrly, bucklescript has been attracting a lot of attention among the webdev crowd even before reason came along (and now, of course, reason/bucklescript integration is a pretty big thing)

                                                                                                                                    1. 1

                                                                                                                                      Sadly I’ve never been able to figure out Opam… it seems to mutate the global package environment every time you want to build something, just like Cabal does (although they are fixing it with the cabal new-* commands). This is a massive pain if you want to work on different projects at once, and makes it hard to remember what state your build is in. Wish they would learn a bit from Cargo and Yarn and make this it more user friendly - so much good stuff in OCaml and Coq that I’d love to play around with, but it’s wrapped up in a painful user experience. :(

                                                                                                                                      1. 3

                                                                                                                                        are you using opam to develop projects foo and bar simultaneously, and installing foo’s git repo via opam so that bar picks it up? that is indeed a pain; i asked about it on the ocaml mailing list once and was recommended to use jbuilder (now dune) instead, which works nicely.

                                                                                                                                        1. 1

                                                                                                                                          just came across this, might be useful: https://esy.sh/

                                                                                                                                    2. 4

                                                                                                                                      OCaml is such a well designed programming language with such wide reaching influence that I hope people continually rediscover it does make a comeback.

                                                                                                                                      1. 3

                                                                                                                                        Andreas Baader and Ulrike Meinhof co-founded a left-wing terror group 1970 in Germany that killed over 30 people. I can’t see a connection here but maybe you could elaborate your comment.

                                                                                                                                        1. 6

                                                                                                                                          It’s a synonym for the “frequency illusion” in some circles, the illusion of something being more common recently when it’s just that you started noticing it more recently.

                                                                                                                                          1. 2

                                                                                                                                            I don’t get the connection.

                                                                                                                                            1. 3

                                                                                                                                              It’s like the Streisand Effect or the Mandela Effect: named because of some phenomenon around an event that an onlooker noticed and popularized, not because of any connection to the person themselves.

                                                                                                                                              https://science.howstuffworks.com/life/inside-the-mind/human-brain/baader-meinhof-phenomenon.htm

                                                                                                                                              “Now if you’ve done a cursory search for Baader-Meinhof, you might be a little confused, because the phenomenon isn’t named for the linguist that researched it, or anything sensible like that. Instead, it’s named for a militant West German terrorist group, active in the 1970s. The St. Paul Minnesota Pioneer Press online commenting board was the unlikely source of the name. In 1994, a commenter dubbed the frequency illusion “the Baader-Meinhof phenomenon” after randomly hearing two references to Baader-Meinhof within 24 hours. The phenomenon has nothing to do with the gang, in other words. But don’t be surprised if the name starts popping up everywhere you turn [sources: BBC, Pacific Standard].”

                                                                                                                                        2. 2

                                                                                                                                          I also seem to see it more often recently. Either Baader-Meinhof too (umm; or “reverse Baader-Meinhof”? seems I’m getting pulled in thanks to recent exposition?), or I have a slight suspicion that ReasonML may have contributed to some increase in OCaml public awareness. But maybe also Elm, and maybe F# too?

                                                                                                                                        1. 1

                                                                                                                                          that was one heck of a garden path headline :)

                                                                                                                                          1. 1

                                                                                                                                            clickbait vs genuine functionality dichotomy :)

                                                                                                                                          1. 3
                                                                                                                                            • reading. i spend an inordinate amount of time buried in a book. no regrets.
                                                                                                                                            • tournament scrabble. it’s a ton of fun, and i like the community.
                                                                                                                                            • cryptic crosswords. solving and setting. life goal is to set for the guardian, because everyone needs an impossible dream :)
                                                                                                                                            • cooking. not just enjoyable, but it pays off in tasty food at the end of the day ** cocktail making. relatively new addition, so far i’m liking it
                                                                                                                                            • songwriting. mostly filk (think weird-al-style parodies)
                                                                                                                                            1. 8

                                                                                                                                              Is it just me or are other people also bothered by the over use of emoticons and the low quality of this writing? I wish that style of writing would stay confined to SMS and not bleed into technical articles.

                                                                                                                                              1. 14

                                                                                                                                                I don’t know how you measure “quality of writing”, but I thought it was fine.

                                                                                                                                                No typos I could read and good sentence structure. Tasteful use of emojis I thought. Distasteful would be every one or two paragraphs, but they only used like 5 in the whole article.

                                                                                                                                                Just a different way to express. A waaaay more casual one.

                                                                                                                                                1. 5

                                                                                                                                                  i’m a fan of emoji used to decorate text, but not used to replace words.

                                                                                                                                                  1. 3

                                                                                                                                                    That’s a good way to put it. Indeed.

                                                                                                                                                  2. 5

                                                                                                                                                    Tasteful use of emojis I thought.

                                                                                                                                                    Maybe it’s just me but when I see “Oh 💩, it compiles to JavaScript.” I just have to think of trying-to-be-cool parents, which I just find tiering. And that’s setting aside that I don’t believe vulgar language should be used at all in written documents.

                                                                                                                                                    1. 1

                                                                                                                                                      Can’t disagree with that, tbh (on the use of the shit emoji).

                                                                                                                                                    2. 1

                                                                                                                                                      “Tasteful use of emojis” sounds like “subtle trolling” to me.

                                                                                                                                                      Although it’s ok, I only see the same “tofu box” emoji.

                                                                                                                                                      1. 1

                                                                                                                                                        ‘Subtle trolling’ is quite like emoji use in that if you notice it, it’s wrong. The whole point of trolling is to rial someone up without them realising they’ve been rialed up.

                                                                                                                                                        1. 3

                                                                                                                                                          Did you mean to write “rile” or is this comment itself an example of subtle trolling? ;) ❤

                                                                                                                                                          1. 1

                                                                                                                                                            I did mean to write ‘rile’, yeah.

                                                                                                                                                          2. 1

                                                                                                                                                            I am reacting to the over-use of emoji as a way to get personal. It’s good, but companies tends to use it to promote a product, so I have gotten allergic. Made with :love: by $BigCorp. Put a :tiger: in your :engine: …

                                                                                                                                                            On the other hand, I see no reason against putting emoji on one’s own blog, readers are not pushed straight onto the posts after all…

                                                                                                                                                      2. 4

                                                                                                                                                        Didn’t bother me since it was at least a different style. I like seeing a mix of styles. If it annoyed you, I think you’ll like some of his comments on the HN thread which get right to the point. Specifically, he as a list of what’s bad and what’s great.

                                                                                                                                                        1. 0

                                                                                                                                                          Indeed, these are more substantial. I might be a little bit burned out by the “code ninjas” out there and the impression that software engineering is a dying art. Now you can do a two month bootcamp on React and VSCode and get a job. Even Google stopped asking for CS degrees.

                                                                                                                                                          1. 5

                                                                                                                                                            Careful. In my day job I work on implementing dependent type systems, with an eye for improving low level binary format parsing by leveraging formal verification. And yet I dropped out of CS and I use VS Code. Opening up other pathways to people getting into programming does not mean that we have to discount the importance of a high quality CS education. We would also be wise to not assume that a CS degree correlates with a good aptitude for programming.

                                                                                                                                                            1. 1

                                                                                                                                                              Yes, you’re absolutely right, and I’d really like a wider range of people get into software engineering, CS degree or not. However, from my anectodal experience, I find there is a growing gap in knowledge and values, and am wondering why it seems so.

                                                                                                                                                              1. 4

                                                                                                                                                                I find in fact that many university courses are actually doing more harm than good, pedalling decades old software engineering practices (like the gospel of Java, OOP, imperative programming and UML) rather than teaching core principles of programming languages, mathematics, and algorithms that age more slowly, and are critical to encouraging and inspiring the next generation of CS researchers. This is partly industry’s fault, and partly the fault of universities.

                                                                                                                                                                I see industrial programming as more a vocational trade, and employers should shoulder more of the burden of teaching up-to-date best practices. Let the universities do what they do well: theory, and don’t expect CS graduates to be excellent programmers from day one, but do expect them to be able to eventually become much more effective and nimble in the long run than a entry level boot-camp employee (depending on that eployee’s desire for self-education). By the same token I think universities should not get caught up in chasing the treadmill of the latest technology, and be up front to prospective students about that.

                                                                                                                                                                1. 2

                                                                                                                                                                  This is really spot-on. I studied in France, where the curriculum is much more theoretical (hence less dependent on the technology of the day), but living and working in North America I see that a lot of CS graduates trained to specific tools & technologies without a good understanding of the underlying principles. This makes new recruits ready to use technicians if you use the technology of they day, but if you use anything exotic both parties are facing a lot of pain.

                                                                                                                                                                  1. 1

                                                                                                                                                                    The best we can do is try to swallow our sadness and frustration, and do a best to inspire and excite the next generation of programmers. I find new programmers are often far more receptive to more interesting ideas, including formal verification, rich type systems, and functional programming. I always treat a new programmer as a great opportunity: we have the power to shape their future directions through the doorways we open to them, and the opportunities we provide.

                                                                                                                                                                    1. 2

                                                                                                                                                                      I like your enthusiasm, it’s good to be reminded of that. Thanks a lot for the conversation!

                                                                                                                                                            2. 2

                                                                                                                                                              Even Google stopped asking for CS degrees.

                                                                                                                                                              As far back as 2008, Steve Yegge was saying you don’t need a CS degree to get a job at google: https://steve-yegge.blogspot.com/2008/03/get-that-job-at-google.html

                                                                                                                                                              So I would say Google’s hiring practices and the bootcamp movement are largely unrelated, at least, seeing as I was a relatively early bootcamp grad and that was in 2011/2012.

                                                                                                                                                        1. 2

                                                                                                                                                          interesting! i have a (backburnered) project trying to write libraries in ocaml and call them from racket; this should be very helpful.

                                                                                                                                                          1. 3

                                                                                                                                                            i decided to install antergos rather than vanilla arch on mine. can recommend; it’s just an arch distro with a few nice conveniences added on top and a more streamlined install process.

                                                                                                                                                            1. 1

                                                                                                                                                              To be honest, I’m glad he’s retiring. I feel like he’s been trying to take the language places it really shouldn’t go of late. If he wants a type safe language he should design something new and call it Guidothon :) Let Python do what it does well.

                                                                                                                                                              1. 4

                                                                                                                                                                my day job is doing static type inference for python (in friendly competition with mypy), so i can speak to this - no one, from guido downwards, wants to turn python into a “type-safe” language. the PEPs have always been explicit about how type annotations are treated strictly as comments by the language, are not needed, and can be safely ignored if you don’t want to use them; they just provide a clean and natural way to document your types with a consistent standard that third-party tools can use to do static typechecking.

                                                                                                                                                                note also that your python code has types; they just aren’t enforced at compile time. consider the following code:

                                                                                                                                                                def f(a, b, c):
                                                                                                                                                                  return b * b - 4 * a * c
                                                                                                                                                                
                                                                                                                                                                def g(x):
                                                                                                                                                                  return f(x, "hello", "world")
                                                                                                                                                                

                                                                                                                                                                python will run this obligingly enough, only crashing when you call g which in turn calls f which throws an exception because you are trying to perform arithmetic operations on strings. now consider the same code with annotations:

                                                                                                                                                                def f(a: float, b: float, c: float) -> float:
                                                                                                                                                                  return b * b - 4 * a * c
                                                                                                                                                                
                                                                                                                                                                def g(x):
                                                                                                                                                                  return f(x, "hello", "world")
                                                                                                                                                                

                                                                                                                                                                python will still treat this code identically to the first version; you haven’t lost any of your ability to shoot yourself in the foot. but now you have two additonal things - someone can read the type annotations on f and know what it expects without having to read the actual code, and a static type checker can analyse your code and tell you that you’re calling a function that expects floats with strings before you ever run it.

                                                                                                                                                                all that PEP484 added to the language was a standard notation to add these helpful type comments, and some syntactic support from the parser and interpreter to make them a natural looking part of the code.

                                                                                                                                                                1. 2

                                                                                                                                                                  If Guido was the sort to name something Guidothon, then I strongly suspect he would have done decades ago, and now he’d be retiring because of GEP 527, etc, etc.

                                                                                                                                                                1. 12

                                                                                                                                                                  Say what you will about the Ruby community, but I’ve never seen them fly into a moral panic over a tiny syntax improvement to an inelegant and semi-common construct.

                                                                                                                                                                  The person-years and energy spent bikeshedding PEP 572 are just astoundingly silly.

                                                                                                                                                                  1. 7

                                                                                                                                                                    Say what you will about the Ruby community, but I’ve never seen them fly into a moral panic over a tiny syntax improvement to an inelegant and semi-common construct.

                                                                                                                                                                    Try suggesting someone use “folks” instead of “guys” sometime…

                                                                                                                                                                    1. 13

                                                                                                                                                                      I switched to folks and do you know how satisfying of a word it is to say? “Hey folks? How’s it going folks? Listen up folks!” I love it.

                                                                                                                                                                      On the other hand the interns weren’t too keen on “kiddos.”

                                                                                                                                                                      1. 6

                                                                                                                                                                        I’ve gotten used to saying “’sup, nerds” or “what are you nerds up to?”

                                                                                                                                                                        1. 5

                                                                                                                                                                          A man/woman (or nerd, I guess) after my own heart! This has been my go-to for a while, until one time I walked into my wife’s work (a local CPA / tax service) and said, “What up, nerds?” It didn’t go over so well and apparently I offended some people – I guess “nerd” isn’t so endearing outside of tech?

                                                                                                                                                                          Thankfully, I don’t think I learned anything from the encounter.

                                                                                                                                                                          1. 3

                                                                                                                                                                            It’s not endearing within tech to anyone over 40.

                                                                                                                                                                            1. 2

                                                                                                                                                                              I generally only use it in a technical setting – so within my CS friend group from college, other programmers at work, etc… whenever it’s clear that yes, I am definitely not trying to insult people because I too am a nerd.

                                                                                                                                                                      2. 1

                                                                                                                                                                        as @lmm notes above, a minimalist, consistent syntax is an important part of python’s value proposition. in ruby’s case, adding syntactic improvements is aligned with their value proposition of expressiveness and “programmer joy”, so it’s far less controversial to do something like this.