1. 36

    I’m no longer excited by the technology for it’s own sake. I couldn’t give a shit how many serverless functions your bespoke kubernetes cluster manages, or how simple your webpack configuration is.

    I find work that matches my ethics; at the moment I’m lucky enough to support radiopaedia.org. We get regular letters from around the world detailing cases where the site has helped save a patient or markedly improve their health, which is always a morale boost.

    What is there that’s genuinely interesting and exciting in the world of software, and what was your way of engaging your interest and excitement?

    Software systems get used to plan large-scale infrastructure projects, keep track of clean drinking water, food production & distribution, and healthcare. Being aware of the positive outcomes my work generates has become key to enjoying it.

    1. 22

      Some (mostly unfiltered) thoughts on this:

      This all sounds very familiar. In fact, I resigned a few weeks ago with no new job lined up as I felt my entire job was just useless. Everything gets rewritten every year or so anyway, so why bother?

      I was rewriting some of the same code I rewrote when I started. When I joined a lot of stuff was objectively bad; for example a lot of the email handling code was so bad a lot of emails simply didn’t get delivered, or incoming emails wouldn’t get accepted (it was written by someone who didn’t understand email). So my refactors served a clear purpose: “don’t drop emails”, “make sure emails are RFC-compliant”, etc. I then refactored things to add some features (“more details logs”, “ability to re-send delivery failures”, etc.) Again, refactors to enable a concrete goal.

      Later on, we did some refactoring to make stuff compile faster; it was taking upwards of 30 seconds for even simple changes, and it was pretty annoying. This involved rewriting quite a bit of our API, and that took maybe 2 months in total. I’m not sure if it was worth it in hindsight, but at least it had a clear concrete goal (“make it compile faster”), which was measurably achieved. It did make working with the code more pleasant, as waiting 30 seconds for a simple type is no fun at all (fast compile speeds are supposed to be a feature of Go!)

      But now, I see people rewrite stuff because “it’s more elegant, “it had better layers”, or “this is the best way to do it according to {person,methodology,religion,…}”, which are all really just rephrasing of “I prefer it this way”. This doesn’t mean the new way is bad per se, sometimes I think it’s probably a better approach too, but … the “old” way is working, and often has been working for quite a while. Why rewrite it? “I prefer it this way” is not a concrete goal. What is gained with the rewrite? Often this isn’t clear, and at the same time there’s still the increased workload. Even if you’re not involved in the rewrite directly, you’ll still have to learn the new API and/or way of doing things.

      This is a product to solve concrete problems for our customers. The code to achieve that isn’t some sort of art project.

      Yet, many people seem to treat code as an art project. Now, I treat some of my personal projects as “art projects” – and I learned a lot from doing that – but when building software in a team of people that’s just not workable, every time someone new joins the “art project” needs a re-evaluation because it doesn’t fit their sense of aesthetics.

      Software is easy to change. This is great in some ways, but it’s also easy to fall in to the trap of constant change. If you build, say, a bridge of building you can’t just change it at a whim, even if it has serious problems such as lack of daylight or airflow (far too many office buildings suffer from this), so people accept that the world is imperfect, suck it up, an deal with it the best they can. But in software it’s tempting to say “no, I can make the world a better place! I just need to rewrite [..]!” Sometimes that is the correct approach, but often times it’s not. Especially not if you’re in a team. It’s very hard to actually prove something is “better” in the world of software, so the endless battles/bikesheds start.

      This isn’t just a software dev problem, it’s also a management problem in the company. But I don’t see that changing, so I just quit.

      If it was just this company I’d find a different job, but it’s a pattern I’ve seen in many places in my 10-year career. This is not a new observation, either: CADT, Magpie developer, etc. are all phrasings of this problem.

      I don’t know what I’ll do next; maybe I’ll just go jwz and open a bar or something. I really like building software products, but am thoroughly fed up with the industry. Everything feels like a battle, and I’m too tired of it. It might be worth it if I felt the end-result is worth it, but it’s just regular B2B software. Not the worst in the world, but nothing special either. There are a whole bunch of competing products that do an equally good job (if not better).

      1. 10

        If it was just this company I’d find a different job, but it’s a pattern I’ve seen in many places in my 10-year career. This is not a new observation, either: CADT, Magpie developer, etc. are all phrasings of this problem.

        Every time I’ve seen this happen, it’s at a organisation that has money far in excess of its costs (unfortunately, this happens pretty often in b2b software).

        This enables middle management to start empire-building / hiring for projects of dubious value. You can fight it in the early stages by having a suitably aware CEO (eg 37signals / basecamp) but as you get to larger organisations, most roles fit this description.

        Once you have more developers than you need to solve the problem, you start stepping on each others toes and spending all your time communicating; before you know it, there are four teams building microservices (to reduce the communication overhead) to solve a problem that only needed one team of 3-5.

        You can avoid this by finding a place that either lacks excess money, or has somewhere to sink it. Basecamp sink it into high engineering salaries and dividends to owners; radiopaedia can only afford me part-time, but can hire me for more hours if they get more money.

        1. 5

          There is a saying that if everybody are morons, you are the moron. (For clarity, I don’t believe you are a moron, you seem bright).

          Could something similar be said of battles? If everything feels like a battle, does it come from within?

          1. 3

            Okay, some more mostly unfiltered thoughts (I guess Lobsters is my weblog now?)

            That’s not unreasonable, and I’ve been thinking about that for quite a while during the last few months (even before I resigned). There is an easy solution to it: shrug, don’t care about anything that happens outside of the narrow scope of the job I was hired for, do my boring job for a few hours, and collect the paycheck.

            But that’s not really how I work. In many companies there’s a lot of stuff “between the cracks”, stuff where there’s no person/team who has a clear responsibility, but really should get done. I tend to do a fair amount of work “in between the cracks” as that’s often pretty valuable for the business. Example: I wrote standard scripts for our Travis integration, because that’ll save everyone a lot of time so they won’t have to ad-hoc the .travis.yaml files with random copy/pasting. I spent a day on it two years ago and while hardly perfect, it’s been working pretty well since then. Yet I’ve had to deal with a ton of bikeshedding and headaches about it. Some of the feedback has been reasonable and constructive (great), but there’s also a lot of “change for the sake of it”, and some downright toxic stuff (like the guy that just overwrite it all several times with his own version without prior discussion, often getting a few key things wrong).

            Perhaps the worst part if that all the bikeshedding and toxic idiocy made me shoot down a more reasonable proposal that someone made a few months ago. The PR did have a bunch of issues and needed quite a lot of work, but fundamentally it was a good effort as it attempted to address various real concerns (and was’t a “I don’t like the way it’s done” type of rewrite). The entire thing was eventually amicably resolved, but being in the state where I growl at things because I’m tired of bikesheds and toxicity being flung at me is not a place I want to be at.

            To be clear, the problem isn’t “everybody”, it’s just that there are a few people who have very strong visions on the One True Way™ how to do things and will push that vision with little sense to pragmatism. A lot of people think that’s somehow normal, so these people can do what they want (some of these people are also very toxic).

            As I briefly mentioned, this is just as much of a management fail as anything. Ideally, management should have nipped a lot of this nonsense in the bud and fired a lot bunch of these people (some of the more toxic ones have).

            Some examples: I wrote our internal Go framework; this wasn’t a “invent a framework from scratch” effort, but more “codify common practices our existing projects already use, while making sensible ROI improvements”. The end results is pretty decent, if I say so myself. Yet, no one uses it, as it doesn’t fit the One True Way™ for any of the teams. The result is that we now have 6+ “frameworks”, all based in varying degrees on the original. There is loads of duplicated effort here. I tried very hard to accommodate people’s concerns, but there was a lot of “I don’t like it”-ism and people just went of in their own direction anyway 🤷

            I don’t even have strong opinions. I just care about 6 teams not duplicating all effort to produce a Go API. Not unreasonable, right? But now we’ve got all that duplicated effort. Worse, some of these efforts are just … not very good. We’ve had two unreleased apps that already had to undergo a massive rewrite before release because the re-invented stuff sucked too much, but is being ignored “because I don’t like it”. I get that new apps sometimes need to take risks and experiment, and that some of these risks don’t work out, but this isn’t rocket science, this is basic CRUD APIs. We already invented all of that 2 years ago.

            I’ve been working on a weblog post about all of this for a while, but I find it hard to articulate my feelings accurately, because when described like above it doesn’t necessarily sound like a huge deal. “So no one uses your framework, deal with it!” In part, it’s a “death by a thousand cuts” affair, this is just one example. There have been a lot of pushes to rewrite/redo existing systems without a clearly stated goal. Seeing a lot of your work being rewritten all the time has a certain psychological effect. Why bother if everything will be rewritten next year, anyway? There was also a good HN comment on that last week.

            I’m also one of the few that actually takes the effort to push back on all of this. A lot of people seem to shrug in apathy, or they just don’t do anything because they don’t want to spend the effort to get involved. Turns out that actually caring about making a good business, and not just doing the job you were hired for, can burn you down. I’m “just” a developer, I don’t really have more authority than anyone else. In hindsight, I should have either pushed for more authority, or tried harder to get those in authority aboard. Being remote while ~75% of the company is in an office probably doesn’t help either, especially not after I moved to New Zealand which put me in a massively different timezone (main office is in Ireland).

            Part of this is just growing pains from small startup to company with >250 people. When I joined stuff worked pretty well without any direction, as a lot of people were very pragmatic and dedicated. Now that’s we’ve increased the amount of staff by a lot, things are more tricky. I guess I could work to change the culture, but after 3 years I feel burned out and to be honest, our products aren’t all that great and not really sure if it’s worth is trouble.

            1.  

              What you’re describing here sounds like a bad mismatch between the level at which you care and the level of authority you hold. Plus probably. the proportion of payoff you stand to receive if you do succeed.

              Put another way: if you’re high up enough in the organisation that you could fix it, it might be your responsibility. If you’re not senior enough to e.g. be able to order people to knock bad behavior off, then by definition it is not your responsibility.

              Please don’t get emotionally invested in a company of which you are not a large-stake shareholder. It is IME a recipe for getting burned out hard.

        2. 25

          I’m no longer excited by the technology for it’s own sake. I couldn’t give a shit how many serverless functions your bespoke kubernetes cluster manages, or how simple your webpack configuration is.

          Here’s why this is so correct: being excited by technology is a surefire way to be disappointed in life.

          1. 19

            This kind of sentiment confuses me, especially given the context of this community. If working at a job that matches your ethics is what does it for you, then that’s amazing! We need more people like that around to make the world a better place.

            But disparaging people for being excited about technology is odd, to say the least. There’s something intrinsically satisfying, at least to some people, about learning new things, understanding the context in which that thing is (or is not) useful, and why it is (or is not) more useful than the old way of doing things. Do you think a mathematician being excited about mathematics for its own sake is a surefire way to be disappointed in life?

            Treating your software like a craft and always striving to be better is a great way to enjoy what you do. A carpenter isn’t diminished by making tables for whoever happens to want to buy them, they can enjoy their work intrinsically as they masters their craft and take satisfaction in a job well done. Obviously this can be complicated by the reality of working with other people who may not treat it the same way, but… that’s how people work, and that problem exists in any field or career.

            1. 20

              But disparaging people for being excited about technology is odd, to say the least.

              If you get excited about technology, it’s much more meaningful to get excited about how a technology could help people, not about the technology on its own, which most of the time is going to be deployed to sell more ads or perform more effective surveillance.

              1. 7

                it’s much more meaningful to get excited about how a technology could help people, not about the technology on its own

                There is a certain irony to this comment coming from someone with the username “technomancy” whose description links to their blog about their custom-made personal keyboards. :)

                One way to help people is to not criticize their internal motivations simply because they don’t align with yours. If someone gets home at the end of the day and feels great for no other reason than that they got to write a bunch of code and they love how writing code makes them feel, more power to them.

                It might be more meaningful to also help other people with your tech, but that has its downsides. When you hang your satisfaction on someone else’s joy, you give others control over your own happiness. You sacrifice the freedom to feel good about something you did just because they happened to not like it.

                Each of us is free to find our joy however we like.

                1. 7

                  coming from someone with the username “technomancy” whose description links to their blog about their custom-made personal keyboards. :)

                  On the contrary, the reason I have continued to make custom keyboards after all these years is precisely that; it helps people. The keyboards allow my customers to avoid RSI and learn some useful DIY skills. I wouldn’t still be doing it otherwise.

                  If you look at my comment in context, I’m replying to a post that is explaining why the original poster no longer feels motivation to work in software. If you don’t feel like they do right now, that’s great, but the odds are very good that at some point in your life you will if you’re working in the technology industry.

                2. 4

                  Genuinely wondering how you feel about this:

                  If you get excited about mathematics, it’s much more meaningful to get excited about how mathematics could help people, not about mathematics on its own, which most of the time is going to be used to sell more ads or perform more effective surveillance.

                  1. 5

                    which most of the time is going to be used to sell more ads or perform more effective surveillance.

                    This isn’t actually true for mathematicians as far as I know? I mean, if you’re a statistician working for an ad company, then sure; it seems to hold up fine, but as far as I know most mathematicians aren’t.

                    1. 1

                      The “most of the time” probably isn’t (I personally think definitely isn’t, but no data no certainty), but if you’re a mathematician working on something just because it interests you, there is a chance still that someone might find a use for it in ways that you didn’t think about, including ads and surveillance. What I was wondering about phrased directly is basically, whether these two questions have different answers for you:

                      Q1: Is it meaningful for a mathematician to work on some mathematical structure that interests them, without any foresight of a meaningful use of their work?

                      Q2: Is it meaningful for a programmer to work a on a technology that interests them, without any foresight of a meaningful use of their work?

                      where meaningful is relative to you personally.

                    2. 2

                      Mathematics is discovered. Technology is built.

                      When you discover new mathematics, nobody owns the math.

                      When you build technology for an employer, somebody else owns the technology.

                      That means:

                      • Your work can be destroyed by someone else without you getting a say (eg the project discontinued by management)
                      • Your work can be redirected to only be used in ways you disapprove of.
                      1.  

                        Mathematics is discovered. Technology is built.

                        This statement is in my opinion too general to have any useful meaning or validity.

                        I however find your distinction between discovery and invention (building) interesting, so I’d like to ask you a question. Consider a new real world programming language L. It would probably be very easy to argue that L was invented. Assume now that a user of L stumbles upon a quirk in the way L handles closures for example. Is this quirk an invention or a discovery?

                  2. 8

                    But disparaging people for being excited about technology is odd, to say the least.

                    My intent was not to disparage and I find that reading to be very odd. All I’m saying is that if you focus on technology as your source of excitement in life you are setting yourself up for disappointment. This does not mean you are a lesser person for liking it.

                    Treating your software like a craft and always striving to be better is a great way to enjoy what you do.

                    I take great pleasure in writing software, making keyboards and other such things. I truly enjoy it and I always want to improve. But that is not technology. Technology is just a vehicle for that kind of growth. The technology itself may be interesting and I may like it, but I certainly don’t like it just because it’s technology.

                    According to the life expectancy measures, I have one foot in the grave (that is, I’m past the halfway point). I grew up in the personal computer revolution and was an adult when the Internet took off. I’ve heard a lot of promises of what technology will do and how it will change things. Only one thing has ever been consistent: it does change things (corollary: we’re terrible at predicting the future). It does this for both good and bad, and rarely in the ways you hope. I used to look for the new thing all the time. I don’t anymore and I’m happier for it.

                    The joy I get from technology is understanding it and using it so that I can do things or better yet, how it gets used to help people. I don’t get excited about AI/deep learning, for example, I get excited about the thought of learning how it works and maybe using it to help me with my extensive collection of papers. At the same time, I think the adtech world is nothing short of a blight on humanity and have zero respect for it. As such, I would never work in it, regardless of what AI techniques they use. Being excited about AI for the sake of technology, in this case, would cause me great inner conflict and thus, disappointment. To avoid these situations, I no longer seek happiness in technology.

                    This is one of those topics that is hard to put your finger on and honestly, I don’t think I’ve quite captured it here. I apologize for that. At the same time, I can’t deny that a lot of my friends, just like me, used to be thrilled about new technological innovations, saying things like “Wow! That’s awesome!” or “It’s just like in the movies!”. Now we say, “Maybe a Earth-level EMP pulse isn’t such a bad idea.”

                    1. 2

                      My intent was not to disparage and I find that reading to be very odd. All I’m saying is that if you focus on technology as your source of excitement in life you are setting yourself up for disappointment.

                      Not if they die tomorrow. Sorry for the strong statement, but I just wanted to provide at least one counter example.

                      People are different, maybe as programmers we need to resist the urge to generalize more than other humans.

                      1. 2

                        I wasn’t generalizing so much as playing the odds. (And yes, there are plenty of counter examples. But it’s also not a cut and dried kind of argument, which is kind of the point.)

                        1. 2

                          Fair enough, I personally share your sentiment. Thanks for your explanations, you’ve certainly put it in a way better than I could’ve.

                      2.  

                        This is one of those topics that is hard to put your finger on and honestly, I don’t think I’ve quite captured it here. I apologize for that. At the same time, I can’t deny that a lot of my friends, just like me, used to be thrilled about new technological innovations, saying things like “Wow! That’s awesome!” or “It’s just like in the movies!”. Now we say, “Maybe a Earth-level EMP pulse isn’t such a bad idea.”

                        I’d like to point out that this is the same tendency, expressing itself in opposite ways. If we had an Earth-Level EMP Pulse, people would die. A lot of people. Technologists have a hubris that says “We can do it better, just watch us” that leads to magpie development, technological innovation, and a wish to burn it all down.

                        1.  

                          It’s a hyperbolic statement.

                      3. 10

                        There is almost nothing new and shiny that’s genuinely interesting, in my opinion. I derive excitement from learning about new concepts and such that I haven’t previously known about–there’s plenty of that. I do not derive excitement from whatever the current hype is. Elixir? Serverless? Those just feel dull to me. They seem like a cycle: “This is the next great thing! It’s SIMPLE! And FANTASTIC!” and then those folks write software systems that, like most other software systems, suck. Everything is simple in the beginning, and everything is legacy after five years. I think that’s what Geoff was getting at.

                        1. 4

                          I think you are describing the toxicity of the hype cycle and the shallow excitement it inspires. The target of the hype, being it yet another software framework, a music genre, or a food, is not relevant.

                          Trends are almost parasitic: they chase after new idea, feed on the novelty aspect and then leave it behind.

                          1. 1

                            I share that, mostly. There’s one problem with this approach I’ve experienced, which is that it focuses on getting fundamentals right (good!) but disregards the importance of getting the superficial details right too.

                            The reason for e.g. Go being popular is that they got so many little details right, not because it contains new concepts.

                          2. 4

                            The sentiment is about putting technology on a pedestal and not about the intrinsic value and excitement of learning and discovering. Technology can be used as an aid in this process but fetishising technology is one reason that programming culture is so broken.

                        2. 6

                          I find work that matches my ethics

                          That’s a good suggestion. I think this is why I have been trying to skirt the Free Software world, because I believe strongly in the four freedoms. When I’ve gone for “open source” jobs that aren’t really open source, I’ve always been disappointed (in one, the open source was kept very much at arms’ reach to avoid “accidentally” opening the core IP; in another, I took on the role of defining our open source strategy, getting the internal lawyers and other stakeholders on board, getting buy-in from the engineers…who then didn’t open source anything).

                          1. 6

                            Being aware of the positive outcomes my work generates has become key to enjoying it.

                            This is helpful for me, thanks.

                            1. 7

                              Honestly, it’s hard for me to imagine any other reliable way to enjoy work, other than enjoying the company of your co-workers.

                              You might get some fleeting enjoyment out of solving a particularly tricky logic puzzle at work, but in a healthy workplace there tend to be few opportunities to apply cleverness; people applying a lot of cleverness to their code on a regular basis is a sign of an unhealthy workplace.

                              1. 5

                                I get quite a bit of enjoyment from just solving the problems at hand in the most appropriate way. This is way more reliable for me than enjoying the company of coworkers! People come and go, have a bunch of opinions and habits, but GNU Emacs never lets me down.

                                1. 12

                                  speaking of Emacs, I think there’s definitely something to be said for dotfiles hacking as a kind of “release valve” that allows you to express your cleverness in a way that doesn’t result in unmaintainable code for your teammates!

                                  1. 1

                                    I like that idea a lot actually.

                                2. 4

                                  I live in the central US and I’ve met a lot of developers around here who are happy to grind away at an insurance company because it lets them provide their family with a level of comfort other jobs wouldn’t allow. The work itself doesn’t seem to give them a wholesome feeling, but being able to provide for their families does.

                                  This feels related, but somewhat different from your point about the work itself being directly beneficial to society.

                            1. 4

                              I think it’s amusing that it bills itself as “maybe the fastest string library ever written in ANSI C” and then only compares itself to std::string.

                              1. 2

                                Welcome to Lobste.rs! We discourage linking to news stories because we don’t aspire to be a link aggregator for news. It’s often lacking in depth and is more like candy than a meal. Lots of other places do news stories and we don’t want to replicate that here.

                                If there’s a good technical or software development angle to this story, then feel free to submit that. As it stands, this is off-topic and is the kind of thing that gets shared in the chat channel.

                                But please, don’t let this be a discouragement if you think you have other things to contribute.

                                1. 2

                                  Thank you for the advice. I’ll be more carefully

                                1. 2

                                  Although I frown upon submissions from news organizations, this one is good.

                                  1. 11

                                    You have to drink a lot of typed Kool-Aid to consider this an acceptable way to program:

                                    string msg = sqrt(-1)
                                      .leftMap([](auto msg) {
                                        return "error occurred: " + msg;
                                      })
                                      .rightMap([](auto result) {
                                        return "sqrt(x) = " + to_string(result);
                                      })
                                      .join();
                                    
                                    1. 2

                                      It looks much nicer with the Coroutine TS. Hopefully something similar (but better designed) will land in C++ proper.

                                      In the mean-time, you can access the values in an unsafe manner using .isLeft(), .getLeft() etc.

                                      1. 2

                                        I love functional programming and this is abhorrent. Although, to its credit, C++ has never been big on esthetics.

                                        1. 2

                                          Isn’t that how a lot of JS functional programming is done?

                                          ducks

                                          1. 1

                                            I agree. I’m still in the process of re-learning the various C++ standards, and this code is practically unreadable to me. I would much prefer something I can read and mentally step through.

                                            1. 0

                                              Even in languages with more concise syntax that’s a braindead way of programming if you ask me.

                                              string msg = sqrt(-1).leftMap(msg => 'error occurred: #{msg}')
                                                                   .rightMap(result => 'sqrt(x) = #{result}')
                                                                   .join();
                                              

                                              In C++ it’s abhorrent. Not to mention that leftMap and rightMap should be left_map and right_map in C++. Using camelCase in C++ is like using lowercase_with_underscores in Java. It’s just wrong.

                                            1. 6

                                              I’ve always found talking about the Traveling Salesman problem (or some other NP-hard problem) to get people’s interest. It’s such a simple sounding problem and yet, we can prove it is really difficult. At the same time, explaining that there are techniques to get pretty close to optimal in a reasonable amount of time is also nice because it resonates: we all have ways of dealing with things that generally work, but there’s always some case that messes things up.

                                              1. 4

                                                There are literally hundreds, if not thousands, of guides to using the command line and Bash (which, as pointed out, are not the same thing). This one is rudimentary, so much so that it’s clear the author has very little experience with using the tools.

                                                My recommendation is to look for more meaningful content when it comes to things that used by the vast majority of the community.

                                                1. 5

                                                  Now I’m actually curious, does anyone learn programming from a book?

                                                  I figured books (and tutorials) are a good way to just get started if you can’t get there on your own, and I guess you can learn new tricks & deepen your knowledge with the help of a book after you’ve got the core stuff figured out. Between the getting started stage, and the deep end, you just have to learn programming by actually programming eh?

                                                  I’m not sure people in universities learn programming from books either. Well, my lil’ sister just started studying CS. There are books, but they’re rather supplemental. The core material is lectures and exercise.

                                                  1. 6

                                                    I learned from books (and magazines) in addition to writing programs. But this was back in the mid-80s when I was in high school. The only source I had were books (and magazines [1]). No one else I knew knew anything about computers (with the exception of one friend, and he had a different computer than I did).

                                                    [1] Byte magazine was one of my favorites [2]. But even the computer I had, which was not popular by any means, had at least two different magazines devoted to it, both of which covered everything from hardware to software.

                                                    [2] I recall it having a series of articles about compiler construction and parsing techniques. Mid-80s Byte magazines made incredible readings. By the late 80s it had morphed into a general PC rag, but I was in college at that point.

                                                    1. 2

                                                      “Getting started” isn’t learning? I learned C in the early 80s with a copy of K&R in one hand, doing the exercises. Or at least it sure felt like learning. Now, I didn’t get proficient/skilled without a ton of practice and subsequent help from more experienced mentors, but that strikes me as something different.

                                                      1. 1

                                                        Books are an invaluable tool for learning, but they can’t do everything. Some people are just plain bad at teaching or writing or they have other incentives for writing aside from education.

                                                        The principal point I think is that someone (maybe several people) with wider and deeper knowledge on a subject present their knowledge for you to learn from.

                                                        My first approach when I want to learn something is to read about the subject - and we also have other media too. I don’t have to stumble along, making mistakes, going down the wrong path, wasting time on irrelevant material and so on. Others have already done that before. Why wouldn’t you learn from them?

                                                        Later, once I’ve gained some knowledge, I can explore and expand, go deeper or focus on topics that are interesting or relevant. Everyone is different though and some people do benefit and thrive from a hands-on, practical approach first.

                                                        Personally, I want pointers and relevant background and guidelines from others who have studied the subject already. I don’t want to have to learn by doing all my own research up front over and over and over.

                                                        You absolutely need to reinforce that knowledge with action, experimentation, application though. I think the best approach for me is to have that practice during the teaching - relevant exercises that push a little beyond the material you’ve just covered works best for me.

                                                        1. 0

                                                          You have said exactly nothing that discounted what I said. Please don’t piggyback your “let me tell you how awesome I am and how great I think my way of doing things” drivel on my simple response. It’s really pathetic.

                                                      2. 1

                                                        I don’t see what you’re getting at. Books only provide information, learning is the responsibility of the reader. I don’t think anybody’s claimed otherwise.

                                                        And it’s the same with literally everything. Nobody learns to drive by reading a book, or learns carpentry from a carpentry book, or learns advanced math by merely reading a book, etc.

                                                        Learning anything requires doing and practicing. Just reading a book or listening to a lecture isn’t going work except maybe for the most trivial things.

                                                        1. 1

                                                          “You won’t learn how to write a novel by reading Betty Azar’s grammar book.”

                                                          1. 1

                                                            I managed to learn quite a lot from books (Various books on programming languages (Java, Python, Perl, …) and others like SICP). Not that I just read the books without writhing anything or using Google, but I got quite far. The main problem is that if you get to choose you’re own “schedule”, you might keep on avoiding more boring but important topics, like in my case computer architecture.

                                                            1. 1

                                                              I learned programming from a book, which included lots of code examples, but it was back in 2002 when paper was easier than the internet.

                                                              1. 1

                                                                Now I’m actually curious, does anyone learn programming from a book?

                                                                Yes and no. I learn programming languages from books because I want to know more about the semantics than pure examples often provide.

                                                                (Grrr.. hit “post” by mistake…)

                                                                As for programming, it would be unfair to say that learning hasn’t been at least well supplemented by books. It’s certainly a lot of “learn by doing”, but there’s a good mix of learning from others’ experiences as well. It’s a stretch to say I’ve learned programming from books and at the same time it’s accurate to say my programming skills have been enhanced by them.

                                                                1. 1

                                                                  I would argue the inverse, can you learn programming without “books?” Here I am using “books” to refer to references that an autodidact might employ. I don’t think they can be the sole source of an education, and should be supplemented with real experience. However, they are an important resource early on and, at least in my experience, when continuing to learn. I have been doing this for 20 years now, I am still learning to program - often from books. And while this is not universally true, I have noticed a trend that those who don’t continue to read tend toward stagnation. I can also think of counter examples on both sides of that.

                                                                  1. 1

                                                                    I spent a good chunk of my life in some places, esp in rural areas, without access to a computer or the Internet. I could occasionally get an IT gift from well-off relatives (often chose wrong), find outdated books on any subject in thrift stores, and get recommendations from some elitist, possibly-fake hackers at times. I had to practice programming in my head, on paper, or (on budget) the dirt. Lots of time doing stuff, screwing up, introspecting, and repeating that process. My biggest concern over time was how many bad habits I might have picked up from wrong, mental model of how things actually worked. On top of that, total waste that resulted from having no ability to check my work or get feedback on doing it right.

                                                                    The habits I developed doing that are probably the reason I still do that to this day with most of the papers and articles. People occasionally are like, “Nick, did you even read the damned article or dig deep into what they said?” Yeah, I probably tried to run through it like I never had access to the actual article or time to do that. I have better excuses for it these days but it could be habitual, too. Double reinforcement. So, it’s possible old habits that worked well enough over decades are hard to ditch. I did in fact learn programming, administration, business advice, speaking, etc from a mix of books and whatever people locally seemed to know about a topic. Cheap paperbacks were all I had for a lot of things.

                                                                  1. 4

                                                                    Not to be too glib, but the tags you did use may be the answer to your question.

                                                                    1. 1

                                                                      To be honest, I find emacs on windows too slow, even on my faster machine, so I don’t know how this one with a slower CPU would handle. By slow I mean that filesystem access appears to be slower on windows and all that lispy goodness becomes quite bad (specially after you have enough packages).

                                                                      I never really used vi/vim, I know how to save stuff, quit and search, and thats it. Maybe I should give it another look. I was always in favor of using emacs.

                                                                    1. 4

                                                                      My website and gopher server.

                                                                      1. 4

                                                                        I’m looking into how I could go about doing a graduate degree in history. I’m researching the researchers at this point, looking for any at Ontario universities who do work in the history of science. If anyone knows someone, let me know. I’d appreciate it.

                                                                        1. 1

                                                                          There’s actually a Wikipedia article on that.

                                                                        1. 3

                                                                          It’s nice to see some more book reviews. I appreciate reviews that aren’t just blurbs with a star rating.

                                                                          Some thoughts.

                                                                          • It’s not necessary to take the reader through the contents of each chapter. When you do this, the review reads like the beginning of a textbook.
                                                                          • Your job as the reviewer is to give the reader (of the review) a feel for the content and organization of the book, and writing ability of the author. The book may have useful information with tedious, difficult prose. It might be poorly organized. It might not have much of anything to say. Shift your focus from talking about the content.
                                                                          1. 2

                                                                            I appreciate the feedback. I agree with your thoughts, but as this is a review I wrote years ago and have now adapted from a different medium, I wanted to experiment. The original review was much more concise and less detailed than this one, as I’d originally wanted them to be simpler and more informal recommendations.

                                                                            With that written, I may change this review further or I may simply leave it as an experiment. I have three more reviews I’ll be adapting before I have no more prior work to recycle.

                                                                          1. 3

                                                                            The link to the article published in The Royal Society seems to be worth reading.

                                                                            1. 13

                                                                              I also suggest this reading to anybody interested in this topic: https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3078224

                                                                              It tracks the history of this narrative and explains who profits from it.

                                                                              This phenomenon has a clear political and ideological root and both journalists, politicians and engineers should fight against it together.

                                                                              If you want to explore more related topics there’s plenty of related content in a reading list I’ve been developing in the last few months: https://github.com/chobeat/awesome-critical-tech-reading-list

                                                                              1. 4

                                                                                I really enjoyed that paper. It’s a shame that AI is being dishonestly advertised. Researchers and companies paving the way have a responsibility to set reasonable expectations. We could have more productive dialog if we were able to discard the buzzword and pop-sci explanations. This most recent “AI” phase (like the past) has yielded advances that we should be proud of and unfortunately most of them will be under appreciated.

                                                                                Instead of preaching “AI” why not take this opportunity to impress the effectiveness of math to a broader audience?

                                                                                1. 1

                                                                                  atm I don’t have time to fiddle with finding good/short examples and shooting them a p.r. but I think Evgeny Morozov and Mark Fisher could be added to that list (with Fisher being tangentially related as in whoever would be interested in this list sort of list would almost certainly be interested in Capitalist Realism for a broader picture)

                                                                                  1. 2

                                                                                    Mark Fisher is next in line in my backlog, but I want to read it first. There’s already Inventing the Future in the reading list, that is clearly influenced by Mark Fisher’s work.

                                                                                    What do you suggest by Morozov?

                                                                                    1. 2

                                                                                      Inventing the Future

                                                                                      that’s almost certainly relevant as well, but I haven’t read it sadly. I wanted to get into accelerationism but got so derailed once I started. which is awesome. been a very long journey so far but I do plan to circle back eventually. kind of ironic for lobste.rs to be so full of people drawing on Deleuze:D I know @steveklabnik likes him

                                                                                      btw, one word of advice, I have always found it useful to read leftcom critiques of whichever political bent catches my attention. it’s great for a dose of soberness, although ymmv and I might just be reflecting my preexisting sympathies. https://libcom.org/blog/back-future-rebranding-social-democracy-12042018

                                                                                      but I want to read it first

                                                                                      what were you referring to here? inventing the future?

                                                                                      1. 1

                                                                                        No, I was referring to Capitalist Realism

                                                                              1. 5

                                                                                The challenges and solutions are not purely technical in nature, but rather fit into a larger socio-economic puzzle, to which all of us are invited to contribute.

                                                                                I’d call this an understatment. Arguably, the technical aspect is the smallest and simplest part of decentralization. The social aspect is considerably larger.

                                                                                1. 5

                                                                                  Indeed, discoverability was always the problem. Discovering interesting people creating content that interested you. Let alone discovering people you actually know in real life (tm). I saw an old “internet yellow pages” at a used book store last year (from 1998 iirc). The social aspect is the hard part.

                                                                                  In this light, I don’t really have a lot of faith “owning you’re data” ie solid is the solution. The present article is a good overview though.

                                                                                1. 3

                                                                                  Get further in the book The Tyranny of Experts, start reading the Hennessey and Patterson book, tinker with my site generation code to make sure the Atom feed I added recently is okay, and add some content to my gopher server.

                                                                                  1. 3

                                                                                    I agree with these points, as does my wife. My wife occasionally writes in Polish and macOS is much better for this. Windows is woefully poor at inputing accented characters: Alt+nnnn is a ridiculous system and navigating the character map is tedious.

                                                                                    I find the file I/O performance completely kills the appeal of the WSL. Firing up Emacs is noticably slower, even without any init file, and good luck if you have to run find and grep on large-ish directory structures. Builds that touch a lot of files will crawl. If you’re used to speedy file ops, working in a Unix-like way on Windows will make you miss an actual Unix environment. (It’s for this reason that I think my Win10 experiement will be ending soon.)

                                                                                    1. 3

                                                                                      Would you care to elaborate regarding switching keyboard layout to PL, please? For me, the issue I have is using UK/GB layout and switching to PL as the latter is a modified US layout so @ and “ are swapped.

                                                                                      1. 1

                                                                                        I’m sorry I can’t provide a lot more information. As far as I know, you have to add the language you want, then add keyboard layouts for those languages. You can switch keyboard layout using Win-Space. I do not know how to view the keyboard layouts that you choose, and there doesn’t seem to be an obvious way to do it.

                                                                                        1. 1

                                                                                          I’m not a Windows user myself but, AFAICR, this is done in one go and the default layout will be chosen for a selected language.

                                                                                          I do have to agree though - most (all?) things are smoother on macOS :^)

                                                                                          Aah, viewing the layout. I’ve never thought of that, TBH - I usually know it before selecting it. In terms of Polish layout specifically, it’s quite intuitive - all the extra letters are produced by using AltGr as the modifier key + the base letter (bar ź, for which x is repurposed).

                                                                                          P.S. I’ve just done it on macOS and I’m amazed that Polish Programmer’s layout is still not the default and the first one in order is the Typist’s layout. Who uses that layout!?

                                                                                      2. 1

                                                                                        Have you tried the US keyboard with international dead keys?

                                                                                        1. 1

                                                                                          No, and I didn’t know about that, although I suspect my wife won’t like typing that way.

                                                                                        2. 1

                                                                                          Regarding character input: I use a Swedish keyboard but most often I use a US layout. When I need Swedish characters I just switch keyboards with Alt-Shift (Windows). I use both Mac and Windows and the process is the same However I’m not familiar with how keyboard support for Polish is in Windows.

                                                                                          Agree 100% with file I/O. I’m trying to learn PowerShell more for remote work where I can’t use Cygwin, and stuff that’s trivial on Unix (grepping through thousands of files) is painfully slow in PS. I adapted one script to essentially summarize large log files and there you have to create a local copy of the file and use System.IO.StreamReader to access them in reasonable time.

                                                                                          1. 3

                                                                                            The support for Polish language is present since very early days of MS Windows. It is full well possible to use it as one of the Alt-Shift alternative keyboards. As such, I’m really surprised with the grandparent post; is it possible that the author doesn’t know about this feature on Windows? The Polish keyboard layout is based on the US one, with AltGr-a for “ą”, AltGr-l for “ł”, etc. — you get the idea. The only “slight” surprise might be AltGr-x for “ź”, as AltGr-z is already taken by “ż”. Does macOS somehow have it even simpler?

                                                                                            1. 2

                                                                                              I’m not sure about Polish, but for the longest time Windows didn’t support Bulgarian Phonetic out of the box, only the older State Standard, which I never learnt (I’m not a native Bulgarian Speaker).

                                                                                              I think Windows is roughly fine for internationalization support now, for me the killer feature on macOS is the integration with all my devices and the accessibility. I’m hard of hearing, so the ability for my laptop to ring when my phone does is huge. So, the combination of internationalization and accessibility, in conjunction with a decent Unix setup, keep me on macOS for the time being.

                                                                                              1. 1

                                                                                                Using the Left Alt key with any character on the Polish language on Win10 just results in either the chime sound or jumping to a menu. Right Alt doesn’t do anything. There is no AltGr key on the keyboard. As far as I can tell there is no keyboard viewer in order to see how the keyboard is mapped, either. The only reliable way we’ve found to get accented characters is to use the character map. (Depending on the keyboard choice, some keys, such as ‘[’, will insert accented characters instead of what one might expect.)

                                                                                                On macOS, you can press and hold a key (such as ‘z’) and you get a popup that lets you select what accent you want for the character using keys ‘1’ through the number of possible accent choices. This works in any native text entry area. You can also bring up the Keyboard Viewer, which shows a hovering keyboard window that displays what keys map to what symbols, including modifier keys. It’s reasonably intuitive to start typing on a different language keyboard layout on macOS. Windows, not so much.

                                                                                                Perhaps there’s a setting I’m missing. I’ve scoured the settings and found nothing that suggests there’s an easier way. You can use the Touch Keyboard to enter symbols in a similar way to a Mac, but it requires using the mouse (or your finger, or a stylus).

                                                                                                1. 1

                                                                                                  I tried some googling, but didn’t manage to find a way to see the keys of the current layout on Win10 quickly. I managed to find some list of Windows keyboard layouts; at letter P there, you can see 2 keyboards for Polish. When I clicked them, I was able to see a JS applet showing the keyboard layout. For Polish (programmers) (which is what you should use), hovering over the AltGr a.k.a. Right Alt on the preview, shows the positions of the accented letters. From what you say, if you’re getting accented letters instead of ] etc, then it’s most probable you’ve got the dreaded Polish (214) (known in older versions as Polish (typist)) layout. Nobody in Poland uses it, really :) I thought it was already removed from Win10, or at least well hidden, but it may well be that it’s still there, and you just stumbled upon it, unknowingly :( I sincerely hope for you it’s possible somehow to remove it, and get back to the standard “Polish (programmers)” one…

                                                                                          1. 1

                                                                                            This is very interesting. Wondering if you have anything to say about present day debugging.

                                                                                            1. 1

                                                                                              I’ve reviewed a bunch of books in the other reviews on my site and the first one contains the most recent book, which is from 2016. I’ve not come across many recent books that aren’t about how to use some tool for debugging instead of talking about debugging in general. If you can recommend a book I’d be happy to take a look.

                                                                                              That said, I suspect that three recent books capture the spirit well enough: Agans’ Debugging, Grötker et al.‘s The Developer’s Guide to Debugging, and Zeller’s Why Programs Fail. The essence is that you need to approach it with a good problem solving mindset and you must know your tools. Most discussion of debugging tends to supply advice on what tools to use and how to use them effectively. The key thing about modern debugging is that you have so much computing power available that you don’t need to be all that careful.

                                                                                            1. 5

                                                                                              Technical (mostly old for future debugging reviews):

                                                                                              • Computer Architecture, 5th Ed. (Hennessy and Patterson, 2012)
                                                                                              • Computer Systems: A Programmer’s Perspective (Bryant and O’Hallaron, 2003)
                                                                                              • How Debuggers Work (Rosenberg, 1996)
                                                                                              • COBOL II (Bookman, 1990)
                                                                                              • Debugging C (Ward, 1986)
                                                                                              • Invitation to MVS (Katzan Jr. and Tharayil, 1984)
                                                                                              • System 370 Job Control Language (Brown, 1977)
                                                                                              • Programs for an Electronic Digital Computer (Wilkes, Wheeler and Gill, 1957)

                                                                                              Non-Fiction:

                                                                                              • The Tyranny of Experts (Easterly, 2013)
                                                                                              • 23 Things They Don’t Tell You About Captialism (Chang, 2010)

                                                                                              Fiction:

                                                                                              • The Once and Future King
                                                                                              • Some of the Harry Potter series, I guess
                                                                                              1. 5

                                                                                                System 370 Job Control Language (Brown, 1977)

                                                                                                Why do you hate yourself so so so much?

                                                                                                I have a nice hammer which you can hit yourself with…. I’m sure it will hurt less.

                                                                                                1. 1

                                                                                                  Computer Systems: A Programmer’s Perspective is a great book. The 3rd edition covers x86_64. I’m surprised I don’t see it popping up more in lists like these.

                                                                                                1. 6

                                                                                                  The GNU Recutils is a textbook example of how to have a decent set of tools with ridiculous marketing that makes the project look like a joke.

                                                                                                  The idiocy of the logo is only made more idiotic via the answers about it in the FAQ:

                                                                                                  1. About the logo
                                                                                                  • Why is the logo depicting a pair of copulating turtles?
                                                                                                  • What is the name of the turtles?
                                                                                                  • Why those names?
                                                                                                  1. 7

                                                                                                    I looked at the logo, thought “why is the logo two turtles fucking?”, then reasoned “nah, it’s just a turtle and a shadow, and someone just didn’t think about it.”

                                                                                                    I’m…not shocked as such to learn that my first interpretation was correct, but I’m definitely disappointed.

                                                                                                    1. 5

                                                                                                      Oh wow, new levels of awkward humour from the FSF….

                                                                                                      1. 4

                                                                                                        This is an old level.

                                                                                                      2. 3

                                                                                                        Yeah, I immediately had a WTF moment seeing the turtles.

                                                                                                        1. 3

                                                                                                          Heh, that’s wonderful. I’d like see more software projects with the sense of playfulness that leads them to have their logo be a pair of gay turtles fucking.

                                                                                                          1. 2

                                                                                                            :: facepalm ::

                                                                                                            The tools actually look really nice and they solve a real problem.

                                                                                                            now I am wondering how to actually get this changed so I can, e.g., share the project with others who might be a little straight-laced.

                                                                                                            1. 1

                                                                                                              Ask for a commercial version?

                                                                                                              1. 1

                                                                                                                … no? I don’t just use software at work. I have a broad enough community outside of commerce that could use good tools.

                                                                                                              2. 1

                                                                                                                Maybe they would prefer SQLFairy if two gay turtles are too much?

                                                                                                                Or not tell anyone the FAQ explicitly mentions Fred and George are homosexual.

                                                                                                              3. 1

                                                                                                                That’s weird, why is the logo on the Savannah page a microphone then?

                                                                                                                1. 4

                                                                                                                  Because savannah has also perfected the art of tedious and confusing navigation.

                                                                                                                  See: https://www.gnu.org/software/recutils/

                                                                                                                  1. 1

                                                                                                                    No, I saw that page, I was just confused why there seem to be two logos, one “acceptable” the other probably some inside-joke.

                                                                                                              1. 10

                                                                                                                I work on a C/C++ compiler and I admit to not knowing all the ins and outs of C, despite working with it in various contexts over the past 20 years. I always have to look things up in the standard (which is a chore just to learn to read, let alone comprehend) and I always have to experiment with an existing compiler to understand behaviour.

                                                                                                                The list of things in this post is incredible and long, and expecting someone to know it all is nothing short of insane. (It’s also nowhere near complete.) If that’s what companies are looking for these days, then I guess either everyone is better than me or there are a lot of liars out there.

                                                                                                                The best thing that school taught me was that there is more out there than you can possibly know, and it’s perfectly fine to be able to say, “I don’t know”. I think it’s really terrible to expect everyone to be an expert in things, and even worse, to admonish them for asking questions to gain knowledge.