1. 3

    (the Jira ticket I’m working on).txt

    1. 3

      I use ticket numbers also to annotate temporary lines in code I’m working on. It makes things convenient for grep in files and find with temporary file names.


      void someFunction() {
          // TODO: REMOVE: TICKET-123: Temporary logging for stuff
          // "TODO" gets flagged in some submission systems and IDEs (like Jetbrains) as a warning when you go to commit.
      1. 4

        This is the way. Google even has a lint that TODO comments must have the bug number attached.

        // TODO(b/123456789): blah blah
        1. 1

          I’ve seen this go wrong too many times to continue using it.

          • Apple do this, but very few people can read the bug with a given ID including within Apple. It’s most frustrating in their open source components, where you see “// work around rdar://problem/1234567” and have no idea what is being worked around.
          • three companies I’ve worked at have changed bug tracker, rendering these comments at best difficult to work with and at worst obsolete.

          Using the parlance of the times, bug tracker IDs make software difficult to reason about.

      1. 2

        Good software engineering exists it’s just used to make sure cruise missiles hit their target. Why there is so much shitty software engineering is incredibly easy to answer; it’s because the industry is filled with libertarians who believe if the industry were regulated it would “curb innovation” and do no good except cut into their precious profits. That mentality is why the firm the DNC paid got away with making a cheap voting application without any public security oversight.

        1. 6

          I’m slowly coming around to the need for software engineer licensing. If the Iowa Democratic party had hired an unlicensed engineer to design some bleachers for a campaign rally, and those bleachers collapsed, the designer and the people who hired him would be liable for the resulting injuries. You can’t just hire some bozo off the street to design a structure and expect a court to accept that. Except in software, it is perfectly normal to hire some bozo off the street and hope for the best.

          1. 1

            In your system, would I need an engineering license to:

            • Use redstone circuitry in Minecraft?
            • Build a personal database to keep track of recipes I like to cook?
            • Build my own personal website?
            • Build a website for my own business?
            • Write an Excel spreadsheet with some macros in it, to use at my business?
            • Write a script that automatically checks me in for my flight at 24 hours before departure so I get a good boarding group?
            • Fix a relative’s computer?
            • Set up and configure a Pi-hole?
            • Set up and configure a home media server?

            etc., all of which are or could be construed to be some form of software and/or IT engineering, and likely would be so construed by some troublesome/nosy person if a licensing scheme were imposed.


            Except in software, it is perfectly normal to hire some bozo off the street and hope for the best.

            I have been agitating for many years for better interviewing and hiring practices in our industry, and I am always rebutted by people who insist that their companies, and seemingly all companies, use rigorous high-quality interview processes which require demonstrations of relevant knowledge and skills and ensure that they “only hire the best”.

            Meanwhile, even if we could implement a theoretically ideal licensing scheme, it would mostly be about adherence to principles and practices which have been shown to produce reliable, functional software. But there are no such principles or practices. Everything from choice of tools to choice of design to choice of project styles is, at best, anecdotal and/or subjective. So a license to practice “software engineering” would be meaningless, since it would be an endorsement that someone is competent to perform a task for which we have no reliable measure of competence or performance.

            1. 1

              What a strange straw man.

              1. 2

                It’s not a straw man. You’re proposing licensing of software engineers working on ‘critical infrastructure’.

                Care to define that?

                You could lump everything from work on home Raspberry Pi servers (which may become compromised, and form part of DDOS botnets targeting core infra) to Excel spreadsheets driving core LOB apps. One I helped migrate to .NET, back in 2010 or so, was responsible for detecting fuel leaks in underground fuel systems. Should I have been licensed to work on that, as well as my home Pi server? If one, why not the other? The scope for carnage is similar, at least in the aggregate.

                Would your proposal require that contributors to key open source software like GPSD be licensed, too? If so, who do you propose administers that?

            2. 1

              It really can help. Of course licensing doesn’t completely eliminate failure, but I don’t think anyone can contest it’s a step forward wherever it’s instituted.

              1. 3

                I absolutely will contest that.

                There are numerous examples of licensing regimes being abused to shut down competition or even by governments themselves. Consider this infamous case; the guy in that case was advocating for changes to red-light timing and camera enforcement, and the state of Oregon tried to hit him with penalties for practicing engineering without a license (and, amusingly, he actually was an engineer, just not one specifically licensed by Oregon).

                And any sort of requirement of licensing for “software engineering” would pretty much inevitably either A) have to be so broad you’d need professional licensing to make a personal website, or B) if it avoids that problem, so narrowly-construed that it wouldn’t do what you actually want it to do.

                1. -1

                  Do you have a link which isn’t paywalled? I cannot read what you posted unless I decide I want to help pay for Jeff Bezos’ personal propaganda outlet.

                  Anyways, without being able to actually read the article, it really seems like a ridiculous strawman to say that because the local Oregonian government did something stupid there shouldn’t be any procedure with which to verify that the people who inspect bridges and traffic systems to make sure they don’t kill you and your loved ones actually know what they’re doing and are trustworthy. As I’ve already said above, I consider it not a perfect solution, but a step forward, with no licensure and subsequently no greater developed alternative to licensure present being a step back. This is just as true as your silly argument about licensure requirements for software engineering, when there are clearly many pre-existing standards of knowledge for areas such as security, reliability, and privacy in software development, but because requirements for licensure may not be perfect we should just give up and not even attempt making a step forward.

                  1. 1

                    I cannot read what you posted unless I decide I want to help pay for Jeff Bezos’ personal propaganda outlet.

                    Since I do not know which news outlets, or even which search engines, you might find politically acceptable or unpalatable, I will simply give you a search query – the name “Mats Järlström” – and allow you to perform a search on your preferred platform, for results on sites you feel comfortable reading.

                    it really seems like a ridiculous strawman to say that because the local Oregonian government did something stupid there shouldn’t be any procedure with which to verify that the people who inspect bridges and traffic systems to make sure they don’t kill you and your loved ones actually know what they’re doing and are trustworthy.

                    Despite your repeated use of the word “strawman” to describe people in this thread, I note that what you’ve said here does not characterize what I said in the comment you were replying to. So while it may, charitably speaking, be a counterargument to something someone said somewhere, it does not engage with what I said, and as such I am unable to productively respond further.

                    1. 2

                      Despite your repeated use of the word “strawman” to describe people

                      “People” is interesting wording to use here considering I’ve only reacted to your posts with this phrase. You directly argued against “licensing regimes” without proposing anything at all except getting upset that the government is doing things you don’t like, what do you think that looks like besides “we should not have a system to verify people who give final judgement on critical infrastructure are trustworthy”?

                    2. 1
                  2. 1

                    but I don’t think anyone can contest it’s a step forward wherever it’s instituted

                    Yes they can, and do. From https://spectator.org/licensing-is-a-racket/:

                    It will always be easy for lawmakers to join in combination with business cartels so long as the costs are diffuse, and borne by customers and future competitors. The cost is measured in lost opportunity, which doesn’t get a vote. The scale of those lost opportunities, however, is enormous — some 2.85 million jobs a year, according to this report.

                    Here in Victoria, the electrician licensing system was recently abused to shut down the “occupier’s license”, that allowed home owners to be certified to perform minor wiring changes in their own houses, after studying and taking an exam.

                    1. 1

                      I was personally talking/thinking about engineering licensure, not twirling copper wires together in a good enough way that you don’t get electrocuted or burn a house down (for which obviously there should be licensure). In any case, an anecdote is an anecdote is an anecdote. And It’d be ridiculous to point at an anecdote like that and say “there shouldn’t be licensure to make sure the guy twirling your copper wires together is smart enough so that he doesn’t endanger himself, kill you, and destroy everything you own”

                      1. 1

                        Perhaps I wasn’t clear.

                        You said: “I don’t think anyone can contest it’s a step forward wherever it’s instituted”.

                        I provided a) an example of someone contesting it, and b) an example from my own personal experience where a licensing system had been abused to shut down the licensure option for home-owners. That is, a licensing system had been abused as a form of protectionism favouring licensed electricians.

                2. 4

                  This comment reminds me of the fact that time drift introduced because Patriot missile systems run on 24-bit floating point meant that they let a Scud through during Gulf War I that killed 28 folks.

                  1. 2

                    Christ. Do you have a link to a good writeup?

                      1. 2

                        Good succinct technical report on it, thanks.

                  2. 4

                    We have an industry on track to double the number of programmers in the next 5 years (a growth rate which has been pretty consistent for 50 years). Given that sustained rate of growth, it is a mathematical fact that 75% of programmers have been doing it fewer than 10 years.

                    The resultant training gap is huge - the vast majority of developers have near-zero exposure to the tools that would give them a fighting chance of doing a good job.

                    Even if teaching those tools were prioritized highly, there simply aren’t enough people familiar with them to do the teaching, and new entrants are not learning them.

                    Regulation would do many good things for the industry. Getting rid of shitty software is not even close to being one of them.

                    1. 2

                      Yeah, it’s really sad how few standardized paths there are for mentorship. The development of junior programmers out of college (many of which barely know how to use Git) is completely at the mercy of the firms that hire them, which can in some lucky cases land a developer in the presence of someone truly interested in helping them develop and grow, but it’s absolutely not the common one.

                    2. 3

                      About that good engineering that goes into cruise missiles:


                      1. 3

                        I would like to point out that leaking memory where it doesn’t matter != bad engineering. Good engineering involves navigating the problem space and finding the solution through that space which reliably arrives at the correct destination. Good engineering requires funding befitting the complexity of that problem space, and military contracting is exceedingly well funded.

                        1. 2

                          This was mostly tongue-in-cheek, I like the story but do actually think it’s a memorable example of pragmatic engineering. I think it does also highlight that there are cost/benefit trade-offs to be found even in places we think of as having strict requirements though.

                          1. 2

                            And if you’re being brutally pragmatic: how many soldiers’ lives would be saved by getting it into production sooner, rather than later having fixed the drift?

                      2. 2

                        Except that the “Libertarians” in this case were paid and managed by the DNC. Trying to assign culpability to people based on their political philosophy is shitty trolling at best, and in this case also incorrect.

                        1. 6

                          The DNC doesn’t run the Iowa caucus and it didn’t comission the app. The Iowa Democratic party does.

                          1. 2

                            Sorry, I thought there was a hierarchy there that didn’t exist. (Pathetic excuse: I’m not American). But my point still stands, that criticising “Libertarian” developers for an underfunded, rushed project funded by Democrats is wrong in several ways.

                            1. 4

                              The claim wasn’t that the developers of the app were libertarians.

                              The claim was that developers, by and large fight against any attempt to regulate software development, resulting in a situation where anyone can take on jobs well beyond their ability to deliver.

                              1. 1

                                Okay, that’s a reasonable interpretation.

                                But I’d argue that it’s still wrong to characterise the resistance to regulation as Libertarian[1]; the vast majority of developers aren’t Libertarian, and neither are the majority of lobbyists or the politicians they’re lobbying.

                                I think the majority of developers simply (and wisely) don’t want their industry regulated more than it already is, and the majority of lobbyists are just crooked opportunistic bastards (ohai TurboTax).

                                Edited to add: [1] In the sense that most people calling for progressive taxation aren’t Marxists.

                          2. 2

                            You’re really splitting hairs about names for different free market ideologies when the firm paid was very obviously a glorified voting Startup which wouldn’t exist were the industry better managed.

                            1. 1

                              I was irritated by what I saw as an attempt to blame a problem that really boils down to shitty leadership[1] on a political philosophy. In particular, one to which I (largely) subscribe ;)

                              Can you clarify what you mean by ‘better managed’?

                              I mean, yes, I agree that an awful lot of startups exist solely because of a) malinvestment by VCs, b) bubbles, c) attempts to basically defraud investors by encouraging them to sink money into snake oil.

                              Who do you think should manage the software industry, and how?

                              [1] You can’t con an honest man; you can’t realistically expect to get two good mobile apps for the time and money the Democrats spent.

                              1. 2

                                I understood why you were irritated, but you cannot deny the fact that libertarian ideology is categorically opposed to governmental intrusion into markets, and you cannot pretend that the prevailing ideologies that software developers follow (the most popular from my American perspective being varying forms of free-market liberalism, which ime is the prevailing ideology of the DNC and also the umbrella under which libertarianism falls) don’t have an impact on what laws are lobbied for and blessed by us to regulate the development of software and how people may be held liable for mismanagement.

                                And I don’t think anyone would argue that cases such as these are problems of mismanagement, I believe we’re both in agreement on this, just as @pnathan wrote above,

                                if you hire 4 people (3 super junior) and underpay them, with an accelerated budget, you should not expect to succeed. this is known. we the industry are not bad at this. we are not paid to do it right, and most of us really care about paying the rent.

                                I believe the far more valuable question to ask is not only why this happens (your answers being bad investment, bubbles, fraud), but why it’s been completely unmitigated. The prevailing solution over the last several decades has already been the liberal answer, which is to allow the markets to self-regulate themselves so that these issues may self-resolve, albeit at the cost of peoples livelihoods being thrown into precarity and the public building distrust and contempt for the software industry as a whole. In my honest opinion I think that this “solution” sucks.

                                In terms of what I would desire but we’re maybe at least a decade out from being a realistic political possibility? I believe that for the software the public uses at large, there should be legislature allocating funding for international organizations of software engineers to work on blessed open source projects, and legally obligating computing platforms to provide support to run that software, such as by relaxing DRM or providing the necessary code for their platform or device’s firmware to that organization. For software already provided by private firms to run for the public (including consumer operating systems, search engines, social networks, and of course, caucus voting applications), an international licensing system should be introduced by an organized body of software engineers to push for blessing by state legislation, with a protocol not too different from pre-existing engineering licensure, such that the licensed engineers of a project performing code reviews and such must approve released and provisioned versions of their projects, taking on liability for those projects saying that they do not violate security, privacy, and reliability standards blessed by the body which builds the protocol for licensure, and effected into into law by local legislation. This body would also ideally provide mentorship programs such that junior engineers may be encouraged into more responsible practices and better understanding of their toolkit.

                                Honestly, there’s an unlimited number of possible schemes and the above may be flawed in little ways here and there, and may require a long term of lobbying and organizing to achieve (notwithstanding sabotage by corporations who may not find such a plan not to be in their interest), but I’d honestly be happy with literally any sort of step forward in building a framework of rules and liabilities for software development that meets a decent enough criteria.

                          3. 1

                            it’s because the industry is filled with libertarians who believe if the industry were regulated it would “curb innovation” and do no good except cut into their precious profits.

                            This seems, well, wrong. Do you have any more information to support this claim?

                          1. 10

                            Wow, that first link was a trip. The #NoEstimates people weird me out.

                            When it comes to why estimates are difficult, most engineers and engineering leads throw their hands up in the air and say, “Software has too many unknowns! We can’t tell what unknowns we’ll find, even with the simplest task!”

                            This is the second time in two days I’ve seen this “software is special!!!” thinking. We’re not. Nothing makes software essentially harder to estimate than any other large, complex project. We might not have the training, or the tools, or the theories on how to estimate better. But software isn’t special. Either we can estimate software or we can’t estimate anything.

                            1. 19

                              My dad has worked in construction for many years, and although we don’t know much about each other’s work worlds, we are always able to connect when talking about project planning, estimations, and management. There are so many parallels that I can’t help but believe that there’s some hope for software.

                              That said, it’s not like it’s a solved problem in civil engineering projects either. Crazy stuff happens there too. My intuition tells me there is a lack of appreciation for the non-physical complexity in software. If someone finds a pipeline no one expected when digging, it seems easier to grasp the gravity of it versus finding a dependency in code that no one knew about.

                              1. 8

                                Same setup here, with the experience of construction sites (actually demolishing though) and software.

                                In construction I’m used to doubling or tripling the original estimate, but never of “oops, it’s 10x the work now”. But that mostly speaks of experience and apparently more “normal” projects, if you look at Berlin’s BER airport disaster, I guess 100x comes closer…

                                I hate to turn to this age old bad examples, but I’ve never heard of stuff like:

                                • oh we DO need a basement after all, throw away the ground level
                                • we decided to use wood and not cement
                                • wait, nobody told me we need to put lights in there?

                                What I did hear:

                                • no, we wanted the other wall to be torn down
                                • we want the new door exactly here! (turns out it there was a wall at the back, imagine a T - shaped piece of wall)

                                But yes, sometimes there are known tasks like

                                • this wall is 3m x 5m, it will take X hours
                                • this feature needs one new form and 3 database calls, it will take X hours

                                and then there are things where you simply don’t know from a one sentence description if they want a garden shack or a new mall.

                                The main problem is that it’s less tangible and a lot more opaque. On the other hand some things that are 10 minute tasks can seem like magic - that also hardly happens in construction. You don’t just get a surprise benefit by discovering a material(library) unknown to you that will save a week worth of work.

                                1. 5

                                  If I ask you to estimate the weight of all your colleagues and to guess the total weight of the whole team….

                                  I bet you won’t be far out either.

                                  Some probability distributions, especially physically based ones are thin tailed.

                                  Your guesses are very unlikely to be far off, a smallish sample is likely to be representative, nothing is going to be orders of magnitude different, and when you sum (or average) your guesses, the deviations cancel out.

                                  Other distributions, especially non-physical ones like wealth, software complexity, ….. are fat tailed.

                                  ie. You need very large samples to be able to estimate accurately, yes, quite likely there is one story in the backlog that explodes out to 100x larger than the rest, summing ( or averaging) does reduce the deviation but not really.

                                  What really happens in the software world is when that task blows up by a factor of 100x… Odds on we say, Meh, maybe we don’t need to do that in the 1st release… or 2nd or ..

                                  Estimation is not about deadlines, it’s about risk management. When we see a story blowing up… we need to step in and make some hard choices.

                                2. 2

                                  I work in Chicago so I immediately thought of the much-delayed Jane Byrne Interchange construction.


                                  In January 2015 — just over a year into construction — university workers noticed the building had been sinking and shifting, leaving cracks in the foundation and making it impossible to shut some doors and windows, according to court records.

                                  Over the next 1½ years, IDOT blamed engineering firms it had hired for missing the poor soil conditions that contributed to the problem. That led to a redesign of a key retaining wall that boosted costs by $12.5 million and dragged out that part of the project at least 18 more months.

                                3. 13

                                  But software is, if not special, different to most physical engineering projects.

                                  Building software is like combining the worst cases in renovation TV shows - you have a heritage listed building with unknown structural issues, a homeowner who followers the builders around everywhere, can’t envision what they want until they see it, and constantly change their mind after work has been completed. And they have a strict budget and need to be in before Christmas.

                                  The fundamental reasons why software estimation is hard are:

                                  • most team leads/scrum masters won’t say no to changes in the estimated scope
                                  • team membership changing due to business priorities
                                  • insufficient investment in quality measures across the board

                                  They are, to a degree, our own fault. We don’t say ‘no’. We don’t insist on quality. We don’t insist on team stability.

                                  In my time as a team lead I pushed as hard as I could on those issues. If priorities changed and some new work needed to be fitted into the current timeframe, I made the product owners pick an equivalent sized piece of work to remove. The team already had a great quality ethic, which I protected by making sure that there was enough time allowed to maintain our test suite etc. I couldn’t really stop management from moving people in and out of the team, but I made enough noise that it was at least somewhat uncomfortable for them. Our estimates were not perfect, but pretty decent.

                                  But it was exhausting, and while I think people respected me, it would have been “career limiting behaviour” if I’d been focused at all on rising up the ranks in that org.

                                  After 6 months I left and found a pure dev job.

                                  1. 11

                                    I’ve been interviewing “crossovers”, people who started off as traditional engineers and moved to software. I’m basing all my claims off what they said. The overwhelming consensus is that almost everything we think about “trad” is a misconception.

                                    Building software is like combining the worst cases in renovation TV shows - you have a heritage listed building with unknown structural issues,

                                    In software, if you need to figure out what’s wrong with the codebase, you can inspect the source code. If you need to figure out what’s wrong with the electrical system, you have to tear down the wall.

                                    One former electrical engineer talked about how often mechanical projects would go wrong. Often a supplier had tons of implicit knowledge about their parts- switching to a different supplier for the exact same design could get you something completely incompatible, simply because of slight differences in the tolerances.

                                    a homeowner who followers the builders around everywhere,

                                    Plenty of engineers complained about this. Scope creep and overbearing clients are universal.

                                    can’t envision what they want until they see it,

                                    Also extremely common. It’s less of a problem in most engineering fields, but most of my interviewees think it’s because they just spent more time gathering requirements in trad.

                                    and constantly change their mind after work has been completed.

                                    I talked to one engineer who had to move a bridge. I’d have to go back and check with her, but I think it was something like “The demographics of the area had changed.”

                                    The fundamental reasons why software estimation is hard are:

                                    • most team leads/scrum masters won’t say no to changes in the estimated scope
                                    • team membership changing due to business priorities
                                    • insufficient investment in quality measures across the board

                                    These happen all the time in trad, too.

                                    1. 3

                                      a homeowner who followers the builders around everywhere,

                                      Plenty of engineers complained about this. Scope creep and overbearing clients are universal.

                                      I can attest to that. I’ve trained and worked in software for 20 years now, but I originally trained to be a TV-repairer. One repairshop I had a placement in during training had a notice on the wall, that could be seen by customers:

                                      We charge 300/hour.
                                      If the customer wants to watch, we charge 600/hour.
                                      If the customer wants to help, we charge 900/hour.

                                      To be totally honest I believe it was meant more as a humerous deterrent than to be taken literally, but there’s no smoke without fire as they say :-)

                                      1. 2

                                        I’ve been interviewing “crossovers”, people who started off as traditional engineers and moved to software. I’m basing all my claims off what they said. The overwhelming consensus is that almost everything we think about “trad” is a misconception.

                                        That’s really interesting, and supports a suspicion I’ve long held that the software industry’s “imposter syndrome” with respect to the engineering community causes is to over-glorify physical engineering.

                                        Although I haven’t been interviewing or studying it, I know quite a few tradesmen (and my father was a plumber and builder). I get the impression that, as you say, estimation is not exactly a precise art for them, either.

                                        1. 1

                                          Agreed on all counts. These are the kinds of things I hear from my father, too. One difference might be that in software we’re too eager to deploy what we’ve got and then never change it. Also, software does a lot less work up front. (Sometimes that code doesn’t get examined much!)

                                    1. 8

                                      Is this really a good fit for a technology-focused link aggregator? It’s barely technological. There’s no code or hardware. There’s no history of computing, or a picture of Bob Widlar flipping off the viewer. It’s an opinion piece about the intersection of smart devices and culture (tagging this as philosophy is a stretch). Will this prompt on-topic, productive discussion, or teach the reader?

                                      Don’t think I’m posting this in bad faith, it’s a genuine question as part of the wider meta of lobste.rs as of late.

                                      (And it seems to blame everything wrong with these technologies on Americans, which seems unnecessary and kinda xenophobic.)

                                      1. 17

                                        As a reflection on technology, I feel it’s on-topic, which is also why I tagged it as philosophy. Just tech without reflection strikes me as … not a good idea.

                                        IMHO it’s just as on-topic (or off-topic, if you will) as the umpteenth “DRM bad” rant that was posted earlier today.

                                        it seems to blame everything wrong with these technologies on Americans, which seems unnecessary and kinda xenophobic

                                        It’s a very US-centred publication, which probably explains why it centres mainly on the states.

                                        1. 8

                                          As a piece on how software interacts with society (and this ultimately is about software, not technology in general) I think it fits fine. It’s useful to introspect on how we think about software, what software we use, what software we create and impose onto the public, how we regulate software (or fail to regulate it.)

                                          I don’t think this is blaming everything on Americans, but pointing how how a mindset and national self-story that is somewhat peculiar to America influences public discussions on tech progress in America.

                                          1. 4

                                            I’m OK with it, but wouldn’t be offended were it to be aggressively flagged as “off-topic”.

                                            1. 1

                                              The biggest lie actual tech people tell themselves is probably something about estimates and scheduling. Or about how using a concurrent solution right here can’t possibly be that hard.

                                              Or if it must be about AI, it could be, “We’re saving all this data and we’re going to AI it somehow as soon as we have time, so you can’t say this is just another CRUD app.”

                                            1. 3

                                              How come “(benevolent) dictator for life” is OK for pudgy but lovable Western European men, but is not ok for corporate entities from the USA?

                                              1. 63

                                                Shall I compare thee to a billion-dollar corporation? Thou art more lovely and more temperate,

                                                1. 12

                                                  Because ultimately, when the community VERY LOUDLY made it known to Guido that type system theory may be a fascinating pursuit but that radically altering the Python language to sprout that kind of feature isn’t something some people are interested in, he stood aside and allowed the language governance to change to meet the needs of the community.

                                                  What I’m reading from this article (Not a Go fan, no skin in that game. Feels like a time warp back to K&R C circa 1988 to me.) is that there is exactly zero chance of this ever happening with Go.

                                                  1. 5

                                                    when the community VERY LOUDLY made it known to Guido [..], he stood aside and allowed the language governance to change to meet the needs of the community.

                                                    Wait, you tout it as a good thing? Being very loud rarely has anything to do with being right or useful. And making a smart person cave in to harsh pressure is not really an achievement.

                                                    (Mind, I’m not discussing the technical point about types itself.)

                                                    1. 3

                                                      From my perspective, despite the phrasing I chose in my previous comment, this isn’t at all about being loud.

                                                      It’s about defining the technical direction of a piece of technology that is used and relied upon by a vast number of people with very varied use cases.

                                                      Nobody is saying that Guido shouldn’t design type theory oriented extensions to Python, what people are objecting to is radically altering the syntax of the language standard in order to further those goals.

                                                      For many people, what we value about Python is its un-clever, un-cluttered syntax, and for a substantial number of people, the directions Guido wanted to take the language were not conducive to our usage patterns.

                                                      My point here is simply that Guido, as language designer, was mature/enlightened enough to put his ego aside and recognize that the directions he wanted to take things were not what a sizable numerical percentage of the community wanted, and that his energy would be best spent standing aside and letting majority rule. I see this as a very different situation from the one you paint in your comment.

                                                      1. 2

                                                        Now, that is a much better explanation, thank you!

                                                        Despite being a long-time user of Python I was never involved in the design discussion around the language, so I only see what other people translate outside of the inner circle.

                                                    2. 3

                                                      Isn’t that exactly what happened? The community said they needed module support, the go team added module support.

                                                      1. 11

                                                        Again, not an expert - not even a Go fan - but what I’m reading is that the community came up with its own solution and the Go team chose a radically different path.

                                                        So, maybe? I’m not sure. The point I was addressing was the “Go is Google’s, not the community’s”.

                                                        1. 2

                                                          Not in that way, though. There were a few community solutions to packaging over the years when the Go team didn’t want to tackle the problem, leading to one solution (dep) that was basically officially blessed right up until it wasn’t and another path was chosen by the core team. There was poor communication around this and expectations were not well managed. I think the go team truly wants the best solution, but seeing this play out did make some people feel like the author of this post.

                                                          The bigger issue is that the priorities used to design go modules are quite different from what some folks in the community want in a dependency manager (specifically, its use of minimal version solving), which puts you in the position to use the official thing that doesn’t do what you want or try to find a community-backed project that is attempting to work in a familiar way but will surely dry up as folks adopt the official solution.

                                                          FWIW I had a bunch of issues with dep, but I think they were the result of not having a centralized repository for packages like there is for other languages and with not the tool itself. It turns out that it’s hard to build a reliable dependency manager when you need to be able to contact every host who hosts code instead of just one.

                                                      2. 7

                                                        Because modules.

                                                        (Seriously, I read the whole post as a complaint about the modules decision it alludes to, plus the obligatory swipe at the lack of generics.)

                                                        1. 5

                                                          You’re probably correct.

                                                          I, for one, am happy with modules. I never liked dep, and think modules is significantly better both in semantics and implementation. That being said, some of the communication was … unfortunate, although different people seem to have quite different recollections of some events, so who knows 🤷

                                                          I do empathize a lot with the dep team (And Sam in particular) as it always sucks if you spend a lot of time on something, only to not have it used. But sometimes these things are hard to avoid.

                                                          1. 3

                                                            I don’t think I made it clear enough that my entry was an observation, not a complaint; to the extent that it’s a complaint, it’s only a complaint that the Go team is not honest about how things work in Go’s evolution. I personally am happy with the end results of the current Go module design (as a sysadmin, I particularly like the minimum necessary version approach) and the current lack of generics (I would rather have no generics than not-great generics or generics that clash with the rest of the language). There are a number of benefits that come from having a language with a distinct ownership, provided that you have the right owners, and I think that Go does.

                                                            (I’m the author of the linked-to entry.)

                                                          2. 3

                                                            It sounds like the complaint is that Google talks a big game about how open Go’s development is, but at least in the modules case, is happy to completely ignore extensive open coordination on building a module system for Go while silently building its own module system from scratch. I don’t follow Python development that much, but I don’t think they’ve ever done anything like that.

                                                            1. 0

                                                              It’s really not ok for either, to be frank.

                                                            1. 2

                                                              OT but shouldn’t @friendlysock’s name be @friendliness sock?

                                                              angry : anger :: friendly : friendliness

                                                              1. 3

                                                                Maybe friendshipsock so it scans similarly.

                                                              1. 13

                                                                Das komputermaschine ist nicht für der gefingerpoken und mittengraben!

                                                                1. 6

                                                                  Warning, this sentence can cause actual physical pain to german speakers. The amount of wrong diverges towards infinity.

                                                                1. 7

                                                                  Cory always scares me.

                                                                  1. 21

                                                                    This was from 2012. Arguably, we’re already there. Tons of popular computers run signed bootloaders and won’t run arbitrary code. Popular OS vendors already pluck apps from their walled garden on the whims of freedom-optional sovereignties.

                                                                    The civil war came and went and barely anyone took up arms. :(

                                                                    1. 5

                                                                      It’s not like there won’t always be some subset of developer- and hacker-friendly computers available to us. Sure, iPhones are locked down but there are plenty of cheap Android phones which can be rooted, flashed with new firmware, etc. Same for laptops, there are still plenty to choose from where the TPM can be disabled or controlled.

                                                                      Further, open ARM dev boards are getting both very powerful and very cheap. Ironically, it might even be appropriate to thank China and its dirt-cheap manufacturing industry for this freedom since without it, relatively small runs of these tiny complicated computers wouldn’t even be possible.

                                                                      1. 10

                                                                        This is actually the danger. There will always be a need for machines for developers to use, but the risk is that these machines and the machines for everyone else (who the market seems to think don’t “need” actual control over their computers) will diverge increasingly. “Developer” machines will become more expensive, rarer, harder to find, and not something people who aren’t professional developers (e.g. kids) own.

                                                                        We’re already seeing this happen to some extent. There are a large number of people who previously owned PCs but who now own only locked down smartphones and tablets (moreover, even if these devices aren’t locked down, they’re fundamentally oriented towards consumption, as I touched on here).

                                                                        Losing the GPC war doesn’t mean non-locked-down machines disappearing; it simply means the percentage of people owning them will decline to a tiny percentage, and thus social irrelevance. The challenge is winning the GPC war for the general public, not just for developers. Apathy makes it feel like we’ve already lost.

                                                                        1. 0

                                                                          Arguably iPhones are dev friendly in a limited way. if you’re willing to use Xcode, you can develop for your iPhone all you want at no charge.

                                                                          1. 7

                                                                            Develop for, yes, within the bounds of what Apple deems permissible. But you can’t replace iOS and port Linux or Android to it because the hardware is very locked down. (Yes, you might be able to jailbreak the phone through some bug, until Apple patches it, anyway.)

                                                                            Mind you, I’m not bemoaning the fact or chastising Apple or anything. They can do what they want. My original point was just that for every locked-down device that’s really a general-purpose computer inside, there are open alternatives and likely will be as long as there is a market for them and a way to cheaply manufacture them.

                                                                            1. 4

                                                                              Absolutely! Even more impressive is that with Android, Google has made such a (mostly) open architecture into a mass market success.

                                                                              However it’s interesting to note that on that very architecture, if you buy an average Android phone, it’s locked down with vendorware such that in order to install what you want you’ll likely have to wipe the entire ecosystem off the phone and substitute an OSS distribution.

                                                                              I get that the point here is that you CAN, but again, most users don’t want the wild wild west. Because, fundamentally, they don’t care. They want devices (and computers) that work.

                                                                              1. 6

                                                                                Google has made such a (mostly) open architecture into a mass market success.

                                                                                Uh, I used to say that until I looked at the history and the present. I think it’s more accurate that they made a proprietary platform on an open core a huge success by tying it into their existing, huge market. They’ve been making it more proprietary over time, too. So, maybe that’s giving them too much credit. I’ll still credit them with their strategy doing more good for open-source or user-controlled phones than their major competitors. I think it’s just a side effect of GPL and them being too cheap to rewrite core at this point, though.

                                                                              2. 2

                                                                                I like to think that companies providing OSes are a bit like states. They have to find a boundary over how much liberty over safety they should set, and that’s not an easy task.

                                                                              3. 3

                                                                                This is not completely true. There are some features you can’t use without an Apple developer account which costs $100/yr. One of those features is NetworkExtension.

                                                                                1. 2

                                                                                  friendly in a limited way.

                                                                                  OK, so you can take issue with “all you want” but I clearly state at the outset that free development options are limited.

                                                                          2. 6

                                                                            Over half a million people or 2 out of 100 Americans died in the Civil War. There was little innocent folks in general public could do to prevent it or minimize losses Personally, I found his “civil war” to be less scary. The public can stamp these problems out if they merely care.

                                                                            That they consistently are apathetic is what scares me.

                                                                            1. 5

                                                                              Agreed 100%.

                                                                              I have no idea what to do. The best solution I think is education. I’m a software engineer. Not the best one ever, but I try my best. I try to be a good computing citizen, using free software whenever possible. Only once did I meet a coworker who shared my values about free software and not putting so much trust in our computing devices - the other 99% of the time, my fellow devs think I’m crazy for giving a damn.

                                                                              Let alone what people without technical backgrounds give a damn about this stuff. If citizens cared and demanded freedom in their software, that would position society much better to handle “software eating the world”.

                                                                              1. 6

                                                                                The freedoms guaranteed by free software were always deeply abstruse and inaccessible for laypeople.

                                                                                Your GNOME desktop can be 100% GPL and it will still be nearly impossible for you to even try to change anything about it; even locating the source code for any given feature is hard.

                                                                                That’s not to say free software isn’t important or beneficial—it’s a crucial and historical movement. But it’s sad that it takes so much expertise to alter and recompile a typical program.

                                                                                GNU started with an ambition to have a user desktop system that’s extensible and hackable via Lisp or Scheme. That didn’t really happen, outside of Emacs.

                                                                                1. 6

                                                                                  Your GNOME desktop can be 100% GPL and it will still be nearly impossible for you to even try to change anything about it; even locating the source code for any given feature is hard.

                                                                                  I tried to see how true that is with a random feature. I picked brightness setting in the system status area. Finding the source for this was not so hard, it took me a few minutes (turns out it is JavaScript). Of course it would have been better if there was something similar to browser developer tools somewhere.

                                                                                  Modifying it would probably be harder since I can’t find a file called brightness.js on my machine. I suppose they pack the JavaScript code somehow…

                                                                                  About 10 years ago (before it switched to ELF) I used Minix3 as my main OS for about a year. It was very hackable. We did something called “tracking current” (which apparently is still possible): the source code for the whole OS was on the disk and it was easy to modify and recompile everything. I wish more systems worked like this.

                                                                                  1. 6

                                                                                    Remember when the One Laptop Per Child device was going to have a “view source” button on every activity?

                                                                                    1. 1

                                                                                      Oh yes, that would have been so nice…

                                                                            2. 3

                                                                              Cory always brings so much more work that needs to be done to the table.

                                                                            1. 9

                                                                              I recently told my boss I could rewrite 80% of our project from scratch in a few months, with two caveats.

                                                                              1. I choose which 80% of the features
                                                                              2. I’m not making any promises about the other 20%
                                                                              1. 4

                                                                                Is that really helpful at all?

                                                                                1. 1

                                                                                  Nope. He and I both knew that the ugly 20% that I would exclude is actually indispensable from the customers’ perspective. We were talking about our ongoing efforts to modernize the product, and I brought it up to illustrate the same point that this blogger does.

                                                                              1. 1

                                                                                The new computer had a one-plus-one addressing scheme, in which each machine instruction, in addition to the operation code and the address of the needed operand, had a second address that indicated where, on the revolving drum, the next instruction was located.

                                                                                In modern parlance, every single instruction was followed by a GO TO! Put that in Pascal’s pipe and smoke it.

                                                                                – The Story of Mel

                                                                                Pretty crazy! I’m sure glad we don’t do anything like that any more.

                                                                                More specifically, the attacker first finds usable gadgets in the victim binary. She then uses a buffer overflow vulnerability to write a sequence of addresses of gadgets into the victim program stack. Each gadget performs some computation before executing a return instruction. The return instruction takes the return address from the stack, and because the attacker control this address, the return instruction effectively jumping into the next gadget in the chain.

                                                                                – Spectre Attacks: Exploiting Speculative Execution

                                                                                Everything old is new again.

                                                                                1. 33

                                                                                  In other news, resistors and capacitors are keeping kids from electronics, and getting their hands icky is keeping kids from cooking.

                                                                                  It’s been proven that saying programming is easy is a bad idea, it isn’t. Also all instructions given to a computer in anyway get translated at some point or other into machine code (best represented by lists of text instructions if you want a human to read it). Pretending that’s not true doesn’t seem useful.

                                                                                  It would be better to frame this conversation in terms of the group of people who want to make computing in some way accessible to other people. What are they trying to achieve and what do they want out of this ‘coding’ experience. Let’s just stop pretending that that has anything to do with programming, which is always going to be processing lists of instructions.

                                                                                  1. 24

                                                                                    The whole point of the article is that their playtesters were intimidated from starting the game because the text UI looked too scary, but if the game started with icons and gradually switched over to text kids had no trouble with it.

                                                                                    1. 14

                                                                                      That’s funny because for me it was exactly the other way around. Ok, I was a bit older than five years old, twice that even. Still a young kid. Back then I discovered mIRC and learned how to write mIRC scripts. To this day IRC has been my favorite protocol: next to being able to easily talk to each other, the event based potential is just very appealing.

                                                                                      (Ok, anekdote time. If there was an ability to hide the rest of my comment underneath a “read more” link, this is where you could click. But since there isn’t any such functionality, the best I can do is offer my apologies to anyone who is displeased by the length of my comment. Clicking on the [-] next to my nick will hide the entire thing.)

                                                                                      Maybe a year or so later if memory serves me right — I can’t have been much older than 12 because I can still remember both the old house where I used to sneak into the other room to steal, err, borrow my stepdad’s external ISDN modem and extremely long phone cable; and the monthly fights we had about the phone bills — an online friend told me that you didn’t have to use an IRC client (intended to be used interactively) for automation: someone named Robey Pointer had designed IRC bot software called ‘eggdrop’.

                                                                                      (My friend also kept going on about how envious he was of Robey’s last name which initially made me reconsider our friendship, it sounded so weird that it made me unsettled – many months later a different friend unsettled me again when he told me about pointers, causing me to realize that my first friend actually might not have been that weird at all)

                                                                                      This ‘eggdrop’ thing made me very curious and I couldn’t wait to give it a go. So I got onto my 486SX with Windows 95, downloaded and extracted the zip file, executed eggdrop.exe and.. wait.. what was this? All I saw was a command prompt that did appear to show some text, but it disappeared before I could make sense of it.

                                                                                      So I opened up a command prompt myself, typed ‘eggdrop.exe’, and read something cygwin something, and about there not being a user file, et cetera. Alright, my curiosity was now really piqued.

                                                                                      Eventually I got it running and was very pleased with myself – anyone who’s ever configured an eggdrop knows that it’s not exactly trivial, and even more so when most of it is way outside the things you know about.

                                                                                      Then I discovered that it actually wasn’t for Windows at all. Thanks to the integrated Cygwin it worked, but as it turned out most people would use something entirely different from Windows. Called Linux.

                                                                                      And that’s how I discovered and got fond of Linux. First RedHat, then SuSE, then Slackware… and to this day, 20 years later, I still enjoy using the terminal, and IRC, and all kinds of other exotic things that people call anything from unappealing, to downright scary, with ‘complicated’ somewhere in the middle. I don’t think it’s any of that. All one needs is a curious mind, the ability to disregard what other people say about it, and fun ideas. I didn’t care about how esthetically pleasing any of it was, at all. I cared because of how thought provoking it was; a new dimension, and mine to explore.

                                                                                      To me this is where the heart of the matter is and I think it’s where most people are mistaking - in my view, computers in and of themselves aren’t fun. Computers shaping people aren’t fun either. People shaping computers is where the fun’s at.

                                                                                      What makes working with computers so intriguing, especially from an engineering perspective, is that you’re immersing yourself into a world of codified thoughts made entirely by human brains. The choices, and even psychology behind things. It’s like a labyrinth: intelligently designed by humans, so there simply has to be logic to it.

                                                                                      Discovering the logic. That’s the appeal.

                                                                                      1. 7

                                                                                        I was a bit older than five years old, twice that even. Still a young kid.

                                                                                        That’s a huge difference in terms of reading skill. Maybe bigger than the additional reading skill you acquire between ten and twenty years old.

                                                                                        I think this article has more to do with early childhood development than it does with teaching programming in general. The more I think about, the more I’m impressed that children that young were able to do any kind of programming.

                                                                                        And the more I think about it, the more I hate the title.

                                                                                        1. 2

                                                                                          Agreed. Plus, the more I think about it, the less I trust the research: you can never go wrong with 5 year old subjects. Totally unreliable.

                                                                                          But, gah, I’ll admit. I wrote most of my comment before realising how old they were. So that explains that.

                                                                                        2. 3

                                                                                          This was very unexpected and gratifying; thanks. (My last name got a lot of laughs in programming classes, too.) :)

                                                                                          On topic, I think “the thrill of solving puzzles” is a big part of what got me into coding as a kid, too. I still remember Silas Warner’s “Robot War” and trying to figure out why one bot always won. Part of the disconnect here may be that 5 is too young for most kids to find fun in written language, so the puzzles have to be scaled down. But my instinct agrees with yours: dropping a puzzle in front of a kid and saying “this should work, if you can figure it out” is usually a great way to motivate them to learn something.

                                                                                        3. 4

                                                                                          It’s more likely a lack of autocomplete and red squigglies. Also having a cheat sheet on hand would probably help when getting started.

                                                                                          1. 3

                                                                                            “Danny! Don’t eat the cheat sheet!”

                                                                                            5 year olds ¯\_(ツ)_/¯

                                                                                        4. 11

                                                                                          I’m sympathetic to text, and to programs as lists of instructions, and I totally agree that saying programming is easy is counter-productive. But I feel I’m missing something about your argument given the obvious holes, so can you elaborate?

                                                                                          1. I don’t understand this distinction you’re making between ‘programming’ and ‘coding’. To the extent that programming isn’t accessible, I think we should be changing programming to be more accessible. Creating new distinctions seems unnecessary, and also inherently a political rather than technical act: even if you don’t intend to, you’re liable to end up creating us-vs-them divisions between ‘programmers’ and ‘coders’.

                                                                                          2. Programs always eventually get translated to zeros and ones. Surely that doesn’t mean we should be programming in zeros and ones? You’re obviously aware of expression-oriented languages like Hy. Similarly, translating icons to addresses doesn’t seem much different to me than translating words to addresses. What am I missing in your argument?

                                                                                          One of my students is contributing to this project which assigns icons to new procedures by default. It seems useful.

                                                                                        1. 19

                                                                                          I almost entirely disagree with this. The only thing I’ll grant is that you can’t always tell the exact same story in a video game as you can in another medium (Doh!).

                                                                                          For instance, Papers Please is a game about checking paperwork as an immigration inspector. It would make a fairly boring book or movie, but as a game, it tells an interesting story that’s entirely influenced by every one of the player’s decisions.

                                                                                          There are plenty of other examples of this type of game, and its really a disservice to the medium to choose a small subset of AAA action games that are attempts to copy Hollywood films, then blame video games for being poor imitations of Hollywood films.

                                                                                          1. 4

                                                                                            Papers, Please gives you an emergent story, which I love and which games can do better than any medium. I think the article could have been better titled, “Video Games Are Better Without Scripted Stories.”

                                                                                            Even then, there are a few scripted games stories that I love. I do feel like they’re the exception.

                                                                                            1. 3

                                                                                              I think this critique misses the crux of the article, which criticizes specific movements in artistic video game storytelling through understanding the relationship of storytelling to the rules and problem solving we consider gameplay. Specifically, it’s exploring the investigatory style of facade-like “storytelling through environment” techniques that dominates game storytelling (Papers Please still falls under this kind of storytelling), which holds its own shortcoming by creating a foundational contradiction between the mechanical and fictional.

                                                                                              AAA games especially suffer from this contradiction because of their publisher’s interests in cinematic industry profits and disinterest in conceptual artistic problems related to storytelling. And this is made especially interesting because of the massive influence and cultural importance of AAA games. It’s a useful examination.

                                                                                            1. 8

                                                                                              Unmentioned: the Chicago Tribune website has been steadily declining in quality. I won’t argue the quality of writing, but there are constantly more ads (pulling up the top story, my ad blocker caught a dozen items and there were still four on the page). Around the time of this change, they introduced a paywall that limits you to X articles per month and has an undismissable modal telling you turn off your ad blocker (few blocker filters catch this modal).

                                                                                              Facebook watches everything. If they notice the rate of users clicking through to ChicagoTribune.com and bouncing back to Facebook.com in a couple seconds has lept up, they’re going to consider it a low-quality site and serve it less often. Facebook probably never made a decision to reduce the frequency of links, or of news links, or of links to the Trib - this is probably just a general quality filter doing its job.

                                                                                              1. 2

                                                                                                But what about their parent company’s plan to focus “on leveraging artificial intelligence and machine learning to improve the user experience and better monetize our world-class content in order to deliver personalized content to our 60 million monthly users and drive value for all of our stakeholders. Our rebranding to tronc represents the manner in which we will pool our technology and content resources to execute on our strategy.”

                                                                                                Surely that would have improved their site’s quality by now?

                                                                                              1. 4

                                                                                                I was surprised to see so many are leaving Lisp for Python… but then I remembered one popular company did exactly that, and everybody spent the next decade rehashing the decision.

                                                                                                1. 12

                                                                                                  I love Lisp, truly, but for modern workloads, the ecosystem is there for Python and it’s not there for Lisp (which Lisp? Common Lisp? Scheme? Which implementation of CL?).

                                                                                                  If I want to connect to some Amazon API, there’s already a library in Python that’s well-supported, well-documented, and has tens of thousands of users. If I want to do that in Lisp, there may or may not be a library that may or may not work and may or may not be kept up to date. Python has networking and encryption in the standard library, etc, etc.

                                                                                                  I remember reading an article by…Paul Graham?…about writing early web apps in Common Lisp (I think it was the original Yahoo! Market, but don’t quote me on that). All of the things he talked about were revolutionary, and he was right that nobody could do what they were doing at the time…but that was because nobody had written it in any other language either. When you’re starting from absolute scratch, Lisp will win, but very, very few projects are started absolutely from scratch anymore.

                                                                                                  1. 3

                                                                                                    I remember reading an article by…Paul Graham?…about writing early web apps in Common Lisp (I think it was the original Yahoo! Market, but don’t quote me on that)

                                                                                                    You remember correctly. http://paulgraham.com/avg.html

                                                                                                  2. 3

                                                                                                    Most things in technology are there because of legacy and overriding commercial imperatives.

                                                                                                    Alas, very seldom in this industry does the best technology win.

                                                                                                  1. 6

                                                                                                    Is this article a troll?

                                                                                                    1. 4

                                                                                                      It did a nice job of dancing on that line so I couldn’t decide. Until I saw those numbers. $15 an hour? Definitely a troll.

                                                                                                    1. 3

                                                                                                      This person’s lab practices terrify me. I’m surprised he hasn’t described any hospital trips.

                                                                                                      1. 2

                                                                                                        He sounds very smart and also very stupid.

                                                                                                        1. 2

                                                                                                          The lack of hospital visits sounds like it’s attributable to, besides a bit of luck, some pretty serious safety equipment in the post-high-school examples: full-body hazmat suit, respirator mask with faceplate, etc.

                                                                                                        1. 5

                                                                                                          It would be nice if some of this were true. But we aren’t living in an era of fragmentation; we’re living in an era of consolidation. The rate of new business formation collapsed in the recession and hasn’t recovered. The economy is increasingly dominated by big, old firms.



                                                                                                          1. 1

                                                                                                            The best part is Carmack’s comment on the article. He isn’t so anti-STL any more, even if he still doesn’t love it.


                                                                                                            1. 6

                                                                                                              I personally prefer µBlock, since it’s compatible with AdBlock-style filters while providing the option to only block cross-site stuff (as opposed to cosmetic blocking). It’s more of a privacy-centric approach, as opposed to the “all ads are bad” approach taken by the AdBlock devs that essentially breaks online monetization.

                                                                                                              1. 2

                                                                                                                EFF’s Privacy Badger is another one that focuses on cross-site content and trackers rather than ads per se. It does require a bit of fiddling though, because it sometimes breaks pages that require cross-site loading for functionality, e.g. an embedded google widget of some kind (you can override that on a site-by-site basis).

                                                                                                                1. 1

                                                                                                                  How does Privacy Badger compare to telling Chrome to block third-party cookies?

                                                                                                                  1. 2

                                                                                                                    I use all 3. uBlock Origin. , Privacy Badger and a cookie white list.

                                                                                                                    The cookie white list has had a huge impact on my habits. I don’t have hard data, but my Amazon spending dropped dramatically once cookies were blown away!

                                                                                                                    1. 2

                                                                                                                      It blocks more than just the cookies; it also blocks (some) third-party content from loading, to make it harder to do even server-side tracking (many of these trackers don’t strictly depend on cookies, using other techniques like browser fingerprinting and IP logging). Uses some heuristics about what’s likely to be doing cross-site tracking.

                                                                                                                      For example, when I loaded cnn.com just now, it blocked things from 17 domains from loading: aax.amazon-adsystem.com, www.budgetedbauer.com, staticxx.facebook.com, www.facebook.com, cdn.gigya.com, partner.googleadservices.com, secure-us.imrworldwide.com, vrp.outbrain.com, vrt.outbrain.com, widgets.outbrain.com, a.postrelease.com, pixel.quantserve.com, ads.rubiconproject.com, consent.truste.com, www.ugdturner.com, ad.doubleclick.net, and cdx.krxd.net. It allowed a further 3 domains to load widgets but without allowing cookies: static.chartbeat.com, cdn.optimizely.com, cdn3.optimizely.com.

                                                                                                                1. 5

                                                                                                                  SQL at #24, just ahead of Haskell? Oh-kay.

                                                                                                                  1. 2

                                                                                                                    As a DBA, I can assure you that very few developers actually engage with SQL, preferring to hit the DB through an ORM or other SQL wrapper instead. On the one hand, it’s frustrating, because there are still plenty of those “looping over ORM calls generates 10k queries where one would do” situations. On the other, it’s often fairly easy to tune something if they’re willing to embed raw SQL in their code (usually raw SQL that I write, mind you).