I was doing some admin/DevSecOps for a client last year. It was a hoot, so I thought I would explore Kubernetes as something that would be even more fun and allow me to help other folks.

    For me, it looked as if the capabilities being sold vastly outweighed what the average client would need. If you’re operating at the kind of scale to need that, good for you. You’ll have a guy who is the expert on all things Kubernetes and now you’ve got architecture coordination issues (which is good).

    I was much more concerned about devs who loved the idea and were going to use it no matter what their problem. Professionally, it looked to me like yet another example of new tech coming out, far too many people clamoring on the bandwagon, and then a bunch of messes being made. At this point in my career I don’t have the patience to play “consultant cleanup”, although I understand there’s a lot of money to be made doing it. So I bailed and did not continue learning.

    If I get a client/situation that truly demands it, though? Sure. Kubernetes, Docker, AWS, Lambda, and CloudFormation would be my go-to. I’d modify from there depending on the situation.

    1. 1

      I don’t have time to watch the video but I saw what looks like a link to a repository on GitHub https://github.com/DanielBMarkham/LeanPubX

      When clicking it there is a modal pop up which asks me to sign up or log in to the website. I can’t actually visit the link by clicking it on the site.

      Sorry for the moan but I think this kind of behaviour needs pointing out.

      1. 1

        I just went in incognito from here to the site and then watched the video, no problems. No modals.

      1. 3
        • Scratching an itch. I’m writing a book using LeanPub/Markura and heck if I can get the LeanPub output translated into something in Google Docs that doesn’t look like crap. So I’ll roll my own little app to do it.

        • Adding some content to a new site. I’m moving my stuff to locals and I want to set up an editorial calendar and add material to it.

        • Talking to some beta reviewers. The last chunk of my book is in the hands of my informal beta group. I’d like to hear what they’re thinking about it.

        1. 2

          There’s also pandoc to generate ebooks. I use pandoc+xelatex for GitHub style markdown to pdf and use a custom css to generate epub version. I wrote a blog post for the pdf customizations I did (need to update though). The blog post also includes other ebook generation options.

          1. 2

            Yup. This is what drove my decision to kick out some code: this isn’t that hard of a problem.

            I spent two hours yesterday online and trying various transforms, such as PDF->Word->Google->Docs

            It all looked like crap. Best I can tell, the converters are doing bad OCR on the doc images. Hell, I could probably bash up a quick script that would be good enough to upload and have the beta testers review. This shouldn’t be that hard to do.

            I’ve been putting off pandoc for a bit. Right now I’m only using a few markdown commands. If I continue to need more functionality, I’ll go to a library. (Of course, then one wonders what one is using LeanPub for)

            1. 1

              It was lot of work for me to hunt down and figure out a decent looking pdf output using pandoc (didn’t know latex and still don’t know beyond settings that I copy pasted). Plus some initial environment setting issues. Which is why I wrote the blog post. And the struggle continued when I wanted to create epub version (which wasn’t helped by the fact that I didn’t know anything about css).

              So, Leanpub does work for those who do not want to fiddle with such things and just want to write their book.

              1. 2

                No, I understand what they do and why. The first time I wrote an ebook, I did it all by hand, making the epub using a build script. That got gnarly, so I switched to a vendor that handled all that crap.

                Now when I need an output format the vendor doesn’t provide, I’m back to mucking around in ebook code. I have better things to do. (In fact, the only reason I’m writing the code is to use some of it as an example)

                I love the LeanPub guys. I hope to continue being a customer. But having the same three output formats for years at a time is kinda sucky. Heck, even a Word Doc output would solve my problem.

                You don’t want to use a tool that keeps adding new crap every year just for the sake of it, but if you’re job is outputting ebooks in various formats, that’s probably something you should tweak now-and-then, especially since adding a new output format wouldn’t change the user interface for writers at all.

                1. 2

                  even a Word Doc output would solve my problem

                  If Leanpub is using pandoc internally, this should be easy to provide for them. May be write an email to them? You could also try pandoc file.epub -o file.docx. I just tried on my book, and it gave a decent output.

          2. 1

            I don’t know if this is your use case, but you can translate Markdown to Word (.docx) and get that into Google Docs pretty easily. That’s how I like to write documents at work. Downside is that by default you’re going to get some really hideous fonts (Calibri and Cambria), might wanna change those to something more good-looking.

            1. 1
              • Scratching an itch. I’m writing a book using LeanPub/Markura

              The online editor is not good. Even the github integration is not perfect. It will line-wrap when rendered in pdf :(

              I emailed their support.

              1. 1

                What’s the book about?

                1. 2

                  Understanding at a detailed level the interaction between people and computers.

                  Not useful for most folks, but if you want to really understand the programming/startup/UX world, irreplaceable. Lots of code and applied philosophy. Many conclusions folks will not expect, including coding and analysis best practices advice. I think it’s pretty easy to read, but who knows. That’s what the betas are for.

                  1. 3

                    I know couple of people who are into world of UX, Programming. May be this book will be good for them. Is it available somewhere to read while Work In Progress?

                    BTW I tried to access your website (from Lobsters profile) and it’s throwing 403 error!

              1. 2

                Yay. Fun memories.

                Back when instant messaging was cool, I had the idea of extending the shell to do all forms of contact management. The idea was that you could create file types that represented people, and folders that represented various organizations, then just add the files and folders to your OS, whether in a folder, on the desktop, etc. The shell would know that this kind of file was a person and then provide you tools to interact with that person. You could right click and send a file, start a voice call, and so forth. The back-end was Oracle.

                Fun times. I wrote up a working POC and started looking for investors. This was before any of the Big Tech companies came to be. At the time I figured if you had a great idea, working code, and was able to deliver tech, that was all you needed.

                I had fun with the shell extension stuff and got everything working I needed to work, but the money/business side of startups was far too difficult for me at the time. Still, I have fond memories of pouring through all the sample MSDN code and banging MFC into what I needed to make it all work.

                1. 2

                  Kinda reminds of BeOS’ way of managing contacts, which Vista actually ending up using, in one of those Longhorn relics that shipped.

                  1. 1

                    I lack the historical context but could you explain why you chose Oracle as a backend? Just curious what other options were around at the time and what made it stand out for you.

                    1. 2

                      At the time, I was grooving out big time on Object-Oriented everything. I modeled my solution in UML, I was using C++/MFC/Win32 as the programming platform, I generated the tables using codegen, and I wanted a database that had the biggest amount of OO goodness. IIRC, Oracle/PL-SQL had a feature where you could pretty much group definitions, data, and methods into “objects” in the database. It also had much better error-handling code. Plus the best database drivers were made only for the top few database platforms. Oracle was one of the top three easily.

                      The problem, of course, was that they were more than willing to screw over anybody they could for licensing fees, but somehow or another I had a platform to develop with. I don’t remember if there was some kind of dev version or I was just hacking up something until I needed a license. Back then, of course, you had to run your own cloud/network services on-site, so I had seven or eight servers in the office: email, database, web, etc.

                      The hardest part about the entire project was the C++/COM stuff. More difficult than that, actually, over the long term was server maintenance and updates. It wasn’t tough, just time-consuming and tedious. Configuring and installing a local network was a hoot; maintaining it was a nightmare for one person (who had other things to do)

                  1. 5

                    I agree with the general premise that you should either be deliberately consuming or creating, and that creating is better if you can manage it. I also agree that the essay was far too non-specific.

                    Part of the problem is that a lot of people who spend the majority of their time consuming actually believe they’re creating. Sure, they may be copying a bunch of stuff down from SO or following word-for-word famous-person-x, but that’s only in the service of actually creating something, er, greater. Sometimes they actually get that thing created, sometimes not. Rarely is it anything truly creative. Turns out if you don’t up your game and master working across genres (no matter what field you’re in), most anything you do is derivative. In fact, part of truly being creative is a deep appreciation for how derivative most everything in your field is. That’s the bar you have to work past.

                    Instead of offering specific advice on being creative, perhaps I can add advice on how to know if you’re being creative. If you pick some general foundational rules that are your own, then develop on those rules until you end up somewhere that you might find uncomfortable and might require personal change, you’re being creative. Creativity takes you and your audience to new, interesting, and perhaps uncomfortable spots. There should be some surprise involved, even on the part of the creator.

                    Most of tech content is bullshit because too many practitioners just want to fill-in-the-blanks. To them, technology isn’t a place you create, it’s a place where you follow the rules in order to engineer something that’s just another version of a thing that’s been around forever, only shinier. Thought leaders and authors know this, so they provide a constant stream of how to do stuff you’re already doing only with more coolness.

                    And if I read one more essay about “How I used K8s to generate random numbers!” or the like, I’m going to start making funny faces at the monitor. (grin)

                    1. 1

                      “…Coding is like that. Try something. See if it works. Try again. If a problem was straightforward, it would be automated or at least solved with some open-source code….”

                      To me this translates to “My job is hard and I work with complicated things. It’s much too much for kids”

                      Ok, but what the heck does that have to do with coding? Are your kids going to be setting up cloud architectures anytime soon? Debugging some complex C++ code? Probably not.

                      1. 3

                        I installed MediaWiki on a server three years ago for a project and I really liked it! It was nice using software that thousands of other people had already gone through the pain of trying out.

                        I got rid of it because I didn’t want to keep maintaining a cloud server. If anybody’s got a CF stack for AWS that sets up a serverless MediaWiki, hit me up. I’d love to try it out.

                        1. 3

                          I am in the process of setting up MediaWiki Fort personal content (personal kB) and I’m using the official docker image. It’s very ergonomic.

                          1. 2

                            I actually use TiddlyWiki and find that it’s more than adequate.

                            1. 3

                              I gave that a small try and it didn’t feel like the right fit for me. Still a nice idea though.

                          2. 1

                            It’s not AWS but I did find a gist about setting it up on Heroku. Might be something to look into https://gist.github.com/caseywatts/d04bda6626ef2c6c8f97

                            1. 1

                              After I posted my comment I started thinking about various ways to accomplish this. The easiest would probably be a container deployment used only as-needed on a spot-bid basis with a budget. This heroku solution looks really cool also. There’s probably a much harder way to do it without instances at all, and it might make for a great blog post, but I don’t have the necessary motivation to chase it down. I really love the tool, though. It’s amazing that such tools are free.

                          1. 29

                            This is a very long winded article and yet in a way it stopped too short. The thesis is that software didn’t go wrong but that software exists in an environment motivated by capital. The intuition that the problem isn’t software but the context that software lives in is a good one. But the author shouldn’t have stopped at Capital. The problem is that Capital exists in a context as well. At it’s crux the issue is human nature. Human nature has a number of failure modes. Those failure modes manifest in the use and accumulation of Capital as well in the development of code and in fact in any alternative attempt to replace Capital as a motivation.

                            Solving the failure modes of software requires solving the failure modes of human beings.

                            1. 36

                              There is a reflex in anglophone online discussion to jump straight to attributing the state of capitalism in the US to fundamental forces of the universe, as if the sad state of healthcare provision, public transport, employment law, infrastructure etc etc are just inevitable because Human Nature. And also it has to be this way because the alternative is communism.

                              It seems to wilfully ignore most of the rest of the developed world. You can make useful inroads into this problem with boring, un-pontificatey, un-weary-old-sage stuff like policy and government and compromise and all the other things that are deeply unfashionable to the point of being broken at the moment. It does work if you let it. The state of the examples I gave above are the result of active choices made by Americans, knowingly or otherwise. I am not saying for a second e.g. north west Europe is perfect, that is impossible because it is impossible to solve the failure modes of human beings. They have merely made a different choice to Americans about how they want their society to be (e.g. the things I mentioned above are a higher priority).

                              At the present time, the USA is one of the easiest places in the world to become a billionaire, unhindered (relatively) by constraints societal, regulatory and moral that exist in other places (the recent tax cuts, the wealth gospel, marking up insulin 1000% would all be seen as Martian to a Dane, for example). Americans voted for this. The only other similarly fertile time for rapidly-accumulated billions in recent history was the oligarch class that formed in the vacuum of the collapsed USSR. Though in that case the absence of effective government and regulation wasn’t as a result of an active choice by the citizens.

                              Choosing to remove many of the constraints against rapid capital accumulation is now really starting to eat into the things that gave america its strengths in the first place, such as good research and the ability to spin that research into productive industries. R&D labs are expensive and don’t survive CFO-orchestrated mergers. You can’t innovate in your Valley garage anymore because you can’t afford to buy the house with the garage from the Instagram employee who is selling it. I shouldn’t even use the valley in my example as a shorthand for an innovative place. It used to be an engine of technological innovation, now it only is if you squint really hard to try and see selling adverts as a branch of computer science. Instagram replaced Intel. Good on the VCs for taking the valley and shaping it in the way that maximises the rate at which they accumulate capital, they are winning the game whose rules were written by the American electorate.

                              The sentiment ‘We won’t get anywhere until we solve human nature’ is a false dichotomy [the choice being between the status quo or some singular revolution in human behaviour] and quite seductive to people like us who like grand, clever, sexy [a troublesome used deliberately here] new advances to cleanly solve existing problems. (c.f. the grim and now-parodied heydays of TED where people queued up to pronounce things like ‘Technology Will Fix Education’).

                              Your messiah won’t come and fix it. You, I, we all need to take the basics seriously and make careful choices in our everyday lives. It’s much less convenient for me at the moment to buy an oven glove online from a local kitchenware place than from amazon, but I do because it’s important. I spent $30 instead of $5 to get my hobby PCBs made in this country rather than in China because it’s important. I walked in the cold rain when I was tempted to stay inside to canvas for a local political cause because it’s important. None of these are big revolutionary things, they’re just trying to be a better cog in the machinery of my society (and all of us exist within and shape our societies, even if we don’t want to) because that’s important. The basics are important. Regulators musn’t turn a blind eye to the accumulating shortcuts of their industries. The law must apply to everyone. Lobbying is bribery by any other name but is much more tightly regulated in other countries. The money in politics must be transparent.

                              All of these basics are difficult and boring and tiresome and essential and effective.

                              1. 5

                                I think it’s very helpful to view capitalism as an inevitable force of nature. Just like many other forces of nature, we want to mitigate, redirect and transform some of its effects. Wind is fine, storms and hurricanes require defensive action. Rivers are useful and even nice, but we need to guard against flooding and sometimes want/need to canalize a part.

                                Capitalism may be human nature, but that implies nothing about the acceptable/desirable consequences. If someone thinks otherwise, they are simply committing the naturalistic fallacy.

                                1. 2

                                  This is an important point that too often gets left behind. Capitalism isn’t some option off a menu you choose when setting up your government. It exists now, it will exist in the future, it will always exist. The study of economics isn’t something we do because we control it, it’s something that already happens that we seek to more fully understand.v You can take the most oppressive regime in history, perhaps with every bit of money controlled by the state, and there was still capitalism. The “capital” just switched over to political influence, reputation, and so forth. The same principles apply.

                                  History show us that the only thing you can really control about capitalism is how much of it you want to be overt versus covert.

                                  These discussion are really sad to read. We start off with everything being about money: who has money, who doesn’t have money, who has too little, who has too much, and so forth. Then we venture on this long and winding journey around whatever problem we’re trying to analyze only to end back up where we started. Turns out? The problem was all about money! That’s the problem!

                                  If I can take your premise and know how your analysis is going to conclude, you’re not doing much in the way of analysis. At best you’re simply regurgitating ideas you’ve consumed elsewhere and mangling them together. That might make for well-written and great prose, by the way. It could easily make for a piece of text worth reading and sharing with others. It’s just not going anywhere that we haven’t already gone a thousand times before.

                                  1. 2

                                    It exists now, it will exist in the future, it will always exist.

                                    Capitalism is an economic system that was created by people, and put into effect by force. There is nothing inevitable about it and it’s heavily reliant on the societal ideals and values, and seeks to manipulate them through media, and the very language that we use to talk about things, to ensure that it continues.

                                    The idea that we cannot build a different economic system, that might or might not involve money, ignores the fact that the dynamics of capitalism are fundamentally just societal agreements and social normals. And that societies have had, and current have, very different variations along that concept. It buys in to the idea that capitalism was a natural development, when it is anything but.

                                    In addition, your analysis that the person you are responding to is regurgitating ideas is entirely ignorant of the fact that that is all you are doing. You’re not stating anything new, you’re not even stating factual or historically correct information. You’re regurgitating half-thought ideas that have been passed along to you by your culture that you and others haven’t properly analysed, nor have you clearly read any analyses or critiques of those ideas. The fact that you’re using this to shame someone else is amazing, quite frankly.

                                    Please go and read The Origins of Capitalism by Meiksins-Wood. It’s an academic work but it’s very, very good. I’d also recommend Anthony Kenny’s History of Philosophy, purely because you don’t seem to believe that culture as a whole, and the zeitgeist specifically has changed massively over time, and not just through scientific evidence. For example, before JS Mills, morality was thought to be based on an inherent good or bad quality of the act. It was an impossible and clearly wrong idea that it could depend on the context in which an act takes place to determine whether it is a good act or a bad act. If morality itself depends on your societal context, just think about how deeply complex systems depend on specific circumstances and beliefs, and how much they could differ if those beliefs and circumstnaces were changed.

                                    1. 1

                                      I will consider this. Thank you.

                                      I am afraid, however, that I already know where this is going before it even begins. This is going to be about the classic definition of capitalism while I was talking more about something that academically might be called “free trade”

                                      I tried to make that clear by my examples. Apologies if I failed. I felt it was important to bring the conversation down to the vernacular and not get too far into semantics, history, and economic theory. But your point is a good one. I’m just not sure it’s relevant given the examples I provided.

                                2. 3

                                  This should be posted somewhere on a website of writing to be better preserved than a comment on a story posted Lobsters (not that there’s anything wrong with Lobsters comments …).

                                  What you write sinks to the core of my being and the life I’ve carved out for myself in the United States. My friends think I’m crazy for moving to a small town and making due with the (largely) older population that still resides here. Where’s the nightlife? Where’s the easy entertainment?

                                  We buy less. We consume less. We build more. My kids are being raised knowing that when you hatch chicks, that one with a deformed leg will die, and it wont be anyone’s fault. But they see the miracle of two dozen other chicks grow into livestock that provides us with eggs. We then turn around and sell the eggs to make a small profit compared to the input of grain. In this way we participate in our own version of capitalism, but we’re not trying to convert two dozen eggs a day into 10,000. I don’t need cancerous growth to show my kids how to live a high quality life.

                                  Choosing the slow growth is hard. Choosing to go without is hard. But the choices are there. Everyday we’re making choices that inform the world we live in.

                                  Thank you for giving me a train of thought to meditate on.

                                  1. 2

                                    I 100% agree, The key here is to recognize that people make particular choices and those choices have consequences and if you don’t address our tendency to make bad choices when misinformed or tempted in certain ways then no system you create to address the bad effects of those choices will succeed. Capitalism done wrong will have certain effects. Communism done wrong will have certain effects. Socialism done wrong will have certain effects.

                                    The defenders of those systems will all say “Well, that’s because they didn’t do it right.” To which I respond yes, and until you fix their tendency to do them wrong they will continue to do them wrong.

                                  2. 9

                                    That’s a great point. At the moment, capital is our primary representative of desire/human nature. And of course, this is the great bait-and-switch of capital, which convinces us that it is the real thing we desire; before capital, this “stand-in for desire” was earth itself, and then the body of the despot.

                                    It felt more productive to discuss software-under-capitalism than software-under-human-nature, not least because the article is long-winded and heady enough as it is. It’s also easier to take action against something more concrete, even if that concreteness is a trick. Just because things are human constructions or illusions doesn’t make their consequences any less real!

                                    1. 20

                                      Human beings existed in non-capitalist forms for the vast majority of the time we’ve been on this planet. Non-capitalist cultures are rare and dying these days. But this is due to forms of globalization, notably the history of colonization. It’s not human nature but domination, often violent, that has produced the current state of affairs where capitalism as a cultural form is seen as somehow being due to “human nature”, as if it weren’t in fact a historical production.

                                      1. 8

                                        What do you mean by non-capitalist, in this context? I suppose one of the features of modern capitalism – the idea that the pie can grow – is a relatively new one, as is the idea that competition is good for consumers. But usually, people who reject capitalism don’t seem to reject those parts.

                                        However, exchange on a relatively free market, which is the most important part of capitalism, has existed for probably the bulk of human history, and in the cases where it was disallowed, it still stuck around in the form of a black market.

                                        1. 12

                                          Various forms of exchange have existed for a really long time, but the best way to delineate ‘capitalism’ and ‘not-capitalism’ is to look at the general mode of production prevalent in society. In 900 AD, most people worked under personal obligations, i.e. their labour was not sold on the free market, and the point of producing goods wasn’t to satisfy a profit motive, rather to satisfy need and a mesh of social obligations. Only in capitalism is most work organized and most goods produced under this generalized framework of selling them, only there is labour treated as a commodity.

                                          This is a simple, factual difference in how the economy works. You need a name for it, and ‘capitalism’ has always been that name. You can say that ‘capitalism’ actually means ‘exchange, in whatever form, is present’, but most people don’t mean that when they think of capitalism.

                                          1. 3

                                            I’ve seen different people use capitalism very differently, which is why I asked. I find that it’s usually worth stripping the -isms before starting a discussion. It both clarifies the terms, and reduces the emotional attachment to them.

                                            As far as human nature goes – I don’t buy that free trade is human nature, but I do think that wanting to move past a subsistence mode of living is. Then, once there’s largely enough stuff to survive, people start wanting to have different stuff from other people, which caters to their different tastes, and markets are an effective way to achieve that.

                                          2. 3

                                            there are arguments that the root of capitalism is in the neolithic revolution, but again, most of the time humans existed out of this structures and some still do. There are concepts like gift economy, collective property and so on that escape what you’re describing. It’s true that in some contexts people reverted to black markets, but as a reaction to existing economic structures that made it valuable. This is not a universal truth but specific to a (indeed quite broad) subset of economic systems.

                                          3. 2

                                            This is true but doesn’t invalidate the point. Those cultures also had failure modes some of them the same as the current failure modes.

                                          4. 1

                                            Those failure modes manifest in the use and accumulation of Capita

                                            Considering among capital are medicine and other things meant to improve our lives, I have a hard time seeing this as a failure. Rather it turns out most people don’t want to excersize their minds, and would rather spend their days watching cat videos. So that’s what we got.

                                            The failure of humanity seems to be the desire for idleness.

                                            1. 17

                                              Considering among capital are medicine and other things meant to improve our lives, I have a hard time seeing this as a failure.

                                              How, exactly, is medicine about capital? If you remove a capitalist system we don’t suddenly lose the ability to treat people, or develop new medicines. In fact, the current ways of doing both of those things are grossly inefficient, where people who cannot afford to get treatment run the risk of debilitating illness or death, and where research companies do not publish data simply because they invested capital in developing a drug that is, at best, no better than placebo.

                                              Rather it turns out most people don’t want to excersize their minds, and would rather spend their days watching cat videos. So that’s what we got.

                                              That’s not really the case though. The capitalist system itself causes stress on people, especially low-income people (which make up the majority). Not only could most of the work at the moment be done by less people (See: In Praise of Idleness by Bertrand Russell, and Bullshit Jobs by David Graeber), but removing stress from people’s lives allows them the opportunity to grow and focus. The idea that people who aren’t working are inherently a) of less value to society, and b) utterly unproductive, is a fallacy and a product of Religious Dogma (“Idle hands are the Devil’s workshop”). Stress kills creativity, if people didn’t have to struggle to survive (See: literally any UBI study), they not only tend to be more productive, or take valued roles in society that are scarce because they don’t have to work for the means to survive, but also they tend to be more creative. In fact, Eric S. Raymond (For however many his flaws are, and the fact that he is on the opposing side of my argument because of decades of cultural McCarthyism), in one of the essays in The Cathedral and the Bazaar, himself goes over the fact that, once the basic means are sorted, higher wages are not correlated with productivity, the basic measure that the capitalist system has for an individual’s productivity is inherently broken.

                                              Capitalism was a system created and enforced on people by force (As Meiksins-Wood shows in The Origins of Capitalism), it is not a natural system, and has nothing to do with human nature. In fact, it hampers it. Things that people used to do, like giving gifts, being productive, collaboration, etc. are suddenly viewed only through the lens of capitalist exchange, which twists those actions to be solely about capital. Even idleness itself is under the force of capital, people who are throwing up because they are stressed, have even more stress because they feel they are failing themselves for not being able to work! The very act of idleness is now about exchanging economic activity, and about driving the economy. If you look at say, leasure activities in the early 20th century compared to the late 20th century, it goes from “Going to the local club for a round of badminton” to something much, much more focused on consumption, you can see this shift happening in around the 1960s to the 1980s.

                                              Capitalism made it so that, suddenly, the only worth of a human being is for them to produce capital, almost always for other people. Human beings don’t just suddenly stop functioning and become mindless machines because they are outside of capitalism, that in itself is propaganda that has been shown to be false.

                                              We are worth more, we can do more.

                                              1. 4

                                                Things that people used to do, like giving gifts, being productive, collaboration, etc. are suddenly viewed only through the lens of capitalist exchange, which twists those actions to be solely about capital.

                                                They used to do other things before the invention of Capital too, like subjugating others, taking from others by force, killing others. The point I was trying to make is that Capital in and of itself doesn’t cause those failure modes anymore than anything else. It’s just part of who we are. We have failures modes like any other system and attempting to solve problems by blaming them on a tool is failing to recognize the root cause: Human Nature.

                                                1. 4

                                                  I mean, that doesn’t really track with the facts. There have been people who were good leaders that led people to believe things that caused them to murder, and kill, and subjugate, but those aren’t necessarily inherent to human nature. Most of those things are believed to be an necessity by the people involved (Zionism, for example was seen as colonialism by the people who created it, but it was justified as an existential necessity, and they wrote entire books outlining their reasons. The cold war was seen as an existential destruction on both sides. Naziism was seen and justified as making the world a better place, free of ‘lesser’ people – My Nan grew up under Nazi Germany, in a reasonably middle class family, he was seen in a positive light because he got rid of unemployment. He also lowered education standards to an abominable level for the women, the amount of things my nan was just completely uneducated on at 87 years of age was astonishing, she didn’t even understand “what held up the planets”), or just fact of the world (look at slavery, justified as being inherently and genetically lesser, and as soon as white folks came across science we invested a lot of money and time into backing that up ideologically).

                                                  While there are a handful of killers that kill without motive, most mass killers kill because they believe it will make the world a better place, because of their worldview. The fact that people create intricate justifications for the things that they do – which is well proven through the records we can find going back literally thousands of years, show very clearly, humans aren’t inherently hostile, except when they believe they’re in no other position, or a leader becomes greedy and convinces people that there is no other choice (Or when they don’t have to be convinced, when they’re in a societal position that ensures they will follow the commands).

                                                  On the large, modern studies show that humans are naturally cooperative, and not inherently selfish, and there’s around several centuries of anarchist literature where people give more evidence towards that fact, and everything else I’ve outlined above.

                                                  1. 5

                                                    Zionism, for example was seen as colonialism by the people who created it, but it was justified as an existential necessity, and they wrote entire books outlining their reasons.

                                                    It makes me incredibly uncomfortable to see this crop up in an argument about oppressive economic systems. Zionism is a deeply complicated topic that seems to so often collapse into “Jews bad”.

                                                    1. 3

                                                      I can understand why you feel it’s uncomfortable, I feel the same. However, my point was correct, while Zionism is a complex topic, the founders of the movement explicitly called it colonialism multiple times, see this twitter thread with excerpts from their writing (Which you can stick into Google to pull sources for them, if you don’t believe them):

                                                      Jabotinsky, Herzl, Nordau, Ussishkin, and other founders of Zionism clearly stating it’s colonialism

                                                      You are right we must not mistake and conflate critique of Zionism, which is a specific political ideology, with hate towards Jewish people, who follow a religious belief and have massively different political tendencies within that belief system, and you are right that there is a lot of overlap between people who critique Zionism, and people who have hatred for Jewish people, which is wildly unfortunate, as they stand in the way of actual critiques of Zionism.

                                                      1. 16

                                                        the founders of the movement explicitly called it colonialism multiple times, see this twitter thread with excerpts from their writing (Which you can stick into Google to pull sources for them, if you don’t believe them):

                                                        First, I looked up the source of your linked “quote”. The only places it appears is on antisemitic and anti-Zionist websites. More digging eventually got me to the essay they claim to quote, The Iron Wall, which doesn’t have the quote. Everybody said “it’s in the source!” but nobody actually read the source.

                                                        (It does have deeply troubling anti-Arab statements, which I don’t deny, but the gulf between what it’s saying and what people are saying it’s saying is vast.)

                                                        Second, that’s a bait and switch. You’re conflating colonization as we understand it as an oppressive system with how they used “colonization”, which is literally just “moving to a new land.” You can’t call them the modern interpretation of colonialism because it appears in a text, translated from Russian, from a hundred years ago.

                                                        Third, Zionism isn’t a specific political ideology. It’s a set of similar concepts that form a mishmash of different political ideologies, just like “leftism” doesn’t mean “Leninist.”

                                                        Fourth, there is a lot of conflation between anti-Zionism and antisemitism by intention of anti-Zionists. Look up the history of “Zionology” and the Soviet effort to get Zionism declared a form of racism.

                                                        I’m pretty mad about this because I’ve been challenged on this everybody in “progressive circles”. People have asked me at conferences “what do you think about the Israel-Palestine conflict?” I’ve had to otherwise totally progressive people that no, Israel is not an “apartheid state”, yes, Arabs are allowed to vote, no, Israel didn’t start the Six-Day War. Antisemitism is socially acceptable in leftist circles and saying “I understand why you feel uncomfortable” doesn’t absolve anyone of anything.

                                                        1. 2

                                                          Did you actually do the research? You’re right that the quotes appear on anti-Semitic websites, but this includes the ones where the quotes come from primary sources (Such as diaries written by the quoted leaders, or books written by them), so that doesn’t mean anything whatsoever.

                                                          I referred to the full thread, so let’s go through them and dig up the citations in sequence, as you will see, many of them come from the horses’ mouth:

                                                          1) The second numbered tweet (but the first one with an image and citation) comes from page 7 of “The Case for Palestine: An International Law Perspective”, this in turn, cites the following works for the text highlighted in the twitter post:

                                                          “38. Abdallah Schleifer, The Fall of Jerusalem”, p 23

                                                          Which is a book written by Abdallah Schleifer, born to a secular Jewish family, a “prominent Middle East expert”, and a former member of the US foreign policy research institute.

                                                          “39. Raphael Patai (ed.) The Complete Diaries of Theodor Herzl (1960). p 1194”

                                                          Which is a collection of Theodor Herzl’s diary written by Patai, a Jewish-Hungarian Ethnographer.

                                                          Are you trying to tell me that Patai and Schleifer are Anti-semitic? If that’s the fact, then state it, make your case.

                                                          2) You’re right the second tweet (the one I linked to) comes from The Iron Wall by Jabotinsky. A seemingly trustworthy source I can find here is from en.jabotinsky.org, and it says:

                                                          There can be no voluntary agreement between ourselves and the Palestine Arabs. Not now, nor in the prospective future. I say this with such conviction, not because I want to hurt the moderate Zionists. I do not believe that they will be hurt. Except for those who were born blind, they realised long ago that it is utterly impossible to obtain the voluntary consent of the Palestine Arabs for converting “Palestine” from an Arab country into a country with a Jewish majority.

                                                          My readers have a general idea of the history of colonisation in other countries. I suggest that they consider all the precedents with which they are acquainted, and see whether there is one solitary instance of any colonisation being carried on with the consent of the native population. There is no such precedent. The native populations, civilised or uncivilised, have always stubbornly resisted the colonists, irrespective of whether they were civilised or savage. And it made no difference whatever whether the colonists behaved decently or not. The companions of Cortez and Pizzaro or (as some people will remind us) our own ancestors under Joshua Ben Nun, behaved like brigands; but the Pilgrim Fathers, the first real pioneers of North America, were people of the highest morality, who did not want to do harm to anyone, least of all to the Red Indians, and they honestly believed that there was room enough in the prairies both for the Paleface and the Redskin. Yet the native population fought with the same ferocity against the good colonists as against the bad. Every native population, civilised or not, regards its lands as its national home, of which it is the sole master, and it wants to retain that mastery always; it will refuse to admit not only new masters but, even new partners or collaborators.

                                                          He very clearly likens it to colonialism, through a direct analogy, and from then on I think the variance is one caused by the translation chosen. Whether this one is more true or less true to the words he wrote is something a native reader will have to determine.

                                                          3) The next citation (the 4th twitter post) can be traced to “Zionism and Anti-Semitism”, a book that was written by Nordau and Gottheil, it is a primary source.

                                                          4) The 5th twitter post was by Ussishkin. Ussishkin’s writings are, according to the Jewish Virtual Library recorded in two volumes, neither of which I can find online (I have found previous works via libgen, for example). They are presumably in hebrew, so I wouldn’t be able to read it anyway unfortunately.

                                                          This citation comes from “Expulsion Of The Palestinians” by Masalha, who is a (Palestinian (? Is that the right way to phrase that?)) academic. The book lists in the Bibliography (Sorry if I mistype anything, because I can’t copy and paste this): “See the minutes of his meeting on 24 September 1941. CAB 65/23. His pro-Zionist Secretary for India, Leopold Amery, endorsed the idea; see his letter to Churchill dated 4 October 1941, cited in Nathaniel Katzburg, Mendinlyut Bemavoch: Mendinlyut Britania Beeretz -Yisrael [The British Policy in the Land of Israel 1940-1945] (Jerusalem: 1977), p. 18.”. I will leave it to you to find those.

                                                          5) His sixth tweet makes reference to The Palestine Jewish Colonization Association (wiki), the Jewish Colonial Trust (jewish virtual library), and the Jewish Agency’s Colonization Department (American Jewish Archives).

                                                          Afterword: One must, indeed, wonder if Zionism isn’t Colonialism, why do multiple Zionist leaders proclaim it to be Colonialism, and why do the names of many pro-Zionist organizations explicit contain references to Colonialism?! I don’t see any other explanation other than the Zionists themselves, believed it to be Colonialism.

                                                          That’s a bait and switch. You’re conflating colonization as we understand it as an oppressive system with how they used “colonization”, which is literally just “moving to a new land.” You can’t call them the modern interpretation of colonialism because it appears in a text, translated from Russian, from a hundred years ago.

                                                          But doesn’t Jabotinsky, in the quote above, refer to fighting off existing people? What else is colonialism if not removing people who are already existing in a land, so you can settle there yourself? Also, I think I have a fair grasp of how people from the 1800s in Russia use the word colonialism, I’ve read Trotsky, Lenin, and Marx. All of whom make reference to those terms and use it in the same way we do today. The usage back then was not any different to the one we use now.

                                                          the Soviet effort to get Zionism declared a form of racism.

                                                          Both Lenin and Stalin were loudly outspoken against Anti-Semitism. The Bolsheviks and Mensheviks had a significant proportion of Jewish members, and the monarchy had treated Jewish people abominably. Shorly before the Russian Revolution, fascists (for want of a better term) locked a village full of Jewish people in a church and set it alight, just one of the many horrific incidents to happen. Before the Russian Revolution Jewish people were – quite literally – under attack. One of the few remaining recordings of Lenin is one of him giving a speech against anti-Semitism. There’s a good quote on Wikipedia from Stalin in 1931. And during the war he relocated Jews in areas that were at risk of coming under Nazi control.

                                                          1. 0

                                                            Oh! Hey! What’s this? A Jewish anti-Zionist song??

                                                            And a pro-Soviet anti-Fascist Jewish folk song?

                                                            Maybe it turns out Jewish people are real people and have views all across the Political Spectrum? Hmmm 🤔🤔

                                                          2. 2

                                                            How can I upvote this 1000 times.

                                                            1. 1

                                                              I’d like to point out that the Polish government believed Madagascar was a good option because 1) it removed a population from the countryside, and 2) it extended polish influence as Colonialism. So certain strains of Zionism were in fact colonialist in justification.

                                                    2. 1

                                                      …himself goes over the fact that, once the basic means are sorted, higher wages are not correlated with productivity, the basic measure that the capitalist system has for an individual’s productivity is inherently broken.

                                                      I’d like to read what economists think about this but this sentence is subtly wrong in my opinion.

                                                      I think we should start to say that for a lot of positions, an individual’s productivity is awfully hard to measure, and in some cases it’s even hard to define (cf. all the art of counting lines of code). This is always true, for both Marxism, capitalism and whatsoever, right?

                                                      Then, in a capitalist system, wages are a statement of the natural outcome of supply and demand, which means that they can vary a lot between companies, positions and locations. In my opinion this is - by design - not a reliable measure of productivity across positions and locations. And for the same position at the same location within the same company it doesn’t work at all if productivity is hard to measure for the position.

                                                      In fact I see capitalism as a system where wages are naturally not correlated with productivity. I also think that money can’t really buy happiness so in overall, I don’t care a lot about it.

                                                      1. 4

                                                        Right - ‘Productivity’ is not an objective measure, because it’s easy to produce things nobody wants.

                                                        Once upon a time, Capitalism solved that by moving decision-making power closer to the information - but wealth concentration has diluted that advantage to homeopathic levels.

                                                        1. 3

                                                          That’s a fair point! And I’m very likely wrong on that front, given more consideration! The rest of it still stands :)

                                                          1. 1

                                                            I don’t have any arguments against the rest of it, but:

                                                            I also think that money can’t really buy happiness so in overall, I don’t care a lot about it.

                                                            Fundamentally, for anything sub- 30-50k/mo, more money means significant quality of life improvements. Preliminary tests of UBI have shown massive health improvements in low wage populations. Money is the gatekeeper for medical care, for access to basic necessities, and recreational activity. It’s also the gatekeeper for changing jobs, changing your environment, and removing yourself from hostile and abusive scenarios that are damaging to your mental health.

                                                            I think this idea of downplaying that “money can’t buy happiness” is foolish. Nobody has claimed that money is a direct line to happiness, however it’s the main, sometimes only, gatekeeper between us and the solutions to almost all of the material problems that plague pretty much everyone who isn’t earning around or above the aforementioned wage line.

                                                            I know and have heard en-masse of people who have lost their entire lives to work, simply trying to get their children into a better financial situation, so they do not have to know that pain too. I know people in the south of the USA, describe how working constantly and not having time has become so ingrained into their culture that “not having time to see your kids” is an expression of love.

                                                            I know people who have been forced to work for abusive managers, or been forced to live in abusive households, because the cost of moving themselves out of that scenario was ridiculously, ludicrously high, and because they are completely unable to obtain that money, because of their impacted mental health.

                                                            I know people who have died from mental health and physical health problems because they were unable to afford treatment, or who end up living with lifelong injury because they do not have the time to see the doctor, or pay for better ones. And, just to contextualise that, I live in a country where healthcare is free – ideally there shouldn’t be a cost to that, but all of the best doctors

                                                            I know extremely intelligent and smart people who can’t find the time to work on projects that would improve, in a small way, people’s lives, because they wouldn’t be able to make a living off it.

                                                          2. 1

                                                            Do you actually believe that stuff?

                                                            1. 2

                                                              I don’t need to believe it. Read the literature, it’s been very clearly shown.

                                                              1. 0

                                                                The question to be answered is: what is to be done with one’s labor. Capitalism answers that with “it’s to remain with the laborer.” There is no other answer that can be moral, not if one takes as True that people may possess.

                                                                Quite clearly shown is clearly in the eye of the beholder.

                                                                1. 6

                                                                  Capitalism’s answer is that labor should typically be rented out to the employer under employment contracts enforced by the state. That’s not exactly the same as “remaining with the laborer.” David Ellerman makes this point quite forcefully.

                                                                  1. 1

                                                                    It remains with the laborer because they get to see the results of their labor in the form of a paycheck which can be redeemed for others’ labor. Unlike other systems where your needs are taken care of regardless of your value.

                                                                    1. 3

                                                                      It’s just that the employment contract specifies that everything produced and consumed by the work is the responsibility of the employer, not the employee—so as a coder, everything you make is appropriated by the company.

                                                                      If you sold your whole future labor under such conditions it would rightly be considered a version of slavery. But in capitalism we rent labor, we don’t buy it.

                                                                  2. 5

                                                                    The question to be answered is: what is to be done with one’s labor. Capitalism answers that with “it’s to remain with the laborer.”

                                                                    and the laborer has no other choice than giving it away for the least amount of compensation the market allows? like a casino, the market always favours the capital. there may be some irregularity across the different occupations (tech jobs currently have it better than most), but as a whole, those who have the capital decide how much compensation you will get for your work force. and that will always (by definition of the market) the least amount possible to keep the system running.

                                                                    1. 1

                                                                      and the laborer has no other choice than giving it away for the least amount of compensation the market allows?

                                                                      The option always exists to assert the market would pay more, in which case additional compensation is granted, or to work in a different field, or to not work at all, so long as you yourself didn’t steal others’ labor. The capitalist system creates value out of thin air, because one thing the Marxists get right is the value added by a person is far more than their compensation.

                                                                      1. 3

                                                                        The option always exists to assert the market would pay more, in which case additional compensation is granted

                                                                        i think that in certain sectors the “prices” for labour are being fixed by the capital at the lowest point possible, most commonly in sectors which don’t require much education. unions are at a point where they are more or less corrupt and are being bought. capitalism is excellent in defending itself :)

                                                                        or to work in a different field, or to not work at all, so long as you yourself didn’t steal others’ labor.

                                                                        i don’t really know what to reply to this? work as something which requires a medium amount of education (x years). so i can choose between not being payed enough for my job or saying “fuck it” and have a severely reduced income in the next y years while being retrained? that’s not really an option, just like “don’t work at all”.

                                                                        1. 1

                                                                          They are always options, and depending on the individual’s circumstances, they may be the right or wrong options. That’s all.

                                                                          1. 4

                                                                            They are always options, and depending on the individual’s circumstances, they may be the right or wrong options. That’s all.

                                                                            i don’t see much of an option in the sense of “things one can choose between”. shitty payment or unemployment is most of the time a straight route to poverty which in turn leads to social and health problems leading to making it difficult being employed again. that some people can pull themselves out of this by their bootstraps doesn’t validate the “you only have to try hard enough” meme.

                                                                            what is lost by making sure people are paid well? bezos n-th billion? what is gained? the possibility of having a non-cutthroat society where it’s members can focus on being social (note the similarity of “social” and “society”) instead of thinking of the best way to get the most money.

                                                                        2. 2

                                                                          or to work in a different field, or to not work at all

                                                                          That isn’t really the case. Many people on low-income jobs, many skilled people forced to work such jobs, are unable to do that.

                                                              2. 4

                                                                I wasn’t implying that using and accumulating capital were instrinsically failure modes. My point was that many of our failure modes manifest in the process of using and accumulating capital. Similarly to the way that they manifest when writing software.

                                                                1. 1

                                                                  The failure of humanity seems to be the desire for idleness.

                                                                  If anything, I’d put it completely the other way. It is the impossibility of being content, of merely sitting in an empty room doing anything but being with our thoughts (going as far as giving ourselves electric shocks instead of being idle), that pushes ourselves to do anything (be it watching kitten videos, or accumulate useless capital) to push the burden of sentience away.

                                                                  1. 1

                                                                    the impossibility of being content

                                                                    This is how people grow though. We poke and prod and learn. Doing nothing doesn’t necessarily require being content, but it does require that your time be useless to yourself and others. Some people really want to do nothing.

                                                                2. 1

                                                                  At it’s crux the issue is human nature. Human nature has a number of failure modes. Those failure modes manifest in the use and accumulation of Capital

                                                                  Accumulation of capital is not a failure mode. It is life serving its purpose, which is replication of genes. You are in a better position to do that the more stuff you have.

                                                                  If you have financial independence, many people are just going to play video games. They are not gonna become a pianist or a painter. Garbage in, garbage out, as they say. Softwares just empower people to do what they want to do better. And what they want is to be forever distracted.

                                                                  1. 4

                                                                    You’re going in a decent direction but miss the larger point: evolution optimizes for the population to survive, not individuals. That individuals get rich in this system is almost entirely due to how the economic, financial, and legal systems are constructed. The system also makes unhealthy, imprisons, and/or kills large numbers of people for both random and non-object reasons. That usually works against evolutionary goals.

                                                                    There’s other systems where the population as a whole has their needs met, are healthier, get good education, and sometime more time off work for leisurely activities. In well-run socialism, these benefits of their system mean that both the average individual and the population as a whole are more likely to survive and pass on their genes.

                                                                    Note: One might also look at the infant mortality rate of each country for this assessment. That’s a bit, too dark a subject for me this early in my morning. Probably others, too. I’ll pass on it for now.

                                                                    1. 1

                                                                      Well-run socialism is an oxymoron, did you maybe mean to say “social democracy” instead of “socialism”? The former is a way to organise society which has been adopted in some way by most western democracies, including the US - Medicare and Medicaid are examples of social programs which have been voted into being through a democratic process. Socialism is the precursor to communism and has never been shown to lead to anything but societal decline and poverty, often in combination with a stratified society where those who do not support the state in all it does - for better or for worse - are denied basic rights.

                                                                      Social democracy is not the same as socialism. The DDR and the Soviet Union were socialist states. The Netherlands, Denmark, Sweden, Norway and Finland (and many more) are social democracies.

                                                                      1. 1

                                                                        The Netherlands, Denmark, Sweden, Norway and Finland (and many more) are social democracies.

                                                                        Yeah, that’s what I’m talking about. Three of those were even examples I was ready to give. They just call those socialist where I’m from. The ones you call socialist they call communist. Although I have memory problems, I’d probably still not be sure what term to use given the varying usages of socialist, left, right, etc in my country and outside it.

                                                                        So, looking it up on Wikipedia, it starts with “Social democracy is a political, social and economic philosophy within socialism… “ The linked article on Socialism itself includes my usage of the term. Is Wikipedia inaccurate where the social democracies aren’t in socialism or socialism not having multiple forms which include above countries? If so, it might be worth editing those articles to include the source for that, too.

                                                                        1. 2

                                                                          Well, there is ‘wrong’ and ‘wrong’. Social democracy is an amalgamation of some of the tenets of socialism and those of a democratic society with a market economy. It is an end stage in and of itself - social democracies do not strive after abolishing the market economy - where socialism is a precursor to communism, the ‘dictatorship of the proletariat’ with a socialist party in control of the state. Venezuela is the most recent example of such a state that I know of.

                                                                          Marx and Engels thought the workers would eventually revolt to get a more fair share of the value created by their labour. This is not what happened though, working conditions and rewards were improved in such a way that workers did not rise up in revolt. They voted ‘their’ candidates into power, organised in labour unions and got some of their demands met in this way. Some revolutionary socialists - Lenin being the best-known example - thought this was not enough and, disappointed by the refusal of the workers to revolt stated that the proletariat needed to be guided into the classless communist society through the dictatorship of the proletariat, i.e. a leading class of revolutionary socialists would take power by non-democratic means. It is at this point where socialism and social democracy parted ways around 100 years ago.

                                                                      2. 0

                                                                        In well-run socialism,

                                                                        In a well-run utopia, everything is perfect.

                                                                        1. 3

                                                                          Now, you’re just trolling. A number of existing countries have the benefits I describe that increase evolutionary survivability. No need to theorize or bring in utopias.

                                                                          Even in theory, one should expect capitalism and free market might work against evolution because they work against individuals’ health. Companies and workers are always expected to do more for less overtime. That inevitably leads to more stress, less healthy ingredients in food, more toxins in environment, more dying from lack of healthcare, etc.

                                                                          It’s by design. Good news is you can let evolution do its thing and capitalism do its thing. You can be a fan of both. They are seperate for now unless you mean it protects the survival of rich kids’ genes. That might be true but with who knows what consequences.

                                                                          1. 3

                                                                            well, the usa took care that the non dictatorial socialist experiments would fail :)

                                                                    1. 35

                                                                      Use a library or framework.

                                                                      So the best code is actually somebody else’s code.

                                                                      Use a third party SaaS tool.

                                                                      Somebody else’s code on somebody else’s machines.

                                                                      if you can solve a problem without doing anything, it is better to not do anything

                                                                      you don’t say…

                                                                      1. 24

                                                                        If I had to rank problems with modern software development, “devs don’t use enough third-party libraries and frameworks” would be way, way, way down the list. Much higher on the list would be “few devs bother to learn how to write code that can be reused without causing more problems than it solves”.

                                                                        Relevant: Designing and Evaluating Reusable Components (2004) by Casey Muratori

                                                                        1. 10

                                                                          I think this is a fair reply to the literal interpretation of the post, but wholly irrelevant to its spirit.

                                                                          Yes, using someone else’s code is still using code, but the important things are:

                                                                          • It’s code you don’t have to maintain and support (at least not nearly as much as code you’d write yourself)
                                                                          • It’s already done, so you save time by integrating with it rather than having to write and test it
                                                                          • If you pick a decent module/framework/tool, it’s likely the author has spent significantly more time refining it than you would if you wrote it yourself, as it’s the purpose of the whole module versus your need of the hour

                                                                          It’s also worth mentioning that picking which third-party code or tool to use and (more importantly) which not to use is a skill which gets better with experience. Those less experienced in making those critical distinctions are sometimes bit by bad choices, and revolve to reinvent the wheel.

                                                                          you don’t say…

                                                                          Regarding this, it may be obvious to you that solving a problem with little or no code is better than the alternative, but this is far from obvious to every developer.

                                                                          An outsized portion of developers, even experienced ones, are more oriented toward writing code than solving problems. I’ve seen more than one occasion where a developer starts down the path of designing a complex system to avoid asking a user to make a tiny, effortless tweak to their workflow. Asking them to do so is a win by every measure, and yet many developers fail to consider it.

                                                                          1. 9
                                                                            • It’s code you don’t have to maintain and support (at least not nearly as much as code you’d write yourself)
                                                                            • It’s already done, so you save time by integrating with it rather than having to write and test it

                                                                            These are both terrible assumptions. They can be true, but they’re by no means guaranteed. And if you do end up having to make changes to that third party code, it’s going to be a massive pain. Vendoring the code into your repo can alleviate some, but not all, of that pain.

                                                                            • If you pick a decent module/framework/tool, it’s likely the author has spent significantly more time refining it than you would if you wrote it yourself, as it’s the purpose of the whole module versus your need of the hour

                                                                            Time =/= Quality. Specific solutions to specific problems almost always outperform general solutions in every metric.

                                                                            1. 5

                                                                              Like I said, evaluating whether to use a library or to write it yourself is a skill. I hoped I’d made that clear in my original post, but those points are assuming you’ve done your due diligence in choosing a library. I’m not arguing that picking any old module will automatically save you time and it’ll just work effortlessly, but if you do that due diligence you can have pretty good luck.

                                                                              The project I work on at my job had a sizable number of dependencies and we spend relatively little time dealing with those downsides because we do a decent job mitigating those risks.

                                                                              Like everything else, it’s a tradeoff. Sometimes the odds favor writing it yourself, and sometimes they favor using someone else’s code.

                                                                              1. 4

                                                                                Totally agree. I just think the far bigger problem is devs piling on layers and external dependencies due to the belief that it will save them time or make their code more “clean”.

                                                                                There are very few truly general abstractions. Compilers/Interpreters and Relational databases are probably the two most obvious (in software). And they took decades to reach sufficient maturity to be the obvious choice over rolling your own special-purpose solution. And still, they come with a considerable complexity cost.

                                                                                1. 2

                                                                                  Like I said, evaluating whether to use a library or to write it yourself is a skill.

                                                                                  I think it’s worth highlight this, given the blog domain is called letterstoanewdeveloper.

                                                                              2. 1

                                                                                It’s already done, so you save time by integrating with it rather than having to write and test it

                                                                                I’ll add this is only true if integration effort is less than effort of writing and testing a solution. At first glance, it seems like it obviously would be. Many 3rd-party libraries will be more complex than one needs, have poor documentation, maybe miss corner cases, etc.

                                                                                I can’t give any guidance outside “learn from experience” on how to evaluate when you’re running into this problem. Lean, focused, and well-documented libraries seem to be a good pattern. Personal example for development server in Python was choosing Flask over Django since I figured I’d get working code out faster. It’s been working fine outside one problem that might not even be Flask.

                                                                            2. 6

                                                                              Fair points. I did mention manual processes as an alternative.

                                                                              I think some developers are enamored of writing code for code’s sake. I was when I was younger.

                                                                              Maybe a better title would be “The best code is no custom code”?

                                                                              1. 18

                                                                                Surprisingly often, there’s more work in gluing together frameworks than there is in just writing the code. And you lose visibility into what’s going on, so when it goes wrong, it’s much harder to debug.

                                                                                There’s a balance to be made. I try to restrict dependencies to ones solving hard problems.

                                                                                1. 4

                                                                                  Surprisingly often, there’s more work in gluing together frameworks than there is in just writing the code.

                                                                                  In my experience that is true for the golden path, sometimes. But once you, or your users, stray off the happy path, I find that libraries and frameworks help a lot. Yes, it’s less fun for me to read a doc and learn how to use a third party lib than to write my own, but long term the former is the better solution.

                                                                                  1. 4

                                                                                    Glue code is rarely bug free, and commonly misses edge cases between what one library outputs and another accepts.

                                                                                    The libraries also get special cases wrong more than you’d expect. If I’m lucky, I can get upstream to ship a fix quickly. But often, I just need to work around it.

                                                                                    Popular libraries too: I’ve spent days dealing with issues in grpc, core Android APIs, and similar.

                                                                                2. 4

                                                                                  It’s certainly valuable to re-use mature, maintained solutions whenever possible. I think we need a new metric to capture evaluate this. Maybe something like “Maximize annual maintenance dollars per Line of Code”?

                                                                                  This encourages you to think through who’s actually maintaining the stuff you’re using. You can write it yourself and pay 100% of the maintenance cost. You can use an open source library and benefit from community maintenance investments. You can pay a vendor with a dedicated staff for maintenance investment. Somebody has to do the work or your code rots.

                                                                                  You have to think carefully about your unit of analysis though. There are some LOC that matter more to your business than anyone elses’. Are those features actually benefiting from investment received by their parent libraries?

                                                                                  1. 1

                                                                                    Great idea. I think you meant minimize, though?

                                                                                    1. 2

                                                                                      I was thinking in terms of maximizing the total investment in your code base, not necessarily your own investment. For example, it’s probably not a good idea to write your own Operating System. You can choose one that already has millions and millions of developer dollars invested in it. Sometimes you can get it for free! This lets you start way further ahead. The same logic applies to almost anything. Use stuff where lots of other people also care about making it work well, so you combine forces. Then focus you internal efforts on the stuff that really matters to your organization.

                                                                                      This is somewhat related to the Choose Boring Technology argument. You have to choose where to spend your resources, so you have to put them where they can do the most good.

                                                                                3. 6

                                                                                  Ahem. Economics, Mr. Llama!

                                                                                  So the best code is actually somebody else’s code

                                                                                  They’ve already paid for it. You get to use it for free, maybe pay a little maintenance cost. Is that a good deal? Depends, but probably worth consideration.

                                                                                  Somebody else’s code on somebody else’s machines.

                                                                                  Infrastructure costs money too. Do you really want to be in that business?

                                                                                  If you’re writing code for fun, great, have fun. But if you’re writing code to make money, I think it’s your responsibility to actually make some money. Or at least, not just throw it away merely because it’s more fun to reinvent stuff.

                                                                                  1. 2

                                                                                    Use a library or framework.

                                                                                    Perhaps a library is a good idea in many circumstances if it is sufficiently well designed but frameworks can be a lot of trouble.

                                                                                    1. 1

                                                                                      I’m upvoting both you and the post on this one. The deep irony here is that you can say things like “the best code is no code” and seem trivial, trite, pointless. You’re just restating the obvious!

                                                                                      Everybody can agree, get a nice chuckle. Then they go out and write a bunch of code they didn’t need.

                                                                                      Profound statements tend to be facile as well. For me, folks kept saying things like this over and over again until one day the light went off. I’m not sure if I just had to wait until somebody said it the right way, I had to hear it X times, or personal experience demonstrated to me how much I said the words but didn’t actually live the life. Took a long while, though.

                                                                                    1. 2

                                                                                      Hiking and photography with my wife, then finishing up the draft of the second third of my book for my beta reader group.

                                                                                      1. 1

                                                                                        Whats your book about?

                                                                                        1. 2

                                                                                          The direct relationship between the programmer and the program they’re creating. People work one way. Computers work another way. Nobody ever explains to us what the differences are. Because most coders don’t grok it, it tends to make really bad people and really bad technology.

                                                                                          After that is explained, there’s a pivot from that to all sorts of logical implications, like static code analysis, structuring microservices, supercompilers, AGI, etc. The book is half narrative and half code, bouncing back and forth from humans to formal systems and back, each time picking up something on one side that can be applied to the other, seeing where that leads us.

                                                                                          1. 1

                                                                                            Sounds really interesting. As a new developer I could see how that would be useful. How do you plan to publish it? Is there a way I can follow the progress?

                                                                                      1. 2

                                                                                        I can’t answer for you, but looking back on my own career, I should have read more books and I should have gone to more conferences.

                                                                                        I should have read more books so that I could have learned more cool stuff. There is nothing in this world like the experience of getting inside an author’s head while reading a long-form book, technical or not. It not only teaches you about the tech, more importantly it teaches you how the author thinks about the tech. That’s arguably much more important.

                                                                                        Conferences are a complete waste of time from a learning standpoint. They’re actually worse than a waste of time, as they primarily exist as a weird version of professional marketing. You get in, you get a pitch, you feel excited, you leave. It’s like a weekend time-share seminar, you know, where you are promised the free toaster. The overwhelming danger is that you’ll get caught up in the emotional feeling of the crowd and think you’ve actually learned much more than you have. But it’s fun. :) It’s also the only way for many of us to do a “cross-check”, look around us horizontally in our industry and put a critical eye on where it’s headed. More importantly, conferences exist for a good reason. They are quite effective marketing exercises. I don’t know of anybody who is popular in the conference crowd of various industries who ever worries about an employer or contract.

                                                                                        The jury is still out with me regarding videos. I want to believe they have this huge educational value, but as somebody who has looked into video production and who has closely watched his video stats on YouTube and other sites, videos are like chewing gum for people. They’re in and out in a few minutes and I seriously doubt a hour later anybody remembers anything of value from them aside from how cool X, Y, or Z might be.

                                                                                        Your mileage will vary on all of this. Good luck!

                                                                                        1. 7

                                                                                          Trying to rough out an essay titled “We Are Doing It Wrong”, with the premise that we’ve been developing software all these years completely backwards. Instead of building more and more complexities and tools for coding, we should have been building them for testing. Naming, factoring, scaling, components, etc? All of the concepts we’ve applied to code better apply to tests. We should deploy tests ahead of code, have the code catch up later (much as we used to do with code, sadly) Basically you can take a lot of the patterns we’ve been applying to coding and apply them to testing.

                                                                                          That’s not saying we should live in a test-dominated world. Far from it. But if we did tests primarily and code as an afterthought we’d probably stop coding as much junk all over the place as we currently do. We also should be able to share and re-use tests across a corporation. That’s probably much more doable than the long, long journey we’ve had trying to do the same thing with components.

                                                                                          It should be fun. Also, I think there are some .NET development patterns that might be fun to play with. Done correctly, you should be able to de-couple your tests from your types from your code, allow all three to either “join up” together for a deployable app, or go to other places enterprise-wide to participate in other activities. Plus, as long as the testing has standards, you can code the solution in any of a couple of dozen languages that .NET supports.

                                                                                          Meh. We’ll see.

                                                                                          1. 7

                                                                                            I’m definitely about less complexity and more quality. I don’t think tests should be prioritized. Instead, I’d put more effort into formal and informal specification of the code. Especially contracts. The reason is two fold:

                                                                                            1. Specs such as contracts assert correctness conditions over all inputs and behaviors. Tests just check the specific inputs and behaviors you thought about.

                                                                                            2. You can generate tests from contracts much more easily than doing it backwards. This is called spec-, model-, or property-based testing. Some research papers say “test, case generation.”

                                                                                            There’s a few more advantages. The specs and code can be fed into tools that mathematically prove them over all inputs without tests. SPARK, Frama-C, and Eiffel are examples. Finally, more of these tools are adding the ability to make the contract a runtime check to combine with guided and/or random testing. When the failure happens, it takes you exactly to the point of failure. So, you have test generation, proving, and runtime checks all from the same work you put in one time.

                                                                                            And, for stuff hard to specify, one can just use manual tests for that stuff. That’s on top of code review, static analysis, etc. Whatever the developer(s) has time and money for. I’ll throw in a paper that’s designed for a wide audience, including developers’ bosses. :)

                                                                                            1. 2

                                                                                              That’s excellent. I definitely don’t want to go completely “test all the things!”

                                                                                              What I didn’t want to say in my first comment, and actually didn’t even want to bring up in the essay if I didn’t have to, is the fact that if you go pure functional programming and DDD, the types file is the spec. There shouldn’t be very many tests in the tests file at all.

                                                                                              The key thing is to have a portable, non-language and non-solution-dependent way of testing whatever code you make. This gives tests the current freedom we enjoy in code.

                                                                                            2. 2

                                                                                              We should deploy tests ahead of code, have the code catch up later

                                                                                              There is a good reason that very few projects are developed this way. The technicalities of most of your requirements are completely unknown when the project is first started. Contrary to our imaginations, software is not designed then written, its design is constantly revised. For most real world projects, it’s a huge waste of time to write tests ahead of time.

                                                                                              1. 1

                                                                                                I think you missed it. I’m not saying that we should test separately from coding, I’m saying that the tests that are part of our code, whatever tests those may be, should be completely decoupled from the code itself so that it can move along in the integration pipeline ahead of the actual code.

                                                                                                So while I’m coding Foo, I also make Foo-Tests (whatever that might be. Maybe just one test.) Foo-Tests should immediately move on along to wherever Foo might need to end up. Moreover, when it comes time to write Foo2, Foo-Tests should be just another component like any other you might use to make Foo. We don’t have that kind of easy modularity now.

                                                                                                1. 2

                                                                                                  should be completely decoupled from the code itself so that it can move along in the integration pipeline ahead of the actual code

                                                                                                  There is no such thing as a completely decoupled test. At the very least, tests use the interface provided by the module or system its testing. Interfaces change all the time during development, so tests will always play catch up, either by delaying them, or by rewriting them because you mispredicted your interface.

                                                                                              2. 1

                                                                                                I think that there’s a strong case that programmers should put more effort put into testing and tooling.

                                                                                                Today’s tooling is abysmal relative to what we can (in terms of technology (available compute), knowledge (of the techniques necessary to implement), and manpower (computing is more than old enough that this stuff could have been built in the time that we’ve had to build it)) and should have by now. Few REPLs (where are the REPLs for Rust? Java? C(++)? Nim? Zig?), virtually non-existent livepatching, bad debuggers, few incremental compilers, little whole-program optimization, file-based tooling, bad inspectors (tool that displays and edits in-memory data), few (if any) state-space analysis tools, few visualization tools (in terms of code and data both), lack of memory profilers, terrible editor integration for most languages (LSP is new, immature, under-used, and far behind SLIME), no structure editors! Edit: very little collaborative editing, unnecessarily slow+memory-intensive editors+tools, pervasive text-based tooling (editors, version control, linters) instead of structure-based tooling.

                                                                                                Common Lisp is way better than most languages in this regard (REPLs and livepatching for compiler implementations, SLIME is light-years ahead of most tooling), but it’s still decades behind what we could have had by now.

                                                                                                Edit: with that said, please let me know when you’ve finished your essay, because I’m very unfamiliar with testing and am interested in hearing your thoughts.

                                                                                              1. 3

                                                                                                Roughing out an essay/chapter titled “Using Reverse TDD For Personal Learning”. It’s a bit of a lark, but should be interesting for some folks anyway.

                                                                                                1. 2

                                                                                                  Starting off, at least, with a bit of Yak-shaving.

                                                                                                  One of the chapters I’m writing is how to better scale microservices, so I need a coding example (that’s not under a NDA) where I can show that in action.

                                                                                                  That means finding a sample microservice, stripping it except for the essentials, then writing a quick BASH script to generate new projects using the template plus a project name. Finally going in and adding the minimal amount of code to demonstrate coordination.

                                                                                                  I figure five microservices. I started Thursday afternoon with a traditional “How hard could it be?” statement. I am still screwing around with it. One of the things I find most difficult is that I’m not trying to generalize the template; that is, I’m not trying to make some kind of framework. I just need some sample projects in place. So I don’t have to make the dang thing perfect. Still, even knowing that, the defects call to me….

                                                                                                  1. 9

                                                                                                    I’m the furthest thing from being an expert in programming under the regime of a rich type system—I would appreciate hearing from the experts on how these approaches play out in practice.

                                                                                                    The principle of making illegal states unrepresentable goes back much further than the contemporary interest in type theory, and the benefits have been clear for a long time. (We were talking about this back in the days when I was still a C++ programmer.) Clearly, the proposition is that the pseudo-mathematical nature of a well-founded and theoretically-grounded type system is supposed to result in greater benefits than these previous approaches—presumably in the areas of static verifiability and, e.g., automated testing.

                                                                                                    That said, this particular post uses a business requirement as its motivating example. While, understandably, the example is chosen for illustrative purposes only, I wonder: what benefits does type-orientated programming give to modeling business logic?

                                                                                                    In my mind, the limitation of fitting of business constraints to a pseudo-mathematical structure is:

                                                                                                    1. business constraints live within a non-mathematical domain of human laws and logic, which defy neat & structured modelling. e.g., it seems possible to me that a Contact must have either an EmailContactInfo or a PostalContactInfo unless its some special case (like some VIP contact or a contact under a privacy-sensitive jurisdiction) in which case the constraint is made further complex. (This seems to be because computer programmes are limited representations of an infinitely profound human reality, and even the physical laws that govern natural phenomena are no match for the complexities that can be dreamt up by the human imagination, and then enforced upon us by law or language.)

                                                                                                    2. given the above, it would make sense that this system might be designed to be one that communicates with stored parties, thus encircling the modelled business constraint with some system design constraint. In other words, in spite of the complexity of the actual business constraint, it would be nonsensical for the system designed for the sole purpose of performing some action from considering entities that are not capable of being processed. What does it mean to store a Contact in a system whose sole purpose is to send mail or e-mail, if that datum has neither EmailContactInfo nor PostalContactInfo? However, in practice, management rarely wants to pay the cost of writing multiple systems (with the corresponding O(n²) complexity of integrating them,) so you get stuck get writing one system that has to encode these constraints very close to the actual business logic itself. In other words, your Contact tracking type gets used in places where it is meaningful to not have the …ContactInfo stored under certain special cases, because it’s used for some purpose distinct from sending mail or e-mail. (Heaven forbid the system is exposed to business users for direct data entry, because you might then see users working around the programme constraints by filling in dummy data in required fields, totally defying the purpose of the constraints. Many large systems I’ve seen almost expect data entry to messy and ad hoc, and don’t even bother with any kind of fancy modelling.)

                                                                                                    This seems to result in the following designs:

                                                                                                    1. some outer system with relaxed constraints to capture information, exactly as entered to retain intention and provenance, where these business constraints are modelled not in a pseudo-mathematical, language-level construct like a type system but in a (runtime) application-level construct that allows for the flexibility of unplanned special cases and whose design exposes this logic to an end-user in a human-verifiable form (e.g., prints out a flow-chart of the constraints and their validation state in a form that the lawyer can read.)

                                                                                                    2. multiple, very small inner systems which enforce constraints more rigidly, by circumscribing the subset of data they accept to those which they can process. Anything that defies being subjected to these constraints gets shunted to some secondary (potentially manual) process.

                                                                                                    It seems to me that only the latter, inner system would benefit from type-orientated programming/ (It’s often these systems that languages like Python, we we put into a more rigid restricted computational domain like a pandas.DataFrame or a numpy.ndarray.) The benefits at this layer seem obvious, but they also seem more minor, since these systems are necessarily more restricted in their scope—by nature, they’re smaller and more narrowly purposed.

                                                                                                    My question is:

                                                                                                    • does type-orientated programming offer a fundamentally different approach than the above?
                                                                                                    • if not, how does type-orientated model assist with the outer system?
                                                                                                    1. 4
                                                                                                      1. 1

                                                                                                        To the extent that your chosen link answers the given questions, it seems like the answer is “no”:

                                                                                                        • No, type-driven programming is not fundamentally different from dynamically-typed approaches. In particular, we ought to see both dynamically-typed and statically-typed type-driven approaches as the exact same approach, of declaring shapes for abstract data types and then asking our language to ensure for us that values have the correct shape.

                                                                                                        • The first bullet was “no”.

                                                                                                        To give a concrete example, consider Zephyr ASDL, an abstract syntax description language. Zephyr ASDL is effectively a language for declaring algebraic data. CPython uses Zephyr ASDL for the reference Python abstract syntax. This one description is used both from statically-typed C and from dynamically-typed Python. Similarly, my own language Monte uses Zephyr ASDL for not just the next-generation abstract syntax, but also can be used for any user-level algebraic data; I recently used it for text-user interface widgets and constructive solid geometry.

                                                                                                        I hope that this example helps reveal to you that whether a type system is static or dynamic can depend on our vantage point.

                                                                                                        1. 2

                                                                                                          I understand that the vantage point is when you choose to do the type-checking–at runtime, or before that. Type-driven programming still offers a unique ability though, which is explained in the post I linked to: that is, you can parse less-structured data into more-structured data and then use the type of the parsed value as a guarantee (a proof) that some condition holds.

                                                                                                          You could of course choose to not take advantage of this technique–it doesn’t work magically. But if you do it, then the guarantee it gives you is very real, and one you don’t easily get with dynamic typing.

                                                                                                      2. 2

                                                                                                        This is a great comment. I’ve recently written ten or twenty thousand words on this topic. I was going to come here and try to disambiguate all of the various issues, but you’ve done a pretty good job. I will attempt to be brief.

                                                                                                        I think the mistake I see on both sides of this discussion is assuming totality of approach. That is, either turn this on or turn it off, now compare the two.

                                                                                                        This fails for a variety of reasons, some of which you mention. However if we limit the scope to one important business decision at a time, it doesn’t fail at all. Various business groups may have various ideas of what makes a valid address, but the folks printing billing statements need their work done whether they agree with the other folks or not.

                                                                                                        Making illegal states unrepresentative rocks, but it rocks only when appropriately scoped. By the way, this is exactly how we treat default local variables and system types: we start out with a job (method), we pick the system types we need for that job, and then we forget about them for another job. It’s only when we begin using shared structs and classes across various methods that we start running into any kind of problems.

                                                                                                        The next logical question is: ok, then how do you manage types across hundreds of business decisions? I have an answer to that, but it’s too much to go into here. There are a couple of ways.

                                                                                                      1. 6

                                                                                                        I’m going to say this because I am a sucker for outrage tech porn. I also like trying to see how terse I can make a technical explanation.

                                                                                                        TDD is not testing. TDD is a design activity for incremental OOP. Testing is simply one of the many byproducts.

                                                                                                        If you got that, you understand why TDD doesn’t have to have total coverage, why it’s probably overkill for some projects, and so on. If you still think it’s some weird version of backwards unit testing you have a long way to go.

                                                                                                        1. 26

                                                                                                          This feels like outrage baiting to me.

                                                                                                          1. 1

                                                                                                            Me too.

                                                                                                            There’s only so many “I don’t understand X so it must be bad” stories the intertubes can come up with each week, right? (Please say right)

                                                                                                          1. 2

                                                                                                            What they can’t do, unless they’ve figured it out on their own, is operate a computer outside of the confines of the IDE they’ve been taught.

                                                                                                            I see this far, far too often; tool blindness.

                                                                                                            Many times I’ve done “magic wand” thinking, wondering how I would teach programming. Honestly, I think I’d start with simple text editing skills. Master that, then OS scripting. Then move to a simple build using a handful of files. Only later would I get into more complex things like IDEs. When we start with IDEs, the students never get around to the basics. I’d rather them have a firm and complete grasp of just a few things than a loose connection to a couple of dozen things that all kind of hang together to form a solution. There’s too many cards in that house of cards.

                                                                                                            1. 2

                                                                                                              Writing an essay on Artificial Intelligence that I’ve been putting off writing for a while. It’s just an overview using a new approach, with the conclusion being a much better Turing Test.

                                                                                                              While I am extremely impressed with a lot of the cool things we’re doing with AI, I feel that in a lot of ways we’re lying to ourselves about what we’re actually accomplishing. Perhaps a bit of a reset and refocus on the AGI goal might help some.

                                                                                                              1. 1

                                                                                                                It’s interesting to me the difference between coding, good coding, and idiomatic coding.

                                                                                                                I remember four or five years ago writing some sample code in F# to demonstrate some concept. Oddly enough, and without my expecting it, I got pushback from the F# community. Why? Because my code was not idiomatic.

                                                                                                                Look, I’m a nice guy. I like everybody. But if you’re going to start telling me my code is tested, compiles, works as it should, yet is inadequate because it doesn’t meet some coolkids shifting style guide, I very well may invite you to have carnal relations with various members of your progenitors or their farmyard animals.

                                                                                                                I understand that things like syntactic sugar are extremely difficult to get right the first time around and should change. I also acknowledge the role fashion plays in coding whether we like admitting it or not. I fear, however, that we take coding idiomatically far more seriously than we should. But perhaps it’s a much better endless argument than tabs vs. spaces, right? “Bikeshedding” nails it.