1.  

    Pretty standard stuff, and I admit to not reading it all since I’ve seen it so many times. However, the author is pushing his own work at the end:

    KRUG - Compiler-as-a-Service (CAAS) […] Krug is written as a REST API service, where each stage that is explained in this article is a route in the API.

    When I worked at IBM I looked into doing this, that is, a “compiler as a service”. As an idea, it only has appeal if you have never heard of anything else. The author gets are part of why it won’t work.

    There are obviously trade offs like latency between sending and receiving files over, as well as a lot of the design of the compiler has to be thought of differently to work in the context of API routes.

    The latency trade offs are immense. Front-end analysis is generally quite fast on a per file basis, even with C++. Throw in network latency and if you think compilation is slow now, just wait.

    That doesn’t begin to cover the real problems: intellectual property and whole program analysis. If you’re a company working on a product, how much do you trust constantly sending your source code to a third party? Is it really that horrible to run the compiler on your local machine (or, if you must, in a jail/container)? And then there’s the analysis of the whole program and link-time optimization. If you intend to do anything of that nature, you’ll be sending an awful lot of data. Is it going to analyze libraries as well? How about linking? If it intends to do any of that (which is where some big gains lie), then it will need the entire target machine. In that case, you have outsourced the build to someone else and there’s no point in running a service: you might as well just ship the bundled source over and have it run ‘make’ or whatever you’re using.

    1.  

      Wait, is @hyperpape actually the author of this? The user profile doesn’t suggest that they are, in fact, John Regehr.

      1. 4

        Does anyone actually use these metrics? I think it is in fact bad for the article, as it advertises it as “I promise it won’t waste too much of your time”. This also doesn’t include the time to read the comments, make your own research here and there, or write a reply, which could multiply this time by 5 easily. You can also read it as “Oh, only 2 minutes? That probably don’t go in the subject in depth”, or “20 minutes?? I won’t stay focused that long!”, making you skip the post even if it would have been a gold mine.

        It could also be that I’m totally unable to manage my own time, for which this info could be used :)

        1. 0

          It’s a fancy thing now days but I think it can be useful specially for people who follow a tight schedule.

          1. 4

            If that matters to you, then word count is more useful.

        1. 12

          Personally, I find reading time to be a ridiculous metric. I’d much rather see a word count, if anything at all.

          Reading time is nonsense because it is highly dependent on the nature of the material. I can usually tell in the first couple of paragraphs or sentences whether I’m going to skim it, breeze through it, pay attention to it, or study it. Those are all different reading speeds.

          I think about this in relation to physical printing. With that, I don’t care about word counts or reading time because I can estimate what kind of effort is required just by looking at it. On the web it might be nice to say, glance at the side bar to get an idea, but we’ve poisoned that with infinite scroll, “if you read that you may also like” grids, and endless pleas to upvote and subscribe to personal newsletters.

          The web is better off without this inanity.

          1. 17

            I think this is something every software developer should think about for a while.

            I believe the relative ease—not to mention the lack of tangible cost—of software updates has created a cultural laziness within the software engineering community.

            1. 2

              I’ve been thinking this a lot in the last few years, just about the industry in general. The ease & cheapness of “fixing” software is nice, but it effectively disincentivizes doing it right in the first place, so we just end up shipping enormous amounts of absolute garbage software. And it only seems to be getting worse, as far as I can tell.

            1. 8

              “… and, sadly, the rules are fairly complicated”

              Yeah, no shit. I teach C++ courses sometimes and explaining this to people is not fun. None of it is intuitive and most programmers will just ignore it.

              1. 15

                None of it is intuitive and most programmers will just ignore it.

                C++ in a nutshell.

                1. 2

                  I programmed C++ intensively from 2007-2013 or so. Then I left C++ for some time, due to jobs that required Java. At some point I wanted to get up to speed on the changes in C++ and bought Scott Meyer’s Effective Modern C++. When reading the book I remembered what a kludge C++ actually is and that despite ergonomic improvements, recent iterations of C++ added even more accidental complexity. I decided that from then onwards, I will only do C++ when I get paid for it.

                  (I occasionally do some C++ now for tinkering with Arduino. But it’s quite old-fashioned, because you can’t really afford to use templates extensively.)

                1. 15

                  Is there a story for this? All I see is a link to Twitter post by the author, who is promoting their own page, with a screenshot of what is ostensibly an email from Disqus.

                  In my mind, this is absolutely not appropriate for Lobste.rs.

                  1. 7

                    I wouldn’t mind it if the author wrote a piece discussing this in depth, but I agree that sharing unsourced tweets is possibly not a good route for this site to go down if we’re to retain a high signal-to-noize ratio.

                  1. 2

                    Just a friendly note: the text portion of the submission isn’t meant to mirror what the site says already. The story submission guidelines say this:

                    When submitting a URL, the text field is optional and should only be used when additional context or explanation of the URL is needed. Commentary or opinion should be reserved for a comment, so that it can be voted on separately from the story.

                    In the future, I would avoid adding explanation text, especially for authored submissions.

                    1. 2

                      I removed it, thanks.

                    1. 5

                      A wonderful cornucopia of things:

                      • Taxes
                      • Setting up a local xapian/omega instance and indexing my documents
                      • Finish reading a couple of books
                      • Maybe go for a bike ride if the weather isn’t terrible
                      1. 1

                        Please avoid linking to Twitter and instead link to the actual thing.

                        1. 2

                          Sorry about that. It actually doesn’t exist yet anywhere, so nothing to link to just yet. Was just excited to see it go.

                          I’ll try to create a node-ios repo this week with a decent readme and build steps.

                        1. 12

                          Picking up a new telescope tomorrow and getting back into a hobby I haven’t done in over 30 years. Taking a stab at astrophotography this time, too.

                          1. 1

                            please publish photos, instaling and from sky

                            1. 1

                              That’s really cool, what type of telescope were you thinking of getting?

                              1. 2

                                Not thinking about it, I’ve already got it. :) It’s waiting for me at the store. I was just waiting for the mount to come in.

                                I got a Meade 115mm Series 6000 ED Triplet APO with an iOptron CEM25P mount. Picking it up in the morning. It will probably be a bit until I actually take a useful picture with it, though.

                            1. 3

                              StGit is a command-line application that provides functionality similar to Quilt (i.e. pushing/popping patches to/from a stack), but using Git instead of diff and patch.

                              I don’t get a sense for what this does or why I would use it. So I checked the Quilt page…

                              Quilt allows you to easily manage large numbers of patches by keeping track of the changes each patch makes. Patches can be applied, un-applied, refreshed, and more.

                              …and I’m still confused.

                              1. 2

                                I agree it is not clear from the site, let me try to explain:

                                • It is like a lightweight alternative to one branch per feature.
                                • It is very nice for when usually you only do one commit per pull request.
                                • It very nice for when you are constantly testing combinations of features as it allows you to avoid creating all sorts of strange hybrid branches.

                                edit: I put a long explanation on my site https://acha.ninja/blog/stgit/ with some examples. Let me know if that explanation makes sense, or if it still is confusing.

                                1. 2

                                  Can you help me understand the “development branch” scenario in the tutorial? Is it saying that you’d do your work normally in plain git, and then kind of as a fancy interactive rebase do stg uncommit and then clean up the wip commits?

                                  Which I guess means this:

                                  Continue developing, and take advantage of e.g. stg goto or stg refresh –patch to stick updates in the right patch to begin with.

                                  Implies that once it’s broken out you can go edit whatever patch is interesting before squashing down to a reasonable patch set?

                                  Thanks, I find this really interesting but am having a hard time imaging my daily routine in the tool.

                                  1. 2

                                    I think you are understanding right. doing “stg uncommit –n N” turns the last N commits into patches on the stack, which I guess is sort of like a fancy interactive rebase.

                                    Once they are broken out like that you can indeed modify them and reorder them.

                                    1. 1

                                      Right on, I appreciate your help

                              1. 12

                                The paper is more substantive. It’s also pretty fun.

                                It is both stupidly impractical and surprisingly useful, offering an editing experience that is initially more enjoyable than LATEX and Word but is asymptotically more complicated than either.

                                That said, to me Word has provided both the most obnoxious editing experience complete with horrendous version control.

                                1. 4

                                  Actual link contained in the sub-tweet. It barely says anything and it’s nothing offical from Mozilla.

                                  As I, @friendlysock and others have implored others for a while: please do not link news. That’s not what this site is about, nor what it should be about. Other sites do news already. Lobste.rs shouldn’t. And it’s very rare that Twitter submissions are worthy.

                                  Here’s the full content of the article linked in the article that you eventually get to by following the submission (emphasis added). It’s extremely light. The quote making up the title isn’t even from someone at Mozilla. If what the title of the submission says is true, it would be helpful to see it from Mozilla itself, not an unsourced blurb from a writer on Fast Company.

                                  When Facebook users learned last March that the social media giant had given their sensitive information to political-data firm Cambridge Analytica, Mozilla (parent company of the security-focused browser Firefox) reacted fast: Within eight hours, the product team had built a browser extension called the Facebook Container. The plug-in, now the most popular browser extension Mozilla has ever built (1.5 million downloads and 500,000 monthly active users), prevents Facebook from trailing its users around the internet. Firefox Monitor, a service Mozilla launched in September, uses your email address to determine whether your personal info has been compromised in a breach. By summer 2019, the Firefox browser will also block, by default, all cross-site third-party trackers, strengthening privacy without your having to do a thing (unlike Firefox’s biggest competitor, Google Chrome). “We want to make it simple for people to create walls around data that’s important to them,” says Denelle Dixon, Mozilla’s COO.

                                  1. 1

                                    Actual link contained in the sub-tweet. It barely says anything and it’s nothing offical from Mozilla.

                                    Although Jen Simmons, the one making the quote is Designer Advocate at Mozilla.

                                    As I, @friendlysock and others have implored others for a while: please do not link news. That’s not what this site is about, nor what it should be about. Other sites do news already. Lobste.rs shouldn’t.

                                    Fair enough. Maybe we should add that to the story submission guidelines.

                                    1. 1

                                      Although Jen Simmons, the one making the quote is Designer Advocate at Mozilla.

                                      Maybe she’s being coy since she’s only quoting the article. Regardless, it’s not an official statement so it’s all conjecture at this point.

                                      Maybe we should add that to the story submission guidelines.

                                      This is a good point. We should talk about in the IRC channel.

                                  1. 37

                                    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. 24

                                      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. 12

                                        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. 4

                                            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. 2

                                              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.

                                              1. 3

                                                I suppose you’re not wrong, but on the other hand apathy and not caring is also quite toxic, IMHO.

                                                1. 2

                                                  Sure, don’t start casually keying peoples’ cars on the way in or whatever. Care about your work. Don’t try to fix things that are your boss’s (boss’s) job, though.

                                        2. 26

                                          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. 8

                                                  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. 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?

                                                        1. 1

                                                          The quirk is in an implementation; it was invented by the language creator and discovered by the user.

                                                          1. 1

                                                            What about the behavior of numbers? why isn’t that an implementation detail? if numbers are too natural for you then what about the behavior of sequences of numbers? doesn’t that seem a bit closer to an implementation detail?

                                                            1. 1

                                                              Whether numbers are an implementation detail is a question for theology 😀. Human understanding of them is a discovery.

                                                              1. 1

                                                                Whether numbers are an implementation detail is a question for theology

                                                                Hehe, I was actually heading in the direction that numbers are defined by humans and not by any divine entity and thus the way they behave is maybe just an implementation detail of how we defined them;)

                                                  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. 1

                                                        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. 2

                                                          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.

                                                      4. 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. 8

                                                            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.