1. 3

    IRC is great. It’s easy to implement a client for, simple enough to understand, and used pretty widely. It’s still the main protocol I use to keep in touch with people.

    The only thing I wish that it would get is server side history, so I could scroll back in a channel without idling or setting up a bouncer.

    1. 2

      Early this year I finally broke down and subscribed to IRCCloud. They handle all the details of staying connected so you have access to channel history. Admittedly it works out to about 14 cents per day. Well worth it, in my opinion.

      1.  

        I’ve been keeping an eye on IRCCloud – I currently keep a ZNC server running… playing with it has been quite fun and instructive so far, but I would be OK paying 5$/month for someone taking care of it all. I’m waiting for them to open up a bouncer service so we can connect with other clients than their official IRCCloud client… apparently it’s on their roadmap (see bottom).

      2. 2

        There are people working on a revised spec called ircv3, that aims to address those issues. I haven’t been in touch with that group, so I can’t speak to their progress or success.

        1. 2

          I’m aware of ircv3, but I’m not aware of any proposal to add server side history to it – at least not one that’s gone anywhere. I’m sure someone cares about the other features, but they don’t really make a difference for me.

          Edit: And I found one: https://github.com/ircv3/ircv3-specifications/pull/292

          1. 1

            Uh, that is interesting. Thanks for sharing! I wonder if there are already any clients and servers out there.

            Also see this story: https://lobste.rs/s/zdkuil

            1. 2

              the rust irc crate aims for ircv3 support ;) (I’m trying to contribute to it (but outside of the v3 things))

              1. 1

                You mean this crate? https://crates.io/crates/irc

                1. 1

                  Yup.

        1. 8

          As a European, I don’t quite get it: Americans seem to be concerned with net neutrality, meanwhile not protesting huge monopolistic corporations(the gatekeepers) removing some controversial users on their own judgement and with no way to appeal. Are individuals excluded from the net neutrality?

          1. 16

            I’m not very familiar with the legal details, but I assume the distinction is general access to the internet being considered a utility, while access to platforms being considered something like a privilege. E.g. roads shouldn’t discriminate based on destination, but that doesn’t mean the destination has to let you in.

            edit: As to why Americans don’t seem as concerned with it (which is realize I didn’t address): I think most people see it as a place, like a restaurant. You can be kicked out if you are violating policies or otherwise disrupting their business, which can include making other patrons uncomfortable. Of course there are limits which is why we have anti-discrimination laws.

            1. 1

              Well, they’re also private, for-profit companies that legally own and sell the lines. So, there’s another political angle where people might vote against the regulations under theory that government shouldn’t dictate how you run your business or use your property, esp if it cost you money. Under theory of benefiting owners and shareholders, these companies are legal entities specifically created to generate as much profit from those lines as possible. If you don’t like it, build and sell your own lines. That’s what they’d say.

              They don’t realize how hard it is to deploy an ISP on a shoe-string budget to areas where existing players already paid off the expensive part of the investment, can undercut you into bankruptcy, and (per people claiming to be ISP founders on Hacker News) will even cut competitors’ lines “accidentally” so their own customers leave them. In the last case, it’s hard to file and win a lawsuit if you just lost all your revenue and opponent has over a billion in the bank. They all just quit.

              1. 1

                Do you have the source for these claims regarding ISPs?

                1. 1

                  Which ones?

                  1. 2

                    …existing players … (per people claiming to be ISP founders on Hacker News) will even cut competitors’ lines “accidentally” so their own customers leave them.

                    1. 2

                      One of them described a situation with a contracted, construction crew with guy doing the digging not speaking English well. They were supposedly digging for incumbent but dug through his line. He aaid he pointed that it was clearly marked with paint or something. The operator claimed he thought that meant there wasnt a line there.

                      That’s a crew that does stuff in that area for a living not knowing what a line mark means. So, he figured they did it on purpose. He folded since he couldnt afford to sue them. Another mentioned them unplugging their lines in exchanges or something that made their service appear unreliable. Like the rest, they’d have to spend money they didnt have on lawyers who’d have to prove (a) it happened snd/or (b) it was intentional.

            2. 11

              The landmark case in the United States is throttling of Netflix by Comcast. Essentially, Comcast held Netflix customers hostage until Netflix paid (which they did).

              It’s important to understand that many providers (Comcast, AT&T), also own the channels (NBC, CNN, respectively). They have an interest in charging less for their and their partners content, and more for their competitors content, while colluding to raise prices across the board (which they have done in the past with television and telephone service).

              Collectively, they all have an interest in preventing new entrants to the market. The fear is that big players (Google, Amazon) will be able to negotiate deals (though they’d probably prefer not to), and new or free technologies (like PeerTube) will get choked out.

              Net neutrality is somewhere where the American attitude towards corporations being able to do whatever to their customers conflicts with the American attitude that new companies and services must be able to compete in the marketplace.

              You’re right to observe that individuals don’t really enter into it, except that lots of companies are pushing media campaigns to sway public opinion towards their own interests. You’re seeing those media campaigns leaking out.


              Switching to the individual perspective.

              I just don’t want to pay more for the same service. In living memory Americans have seen their gigantic monopolistic telecommunications company get broken up, and seen prices for services drop 100 fold; more or less as a direct consequence of that action.

              As other posts have noted, the ISP situation in the US is already pretty dire unless you’re a business. Internet providers charge whatever they can get away with and have done an efficient job of ensuring customers don’t have alternatives. Telephone service got regulated, but internet service did not.

              Re-reading your post after diving on this one… We’re not really concerned about the same gatekeepers. I don’t think any American would be overly upset to see players like Amazon, Facebook, Google, Twitter, and Netflix go away and I wouldn’t be surprised to see one or more of those guys implode as long as they don’t get access to too much of the infrastructure.

              1. 4

                Right-leaning US Citizen here. I’ll attempt to answer this as best as I can.

                Net neutrality is being pushed by the media because it “fights discrimination”, and they blame the “fascist, nazi right” for it’s repeal (and they’re correct, except for the “fascist, nazi” bit). But without net neutrality, the ISPs still have an incentive to provide equal service, because otherwise they’ll lose customers (for obvious reasons).

                I can’t speak to why open-source advocates are also pushing for net neutrality, because (in my opinion) the government shouldn’t be involved in how much internet costs. I do remember this article was moderately interesting, saying that the majority of root DNS servers are run by US companies. But, that doesn’t really faze me. As soon as people start censoring, that get backlash whether the media covers it or not

                Side note, the reason you don’t see the protests against the “gatekeepers” is that most of the mainstream media isn’t accurately covering the reaction of the people to the censorship. I bet you didn’t know that InfoWars was the #1 news app with 5 stars on the Apple app store within a couple of weeks of them getting banned from Facebook, etc. I don’t really have any opinion about Alex Jones (lots of people on the right don’t agree with him), but you can bet I downloaded his app when I found out he got banned.

                P.S. I assumed that InfoWars was what you were referring to when you said “removing some controversial users” P.P.S. I just checked the app store again, and it’s down to #20 in news, but still has 5 stars.

                1. 34

                  But without net neutrality, the ISPs still have an incentive to provide equal service, because otherwise they’ll lose customers (for obvious reasons).

                  I think this is too optimistic. I live in Chicago, the third biggest city in the country and arguably the tech hub of the midwest. In my building I get to choose between AT&T and Comcast. I’m considered lucky: most of my friends in the city get one option, period. If their ISP starts doing anything shady they don’t have an option to switch, because there’s nobody they can switch to.

                  1. 16

                    I think this is too optimistic. I live in Chicago, the third biggest city in the country and arguably the tech hub of the midwest. In my building I get to choose between AT&T and Comcast. I’m considered lucky: most of my friends in the city get one option, period. If their ISP starts doing anything shady they don’t have an option to switch, because there’s nobody they can switch to.

                    It’s interesting to contrast this to New Zealand, where I live in a town of 50,000 people and have at least 5 ISPs I can choose from. I currently pay $100 NZ a month for an unlimited gigabit fibre connection, and can hit ~600 mbit from my laptop on a speed test. The NZ government has intervened heavily in the market, effectively forcing the former monopolist (Telecom) to split into separate infrastructure (Chorus) and services (Telecom) companies, and spending a lot of taxpayer money to roll out a nationwide fibre network. The ISPs compete on the infrastructure owned by Chorus. There isn’t drastic competition on prices: most plans are within $10-15 of each other, on a per month basis, but since fibre rolled out plans seem to have come down from around $135 per month to now around $100.

                    I was lucky to have decent internet through a local ISP when I lived in one of Oakland’s handful of apartment buildings, but most people wouldn’t have had that option. I think the ISP picture is a lot better in NZ. Also, net neutrality is a non-issue, as far as I know. We have it, no-one seems to be trying to take it away.

                    1. 14

                      I’m always irritated that there are policies decried in the United States as “impossible” when there are demonstrable implementations of it elsewhere.

                      I can see it being argued that the United States’s way is better or something, but there are these hyperbolic attacks on universal health care, net neutrality, workers’ rights, secure elections, etc that imply that they are simply impossible to implement when there are literally dozens of counterexamples…

                      1. 5

                        At the risk of getting far too far off topic.

                        One of the members of the board at AT&T was the CEO of an insurance company, someone sits on the boards of both Comcast/NBC and American Beverages. The head of the FCC was high up at Verizon.

                        These are some obvious, verifiable, connections based in personal interest. Not implying that it’s wrong or any of those individuals are doing anything which is wrong, you’ve just gotta take these ‘hyperbolic attacks’ with a grain of salt.

                          1. 2
                        1. 4

                          Oh yeah it’s infuriating. It helps to hit them with examples. Tell them the media doesn’t talk about them since they’re all pushing something. We all know that broad statement is true. Then, briefly tell them the problems that we’re trying to solve with some goals we’re balancing. Make sure it’s their problems and goals. Then, mention the solution that worked else where which might work here. If it might not fit everyone, point out that we can deploy it in such a way where its specifics are tailored more to each group. Even if it can’t work totally, maybe point out that it has more cost-benefit than the current situation. Emphasize that it gets us closer to the goal until someone can figure out how to close the remaining gap. Add that it might even take totally different solutions to address other issues like solving big city vs rural Internet. If it worked and has better-cost benefit, then we should totally vote for it to do better than we’re doing. Depending on audience, you can add that we can’t have (country here) doing better than us since “This is America!” to foster some competitive, patriotic spirit.

                          That’s what I’ve been doing as part of my research talking to people and bouncing messages off them. I’m not any good at mass marketing, outreach or anything. I’ve just found that method works really well. You can even be honest since the other side is more full of shit than us on a lot of these issues. I mean, them saying it can’t exist vs working implementations should be an advantage for us. Should. ;)

                          1. 3

                            Beautifully said.

                            My family’s been in this country since the Mayflower. I love it dearly.

                            Loving something means making it better and fixing its flaws, not ignoring them.

                            1. 2

                              Thanks and yes. I did think about leaving for a place maybe more like my views. That last thing you said is why I’m still here. If we fix it, America won’t be “great again:” it would be fucking awesome. If not for us, then for the young people we’re wanting to be able to experience that. That’s why I’m still here.

                      2. 5

                        arguably the tech hub of the midwest.

                        Only if you can’t find Austin on a map… ;)

                        1. 11

                          Native Texan/Austinite here. Texas is the South, Southwest, or just Texas. All the rest of y’all are just Yankees. ;)

                        2. 1

                          But if their ISP starts doing anything shady, they’ll surely get some backlash, even if they can’t switch they can complain.

                          1. 9

                            They’ve been complaining for decades. Nothing happens most of the time. The ISP’s have many lobbyists and lawyers to insulate them from that. The big ones are all doing the same abusive practices, too. So, you can’t switch to get away from it.

                            Busting up AT&T’s monopoly got results in lower costs, better service, better speeds, etc. Net neutrality got more results. I support more regulation of these companies and/or socialized investment to replace them like the gigabit for $350/mo in Chattanooga, TN. It’s 10Gbps now I think but I don’t know what price.

                            Actually, I go further due to their constant abuses and bribing politicians: Im for having a court seizetheir assets, converting them to nonprofits, and putting new management in charge. If at all possible. It would send a message to other companies that think they can do damage to consumers and mislead regulators with immunity to consequences.

                              1. 6

                                What incentive does the ISP have to change? Unless you can complain to some higher authority (FCC, perhaps) then there is no reason for the ISP to make any changes even with backlash. I’d be more incentivized to complain if there was at least some competition.

                            1. 30

                              Net neutrality is being pushed by the media because it “fights discrimination”, and they blame the “fascist, nazi right” for it’s repeal

                              Nobody says this. It’s being pushed because it prevents large corporations from locking out smaller players. The Internet is a great economic equalizer: I can start a business and put a website up and I’m just as visible and accessible as Microsoft.

                              We don’t want Microsoft to be able to pay AT&T to slow traffic to my website but not theirs. It breaks the free market by allowing collusion that can’t be easily overcome. It’s like the telephone network; I can’t go run wires to everyone’s house, but I want my customers to be able to call me. I don’t want my competitors to pay AT&T to make it harder to call me than to call them.

                              But without net neutrality, the ISPs still have an incentive to provide equal service, because otherwise they’ll lose customers (for obvious reasons).

                              That assumes people have a choice. They very often don’t. Internet service has a massively high barrier to entry, similar to a public utility. Most markets in the United States have at most two providers (both major corporations opposed to net neutrality). Very, very rarely is there a third.

                              More importantly, there are only five tier-1 networks in the United States. Five. It doesn’t matter how many local ISPs there are; without Net Neutrality, five corporations effectively control what can and can’t be transmitted. If those five decide something should be slowed down or forbidden, there is nothing I can do. Changing to a different provider won’t do a thing.

                              (And of those five, all of them donate significantly more to one major political party than the other, and the former Associate General Counsel of one of them is currently chairman of the FCC…)

                              I can’t speak to why open-source advocates are also pushing for net neutrality, because (in my opinion) the government shouldn’t be involved in how much internet costs.

                              Net neutrality says nothing about how much it costs. It just says you can’t charge different amounts based on content. It would be like television stations charging more money to Republican candidates to run ads than to Democratic candidates. They’re free to charge whatever they want; they’re not free to charge different people different amounts based on the content of the message.

                              Democracy requires communication. It does no good to say “freedom!” if the major corporations can effectively silence whoever they want. “At least it’s not the government” is not a good defense of stifling public debate.

                              And there’s a difference between a newspaper and a television/radio station/internet service. I can buy a printing press and make a newspaper and refuse to carry whatever I want. There are no practical limits to the number of printing presses in the country.

                              There is a limited electromagnetic spectrum. Not just anyone can broadcast a TV signal. There is a limit to how many cables can be run on utility polls or buried underground. Therefore, discourse carried over those media are required to operate more in the public trust than others. As they become more essential to a healthy democracy, that only becomes more important. It’s silly to say “you still have freedom of speech” if you’re blocked from television, radio, the Internet, and so on. Those are the public forums of our day. That a corporation is doing the blocking doesn’t make it any better than if the government were to do it.

                              Side note, the reason you don’t see the protests against the “gatekeepers” is that most of the mainstream media isn’t accurately covering the reaction of the people to the censorship.

                              There’s a big difference between Twitter not wanting to carry Alex Jones and net neutrality. Jones is still free to go start up a website that carries his message; with Net Neutrality not only could he be blocked from Twitter, but the network itself could make his website inaccessible.

                              There is no alternative with Net Neutrality. You can’t build your own Internet. Without mandating equal treatment of traffic, we hand the Internet over solely to the big players. Preventing monopolistic and oligarchic control of public discourse is a valid use of government power. It’s not censorship, it’s the exact opposite.

                              1. 7

                                That assumes people have a choice. They very often don’t.

                                This was also brought up by @hwayne, @caleb and @friendlysock, and is not something that occurred to me. I appreciate all who are mentioning this.

                                More importantly, there are only five tier-1 networks in the United States.

                                Wow, I did not know that. I can see that as a legitimate reason to want net neutrality. But, I also think that they’ll piss off a lot of people if they can stream CNN but not InfoWars.

                                It just says you can’t charge different amounts based on content.

                                I understood it to also mean that you also couldn’t charge customers differently because of who they are. Also, don’t things like Tor mitigate things like that?

                                “At least it’s not the government” is not a good defense of stifling public debate.

                                I completely agree. But in the US we have a free market (at least, we used to) and that means that the government is supposed to stay out of it as much as possible.

                                Preventing monopolistic and oligarchic control of public discourse is a valid use of government power.

                                I also agree. But these corporations (the tier-1 ISPs) haven’t done anything noticeable to me to limit my enjoyment of conservative content, and I’m pretty sure that they would’ve by now if they wanted to.

                                The reason I oppose net neutrality is more because I don’t think that the government should control it than any more than I think AT&T and others should.

                                not only could he be blocked from Twitter, but the network itself could make his website inaccessible.

                                But they haven’t.

                                edit: how -> who

                              2. 6

                                Even though I’m favoring net neutrality, I appreciate you braving the conservative position on this here on Lobsters. I did listen to a lot of them. What I found is most had reasonable arguments but had no idea about what ISP’s did, are doing, are themselves paying Tier 1’s, etc. Their media sources’ bias (all have bias) favoring ISP’s for some reason didn’t tell them any of it. So, even if they’d have agreed with us (maybe, maybe not), they’d have never reached those conclusions since they were missing crucial information to reflect on when choosing to regulate or not regulate.

                                An example is one telling me companies like Netflix should pay more to Comcast per GB or whatever since they used more. The guy didn’t know Comcast refuses to do that when paying Tier 1’s negotiating transit agreements instead that worked entirely different. He didn’t know AT&T refused to give telephones or data lines to rural areas even if they were willing to pay what others did. He didn’t know they could roll out gigabit today for same prices but intentionally kept his service slow to increase profit knowing he couldn’t switch for speed. He wasn’t aware of most of the abuses they were doing. He still stayed with his position since that guy in particular went heavily with his favorite, media folks. However, he didn’t like any of that stuff which his outlets never even told him about. Even if he disagrees, I think he should disagree based on an informed decision if possible since there’s plenty smart conservatives out there who might even favor net neutrality if no better alternative. I gave him a chance to do that.

                                So, I’m going to give you this comment by @lorddimwit quickly showing how they ignored the demand to maximize profit, this comment by @dotmacro showing some abuses they do with their market control, and this article that gives nice history of what free market did with each communications medium with the damage that resulted. Also note that the Internet itself was an open, free-if-you-have-a-wire system that competed with the proprietary, charge-per-use, lock-them-in-forever-if-possible systems the private sector was offering. It smashed them so hard you might have even never heard of them or forgotten a lot about them depending on your age. It also democratized more goods than about anything other than maybe transportation. Probably should stick with the principles that made that happen to keep innovation rolling. Net neutrality was one of them that was practiced informally at first then put into law as the private sector got too much power and was abusing it. We should keep doing what worked instead of the practices ISP’s want that didn’t work but will increase their profits at our expense for nothing in return. That is what they want: give us less or as little improvement in every way over time while charging us more. It’s what they’re already doing.

                                1. 2

                                  I read the comments, and I read most of the freecodecamp article.

                                  I like the ideal of the internet being a public utility, but I don’t really want the government to have that much control.

                                  I think the real problem I have with government control of the internet, is that I don’t want the US to end up like china with large swaths of the internet completely blocked.

                                  I don’t really know how to solve our current problems. But, like @jfb said elsewhere in this thread, I don’t think that net neutrality is the best possible solution.

                                  1. 2

                                    Also note that the Internet itself was an open, free-if-you-have-a-wire system that competed with the proprietary, charge-per-use, lock-them-in-forever-if-possible systems the private sector was offering. It smashed them so hard you might have even never heard of them or forgotten a lot about them depending on your age.

                                    I might recognize a name, but I probably wasn’t even around yet.

                                    So, I’m going to give you…

                                    Thanks for the info, I’ll read it and possibly form a new opinion.

                                  2. 5

                                    But without net neutrality, the ISPs still have an incentive to provide equal service, because otherwise they’ll lose customers (for obvious reasons).

                                    What obvious reasons? Because customers will switch providers if they don’t treat all traffic equally? That would require (a) users are able to tell if a provider prioritizes certain traffic, and (b) that there is a viable alternative to switch to. I have no confidence in either.

                                    1. 1

                                      I don’t personally care if the prioritize certain websites, but I sure as hell care if the block something.

                                      As far as I’m concerned, they can slow down Youtube by 10% for conservative channels and I wouldn’t give a damn even though I watch and enjoy some. What really bothers me is when they “erase” somebody or block people from getting to them.

                                      1. 4

                                        well you did say they have an incentive to provide “equal service” so i guess you meant something else. net neutrality supporters like me aren’t satisfied with “nobody gets blocked,” because throttling certain addresses gives big corporations more tools to control media consumption, and throttling have similar effects to blocking in the long term. i’m quite surprised that you’d be fine with your ISP slowing down content you like by 10%… that would adversely affect their popularity compared to the competitors that your ISP deems acceptable, and certain channels would go from struggling to broke and be forced to close down.

                                        1. 1

                                          Well, I have pretty fast internet, so 10% wouldn’t be terrible for me. However, I can see how some people would take issue with such a slowdown.

                                          I was using a bit an extreme example to illustrate my point. What I was trying to say was that they can’t really stop people from watching the content that they want to watch.

                                          1. 3

                                            I recall, but didn’t review, a study saying half of web site users wanted the page loaded in 2 seconds. Specific numbers aside, I’ve been reading that kind of claim from many people for a long time that a new site taking too long to load, being sluggish, etc makes them miss lots of revenue. Many will even close down. So, the provider of your favorite content being throttled for even two seconds might kill half their sales since Internet users expect everything to work instantly. Can they operate with a 50% cut in revenue? Or maybe they’re bootstrapping up a business with a few hundred or a few grand but can’t afford to pay for no artificial delays. Can they even become the content provider your liked if having to pay hundreds or thousands extra on just extra profit? I say extra profit since ISP’s already paid for networks capable of carrying it out of your monthly fee.

                                            1. 2

                                              yeah, the shaping of public media consumption would happen in cases where people don’t know what they want to watch or don’t find out about something that they would want to watch

                                              anti-democratic institutions already shape media consumption and discourse to a large extent, but giving them more tools will hurt the situation. maybe it won’t affect you or me directly, but sadly we live in a society so it will come around to us in the form of changes in the world

                                      2. 5

                                        But without net neutrality, the ISPs still have an incentive to provide equal service, because otherwise they’ll lose customers (for obvious reasons).

                                        Most customers have exceedingly limited options in their area, and they’re not going to switch houses because of their ISP. Especially in apartment complexes, you see cases where, say, Comcast has the lockdown on an entire population and there really isn’t a reasonable alternative.

                                        In a truly free market, maybe I’d agree with you, but the regulatory environment and natural monopolistic characteristics of telecomm just don’t support the case.

                                        1. 1

                                          Most customers have exceedingly limited options in their area, and they’re not going to switch houses because of their ISP.

                                          That’s a witty way of putting it.

                                          But yeah, @lorddimwit mentioned the small number of tier-1 ISPs. I didn’t realize there were so few, but I still think that net neutrality is overreaching, even if its less than I originally thought.

                                          1. 3

                                            Personally, I feel that net neutrality, such as it is, would prevent certain problems that could be better addressed in other, more fundamental ways. For instance, why does the US allow the companies that own the copper to also own the ISPs?

                                        2. 3

                                          But without net neutrality, the ISPs still have an incentive to provide equal service, because otherwise they’ll lose customers (for obvious reasons).

                                          Awkward political jabs aside, most of your statements imply that you believe customers are free to choose who they get their internet from, which is just plain incorrect. Whatever arguments you want to make against net neutrality, there is one indisputable fact that you cannot just ignore or paper over:

                                          ISPs do not operate in a free market.

                                          In the vast majority of the US, cable and telephone companies are granted local monopolies in the areas they operate. That is why they must be regulated. As the Mozilla blog said, they have both the incentive and means to abuse their customers and they’ve already been caught doing it on multiple occasions.

                                          1. 1

                                            most of your statements imply that you believe customers are free to choose who they get their internet from, which is just plain incorrect

                                            I think you’re a bit late to the party, I’ve conceded that fact already.

                                          2. 3

                                            All of that is gibberish. Net Neutrality is being pushed because it creates a more competitive marketplace. None of it has anything to do with professional liar Alex Jones.

                                            But without net neutrality, the ISPs still have an incentive to provide equal service, because otherwise they’ll lose customers (for obvious reasons).

                                            That’ s not how markets work. And it’s not how the technology or permit process for ISPs work. There is very little competition among ISPs in the US market.

                                            1. 1

                                              Hey, here’s a great example from HN of the crap they pull without net neutrality. They advertised “unlimited,” throttled it secretly, admitted it, and forced them to pay extra to get actual unlimited.

                                              @lorddimwit add this to your collection. Throttling and fake unlimited been going on long time but they couldve got people killed doing it to first responders. Id have not seen that coming just for PR reasons or avoiding local, govt regulation if nothing else.

                                              1. 1

                                                I can’t speak to why open-source advocates are also pushing for net neutrality, because (in my opinion) the government shouldn’t be involved in how much internet costs.

                                                It’s not about how much internet costs, it’s about protecting freedom of access to information, and blocking things like zero-rated traffic that encourage monopolies and discourage competition. If I pay for a certain amount of traffic, ISPs shouldn’t be allowed to turn to Google and say “want me to prioritize YouTube traffic over Netflix traffic? Pay me!”

                                                1. 1

                                                  Net neutrality is being pushed by the media because it “fights discrimination”, and they blame the “fascist, nazi right” for it’s repeal (and they’re correct, except for the “fascist, nazi” bit).

                                                  Where on earth did you hear that? I sure hope you’re not making it up—you’ll find this site doesn’t take too kindly to that.

                                                  1. 1

                                                    I might’ve been conflating two different political issues, but I have heard “fascist” and “nazi” used to describe the entire right wing.

                                                    A quick google search for “net neutrality fascism” turned this up https://motherboard.vice.com/en_us/article/kbye4z/heres-why-net-neutrality-is-essential-in-trumps-america

                                                    “With the rise of Trump and other neo-fascist regimes around the world, net neutrality will be the cornerstone that activists use to strengthen social movements and build organized resistance,” Wong told Motherboard in a phone interview. “Knowledge is power.”

                                                    1. 2

                                                      You assume that net neutrality is a left-wing issue, which it’s not. It actually has bipartisan support. The politicians who oppose it have very little in common, aside from receiving a large sum of donations from telecom corporations.

                                                      As far as terms like “fascist” or “Nazi” are concerned—I think they have been introduced into this debate solely to ratchet up the passions. It’s not surprising that adding these terms to a search yields results that conflate the issues.

                                                      1. 2

                                                        Ill add on your first point that conservatives who are pro-market are almost always pro-competition. They expect the market will involve competition driving whats offered up, its cost down, and so on. Both the broadband mandate and net neutrality achieved that with an explosion of businesses and FOSS offering about anything one can think of.

                                                        The situation still involves 1-3 companies available for most consumers that, like a cartel, work together to not compete on lowering prices, increasing service, and so on. Net neutrality reduced some predatory behavior the cartel market was doing. They still made about $25 billion in profit between just a few companies due to anti-competitive behavior. Repealing net neutrality for anti-competitive market will have no positives for consumer but will benefit roughly 3 or so companies by letting them charge more for same or less service.

                                                        Bad for conservative’s goals of market competition and benefiting conservative voters.

                                                2. 2

                                                  One part of it is that we already have net neutrality, and it’s easier to try to hang on to a regulation than to create a new one.

                                                1. 4

                                                  I absolutely love that the BSDs are switching to llvm. This makes me giddy like a school child.

                                                  By switching to a full llvm toolchain, the BSDs will be able to do some really nifty things that simply cannot be done in Linux. HardenedBSD, for example, is working on integrating Cross-DSO CFI in base (and, later, ports). NetBSD is looking at deeper sanitizer integration in base. From an outsider’s perspective, it seems OpenBSD is playing catch up right now, but they’ve got the talent and the manpower to do so within a reasonable period of time.

                                                  It’s my dream that all the BSDs switch fully to llvm as the compiler toolchain, including llvm-ar, llvm-nm, llvm-objdump, llvm-as, etc. Doing so will allow the BSDs to do add some really nifty security enhancements. Want an enterprise OS that secures the entire ecosystem? Choose BSD.

                                                  Linux simply cannot compete here. A userland that innovates in lockstep with the kernel is absolutely required to do these kinds of things. Go BSD!

                                                  1. 3

                                                    You’re overstating it. Most of the mitigation development of past decade or two was for Linux. Most of the high-security solutions integrated with Linux, often virtualizing it. The most-secure systems you can get right now are separation kernels running Linux along-side critical apps. Two examples. Some of the mitigation work is also done for FreeBSD. Of that, some is done openly for wide benefit and some uses BSD license specifically to lock-down/patent/sue when commercialized. Quick pause to say thanks for you own work on the open side. :)

                                                    So, what’s best for people depends on a lot of factors from what apps they want, what they’re trying to mitigate, stance on licensing, whether they have money for proprietary solutions or custom work, time for custom work or debugging if FOSS, and so on. One is not superior to the other. That could change if any company builds a mobile/desktop/server-class processor with memory safety or CFI built checking every sensitive operation. Stuff like that exists in CompSci for both OS’s. Hardware-level security could be an instant win. Past that, all I can say is it depends.

                                                    On embedded side, Microsemi says CodeSEAL works with Linux and Windows. CoreGuard, based on SAFE architecture, currently runs FreeRTOS. The next solution needs to be at least as strong at addressing root causes.

                                                    1. 4

                                                      Thanks for making me think a bit deeper on this subject. And thanks for the kind words on my own work. :)

                                                      With a historical perspective, I agree with you. grsecurity has done a lot with regards to Linux security (and security in general). I think the entire computing industry owes a lot to grsecurity, especially those of us in infosec.

                                                      With the BSDs (except FreeBSD) having the core exploit mitigations in place (ASLR, W^X), it’s time to move on to other, more advanced mitigations. There’s only so much the kernel can do to harden userland and keep performance in check. Thus, these more advanced exploit mitigations must be implemented in the compiler. The BSDs are positioning themselves to be able to adopt and tightly integrate compiler-based exploit mitigations like CFI. Due to Linux’s fragmentation, it’s simply not possible for Linux to position itself in the same way. HardenedBSD has already surpassed Linux as far as userland exploit mitigations are concerned. This is due in part because of using llvm as the compiler toolchain.

                                                      Microsoft is making huge strides as well. However, the PE file format, which allows individual PE objects to opt-in or opt-out of the various exploit mitigations, is a glaring weakness commonly abused by attackers. All it takes is for one DLL to not be compiled with /DYNAMICBASE, and boom goes the dynamite. Recently, VLC on Windows was found not to have ASLR enabled, even though it was compiled with /DYNAMICBASE and OS-enforced ASLR enabled, due to the .reloc section being stripped. Certain design decisions made decades ago by Microsoft are still biting them in the butt.

                                                      I completely agree with you about hardware-based exploit mitigations. The CHERI project from the University of Cambridge in England is doing just that: hardware-enforced capabilities and bounds enforcement. However, it’ll probably take another 20+ years for their work to be available in silicon and an additional 20+ years for their work to be used broadly (and thus, actually usable/used). In the meantime, we need these software-based exploit mitigations.

                                                    2. 3

                                                      I absolutely love that the BSDs are switching to llvm.

                                                      What does this news story have to do with LLVM?

                                                      1. 1

                                                        UBSan (and NetBSD’s new micro-UBSan) is a sanitizer found in llvm.

                                                        1. 5

                                                          And gcc.

                                                          1. 3

                                                            Yes. So the tirade about LLVM could have been about GCC and it would make as much sense here.

                                                            1. 1

                                                              I guess I view it differently, due to newer versions of gcc being GPLv3, which limits who can adopt it. With llvm being permissively licensed, it can be adopted by a much wider audience. The GPL is driving FreeBSD to replace all GPL code in the base operating system with more permissively-licensed options.

                                                              For the base OS, gcc is dead to me.

                                                            2. 2

                                                              (Speaking from the perspective of a FreeBSD/HardenedBSD user): gcc has no real future in the BSDs. Because of licensing concerns (GPLv3), the BSDs are moving towards a permissively-licensed compiler toolchain. Newer versions of gcc do contain sanitizer frameworks, they’re not usable in the BSD base operating system.

                                                              1. 2

                                                                NetBSD base uses GPLv3 GCC and builds it with sanitizers libraries etc.

                                                                1. 1

                                                                  Good to know! Thanks! Perhaps my perception is a bit skewed towards FreeBSD lines of thinking.

                                                                  I know NetBSD is working on incorporating llvm. I wonder why if they use newer versions of gcc.

                                                      1. 3

                                                        I’d never heard of “snap” before, and I’m not sure I understand what it’s trying to do. Is it just a lazy way to publish closed source software on Linux? I really don’t see why I’d choose a snap over using my regular package manager.

                                                        1. 6

                                                          Yes and no. Snaps are the last of many tries to have a single, uniform package format among a lot of different Linux distributions. They can be installed on *buntu, debian, arch, fedora, opensuse, …. They also offer built-in sandbox.

                                                          You are correct that a lot of propritiatory software is using it to distribute packages because it saves some time, but that’s not the main goal of the format.

                                                          1. 2

                                                            Snaps are the last of many tries to have a single, uniform package format among a lot of different Linux distributions.

                                                            Unfortunately, there are at least three competing standards (Snap, Flatpak, AppImage). However, Flatpak seems to be supported in more distributions than Snap:

                                                            https://kamikazow.wordpress.com/2018/06/08/adoption-of-flatpak-vs-snap-2018-edition/

                                                            Regardless of what one thinks of such formats, they have already lead to interesting phenomena. Flatpak is, for instance, quite popular among pirates who use it to pack Windows games with a custom Wine configuration:

                                                            https://www.nag.co.za/2017/10/27/pirates-are-starting-to-package-windows-games-for-linux-better-than-the-developers/

                                                            Then there is the Winepak project, which packages redistributable Windows software:

                                                            https://winepak.org/

                                                          2. 3
                                                            1. 2

                                                              Think docker for desktop apps. With all of the good and the bad it implies.

                                                            1. 17

                                                              Thanks for the writeup. However, I’m not sure I share your excitement. I can boil it down to two points:

                                                              1. This reminds me of all the hoopla around the JVM as it was coming out: one language to rule them all! Distributing bytecode instead of compiled binaries! Write once, run anywhere! I see how WebAssembly improves on some of this story, but it still has a sameness to it, except it’s dubbed ‘open.’ As a user, why do I care? As a developer, why do I care? HTML 5 displacing Flash has meant that ads are more invasive and harder to block, honestly.

                                                              2. The importance placed on not diverging from the Web platform doesn’t win any points from me. I get that people dislike crappy implementations of subplatforms that just get in the way, but I also want to see serious competition to HTML/CSS when it comes to laying out UIs. As someone who likes what the web stands for so much and yet loathes the actual workings of it, it feels like things like this subtly reinforce the “everything is web development” hegemony by continuing to prop these things up in the name of compatibility.

                                                              Mind you, I’m very happy that JS can finally be displaced as the lingua franca of webapps!

                                                              1. 4

                                                                This reminds me of all the hoopla around the JVM as it was coming out: one language to rule them all! Distributing bytecode instead of compiled binaries! Write once, run anywhere! I see how WebAssembly improves on some of this story, but it still has a sameness to it, except it’s dubbed ‘open.’ As a user, why do I care? As a developer, why do I care? HTML 5 displacing Flash has meant that ads are more invasive and harder to block, honestly.

                                                                There’s a big difference between Java and WebAssembly. While you could totally imagine a bare JVM that just runs JVM bytecode, it always came with its standard lib, the TLS implementation and everything around it. And even then, the JVM needs to come with a garbage collector, which wants to take control of all memory. The teasing thing about WASM is that it only talks about portable code, but not about a portable API. It’s quite different from the JVM in the aspect that it isn’t a platform in itself.

                                                                1. 1

                                                                  I’m not sure if that’s a good thing. Or a bad thing. It feels like it might affect download sizes, but other than that it doesn’t really matter.

                                                              1. 6

                                                                If material design is a political choice, what does that mean for developing Android apps in the first place?

                                                                1. 7

                                                                  This is a great usability improvement. Thank you Peter Hessler :)

                                                                  That said, it’s still a little bit sad that this is only just being introduced in 2018.

                                                                  1. 33

                                                                    That said, it’s still a little bit sad that this is only just being introduced in 2018.

                                                                    Technically - OpenBSD has had various toolings (1, 2, 3 and others) to do this very task for quite a long time. But none of them were considered the correct approach.

                                                                    Also, this is something that’s pretty unique to OpenBSD IMO. The end result is the same as with other systems.. sure. But this is unique among the unix world.

                                                                    Q: What’s the difference?

                                                                    Glad I asked! This is entirely contained within the base system and requires no tools beyond ifconfig!

                                                                    Linux has ip, iw, networkmanager, iwconfig..(likely others)… and they are all using some weird combo of wpa_supplicant.. autogen’d text files.. and likely other things.

                                                                    Have you ever tried to manually configure wireless on linux? It’s a nightmare. Always has been.

                                                                    NetworkManager does a really good job of making it feel like there isn’t a kludge going on behind the scenes.. It does this by gluing all the various tools together so you don’t have to know about them. IMO this is what happens when you “get it done now” vs “do it right”.

                                                                    With great simplicity comes great security:

                                                                    NetworkManager@6c3174f6e0cdb3e0c61ab07eb244c1a6e033ff6e:

                                                                    github.com/AlDanial/cloc v 1.74  T=28.62 s (48.2 files/s, 45506.1 lines/s)
                                                                    --------------------------------------------------------------------------------
                                                                    Language                      files          blank        comment           code
                                                                    --------------------------------------------------------------------------------
                                                                    PO File                          66         125328         161976         457879
                                                                    C                               541          71112          66531         321839
                                                                    C/C++ Header                    528          10430          15928          34422
                                                                    XML                              59           1406           2307           6692
                                                                    make                              6            885            229           5009
                                                                    Python                           40           1189           1128           4597
                                                                    NAnt script                      65            626              0           3968
                                                                    m4                                8            237            123           1958
                                                                    Lua                              11            212            453           1314
                                                                    Bourne Shell                     21            232            238           1115
                                                                    XSLT                              5             65              3            929
                                                                    Perl                              4            166            243            480
                                                                    Bourne Again Shell               11             30             35            241
                                                                    C++                               4             62            121            178
                                                                    YAML                              4             12              6            161
                                                                    JavaScript                        1             33             21            130
                                                                    Ruby                              3             39             92            110
                                                                    Lisp                              2             15             24             23
                                                                    --------------------------------------------------------------------------------
                                                                    SUM:                           1379         212079         249458         841045
                                                                    --------------------------------------------------------------------------------
                                                                    

                                                                    VS

                                                                    ifconfig@1.368:

                                                                    github.com/AlDanial/cloc v 1.74  T=0.12 s (32.2 files/s, 58201.7 lines/s)
                                                                    -------------------------------------------------------------------------------
                                                                    Language                     files          blank        comment           code
                                                                    -------------------------------------------------------------------------------
                                                                    C                                2           1009            345           5784
                                                                    C/C++ Header                     1              7             16             58
                                                                    make                             1              3              1              6
                                                                    -------------------------------------------------------------------------------
                                                                    SUM:                             4           1019            362           5848
                                                                    -------------------------------------------------------------------------------
                                                                    

                                                                    Anyway - I guess my point is this:

                                                                    • Almost every OS achieves this goal.. sure.
                                                                    • Most have had this feature for quite some time.. agree (Including OpenBSD!).
                                                                    • None of them have it implemented as simply and well-thought-out as OpenBSD.
                                                                    1. 5

                                                                      Have you ever tried to manually configure wireless on linux? It’s a nightmare. Always has been.

                                                                      No. The Linux’s I use come with an out-of-the-box experience that makes wireless as easy as clicking a box, clicking a name, typing in the password, it works, and it reconnects when nearby. They have been like that since I bought an Ubuntu-specific Dell a long time ago. They knew it was a critical feature that needed to work easily with no effort with some doing that upon installation so parts of the install could be downloaded over WiFi. Then, they did whatever they had to do in their constraints (time/talent/available code) to get it done.

                                                                      And then I was able to use it with only breaks being wireless driver issues that had answers on Q&A sites. Although that was annoying, I didn’t have to think about something critical I shouldn’t have to think about. Great product development in action for an audience that has other things to do than screw around with half-built wireless services. That’s a complement about what I used rather than a jab at OpenBSD’s which I didn’t use. I’m merely saying quite a few of us appreciate stuff that saves us time once or many times. If common and critical, adoption can go up if it’s a solved problem with minimal intervention out of the box.

                                                                      That said, props to your project member who solved the problem with a minimally-complex solution in terms of code and dependencies. I’m sure that was hard work. I also appreciate you illustrating that for us with your comparisons. The difference is almost comical in the work people put in with very different talents, goals and constraints. And m4 isn’t gone yet. (sighs)

                                                                      1. 7

                                                                        No. The Linux’s I use come with an out-of-the-box experience that makes wireless as easy as clicking a box, clicking a name, typing in the password, it works, and it reconnects when nearby.

                                                                        And then something goes wrong in the fragile mess of misfeatures, and someone has to dig in and debug, or a new feature comes along and someone has to understand the stack of hacks to understand it, before it can be added. There’s something to be said for a system that can be understood.

                                                                        1. 4

                                                                          There is something to be said for a system to be understood. I totally agree. I also think there’s something to be said for a reliable, more-secure system that can be effortlessly used by hundreds of millions of people. A slice of them will probably do things that were worth the effort. The utilitarian in me says make it easy for them to get connected. The pragmatist also says highly-usable, effortless experience leads to more benefits in terms of contributions, donations, and/or business models. These seemingly-contradicting philosophies overlap in this case. I think end justifies the means here. One can always refactor the cruddy code later if it’s just one component in the system with a decent API.

                                                                          1. 3

                                                                            One can always refactor the cruddy code later if it’s just one component in the system with a decent API.

                                                                            The problem isn’t the code, it’s the system that it’s participating in.

                                                                            1. 2

                                                                              One can always refactor the cruddy code later if it’s just one component in the system with a decent API.

                                                                              This just leads to systemd, and more misfeatures…

                                                                              1. 3

                                                                                There’s Linux’s without systemd. Even those that had it didn’t before they got massive adoption/impact/money. So, it doesn’t naturally lead to it. Just bad, decision-making in groups controlling popular OS’s from what I can tell. Then, there’s also all the good stuff that comes with their philosophy that strict OS’s like OpenBSD haven’t achieved. The Linux server market, cloud, desktops, embedded, and Android are worth the drawbacks if assessing by benefits gained by many parties.

                                                                                Personally, I’m fine with multiple types of OS being around. I like and promote both. As usual, I’m just gonna call out anyone saying nobody can critique an option or someone else saying it’s inherently better than all alternatives. Those positions are BS. Things things are highly contextual.

                                                                        2. 1

                                                                          This is really great. I wish all other projects can do that, preferring elegancy to throwing code on the wall, but sometimes life really takes its toll and we cave and just make Frankenstein to get shit done.

                                                                          I really appreciate all the works by OpenBSD folks. Do you have any idea how other *BSD’s deal with the wireless?

                                                                          1. 1

                                                                            Do you have any idea how other *BSD’s deal with the wireless?

                                                                            I don’t - sorry :D

                                                                        3. 3

                                                                          Whats really sad is that the security of other operating systems can’t keep up despite having more man power.

                                                                          1. 2

                                                                            It’s almost like if you prioritize the stuff that truly matters, and be willing to accept a little bit of UX inconvenience, you might happen upon a formula that produces reliable software? Who would have thought?

                                                                            1. 2

                                                                              That’s what I told OpenBSD people. They kept on a poorly-marketed monolith in unsafe language without the methods from CompSci that were knocking out whole classes of errors. They kept having preventable bugs and adoption blockers. Apparently, the other OS developers have similarly, hard-to-change habits and preferences with less focus on predictable, well-documented, robust behavior.

                                                                            2. 1

                                                                              I think this is just a matter of what you think matters. There’s no sadness here. The ability to trade off security for features and vice versa is good. It lets us accept the level of risk we like.

                                                                              On the other hand, it’s really sad, for instance, that OpenBSD has had so many public security flaws compared to my kernel ;P

                                                                              1. 1

                                                                                On the other hand, it’s really sad, for instance, that OpenBSD has had so many public security flaws compared to my kernel ;P

                                                                                What’s your kernel?

                                                                                1. 2

                                                                                  It’s a joke. Mine is a null kernel. It has zero code, so no features, so no security flaws. Just like OpenBSD has fewer features and fewer known security flaws than Linux, mine has fewer features but no security flaws.

                                                                                  Unlike OpenBSD, mine is actually immune to Meltdown and Spectre.

                                                                                  1. 1

                                                                                    Not having public flaws doesn’t mean you don’t have flaws. Could mean not enough people are even considering checking for flaws. ;)

                                                                                    1. 1

                                                                                      Oh OK lol.

                                                                              2. 0

                                                                                That said, it’s still a little bit sad that this is only just being introduced in 2018.

                                                                                Would you like to clarify what you mean by this comment? Cause right now my interpretation of it is that you feel entitled to have complicated features supported in operating systems developed by (largely unpaid) volunteers.

                                                                                1. 11

                                                                                  I’m getting a bit tired of every complaint and remark being reduced to entitlement. Yes, I know that there is a lot of unjustified entitlement in the world, and it is rampant in the open source world, but I don’t feel entitled to anything in free or open source software space. As someone trying to write software in my spare time, I understand how hard it is to find spare time for any non-trivial task when it’s not your job.

                                                                                  Though I am not a heavy user, I think OpenBSD is an impressive piece of software, with a lot of thought and effort put into the design and robustness of the implementation.

                                                                                  I just think it’s somewhat disheartening that something this common (switching wireless networks) was not possible without manual action (rewriting a configuration file, or swapping configuration files, and restarting the network interface) every time you needed to switch or moved from home to the office.

                                                                                  Whether you feel like this is me lamenting the fact that there are so few contributors to important open source projects, me lamenting the fact that it is so hard to make time to work on said project, or me being an entitled prick asking for features on software I don’t pay for (in money or in time/effort) is entirely your business.

                                                                                  1. 5

                                                                                    Just for the record I didn’t think you sounded entitled. The rest of the comment thread got weirdly sanctimonious for some reason.

                                                                                    Volunteers can work on whatever they want, and anybody’s free to comment on their work. Other operating systems have had the ability to switch wifi networks now for a long time, so it’s fair to call that out. And then Peter went and did something about it which is great.

                                                                                    Previously I’ve been using http://ports.su/net/wireless for wifi switching on my obsd laptop, but will use the new built-in feature when I upgrade the machine.

                                                                                    Some of the delay for the feature may be because the OS, while very capable, doesn’t seem designed to preemptively do things on the user’s behalf. Rather the idea seems to be that the user knows what’s best and will ask the OS to do things. For instance when I dock or undock my machine from an external monitor it won’t automatically switch to using the display. I have a set of dock/undock scripts for that. I appreciate the simple “manual transmission” design of the whole thing. The new wifi feature seems to be in a similar spirit, where you rank each network’s desirability and the OS tries in that order.

                                                                                    1. 2

                                                                                      Interesting, I didn’t know about that to. I used my own bash script to juggle config files and restart the interface, but the new support in ifconfig itself is much easier.

                                                                                      I think the desire for OpenBSD to not do things without explicit user intent are certainly part of why this wasn’t added before, as well as limited use as a laptop OS until relatively recently.

                                                                                    2. 2

                                                                                      Thanks for taking the time to respond.

                                                                                      To be clear, I don’t believe you’re some sort of entitled prick – I don’t even know you. But, I do care that people aren’t berating developers with: “That’s great, but ____” comments. Let’s support each other, instead of feigning gratitude. It wasn’t clear if that’s what you were doing, hence, my request for clarification.

                                                                                      That being said, my comment was poorly worded, and implied a belief that you were on the wrong side of that. That was unfair, and I apologize.

                                                                                      I just think it’s somewhat disheartening that something this common (switching wireless networks) was not possible without manual action (rewriting a configuration file, or swapping configuration files, and restarting the network interface) every time you needed to switch or moved from home to the office.

                                                                                      Well, I’m just not going to touch this…. :eyeroll:

                                                                                      1. 1

                                                                                        I apologize if my response was a little bit snide. I’ve been reading a lot of online commentary that chunks pretty much everything into whatever people perceive as wrong with society (most commonly: racism, sexism, or millenial entitlement - I know these are real and important issues, but not everything needs to be about them). I read your remark in the context and may have been a little harsh.

                                                                                        Regarding the last segment - how WiFi switching worked before - there may have been better ways to do this, but I’m not sure they were part of the default install. When I needed this functionality on OpenBSD, I basically wrote a bash script to do these steps for me on demand, and that worked alright for me. It may not have been the best way, so my view of the OpenBSD WiFi laptop landscape prior to the work of Peter may not be entirely appropriate or accurate.

                                                                                      2. 1

                                                                                        I just think it’s somewhat disheartening that something this common (switching wireless networks) was not possible without manual action (rewriting a configuration file, or swapping configuration files, and restarting the network interface) every time you needed to switch or moved from home to the office.

                                                                                        I’m more blunt here that leaving that to be true in a world with ubiquitous WiFi was a bad idea if they wanted more adoption and donations from market segment that wanted good, out-of-the-box support for WiFi. If they didn’t want that, then it might have been a good choice to ignore it for so long to focus on other things. It all depends on what their goals were. Since we don’t know them, I’ll at least say that it was bad, neutral, or good depending on certain conditions like with anything else. The core userbase was probably OK with whatever they had, though.

                                                                                      3. 3

                                                                                        First, both free speech and hacker culture say that person can gripe about what they want. They’re sharing ideas online that someone might agree with or act on. We have a diverse audience, too.

                                                                                        Second, the project itself has developers that write cocky stuff about their system, mock the other systems, talk that one time about how they expect more people to be paying them with donations, more recently talk about doing things like a hypervisor for adoption, and so on. Any group doing any of that deserves no exception to criticism or mockery by users or potential users. It’s why I slammed them hard in critiques, only toning it down for the nice ones I met. People liking critiques of other projects or wanting adoption/donations should definitely see others’ critiques of their projects, esp if its adoption/donation blockers. I mean, Mac’s had a seemless experience called Rendevous or something in 2002. If I’m reading the thread right, that was 16 years before OpenBSD something similar they wanted to make official. That OpenBSD members are always bragging when they’re ahead of other OS’s on something is why I’m mentioning it. Equal treatment isn’t always nice.

                                                                                        “But, I do care that people aren’t berating developers with: “That’s great, but ____” comments. Let’s support each other, instead of feigning gratitude. It wasn’t clear if that’s what you were doing, hence, my request for clarification.”

                                                                                        I did want to point out that we’ve had a lots of OpenBSD-related submissions and comments with snarky remarks about what other developers or projects were doing. I at least don’t recall you trying to shut them down with counterpoints assessing their civility or positivity toward other projects (say NetBSD or Linux). Seems a little inconsistent. My memory is broken, though. So, are you going to be countering every negative remark OpenBSD developers or supporters make about projects with different goals telling them to be positive and supportive only? A general rule of yours? Or are you giving them a pass for some reason but applying the rule to critics of OpenBSD choices?

                                                                                        1. 1

                                                                                          I at least don’t recall you trying to shut them down with counterpoints assessing their civility or positivity toward other projects (say NetBSD or Linux). Seems a little inconsistent.

                                                                                          I’m not the Internet Comment Police, but you seem to think you are for some reason… Consider this particular instance “me griping about what I want.”

                                                                                          Or are you giving them a pass for some reason but applying the rule to critics of OpenBSD choices?

                                                                                          This wasn’t about OpenBSD at all. This started out as a request for clarification on the intent of an ambiguous comment that seemed entitled. There seems to be a lot of that happening today, and a lot of people defending it for whatever reason, which is even worse.

                                                                                          1. 1

                                                                                            I’m not the Internet Comment Police

                                                                                            Your comments came off that way to me between the original and follow-ups. Far as not about OpenBSD, it’s in a thread on it with someone griping it lacked something they wanted. The OpenBSD members griping about third party projects not having something they wanted to see more of typically got no comment from you. The inconsistency remains. I’m writing it off as you’re just a fan of their style of thinking on code, quality, or something.

                                                                                        2. 2

                                                                                          i think he’s sad that there haven’t been enough volunteers to make it happen sooner

                                                                                          1. 2

                                                                                            That’s certainly one possibility, but not how I took it initially, and why I asked for clarification. I’ve seen too many people over the years attempt to disguise their entitlement by saying “thanks.”

                                                                                            I’d have liked to see this comment worded as:

                                                                                            This is a great usability improvement. Thank you Peter Hessler :) It’s a shame that there isn’t a better way to bring these important usability features to OpenBSD faster. What is the best way to help make that happen? Donations to the OpenBSD Foundation? Sponsor the work directly? Something else?

                                                                                            Now, it’s also possible that the OP has ties to OpenBSD, and the comment was self-deprecating. But, one can’t infer that from the information we see without investigating who the OP is, and their affiliations…

                                                                                            1. 0

                                                                                              one can’t infer anything beyond what they said

                                                                                              1. 2

                                                                                                I’m not sure you understand what infer means. One certainly can infer meaning from a comment, based on previous actions, comments, etc..

                                                                                                My point remains: It’d be nice if the OP would clarify what they mean. My interpretation of the OP’s comment is just as likely as your interpretation. My interpretation is damaging to the morale of existing volunteer contributors to FOSS, and gives potential contributors to FOSS reasons to not contribute all together. I don’t know about you, but I want to encourage people to contribute to FOSS, as doing so moves us closer to a free and open society. And, that alone, is the reason I’m even bothering to continue responding to this thread…

                                                                                                1. 1

                                                                                                  he said “it’s sad.” that’s all we know. the leap is that this means “entitlement.”

                                                                                                  1. 1

                                                                                                    “It’s pretty sad that it took someone else so long to prioritize work I think is necessary.”

                                                                                                    I think it’s pretty easy to take what was written and read it this way. But maybe my glass is half empty today.

                                                                                                  2. 0

                                                                                                    One can infer based on a comment, but the inference will most likely be dimwitted bullshit.

                                                                                                    Without the magic trifecta of body language, vocal intonation, and facial expression us monkeys are just shit at picking up on any extra meaning. So take the comment at face value.

                                                                                                    It expresses gratitude, it focuses on a specific recipient, and it lauds the feature. After, it regrets that it couldn’t/didn’t happen earlier.

                                                                                                    There’s no hidden meaning here, and if the commenter intended a hidden meaning he’s a dufus too, because there’s no unicode character for those. U+F089A6CDCE ZERO WIDTH SARCASTIC FUCK YOU MARK notwithstanding.

                                                                                                    At some point we all need to stop insisting that we have near-telepathic powers, especially outside of meatspace.

                                                                                                    1. 2

                                                                                                      So, what you’re saying is that I can write anything I want, and since you can’t see or hear other clues, there’s no way you can downvote (in good faith) this comment as trolling?

                                                                                                      Not sure text works that way…

                                                                                              2. 1

                                                                                                They had the solution to do it all the time, but it wasn’t invented here, so it’s bad.

                                                                                          1. 14

                                                                                            I don’t buy it because the real protocol is what you read and write from the file, not that you can read and write files. And if the “file” is a directory, what do the filenames you read and write from/to it mean?

                                                                                            So is there really any difference between open(read("/net/clone")) and net_clone();? The author seems to say the former is more loosely coupled than the latter because the only methods are open and read on the noun that is the file…. but really, you are stating exactly the same thing as the “verb” approach (if anything, I’d argue it is more loosely typed than loosely coupled). If a new version wants to add a new operation, what’s the difference between making it a new file that returns some random data you must write code to interpret, and a new method that returns some data you must write code to use?

                                                                                            1. 24

                                                                                              So is there really any difference between open(read(”/net/clone”)) and net_clone();

                                                                                              Yes: The fact that you can write tools that know nothing about the /net protocol, and still do useful things. And the fact that these files live a uniform, customizable namespace. You can use “/net/tcp/clone”, but you can also use “/net.home/tcp/clone”, which may very well be a completely different machine’s network stack. You can bind your own virtual network stack over /net, and have your tests run against it without sending any real network traffic. Or you can write your own network stack that handles roaming and reconnecting transparently, mount it over /net, and leave your programs none the wiser. This can be done without any special support in the kernel, because it’s all just files behind a file server.

                                                                                              The difference is that there are a huge number of tools you can write that do useful things with /net/clone that know nothing about what gets written to the /net/tcp/* files. And tools that weren’t intended to manipulate /net can still be used with it.

                                                                                              The way that rcpu (essentially, the Plan 9 equivalent of VNC/remote desktop/ssh) works is built around this. It is implemented as a 90 line shell script It exports devices from your local machine, mounts them remotely, juggles around the namespace a bit, and suddenly, all the programs that do speak the devdraw protocol are drawing to your local screen instead of the remote machine’s devices.

                                                                                              1. 5

                                                                                                You argue better than I can, but I’ll add that the shell is a human interactive environment, C api’s are not. Having a layer that is human interactive is neat for debugging and system inspection. Though this is a somewhat weaker argument once you get python binding or some equivalent.

                                                                                                1. 1

                                                                                                  I was reminded of this equivalent.

                                                                                                2. 1

                                                                                                  But in OOP you can provide a “FileReader” or “DataProvider”, or just a FilePath that abstracts either where the file is or what you are reading from too. The simplest would be the net_clone function above just taking a char* file_path, but in an OOP language the char* or how we read from whatever the char* is can be abstracted too.

                                                                                                  1. 2

                                                                                                    Yes, but how do you swap it out from outside your code? The file system interface allows you to effectively do (to use some OOP jargon) dependency injection from outside of your program, without teaching any of your tools about what you’re injecting or how you need to wire it up. It’s all just names in a namespace.

                                                                                                    1. 0

                                                                                                      without teaching any of your tools about what you’re injecting or how you need to wire it up

                                                                                                      LD_PRELOAD, JVM ClassPath…

                                                                                                3. 6

                                                                                                  So is there really any difference between open(read(”/net/clone”)) and net_clone();?

                                                                                                  Yes, there is. ”/net/clone” is data, while net_clone() is code.

                                                                                                  1. 4

                                                                                                    I don’t buy it because the real protocol is what you read and write from the file, not that you can read and write files

                                                                                                    Yes - but the read()/write() layer allows you to do useful things without understanding that higher-level protocol.

                                                                                                    It’s a similar situation to text-versus-binary file formats. Take some golang code for example. A file ‘foo.go’ has meaning at different levels of abstraction:

                                                                                                    1. golang code requiring 1.10 compiler or higher (uses shifted index expression https://golang.org/doc/go1.10#language)
                                                                                                    2. golang code
                                                                                                    3. utf-8 encoded file
                                                                                                    4. file

                                                                                                    You can interact with ‘foo.go’ at any of these levels of abstraction. To compile it, you need to understand (1). To syntax-highlight it you only need (2). To do unicode-aware search and replace, you need only (3). To count the bytes, or move/delete/rename the file you only need (4).

                                                                                                    The simpler interfaces don’t allow you to do all the things that the richer interfaces do, but having them there is really useful. A user doesn’t need to learn a new tool to rename the file, for example.

                                                                                                    If you compare that to an IDE, it could perhaps store all the code in a database and expose operations on the code as high-level operations in the UI. This would allow various clever optimisations (e.g. all caller/callee relationships could be maintained and refactoring could be enhanced).

                                                                                                    However, if the IDE developer failed to support regular expressions in the search and replace, you’re sunk. And if the IDE developer didn’t like command line tools, you’re sunk.

                                                                                                    (Edit: this isn’t just one example. Similar affordances exist elsewhere. Text-based internet protocols can be debugged with ‘nc’ or ‘telnet’ in a pinch. HTTP proxies can assume that GET is idempotent and various cacheing headers have their standard meanings, without understanding your JSON or XML payload at all.)

                                                                                                  1. 1

                                                                                                    Myrddin looks awesome I suppose, but what’s the attraction for potential users/developers?

                                                                                                    I read the homepage, and it says:

                                                                                                    It aims for control and simplicity. It features strong type checking, generics, type inference, closures, and traits. It aims to fit into a similar niche as C, but with fewer bullets in your feet.

                                                                                                    That sounds great, but is followed by

                                                                                                    It does not focus on guaranteeing perfect safety

                                                                                                    So, how exactly does it prevent me from shooting myself in the foot? Please don’t think I’m being mean when I ask this, but why would I use this?

                                                                                                    1. 2

                                                                                                      Myrddin looks awesome I suppose, but what’s the attraction for potential users/developers?

                                                                                                      If you need to ask, why say it looks awesome?

                                                                                                      So, how exactly does it prevent me from shooting myself in the foot?

                                                                                                      A type system that catches most issues, runtime checks that catch many of the remaining ones. There are still gaps that you can fall through, and escape hatches that prevent perfect guarantees, but the gun rarely points at your foot by default.

                                                                                                      “Fewer bullets in your feet” is not equivalent to “Rigorously proven to have zero bullets in your feet”

                                                                                                      1. 1

                                                                                                        The description is very promising and the syntax is a nice derivative of C. With all the competition these days it’s difficult to distinguish the truly innovative and special from those who make empty promises. So it’s awesome… I suppose.

                                                                                                    1. 1

                                                                                                      Congrats! Sorry if this is dumb question, but how does the api documentation get updated/generated? I see a link for libflate, but not libmath.

                                                                                                      1. 3

                                                                                                        Right now, it’s generally maintained by hand, with the repo living here and mirrored in github as usual. The html is generated using ussm. Markdown is generated with a fork of sundown, which I’ve taught how to format code with the magic to make it runnable.

                                                                                                        I’d like to look at automating/improving doc maintenance, but I haven’t had a chance to dig into it. One thing that I feel pretty strongly is that autogenerated docs from comments are often either poor quality because they lack tutorial sections and examples, or hinder readability through sheer verbosity, so I want something that can cross reference the code, but keep the explanations and examples separate.

                                                                                                        I should definitely have the libmath documentation up – I did write it after all. Will look into where it went when I get home. Fixed.

                                                                                                      1. 1

                                                                                                        Is the site broken? Shows up as a blank page for me.

                                                                                                        1. 2

                                                                                                          Loads for me. Here’s the message with links for you:

                                                                                                          “seL4 is an open source operating system kernel with a proof of implementation correctness and a cool capability system. A feL4 project is a Rust project that can be built to run in the seL4 context and make use of seL4 APIs.

                                                                                                          The Robigalia project is the best example of prior art in this space. feL4 is distinguished largely by its aim to automate and simplify the development process.

                                                                                                          Today we’re sharing cargo-fel4, an automation tool. With cargo-fel4, you can write a seL4 task in Rust, expose it through a prescribed entry point, and then build it along with the kernel.

                                                                                                          cargo-fel4 provides code generation that helps accelerate projects beyond the boilerplate of setting up a seL4 application. feL4 uses a toml-based configuration approach that helps wrap the relatively complex CMake build system for seL4, and cargo-fel4 generates usable configuration files for multiple hardware targets.

                                                                                                          For now, feL4 exposes only the system calls by way of Bindgen, as represented by the libsel4-sys library; however, we have plans to release more of our idiomatic and Rusty abstractions in the near future.”

                                                                                                        1. 34

                                                                                                          I think you could reimplement it easily yourself with a small shell script and some calls to mount; but I haven’t bothered.

                                                                                                          I don’t have the expertise to criticize the content itself, but statements like the above make me suspect that the author doesn’t know nearly as much about the problem as they think they know.

                                                                                                          1. 32

                                                                                                            This reminds me of a trope in the DIY (esp. woodworking DIY) world.

                                                                                                            First, show video of a ludicrously well equipped ‘starter shop’ (it always has a SawStop, Powermatic Bandsaw, and inexplicably some kind of niche tool that never really gets used, and a CNC router).

                                                                                                            Next, show video of a complicated bit of joinery done using some of the specialized machines.

                                                                                                            Finally, audio: “I used for this, but if you don’t have one, you can do the same with hand tools.”

                                                                                                            No, asshole, no I can’t. Not in any reasonable timeframe. Usually this happens in the context of the CNC. “I CNC’d out 3 dozen parts, but you could do the same with hand tools.”

                                                                                                            I get a strong whiff of that sort of attitude from this. It may be that the author is capable of this. It may be possible to ‘do this with hand tools’ like Shell and some calls to mount. It might even be easy! However, there is a reason docker is so popular, it’s because it’s cheap, does the job, and lets me concentrate on the things I want to concentrate on.

                                                                                                            1. 9

                                                                                                              As someone who can do “docker with hand tools,” you and @joshuacc are completely correct. Linux does not have a unified “container API,” it has a bunch of little things that you can put together to make a container system. And even if you know the 7 main namespaces you need, you still have to configure the namespaces properly.

                                                                                                              For example, it isn’t sufficient to just throw a process in its own network namespace, you’ve got to create a veth pair and put one end of that into the namespace with the process, and attach the other end to a virtual bridge interface. Then you’ve got to decide if you want to allocate an IP for the container on your network (common in kubernetes), or masquerade (NAT) on the local machine (common in single box docker). If you masquerade you must make snat and dnat iptables rules to port forward to the veth interface, and enable the net.ipv4.ip_forward sysctl.

                                                                                                              So the “small shell script” is now also a management interface for a network router. The mount namespace is even more delightful.

                                                                                                              1. 8

                                                                                                                Exactly this! One of the most egregious things about the ‘… you could do it with hand tools’ is that it is dismissive of people who really can do it with hand tools and dismissive of the folks that can do it with CNC.

                                                                                                                In woodworking, CNC work is complicated, requires a particular set of skills and understanding, and is prone to a totally different, equally painful class of errors that hand tools are not.

                                                                                                                Similarly, Hand tool work is complicated, requires a particular set of skills and understanding, and is prone to a totally different, equally painful class of errors that power/CNC work is not.

                                                                                                                Both are respectable, and both are prone to be dismissive of the other, but a hand-cut, perfect half-blind dovetail drawer is amazing. Similarly, a CNC cut of 30 identical, perfect half-blind dovetail drawers is equally amazing.

                                                                                                                The moral of this story: I can use the power tool version of containers. It’s called docker. It lets me spit out dozens of identically configured and run services in a pretty easy way.

                                                                                                                You are capable of ‘doing it with hand tools’, and that’s pretty fucking awesome, but as you lay out, it’s not accomplishing the same thing. The OP seems to believe that building it artisinally is intrinsically ‘better’ somehow, but it’s not necessarily the case. I don’t know what OP’s background is, but I’d be willing to bet it’s not at all similar to mine. I have to manage fleets of dozens or hundreds of machines. I don’t have time to build artisanal versions of my power tools.

                                                                                                              2. 2

                                                                                                                And then you have Paul Sellers. https://www.youtube.com/watch?v=Zuybp4y5uTA

                                                                                                                Sometimes, doing things by hand really is faster on a small scale.

                                                                                                                1. 2

                                                                                                                  He’s exactly the guy I’m talking about though in my other post in this tree – he’s capable of doing that with hand tools and that’s legitimately amazing. One nice thing about Paul though is he is pretty much the opposite of the morality play from above. He has a ludicrously well-equipped shop, sure, but that’s because he’s been doing this for a thousand years and is also a wizard.

                                                                                                                  He says, “I did this with hand tools, but you can use power tools if you like.” Which is also occasionally untrue, but the sentiment is a lot better.

                                                                                                                  He also isn’t elitist. He uses the bandsaw periodically, power drillmotors, and so on. He also uses panel saws and brace-and-bit, but it’s not an affectation, he just knows both systems cold and uses whatever makes the most sense.

                                                                                                                  Paul Sellers is amazing and great and – for those people in the back just watching – go watch some Paul Sellers videos, even if you’re not a woodworker (or a wannabe like me), they’re great and he’s incredible. I like the one where he makes a joiner’s mallet a lot. Also there’s some floating around of him making a cabinet to hold his planes.

                                                                                                              3. 1

                                                                                                                My reaction was “if you had to write this much to convince me that there are easier ways than Docker, then it sounds like this is why Docker has a market.”

                                                                                                                I’m late to the Docker game - my new company uses it heavily in our infrastructure. Frankly, I was impressed at how easy it was for me to get test environments up and running with Docker.

                                                                                                                I concede it likely has issues that need addressing but I’ve never encountered software that didn’t.

                                                                                                              1. 8

                                                                                                                Expect a new Myrddin release very soon.

                                                                                                                1. 6

                                                                                                                  If systemd had restricted itself to services, it would have been a nice init replacement. The problem I have with systemd is everything else it does.

                                                                                                                  1. 1

                                                                                                                    IIRC those can be configured off if you only want to keep the init part.

                                                                                                                  1. 1

                                                                                                                    No, caching is disabled for C files.

                                                                                                                    …any idea why? I wouldn’t expect a huge speedup, because C headers aren’t entirely insane, but it seems an odd decision.

                                                                                                                    1. 2

                                                                                                                      I noticed that the 2015 mailing list post says .c files are cached, so some time between then and the 2018 public release it was disabled for C.

                                                                                                                      If I had to guess, the actual parsing pass is always going to be a lot less complex for C vs C++, so a simpler approach like ccache’s may get similar gains for less overhead generating & maintaining the actual cache.

                                                                                                                      1. 1

                                                                                                                        I agree. I push caching as the general rule if checking if it’s in the cache costs less than the time to compile the file. I’d think that was true for most languages.

                                                                                                                      1. 3

                                                                                                                        wouldn’t you have to agree to an embargo in order to break it?

                                                                                                                        also: How about blaming the people who created the flaw instead of the people trying to fix it?

                                                                                                                        1. 8

                                                                                                                          Oh believe me, I would like to blame Damien Bergamini for lots of things :) But that wouldn’t do the overall great results of his work justice.

                                                                                                                          KRACK was a common flaw across many independent WPA implementations. Which was quite surprising. It has been argued that it’s an 802.11 standard flaw because the standard authors didn’t alert anyone that the state machines described in the documents were incomplete and didn’t account for this issue. But of course the standard authors didn’t notice the problem either at the time.

                                                                                                                          1. 7

                                                                                                                            “because the standard authors didn’t alert anyone that the state machines described in the documents were incomplete and didn’t account for this issue.”

                                                                                                                            Another example where formal specification of a standard might have caught a problem. Especially if it involved state machines.

                                                                                                                          2. 2

                                                                                                                            wouldn’t you have to agree to an embargo in order to break it?

                                                                                                                            Yes, but if you don’t agree to it, don’t complain if you aren’t given disclosure.

                                                                                                                            How about blaming the people who created the flaw instead of the people trying to fix it?

                                                                                                                            Because that’s not a mutually exclusive position, and a transparent attempt to create a moral high ground where none exists. You can blame both the people who created the flaw and the people who trying to fix it if they act in bad faith.

                                                                                                                            1. 4

                                                                                                                              Yes, but if you don’t agree to it, don’t complain if you aren’t given disclosure.

                                                                                                                              It’s rather hard to agree to an embargo if you’re not notified of it or offered a chance to agree.

                                                                                                                              1. 0

                                                                                                                                Since the OBSD folks are talking about the embargo and their participation (or not) in it in all of the emails cited, I assume you’re speaking of the general case and not this specific one. I agree that, in the general case, if you aren’t notified it’s hard to agree to an embargo. That’s not the case here, of course.

                                                                                                                                1. 8

                                                                                                                                  The OBSD people were talking about how they heard rumors of an embargo, and could not get a response from anyone relevant. They were absolutely clear that if they had been able to agree to the embargo, they would have. They were not offered the option.

                                                                                                                                  The best they got was “You didn’t get a response because you asked the wrong people”. When asked who the right people were – crickets.

                                                                                                                          1. 15

                                                                                                                            As a junior developer doing my best to learn as much as I can, both technically and in terms of engineering maturity, I’d love to hear what some of the veterans here have found useful in their own careers for getting the most out of their jobs, projects, and time.

                                                                                                                            Anything from specific techniques as in this post to general mindset and approach would be most welcome.

                                                                                                                            1. 33

                                                                                                                              Several essentials have made a disproportionate benefit on my career. In no order:

                                                                                                                              • find a job with lots of flexibility and challenging work
                                                                                                                              • find a job where your coworkers continuously improve themselves as much (or more) than you
                                                                                                                              • start writing a monthly blog of things you learn and have strong opinions on
                                                                                                                              • learn to be political (it’ll help you stay with good challenging work). Being political isn’t slimy, it is wise. Be confident in this.
                                                                                                                              • read programming books/blogs and develop a strong philosophy
                                                                                                                              • start a habit of programming to learn for 15 minutes a day, every day
                                                                                                                              • come to terms with the fact that you will see a diminishing return on new programing skills, and an increasing return on “doing the correct/fastest thing” skills. (e.g. knowing what to work on, knowing what corners to cut, knowing how to communicate with business people so you only solve their problems and not just chase their imagined solutions, etc). Lean into this, and practice this skill as often as you can.

                                                                                                                              These have had an immense effect on my abilities. They’ve helped me navigate away from burnout and cultivated a strong intrinsic motivation that has lasted over ten years.

                                                                                                                              1. 5

                                                                                                                                Thank you for these suggestions!

                                                                                                                                Would you mind expanding on the ‘be political’ point? Do you mean to be involved in the ‘organizational politics’ where you work? Or in terms of advocating for your own advancement, ensuring that you properly get credit for what you work on, etc?

                                                                                                                                1. 13

                                                                                                                                  Being political is all about everything that happens outside the editor. Working with people, “managing up”, figuring out the “real requirements’, those are all political.

                                                                                                                                  Being political is always ensuring you do one-on-ones, because employees who do them are more likely to get higher raises. It’s understanding that marketing is often reality, and you are your only marketing department.

                                                                                                                                  This doesn’t mean put anyone else down, but be your best you, and make sure decision makers know it.

                                                                                                                                  1. 12

                                                                                                                                    Basically, politics means having visibility in the company and making sure you’re managing your reputation and image.

                                                                                                                                    A few more random bits:

                                                                                                                                2. 1

                                                                                                                                  start a habit of programming to learn for 15 minutes a day, every day

                                                                                                                                  Can you give an example? So many days I sit down after work or before in front of my computer. I want to do something, but my mind is like, “What should I program right now?”

                                                                                                                                  As you can probably guess nothing gets programmed. Sigh. I’m hopeless.

                                                                                                                                  1. 1

                                                                                                                                    Having a plan before you sit down is crucial. If you sit and putter, you’ll not actually improve, you’ll do what’s easy.

                                                                                                                                    I love courses and books. I also love picking a topic to research and writing about it.

                                                                                                                                    Some of my favorite courses:

                                                                                                                                    1. 1

                                                                                                                                      I’ve actually started SICP and even bought the hard copy a couple weeks ago. I’ve read the first chapter and started the problems. I’m on 1.11 at the moment. I also started the Stanford 193P course as something a bit easier and “fun” to keep variety.

                                                                                                                                3. 14

                                                                                                                                  One thing that I’ve applied in my career is that saying, “never be the smartest person in the room.” When things get too easy/routine, I try to switch roles. I’ve been lucky enough to work at a small company that grew very big, so I had the opportunity to work on a variety of things; backend services, desktop clients, mobile clients, embedded libraries. I was very scared every time I asked, because I felt like I was in over my head. I guess change is always a bit scary. But every time, it put some fun back into my job, and I learned a lot from working with people with entirely different skill sets and expertise.

                                                                                                                                  1. 11

                                                                                                                                    I don’t have much experience either but to me the best choice that I felt in the last year was stop worrying about how good a programmer I was and focus on how to enjoy life.

                                                                                                                                    We have one life don’t let anxieties come into play, even if you intellectually think working more should help you.

                                                                                                                                    1. 8

                                                                                                                                      This isn’t exactly what you’re asking for, but, something to consider. Someone who knows how to code reasonably well and something else are more valuable than someone who just codes. You become less interchangeable, and therefore less replaceable. There’s tons of work that people who purely code don’t want to do, but find very valuable. For me, that’s documentation. I got my current job because people love having docs, but hate writing docs. I’ve never found myself without multiple options every time I’ve ever looked for work. I know someone else who did this, but it was “be fluent In Japanese.” Japanese companies love people who are bilingual with English. It made his resume stand out.

                                                                                                                                      1. 1

                                                                                                                                        . I got my current job because people love having docs, but hate writing docs.

                                                                                                                                        Your greatest skill in my eyes is how you interact with people online as a community lead. You have a great style for it. Docs are certainly important, too. I’d have guessed they hired you for the first set of skills rather than docs, though. So, that’s a surprise for me. Did you use one to pivot into the other or what?

                                                                                                                                        1. 7

                                                                                                                                          Thanks. It’s been a long road; I used to be a pretty major asshole to be honest.

                                                                                                                                          My job description is 100% docs. The community stuff is just a thing I do. It’s not a part of my deliverables at all. I’ve just been commenting on the internet for a very long time; I had a five digit slashdot ID, etc etc. Writing comments on tech-oriented forums is just a part of who I am at this point.

                                                                                                                                          1. 2

                                                                                                                                            Wow. Double unexpected. Thanks for the details. :)

                                                                                                                                      2. 7

                                                                                                                                        Four things:

                                                                                                                                        1. People will remember you for your big projects (whether successful or not) as well as tiny projects that scratch an itch. Make room for the tiny fixes that are bothering everyone; the resulting lift in mood will energize the whole team. I once had a very senior engineer tell me my entire business trip to Paris was worth it because I made a one-line git fix to a CI system that was bothering the team out there. A cron job I wrote in an afternoon at an internship ended up dwarfing my ‘real’ project in terms of usefulness to the company and won me extra contract work after the internship ended.

                                                                                                                                        2. Pay attention to the people who are effective at ‘leaving their work at work.’ The people best able to handle the persistent, creeping stress of knowledge work are the ones who transform as soon as the workday is done. It’s helpful to see this in person, especially seeing a deeply frustrated person stand up and cheerfully go “okay! That’ll have to wait for tomorrow.” Trust that your subconscious will take care of any lingering hard problems, and learn to be okay leaving a work in progress to enjoy yourself.

                                                                                                                                        3. Having a variety of backgrounds is extremely useful for an engineering team. I studied electrical engineering in college and the resulting knowledge of probability and signal processing helped me in environments where the rest of the team had a more traditional CS background. This applies to backgrounds in fields outside engineering as well: art, history, literature, etc will give you different perspectives and abilities that you can use to your advantage. I once saw a presentation about using art critique principles to guide your code reviews. Inspiration can come from anywhere; the more viewpoints you have in your toolbelt the better.

                                                                                                                                        4. Learn about the concept of the ‘asshole filter’ (safe for work). In a nutshell, if you give people who violate your boundaries special treatment (e.g. a coworker who texts you on your vacation to fix a noncritical problem gets their problem fixed) then you are training people to violate your boundaries. You need to make sure that people who do things ‘the right way’ (in this case, waiting for when you get back or finding someone else to fix it) get priority, so that over time people you train people to respect you and your boundaries.

                                                                                                                                        1. 3

                                                                                                                                          I once saw a presentation about using art critique principles to guide your code reviews. Inspiration can come from anywhere; the more viewpoints you have in your toolbelt the better.

                                                                                                                                          The methodology from that talk is here: http://codecrit.com/methodology.html

                                                                                                                                          I would change “If the code doesn’t work, we shouldn’t be reviewing it”. There is a place for code review of not-done work, of the form “this is the direction I’m starting to go in…what do you think”. This can save a lot of wasted effort.

                                                                                                                                        2. 3

                                                                                                                                          The biggest mistake I see junior (and senior) developers make is key mashing. Slow down, understand a problem, untangle the dependent systems, and don’t just guess at what the problem is. Read the code, understand it. Read the code of the underlying systems that you’re interacting with, and understand it. Only then, make an attempt at fixing the bug.

                                                                                                                                          Stabs in the dark are easy. They may even work around problems. But clean, correct, and easy to understand fixes require understanding.

                                                                                                                                          1. 3

                                                                                                                                            Another thing that helps is the willingness to dig into something you’re obsessed with even if it is deemed not super important by everyone around you. eg. if you find a library / language / project you find fun and seem to get obsessed with, that’s great, keep going at it and don’t let the existential “should i be here” or other “is everyone around me doing this too / recommending this” questions slow you down. You’ll probably get on some interesting adventures.

                                                                                                                                            1. 3

                                                                                                                                              Never pass up a chance to be social with your team/other coworkers. Those relationships you build can benefit you as much as your work output.

                                                                                                                                              (This doesn’t mean you compromise your values in any way, of course. But the social element is vitally important!)

                                                                                                                                            1. 31

                                                                                                                                              at this point most browsers are OS’s that run (and build) on other OS’s:

                                                                                                                                              • language runtime - multiple checks
                                                                                                                                              • graphic subsystem - check
                                                                                                                                              • networking - check
                                                                                                                                              • interaction with peripherals (sound, location, etc) - check
                                                                                                                                              • permissions - for users, pages, sites, and more.

                                                                                                                                              And more importantly, is there any (important to the writers) advantage to them becoming smaller? Security maybe?

                                                                                                                                              1. 11

                                                                                                                                                Browsers rarely link out the system. FF/Chromium have their own PNG decodes, JPEG decodes, AV codecs, memory allocators or allocation abstraction layers, etc. etc.

                                                                                                                                                It bothers me everything is now shipping as an electron app. Do we really need every single app to have the footprint of a modern browser? Can we at least limit them to the footprint of Firefox2?

                                                                                                                                                1. 10

                                                                                                                                                  but if you limit it to the footprint of firefox2 then computers might be fast enough. (a problem)

                                                                                                                                                  1. 2

                                                                                                                                                    New computers are no longer faster than old computers at the same cost, though – moore’s law ended in 2005 and consumer stuff has caught up with the lag. So, the only speed-up from replacement is from clearing out bloat, not from actual hardware improvements in processing speed.

                                                                                                                                                    (Maybe secondary storage speed will have a big bump, if you’re moving from hard disk to SSD, but that only happens once.)

                                                                                                                                                    1. 3

                                                                                                                                                      moore’s law ended in 2005 and consumer stuff has caught up with the lag. So, the only speed-up from replacement is from clearing out bloat, not from actual hardware improvements in processing speed.

                                                                                                                                                      Are you claiming there have been no speedups due to better pipelining, out-of-order/speculative execution, larger caches, multicore, hyperthreading, and ASIC acceleration of common primitives? And the benchmarks magazines post showing newer stuff outperforming older stuff were all fabricated? I’d find those claims unbelievable.

                                                                                                                                                      Also, every newer system I had was faster past 2005. I recently had to use an older backup. Much slower. Finally, performance isn’t the only thing to consider: the newer, process nodes use less energy and have smaller chips.

                                                                                                                                                      1. 2

                                                                                                                                                        I’m slightly overstating the claim. Performance increases have dropped to incremental from exponential, and are associated with piecemeal attempts to chase performance increase goals that once were a straightforward result of increased circuit density through optimization tricks that can only really be done once.

                                                                                                                                                        Once we’ve picked all the low-hanging fruit (simple optimization tricks with major & general impact) we’ll need to start seriously milking performance out of multicore and other features that actually require the involvement of application developers. (Multicore doesn’t affect performance at all for single-threaded applications or fully-synchronous applications that happen to have multiple threads – in other words, everything an unschooled developer is prepared to write, unless they happen to be mostly into unix shell scripting or something.)

                                                                                                                                                        Moore’s law isn’t all that matters, no. But, it matters a lot with regard to whether or not we can reasonably expect to defend practices like electron apps on the grounds that we can maintain current responsiveness while making everything take more cycles. The era where the same slow code can be guaranteed to run faster on next year’s machine without any effort on the part of developers is over.

                                                                                                                                                        As a specific example: I doubt that even in ten years, a low-end desktop PC will be able to run today’s version of slack with reasonable performance. There is no discernible difference in its performance between my two primary machines (both low-end desktop PCs, one from 2011 and one from 2017). There isn’t a perpetually rising tide that makes all code more performant anymore, and the kind of bookkeeping that most web apps spend their cycles in doesn’t have specialized hardware accelerators the way matrix arithmetic does.

                                                                                                                                                        1. 5

                                                                                                                                                          Performance increases have dropped to incremental from exponential, and are associated with piecemeal attempts to chase performance increase goals that once were a straightforward result of increased circuit density through optimization tricks that can only really be done once.

                                                                                                                                                          I agree with that totally.

                                                                                                                                                          “Multicore doesn’t affect performance at all for single-threaded applications “

                                                                                                                                                          Although largely true, people often forget a way multicore can boost single-threaded performance: simply letting the single-threaded app have more time on CPU core since other stuff is running on another. Some OS’s, esp RTOS’s, let you control which cores apps run on specifically to utilize that. I’m not sure if desktop OS’s have good support for this right now, though. I haven’t tried it in a while.

                                                                                                                                                          “There isn’t a perpetually rising tide that makes all code more performant anymore, and the kind of bookkeeping that most web apps spend their cycles in doesn’t have specialized hardware accelerators the way matrix arithmetic does.”

                                                                                                                                                          Yeah, all the ideas I have for it are incremental. The best illustration of where rest of gains might come from is Cavium’s Octeon line. They have offloading engines for TCP/IP, compression, crypto, string ops, and so on. On rendering side, Firefox is switching to GPU’s which will take time to fully utilize. On Javascript side, maybe JIT’s could have a small, dedicated core. So, there’s still room for speeding Web up in hardware. Just not Moore’s law without developer effort like you were saying.

                                                                                                                                                2. 9

                                                                                                                                                  Although you partly covered it, I’d say “execution of programs” is good wording for JavaScript since it matches browser and OS usage. There’s definitely advantages to them being smaller. A guy I knew even deleted a bunch of code out of his OS and Firefox to achieve that on top of a tiny, backup image. Dude had a WinXP system full of working apps that fit on one CD-R.

                                                                                                                                                  Far as secure browsers, I’d start with designs from high-assurance security bringing in mainstream components carefully. Some are already doing that. An older one inspired Chrome’s architecture. I have a list in this comment. I’ll also note that there were few of these because high-assurance security defaulted on just putting a browser in a dedicated partition that isolated it from other apps on top of security-focused kernels. One browser per domain of trust. Also common were partitioning network stacks and filesystems that limited effect of one partition using them on others. QubesOS and GenodeOS are open-source software that support these with QubesOS having great usability/polish and GenodeOS architecturally closer to high-security designs.

                                                                                                                                                  1. 6

                                                                                                                                                    Are there simpler browsers optimised for displaying plain ol’ hyperlinked HTML documents, and also support modern standards? I don’t really need 4 tiers of JIT and whatnot for web apps to go fast, since I don’t use them.

                                                                                                                                                    1. 12

                                                                                                                                                      I’ve always thought one could improve on a Dillo-like browser for that. I also thought compile-time programming might make various components in browsers optional where you could actually tune it to amount of code or attack surface you need. That would require lots of work for mainstream stuff, though. A project like Dillo might pull it off, though.

                                                                                                                                                      1. 10
                                                                                                                                                        1. 3

                                                                                                                                                          Oh yeah, I have that on a Raspberry Pi running RISC OS. It’s quite nice! I didn’t realise it runs on so many other platforms. Unfortunately it only crashes on my main machine, I will investigate. Thanks for reminding me that it exists.

                                                                                                                                                          1. 2

                                                                                                                                                            Fascinating; how had I never heard of this before?

                                                                                                                                                            Or maybe I had and just assumed it was a variant of suckless surf? https://surf.suckless.org/

                                                                                                                                                            Looks promising. I wonder how it fares on keyboard control in particular.

                                                                                                                                                            1. 1

                                                                                                                                                              Aw hell; they don’t even have TLS set up correctly on https://netsurf-browser.org

                                                                                                                                                              Does not exactly inspire confidence. Plus there appears to be no keyboard shortcut for switching tabs?

                                                                                                                                                              Neat idea; hope they get it into a usable state in the future.

                                                                                                                                                            2. 1

                                                                                                                                                              AFAIK, it doesn’t support “modern” non-standards.

                                                                                                                                                              But it doesn’t support Javascript either, so it’s way more secure of mainstream ones.

                                                                                                                                                            3. 8

                                                                                                                                                              No. Modern web standards are too complicated to implement in a simple manner.

                                                                                                                                                              1. 3

                                                                                                                                                                Either KHTML or Links is what you’d like. KHTML would probably be the smallest browser you could find with a working, modern CSS, javascript and HTML5 engine. Links only does HTML <=4.0 (including everything implied by its <img> tag, but not CSS).

                                                                                                                                                                1. 2

                                                                                                                                                                  I’m pretty sure KHTML was taken to a farm upstate years ago, and replaced with WebKit or Blink.

                                                                                                                                                                  1. 6

                                                                                                                                                                    It wasn’t “replaced”, Konqueror supports all KHTML-based backends including WebKit, WebEngine (chromium) and KHTML. KHTML still works relatively well to show modern web pages according to HTML5 standards and fits OP’s description perfectly. Konqueror allows you to choose your browser engine per tab, and even switch on the fly which I think is really nice, although this means loading all engines that you’re currently using in memory.

                                                                                                                                                                    I wouldn’t say development is still very active, but it’s still supported in the KDE frameworks, they still make sure that it builds at least, along with the occasional bug fix. Saying that it was replaced is an overstatement. Although most KDE distributions do ship other browsers by default, if any, and I’m pretty sure Falkon is set to become KDE’s browser these days, which is basically an interface for WebEngine.

                                                                                                                                                                2. 2

                                                                                                                                                                  A growing part of my browsing is now text-mode browsing. Maybe you could treat full graphical browsing as an exception and go to the minimum footprint most of the time…

                                                                                                                                                              2. 4

                                                                                                                                                                And more importantly, is there any (important to the writers) advantage to them becoming smaller? Security maybe?

                                                                                                                                                                user choice. rampant complexity has restricted your options to 3 rendering engines, if you want to function in the modern world.

                                                                                                                                                                1. 3

                                                                                                                                                                  When reimplementing malloc and testing it out on several applications, I found out that Firefox ( at the time, I don’t know if this is still true) had its own internal malloc. It was allocating a big chunk of memory at startup and then managing it itself.

                                                                                                                                                                  Back in the time I thought this was a crazy idea for a browser but in fact, it follows exactly the idea of your comment!

                                                                                                                                                                  1. 3

                                                                                                                                                                    Firefox uses a fork of jemalloc by default.

                                                                                                                                                                    1. 2

                                                                                                                                                                      IIRC this was done somewhere between Firefox 3 and Firefox 4 and was a huge speed boost. I can’t find a source for that claim though.

                                                                                                                                                                      Anyway, there are good reasons Firefox uses its own malloc.

                                                                                                                                                                      Edit: apparently I’m bored and/or like archeology, so I traced back the introduction of jemalloc to this hg changeset. This changeset is present in the tree for Mozilla 1.9.1 but not Mozilla 1.8.0. That would seem to indicate that jemalloc landed in the 3.6 cycle, although I’m not totally sure because the changeset description indicates that the real history is in CVS.

                                                                                                                                                                  2. 3

                                                                                                                                                                    In my daily job, this week I’m working on patching a modern Javascript application to run on older browsers (IE10, IE9 and IE8+ GCF 12).

                                                                                                                                                                    The hardest problems are due the different implementation details of same origin policy.
                                                                                                                                                                    The funniest problem has been one of the used famework that used “native” as variable name: when people speak about the good parts in Javascript I know they don’t know what they are talking about.

                                                                                                                                                                    BTW, if browser complexity address a real problem (instead of being a DARPA weapon to get control of foreign computers), such problem is the distribution of computation among long distances.

                                                                                                                                                                    Such problem was not addressed well enough by operating systems, despite some mild attempts, such as Microsoft’s CIFS.

                                                                                                                                                                    This is partially a protocol issue, as both NFS, SMB and 9P were designed with local network in mind.

                                                                                                                                                                    However, IMHO browsers OS are not the proper solution to the issue: they are designed for different goals, and they cannot discontinue such goals without loosing market share (unless they retain such share with weird marketing practices as Microsoft did years ago with IE on Windows and Google is currently doing with Chrome on Android).

                                                                                                                                                                    We need better protocols and better distributed operating systems.

                                                                                                                                                                    Unfortunately it’s not easy to create them.
                                                                                                                                                                    (Disclaimer: browsers as platforms for os and javascript’s ubiquity are among the strongest reasons that make me spend countless nights hacking an OS)

                                                                                                                                                                  1. 3

                                                                                                                                                                    I get out of most daily standups by standing up and walking away.

                                                                                                                                                                    1. 6

                                                                                                                                                                      BSDCan!

                                                                                                                                                                      1. 2

                                                                                                                                                                        I was on my way to BSDCant, but it turns out they’ve cancelled it. There’s nothing BSD Can’t do!

                                                                                                                                                                        Enjoy!

                                                                                                                                                                        PS: (I made this joke on Mastodon as well, with similar groans for responses).