1. 3

    Nearly 1/3 of all internet traffic is pornography. Maybe we should focus on the lowest-hanging fruit.

    1. 4

      I can imagine that needless video-conferencing is also a contributing factor, especially with all the online classes/lectures/meetings over the last few months.

      1.  

        I guess needless video-conferencing is much better than needless in-person meetings (by car, train or airplane). Can porn similarly be replaced be actual sex to reduce the carbon footprint? Maybe just replace video porn with still pictures or written erotica (read on eink, like kindle).

        1.  

          Video-conferencing can at least more often than not be replaced by auto-conferencing, and perhaps a slide-show that isn’t transmitted in a video format.

      2.  

        Got a source for that? As far as streaming entertainment goes, YouTube and Netflix seem to make up the plurality. As of 2018, YouTube and Netflix combined make up about 26.4% of all global internet traffic.

        1.  

          Various pornographic websites are certianly visited more frequently than Netflix, but the statistics seem to vary. I found this estimate claiming somewhere between 4%-30%. But either way, there are more problems than just bandwidth usage.

      1. 1

        If that was true, then by this day and age a random person that started coughing on one side of the world could within days set cobol machines on fire on the other side.

        1. 2

          During Y2K, I heard some fortran programmers came out of retirement. The author is saying COBOL, this time around. Which programmers will be called out of retirement a few decades from now?

          1. 13

            Perl, there is a lot of it out there but the pool of people willing to work on it is shrinking.

            1. 3

              Having written quite a bit of Perl and knowing some of the systems that are written in it, I think that it will be deprecated or replaced before I reach retirement because of changes in the business environment, upgrades to the underlying products, changes in process, or just after doing a risk analysis. That some of that stuff is already from the late-90’s and early 2000’s and still going is impressive (or disappointing, depending on your POV).

              1. 2

                Yeah, this. There was a lot of Perl written for an eight year or so stretch, and a lot of that is in places we wouldn’t expect.

                1. 2

                  There will always be money for people who can suspend their sense of smell!

                  1. 9

                    I’ll take clean Perl code over dirty Java or C# any day of the week.

                    1. 2

                      Sure, but how many companies trying to lure Perl programmers out of retirement are going to be in possession of a clean codebase?

                      1. 1

                        I think if you’re luring programmers out of retirement to work on something, the odds of it being clean are fairly minimal, regardless of language.

                        1. 2

                          Absolutely. That’s what I meant. I didn’t mean to imply anything specific about Perl.

                2. 7

                  Ruby, I think

                  1. 1

                    Really? I would think that there’s a lot more legacy business-logic Java code in production than Ruby. Of course, I don’t have any hard data to back up my intuition.

                    1. 5

                      Yeah, but I see Java sticking around, like C or C++ have. Ruby is more niche than Java, but still gets used by a lot of companies. There is a possible future where it’s a legacy skill in 30 years.

                      Though, thinking about this more, I suspect VBA, FOXPRO or MUMPS are probably better candidates.

                      (And yes, I see the irony of posting this on a forum powered by Rails)

                      1. 2

                        TBH, the best thing to “reviwe” Ruby (which is IMO already done in Crystal but nevermind) is to actually kill Rails.

                        It’s completely opposite to what Ruby is, denies its values and throws many of its nice aspects into the window. And then, most people who don’t know Ruby at all are looking at it from the RoR lenses, thinking it’s a huge mess.

                        And, in the meantime, Sinatra sits there like nothing ever happened.

                        1. 3

                          Sinatra at least did influence Go and Node.js/Express a bit.

                          Doesn’t Crystal have exponentially growing compile times due to all of the type inference? At least, I had heard that can be a problem.

                          I don’t see Ruby truly dying any time soon, just becoming progressively more niche over time, kinda like Perl has.

                      2. 4

                        I think the difference is that Java will be alive and well in 20 years … but Ruby? Not sure.

                        • Programming for non-programmers is now largely done in Python (scientists) or Go (infrastructure).
                        • Other languages closed the gap in terms of productivity in the web space, also NodeJS exists.
                        • Learning to program now often happens In JavaScript, thanks to browsers shipping it.
                    2. 3

                      Perl maybe?

                      1. 1

                        I see Perl getting there in the next 10 years, not the next 20-40, if it is going to get there at all.

                    1. 2

                      I am working on a productivity/tasks/notes tracking application. I have tried everything out there but none of them are versatile enough. I am going to scratch my own itch and will see if I am able to scratch it for others too.

                      1. 4

                        Not to be the guy who suggest the solution I’ve found to a be a panacea for all worlds ails, but have you checked out Org-Mode in Emacs? Its incredibly flexible, in both the good and bad ways.

                        1. 1

                          Have you tried just using git issues? The cli

                          1. 1

                            Do you mean https://github.com/dspinellis/git-issue or https://github.com/stephencelis/ghi? CLI workflows tend to work well for me, but I never thought to look up cli issue managers.

                            1. 1

                              Yes. I just push issues to a remote server (in my apt). Then I use jrnl for notes. I can find stuff by tag. I’ll even reference jrnl tags in my git-issues. I use it for everything, not just coding projects.

                              Edit: I use dspenelli’s. I also version my jrnls and push to a remote server.

                        1. 7

                          One thing that I find beautiful (though maybe it’s not good) it’s that the web is very much nature-like, like nature evolution like it’s a living being. Their mess is like the real world, look at the thousands of different species of spiders in real world. An intellligent design would have never created so many species, yet so difficult to differentiate. It has more in common with natural languages with all its exceptions and shorthands. For math-people this is a disaster. But I find it beautiful somehow.

                          1. 3

                            I don’t see what’s beautiful about the average news website requiring megabytes of tracking javascript and shitty ads to be downloaded before I can read simple news articles.

                            1. 2

                              I like how you appreciate the complexity of the web. In any case, spiders are a natural resource: producing materials (e.g. silk), engineering inspirations (exo-skelotans), medicine (venom), food (e.g. birds), and bug population control and so forth, in a wide range of environments. We don’t fully understand. We can barely make a web browser. Some my find it odd there are millions of different restaurants. Or software companies. Or Unix versions. But I agree, the Chrome Browser randomly evolved from a bash script without intelligent intevention. And Unix formed by chance after an explosion in Bell Labs. Joking aside, it is beautiful.

                              1. 1

                                And another thing they both have in common: humanity’s involvement in their development will be their downfall.

                              1. 2

                                Good advice. Suprised the article or commentors didn’t mention jrnl.sh. May I recommend version controlling the jrnl file (or whatever files your solution generates) and pushing changes to a private remote git repo. Make an alias to quickly commit and push. Now you can read and write to your journal no matter where you are. And no overwrites from complex file syncing.

                                1. 2

                                  Anyone using Nix to cut down on the number of services in their docker-compose.yml? Or is everyone going into camps?

                                  1. 11

                                    I have been using NixOS exclusively on my computer for 2 years now (see my NixOS config). I also write Haskell, both at work and as hobby, using Nix instead of stack (more on that here). Ask me anything!

                                    1. 3

                                      So if I start with your NixOS config, can I get staarted with NixOS and adapt it to my needs? Is it possible to combine it with Guix?

                                      1. 4

                                        Is it possible to combine it with Guix?

                                        Partially. Guix is basically a fork of Nix with Scheme implanted instead of the Nix expression language. Both package managers use the same fundamental unit (Nix’s derivation), and derivation (.drv) files produced by Guix can be imported in Nix. There’s no easy way of bridging that gap though, currently. I’m also not sure if both can run off the same store.

                                        As for running Guix on NixOS, work is being done (albeit slowly) to enable this via a NixOS module.

                                        In general I’d recommend learning the Nix language instead. Even as a Lisper, I find it to be quite pleasing to work with once you get the hang of it. There’s a one-page overview over the language that I wrote a while back to help people get started, which you might find useful.

                                        1. 1

                                          Thanks for this. Your one-pager is really useful; perhaps the most accessible intro to the lanauge I’ve read. But I have to say that the Nix language makes me yearn for the clean semantics and constructs of Scheme. Rather than running Guix on Nix, wouldn’t it be easier and cleaner to write Nix on Guix? I don’t mean to start a language war here but if you put a gun to my head and asked me to unify the two approaches then i know which route I would choose.

                                          1. 1

                                            Glad to hear nix-1p helps!

                                            Nix has a few warts (such as the ? operator and some of its builtins), but overall seems like a fairly clean language to me.

                                            There’s pros and cons to each of the two approaches here. For example, Guix gets namespaces for free from Guile, which means there is a defined and queryable package set (whereas Nix just has one big attribute set that you traverse).

                                            The downside of this is that you now have a namespace, and declaring things into them becomes a side effect. In Nix it’s very easy (for people experienced with the language & tooling) to understand exactly which code is relevant, this becomes less clear once you have sequential execution, mutability and so on.

                                            My ideal setup would probably be a language with the exact semantics of Nix (purely-functional, lazy) but an S-expression syntax. That’s easy to implement, but at the moment there’s more important things to work on in the ecosystem.

                                        2. 2

                                          So if I start with your NixOS config, can I get staarted with NixOS and adapt it to my needs?

                                          The first step would be to make a fresh install of NixOS on your machine. And then, yea, you can fork and use my config per the instructions in README; although you don’t really need to. You can start from the NixOS base configuration.nix, and then customize it based on the tips from https://nixos.wiki/

                                          Is it possible to combine it with Guix?

                                          Nope. Guix does not even use Nix.

                                        3. 1

                                          Have you used docker inside NixOS? And if so, why?

                                          1. 2

                                            To run an one-off image from Docker registry, like mysql or redis, specific to a project. Docker is generally not required on NixOS for creating reproducible environments.

                                        1. 1
                                          • Thinkpad x220 for coding, upgraded with 16GB RAM and a 256GB SSD, running NixOS. It’s kinda old and not very fancy, but with the upgrades it boots up in a couple of seconds and never hangs, so it’s more than good enough.
                                          • Self-built desktop for gaming: i7 9700k, 16GB RAM (I might buy another 16GB stick soon), 1TB m.2 SSD, RTX 2060.
                                          1. 1

                                            Just curious. Do you use NixOS because of strictly professional demands or is it more of a personal preference? FYI I don’t have a pressing need to use NixOS but I’m pretty sold on the concept.

                                            1. 2

                                              Personal preference. I hate dealing with users and groups, and systemd units, and digging into /etc to edit config files and then forgetting which ones I’ve edited and what I’ve changed, and then moving to a new computer and having to learn to do it all over again. I like how in NixOS that’s all in a single documented config file.

                                              Also nix-shell is really neat, I like keeping my environment clean so being able to open a shell with a program or library I need in a specific moment (or when I’m developing) and knowing it won’t be there anymore when I close it is great.

                                              Only wart is that if you download a random binary and try to run it chances are it won’t work and you’ll have to mess with patchelf to make it run.

                                              1. 1

                                                Okay I may just have to get started sooner than later. Thanks for the caveat about ‘patchelf’.

                                          1. 2

                                            The world needs another open-source shared-memory IPC library. Getting the locking right is no easy task. There is a ton of use for this and you’d think there would be more open-source ones than there are, which leads me to believe there are a lot of proprietary solutions walled off. Hopefully, others will help out with the cause here. Definitely going to play with this when I can. I need that walk-thru in the article because I’m not a C++ programmer. I shelved a project because I couldn’t find a shared-memory IPC library that worked for my use case and was understandable.

                                            1. 3

                                              Hey, I’m the author of the post. Currently working on ironing out a few bugs in the library and improving performance. I’ll write a detailed post about the library soon. You can check out the library here. It currently supports pubsub transport of C++ object using msgpack, and I’m working on adding RPC support. Let me know if you run into any trouble.

                                              In the meantime, if you want a great IPC lib for Windows, you can check out Microsoft’s IPC, and for Linux I found YAIL.

                                              1. 2

                                                I’ll keep my ear to the ground. Thank you.

                                            1. 8

                                              The writer’s ability to reasonably explain this in very simple terms for everyone is remarkable. It’s a sign of having a good understanding of the domain. Seems obvious now but someone could have made that way more complicated.

                                              1. 9

                                                Yeah Steve Klabnik is awesomely good at this. I’m pretty sure he wrote or co-wrote the original “Rust for Rubyists” as well.

                                                1. 5

                                                  Yes he did and that turned into the official Rust book, which he co-authored with Carol Nichols.

                                              1. 2

                                                Another point is that StackOverflow answers in functions, methods, or snippets. We generally code in modules. At best, user will provide stripped down modules into a minimal viable example that can be ran (like on a code playground). However, you can’t precisely match your module with that. Hence we must search. That mismatch fundamentally drives duplicates in perpetuity. Other than that, I 100% agree with the author.

                                                1. 1

                                                  Maybe start asking “What’s a more up-to-date way of doing X?” or “What’s an alternative way to doing Y?”.

                                                  1. 4

                                                    The author is very passionate about his work. And I like the chart of loc in languages that the author wrote over the years. I think it’s a trajectory that many GenX and late millennial functional coding converts share. Curious, are there any Clojure lovers that work concurrently in a non-functional language that they also love? Like the loc chart shows, my experience is that most don’t willingly code in more than one major language in general.

                                                    1. 3

                                                      Having used Clojure for years (and Java before that), I’ve rather been enjoying Kotlin. It has enough functional coding constructs (and embraces immutability) that it feels rather similar, in some ways.

                                                      I use both languages at home and at work.

                                                    1. 4

                                                      It’s the age old debate between Socratic thinkers and Aristotelians. Functional programmers impose their model on to a computer and the world. Pure functions, ideally, with no regard to actual hardware if they can help it. Aristotalians put the hardware first, making abstractions to model the hardware for human use.

                                                      1. 7

                                                        This analogy only works if you consider computer architecture to be somehow “natural”. Only software people could ever think that way; computer engineers would find that perspective quite amusing. They generally optimize their designs for existing software, so there’s a feedback loop in place. Computer architectures specifically designed for functional abstractions have been proposed, but the economics of hardware manufacture are not favorable for experimentation. So functional language designers have, quite consciously, mapped their abstractions onto features provided by available hardware. A couple of links:

                                                        1. 1

                                                          Good point about the feedback loop. I meant it more in the way that electrical engineers must optimize by caching memory to reduce latency for read/writes. Alan Turing or Von Neumann didn’t invent latency as a design choice. Ideally, there would be no latency anywhere in computer hardware. Abstractions such as async are invented to work with the nature of latency. Working with the ‘cards we were dealt’.

                                                          Thanks for sharing the links.

                                                          EDIT: To drive home my point, I envision some lisp or some functional language of today useable on hardware of today and the future. Uncle Bob has a good point about Clojure. I can’t say that about Python and others. Look how many environments lisps can live on, all while giving you powerful high level tools. Functional languages are more ‘eternal’ in form than procedural languages. Hence my comparison of Socrates and Aristotle.

                                                      1. 2

                                                        Doing some coding exercises - and some mentoring - on exercism.io

                                                        Still not having fun with Rust. Does it ever become fun?

                                                        1. 2

                                                          My take: (NOT a Rust fanboy!) - it depends on whether or not the problems you enjoy solving are the kinds of problems that benefit from ultra fine grained control and the performance wins you get from being much closer to the metal in terms of memory management.

                                                          I don’t personally find it all that enjoyable to work in, but that’s not an indictment of it at all, it’s about me. I enjoy working in programming languages with a much higher level of abstraction like Python, Ruby, and the like.

                                                          1. 2

                                                            It was kinda painful for me just doing excercises and reading the rustbook and whatnot. It’s enjoyable now. Working on actual projects made it sink in for me.

                                                          1. 7

                                                            I tried hard to find examples and gave up

                                                              1. 3

                                                                Me too. Pity that many people will come up to the web site, click on Examples, which leads them to a mostly empty page with some links, click there and find no overview and give up (at least I did). Would be great to have some examples and/or comparisons with other regexes. Sigh…

                                                                1. 6
                                                                  • OS: Void Linux
                                                                  • Window Manager: dwm
                                                                  • Terminal: st
                                                                  • Chat: weechat hosted on https://tilde.town
                                                                  • Shell: zsh
                                                                  • Browser: qutebrowser (usually with javascript disabled)
                                                                  • Music: cmus or Spotify
                                                                  • Email: protonmail (which I am looking to get away from)
                                                                  • Other Stuff: dmenu, sacc, MultiMC, and youtube-dl
                                                                  1. 1

                                                                    I can’t believe your’e the only one (so far) to mention cmus for music. It’s so lightweight and versatile. And you don’t have to use a mouse.

                                                                  1. 2
                                                                    • Firefox
                                                                    • Todoist
                                                                    • jrnl.sh
                                                                    • Slack / IRC
                                                                    • Fish shell
                                                                    • VSCode
                                                                    1. 2

                                                                      jrnl.sh is awesome. It helped me organize my life.

                                                                    1. 8

                                                                      There are arguments made that social media causes harm to others (e.g. polarization, isolation, and anxiety). Futhermore, many believe they are harmed by a loss of privacy from the advertising strategies of Google, Facebook, and others. The EU has taken these concerns very seriously and the US has been in a heated debate on the role of social media companies in society. A fair amount of open-source contributors are employed by such companies.

                                                                      The point I’m making is not whether social media and advertising causes harm, but that what causes harm is highly politicized and subjective. Software development is not the same as practicing medicine.

                                                                      1. 0

                                                                        It is true that harm is subjective, but that doesn’t seem to be a problem for this license as currently written. Subjectivity isn’t a problem for the license because it implicitly uses the software user’s definition of harm (not the licensor’s or anyone else’s).

                                                                        How I came to that conclusion: the restriction on use of the software only applies to “systems or activities that actively and knowingly” harm someone’s well-being. In my interpretation, “knowingly” means that the user of the software must think they are causing harm for that rule to apply. So even if most people think that, for example, social media software is harmful, the license wouldn’t forbid a Facebook employee from using the licensed software as long as that employee personally doesn’t “know” that social media is harmful.

                                                                        Of course, enforcing that could be difficult, because if you accuse the software user of causing harm and they respond that they didn’t think they were causing harm, there is no way to know whether they are telling the truth about their thoughts. But that’s a separate problem.

                                                                        1. 2

                                                                          In my interpretation, “knowingly” means that the user of the software must think they are causing harm for that rule to apply.

                                                                          What you said may be textually correct, but it is easily weaponized. It can be argued that Google and Facebook are lying, like Big Tobacco. Sean Parker, a Facebook founder, said they knowingly created an addictive platform. Other executives and developers have made similar statements about ‘knowing’. There are also studies that can be cited. Therefore, it could be argued that such employees knowingly cause harm.

                                                                          Again, I’m not making this argument. I’m just making a point.

                                                                          If the open-source community advocates this license, many could argue that is not Hippocratic but instead hypocritical. The open-source community is sponsored to a great extent by social media and advertisers.

                                                                          EDIT: ‘many could argue that this is not Hippocratic but instead hypocritical.’