1. 3

    Probably read a bit about Elixir. Probably read a bit about systems (in the large, not computer systems). Probably finish up the Song of Roland. Probably play a bit of Xbox. Maybe fiddle a bit with the brand new iMac 2008 i bought over the holidays for dirt cheap. Definitely chores and housework and upkeep. There’s a party my kids are attending, this means i also am attending. I’m decently sure i should buy food, even though we have enough canned goods to last us a good week and a half through a nuclear winter. Those are spoken for anyway, as #5 is expected early March. Weekends are too short.

    1. 1

      Birthday parties are the worse. With 2 kids in school, 30ish kids per class, once the birthday party train starts the chances of having one every weekend are frightening.

      Also I really hate the 2h timeboxed format many places enforce

      1. 1

        My kids being homeschooled we don’t really have that kind of train, so there’s that! Having 4 soon 5, there’d be one every weekend for sure

    1. 54

      So, now, here’s the question: if you’re picking out a doctor, which one do you want to go to? The one who reads medical journals for fun, hones their craft constantly, and who volunteers at the free clinic sometimes…or the doctor who doesn’t do anything medicine-related after 5?

      Some people really like what they do for a living, and would do it even if they weren’t getting paid. I would venture to guess that those people, having both passion and more hours under their belt, are generally better at the activity in question.

      1. 88

        The one who is rested.

        I’ve been around the block often enough that I am not sure there is much correlation between number of hours someone put in programming and the quality of their output. I think it is far more important how you spend those hours while you are actually doing it.

        1. 27

          I’m not necessarily talking about someone who stays up til 2 every morning. I’m talking about the person who, when they have free time, decides to spend much of it honing their skills.

          1. 12

            Exactly. What’s favoring your statement is simply experience. They’re acquiring more experience. That might make them better at the job.

            Doesn’t necessarily make them the best hire if considering many factors. For instance, the ones coding all the time might be more likely to jump ship than the person that wants work-life balance to spend time with kids.

            1. 10

              What if they spend their time honing their skills at work?

              1. 9

                I don’t know about the realities of the medical profession so I can’t extend the metaphor, but in the tech industry as it is, the amount of experience someone has programming and their value to a company have nothing to do with each other after a point. Learning new skills and keeping up with the industry is good and necessary of course, which is why many professions mandate it for certification (law comes to mind). I’d love to see part of each work month go towards time that can be spent doing just that.

                But to be honest? I don’t care if my doctor spends 2 hours a night researching new diseases unless that’s what I’m going to them for. I care about the quality of care, bedside manner, etc. Not sure that’s correlated to hours worked.

                1. 4

                  If you’re treating a common cold, it’s likely that the extra hours sunk into study don’t affect the outcomes. You might just end up with a very unrelatable doctor, which could affect bedside manners, patient trust, and compliance. It really depends on the problem space - something that I would venture is true for programmers, too.

                  1. 3

                    Why do you assume that reading medical journals out of interest leads to unrelatability?

                    1. 3

                      How many patients read medical journals? It’s more likely that someone is more relatable to the average person if they do things that an average person also does.

                      1. 5

                        How many average people go to medical school? :)

                        1. -1

                          Doctors are people, even if slightly superior in a few ways. They should be doing roughly the same things as people do.

                          1. 2

                            even if slightly superior in a few ways

                            no

                            1. 1

                              And reading interesting things isn’t something that people do?

                    2. 2

                      I don’t really care what my doctor does in her free time because in my experience this has no bearing on the care I receive.

                      1. 4

                        How can you rely on your experience in this area? How many doctors do you know well enough to know what they do in their spare time and how effective they are as a doctor?

                        For me, that’s really small and I don’t think it’s useful enough to generalize or predict anything.

                        Maybe your experience is really different. If so, you may want to describe it so your statement has credibility and usefulness.

                        1. 6

                          If my anecdote is too small to predict anything than why is the assumption implicit in the generalization at all reliable for you? Why the double standard? I personally just don’t care or worry about it. Same is true of the people who write my software. If the software’s good, it’s good. I could care less if in your free time you prefer doing drugs and making wicker baskets to having arguments on hacker news and writing IRC bots. And vise versa, if your software isn’t good, that’s that, and I don’t start asking if the person writing it just isn’t dedicated enough.

                          1. 1

                            I think for me, it’s the different between a logical thought experiment about general guesses vs a real statement of value.

                            I like pondering hypotheticals but would have reacted poorly if GP had said “doctors who volunteer are better” without rationale or reasoning. I like an invitation to provide evidence or data but get put off by a likely baseless statement (“My experience is that all doctors are secretly purple inside their skin even though I only know two doctors and have never looked under their skin”).

                            1. 0

                              My anecdote is at least based in reality. I can’t say the same for the generalization, whose assumption lacks evidence of any sort.

                    3. 9

                      The one who is rested.

                      This is misdirection and does not address the original comment.

                      As a separate point, it is of course valid and true.

                      But there is an implied “all others things being equal” in the original claim. So now…

                      [Assuming they’re both equally rested], if you’re picking out a doctor, which one do you want to go to? The one who reads medical journals for fun, hones their craft constantly, ….

                      That is the question you’re on the hook for answering. Imo the answer is clear.

                      1. 1

                        I don’t believe that finishing at 5pm means you don’t “reads medical journals for fun, hones their craft constantly”. It just means you are not doing it after 5pm. My point is that how much effort someone puts into it does not really tell me anything by itself because I cannot tell what kind of effort it is. I’ve seen enough passionate idiots and occasionally was one, who constantly busied themselves with their craft without advancing much because it really matters what and how you do it. It is very easy to become stupider by not resting enough and not giving time to your mind to process everything.

                        So if the only thing I know is that one doctor is very busy and the other one isn’t, I WILL go with the rested one because if nothing else I expect them to make fewer errors.

                        P.S: I know doctors were here only for illustration purposes, but as it happens, I actually just recently experienced a local medical expert screwing up my mother’s examination exactly because he is too busy.

                        1. -1

                          The answer to that question is clear to everybody. I think it’s fine to treat it as a rhetorical question (therefore not answer it) and respond by (implicitly) pointing out that it’s unlikely that both are equally rested.

                        2. 5

                          The one who is rested and loves medicine. These aren’t exclusive options.

                          Here’s my preference:

                          1. rested and loves medicine
                          2. rested or loves medicine
                          3. neutral
                          4. tired
                          5. hates medicine

                          Of course there are many more factors that may be more important so my rank assumes everything else being equal.

                          1. 8

                            I work on multiple side projects and get more than enough sleep. If doing things outside of work cuts into your sleep, perhaps the problem is your job.

                            1. 11

                              Do you have children? In my experience they’re a great time sink…

                              1. 7

                                I don’t. Many friends do. But I feel the same way, at least beyond infancy: If your work forces you to choose between sleeping and spending time with your children, maybe the problem is your job.

                                It should be possible to work, do things that you care about, and be well rested. The choice at the start of this thread should be a false one at a healthy workplace.

                                1. 4

                                  But, you see, even if you have a good job, you still have to choose between children and side projects…

                                  1. 6

                                    That’s not strictly true. Source: got 4 kids, soon 5.

                            2. 1

                              Ironically doctors work long shifts and crazy hours… always felt kinda bizarre to me, and you wonder if you’re really receiving the best care. But that’s the way it is.

                            3. 13

                              Perhaps it’s true that a programmer who codes in their spare time will be better than one who doesn’t. Let’s assume that’s true. It doesn’t answer whether it’s “OK” to only code at work.

                              Is it OK to say “I could be a better programmer if I coded 4 more hours a week, but then I’d be a worse parent, so I won’t”? Is it OK to choose to spend those hours volunteering, playing music, teaching English, being a foster parent, caring for elderly relatives, hiking, or whatever you think is fun or important?

                              Yes, absolutely it’s OK. And if anyone tells you it isn’t, they probably don’t have your best interests in mind.

                              1. 5

                                I think I didn’t phrase my argument well.

                                If someone codes/does whatever in their spare time – that is, in the time that is not dedicated to parenting or family obligations or whatever – then I would argue that they will often be better at that activity.

                                In other words “if, by choice, your casual hobby is also what you do at work, you will often be better at your job than someone who isn’t as interested.”

                                1. 2

                                  You forget that programming is a social activity, where code must almost always be reviewed and shared as a responsibility. And you forget that those who do nothing but spend all their time at their desk hacking at who cares what are usually not especially worldly and pleasant. Those who instead do things like

                                  • Go outside
                                  • Spend time with other people
                                  • Experience their life

                                  will often, for some reason, become more rounded individuals, who will usually handle the social element of coding better; and we all know that social element is a big one.

                                2. 7

                                  It’s absolutely ok to be competent but not outstanding. But if you look for outstanding people in their fields, I strongly you will find that they don’t settle for doing just what is required by their jobs.

                                  Are you looking for competence or excellence?

                                  1. 3

                                    Are you looking for competence or excellence?

                                    I think in the context of this conversation the question is “do you aspire to be competent or excellent?”

                                    Both are valid aspirations when you consider the trade offs with the other parts of your life. And it’s fine to make different choices at different stages of your life.

                                    Are you looking for competence or excellence?

                                    Circling back, I think one reason I react strongly here is that my first full-time development job was at a place with a culture of constant overtime. They had a local reputation for burning people out. And to this day, their job postings ask for “passionate” developers - a code word, in their case, for “willing to be exploited”.

                                    So I’m resistant to a programmer culture that says you have to work all the time or you’re not good. I’ve been avoiding that mentality at every job since then (10 years) and am doing fine.

                                    Finally, I think become excellent during work hours is an underrated strategy. You probably work 40 hours a week. I seriously doubt you can spend 40 additional hours of free time programming. So a developer who spends the work week building interesting stuff with smart people, then chills out, is going to grow faster than one who spends the work week doing boring stuff and attending meetings, then crams in 4 extra hours of fun coding.

                                    1. 3

                                      IMO excellence is mostly diminished by the pace of work, not the degree of experience. less experienced coders/doctors may take more time to do a thing properly, and they should have the time to do that. they should not be expected to learn things off the job so they can churn out more commits or patients.

                                      1. 2

                                        I’m not sure I understand the response. First: Why would you expect world class work from someone less experienced in any circumstances?

                                        Second: I think you misunderstood the argument. If someone is self motivated enough to choose to spend time playing with code outside of work, I would expect that to correlate strongly with excellence.

                                        Most jobs don’t need excellence, just competence.

                                        1. 1

                                          yeah i think i misunderstood: you were talking about the excellence of the worker, i was talking about the excellence of the product.

                                  2. 27

                                    I would venture to guess that those people, having both passion and more hours under their belt, are generally better at the activity in question.

                                    I’m actually not so sure about this.

                                    First, I’ve seen plenty of “passionate” people with many “hours under their belt” who were terrible people to work with. Some (not all) are extremely opinionated, arrogant, blind to the possibility there are other ways than $my_favourite_way, and generally just complete twats and impossible to work with.

                                    Second, I’ve worked with plenty of “I program only at my job”-programmers who are actually pretty good at their jobs.

                                    Most people would like to be better at their jobs, but not uses the same approach. Focusing just on “has open source contributions” or “spends evenings programming in $hip_new_language” seems rather short-sighted to me. In spite of having plenty of OSS contributions, I’m not so sure it actually made me a significantly better programmer (but perhaps it did? Hard to tell for sure).

                                    Either way, I think things are a lot more nuanced than you comment.

                                    1. 3

                                      Indeed not all practice is productive. Some of the worst artists I’ve ever seen have put in an ungodly amount of hours practicing with no mind in their head.

                                      1. 2

                                        The problem here is that I believe to be able to generate quality hours of practise, you still need an accumulation of many hours.

                                        Now, it’s possible to be stuck in a “spending many hours mindlessly with no good progress” rut - entirely possible. Honest self-evaluation, modifying one’s goals, fixing one’s learning methods, are all difficult challenges. But who can go from beginner/amateur to “efficient, high-quality practise” without many, many hours of junk practise? You need repetitions to even be able to recognize the difference between low quality and high quality practise.

                                        I can do certain activities in moderation now - I know that 2 effective sessions where I apply a strong effort serves me more than phoning it in 14 times a week, for example. But I needed to go beyond moderation, into obsession, to learn that.

                                        The strange thing is that I’m still not sure whether this is universal. People who are competent don’t really like admitting, or selectively forget their history of obsession - or they truly never had one. Can one get good something by having their very first practise sessions be high quality, and sustain that indefinitely? How can you start off spending high quality practise time if you’re new to something?

                                      2. 4

                                        First, I’ve seen plenty of “passionate” people with many “hours under their belt” who were terrible people to work with.

                                        Sure, but I have seen people who punch out on time that were terrible to work with. Sturgeons law applies here.

                                        1. 2

                                          The question is if there is a correlation or even causation between after-work-work and skill or productivity. Lorddimwit is essentially asking if you believe that there is a correlation.

                                        2. 8

                                          I had a doctor that would do things like volunteer for Doctors without Borders. You could get him on the phone for a quick sense of if it’s serious enough to come in. But you know what, he is so good he isn’t taking patients and likely won’t be for a long time. He doesn’t want to rushed, hurried, or be unable to give each patient the time and attention they deserve.

                                          It’s important not do more than you have time to do. Burnout and spreading yourself too thin is how mistakes and lower quality care happens.

                                          1. 4

                                            You’re missing the point. What your doctor does on the weekend is none of your business, and you have no right to know what that even is, let along use it to help your doctor-shopping.

                                            1. 2

                                              I always hire the one with the home lab, the one with the open source hobby, etc.

                                              1. 2

                                                If we were to do a more fair analogy here, it would be.

                                                If you’re picking out a doctor to take care of a sick child, which one do you want to go to? The one who reads about cutting edge research and will try to test the child over all the sickness du jour that he saw on medical journals so he can brag with his fellow doctors in his doctor meet-ups about all the cool stuff he does OR the kind family doctor you know and love and treats your kid well.

                                                When we talk about “coding outside of work” we’re not usually talking about people who reads articles every now and then, we’re talking about the typical tech obsessed developer, which doesn’t correlate with a higher productivity developer from a business standpoint unless yous business is to write prototypes in new languages.

                                                Besides, for more noble that volunteering for a free clinic sometimes might be, this won’t give a real cutting edge for the professional, they will spend most of the time treating the same diseases they would treat on their normal working hours.

                                                LASTLY a dr. job is VERY different from an engineer job, and if an engineer isn’t already learning and honing their craft at work, they have a shitty job and should quit.

                                                1. 2

                                                  There’s a false implication that what a software engineer does is as difficult as what a doctor does which is quite far from the truth.

                                                  Becoming a doctor requires a doctorates degree whereas some software engineers don’t have any degree at all. There’s a much higher bar for who becomes a doctor, and the work they do impacts other humans in more profound ways more directly.

                                                  1. 6

                                                    There’s a much higher bar for who becomes a doctor

                                                    How much of this is because of professional license requirements being used to deflate the number of doctors and keep salaries high?

                                                    While I don’t disagree that doctors require advanced education, it seems like a streak of protectionism runs through the field.

                                                    1. 1

                                                      Not sure TBH. What I can say is that my A&P class was harder than anything I’ve ever done in Tech. And that’s year 1 or 2 for a med student.

                                                    2. 1

                                                      Becoming a doctor requires a doctorates degree

                                                      That’s not what a doctorate means at all. A doctorate is a research degree. Becoming a medical doctor requires an MB/BCh (Bachelor of Medicine/Bachelor of Surgery) or equivalent, not a doctoral degree.

                                                      1. 1

                                                        In America you need a Professional Doctorates in Medicine. You’re right though that it is not the same thing a Research Doctorate. Also TIL it’s a Bachelor’s of Medicine or a Bachelor’s of Surgery in (seemingly most) other countries.

                                                        1. 2

                                                          Oh really? That’s so weird, I never knew that. But I guess it fits with America also requiring a professional doctorate to study law as well. America seems (from my very non-American perspective) to have a bit of an issue with degree inflation.

                                                          1. 1

                                                            School in America is basically a scam you’re required to participate in if you want money, so you’re not wrong :)

                                                    3. 1

                                                      Why would I ‘pick out’ a doctor? I go to my local GP and if they refer me to a specialist I’ll go to the specialist they refer me to.

                                                      1. 1

                                                        Well, programming is not brain surgery. I’d argue that programming is more like tying shoelaces.

                                                        1. 1

                                                          This question might be a wrong one to ask as the comparison to software engineering.

                                                          First, you don’t know which doctors read medical journals for fun, nor hone their craft constantly. If you would ask them that, remember what Dr House said: “All people lie” :) The effect you’re trying to measure (passion and more hours under their belt) is something observable (at least for doctors) through recommendation – most of the people would visit a doctor they got good recommendations for.

                                                          Second, medical profession is a lone wolf profession, which in SE translates to a “hero developer” mentality, something that is quite devastating. We work in teams (at least, huge majority of software engineers), and the major strength doesn’t come from a single persons excellence, but from the ability to work in a team, offer understanding, and deliver maintainable system.

                                                          Finally, the question is posed in a black-white fashion, assuming the situation is either/or. I agree that passion and experience are important factors for excellence, but it is not an implication that after work time spent on coding means more passion or experience, as there are so many other factors that influence our daily routines and our wants (kids, taking care of ill family members, doing community work, having a second job, …).

                                                          1. 1

                                                            The doctor question actually is pretty relevant. One would think mortality rates would be lower for experienced doctors, but the opposite is true: you’re better off (statistically) going to a younger doctor, because even those older doctors who try to keep up with the literature do not manage to update their understanding of the whole of medicine. Young doctors just recently had about a decade of the collectively-understood current best understanding of medicine crammed into their head – plus some more about their particular specialty – and they are generally both up to date and well-balanced. Once out of school, doctors get more selective about their favorite subjects, and the subjects they don’t like so much become blind spots.

                                                            Software developers who study on their own rarely have a well-rounded view of the domain, but neither do devs who just graduated from school. Where I went, we at least had required courses in project management, digital logic, and a handful of distinct languages (so somebody with a degree could draw out a gate-wise 4-bit CPU with microcode and write a straightforward compiler for it), but our language survey course (despite best efforts) was sort of a joke because it was only a single semester, and students graduated writing passable code in only java, c, and sql. A lot of schools stick closer to the standardized curriculum and are basically just java bootcamps, despite being regular degree programs at ordinary liberal arts universities. Self-study, if done well, can fill in some of the gaps left by necessity in a four year curriculum.

                                                            1. 1

                                                              Experienced surgeons get the more difficult cases, which would also explain worse survival stats.

                                                              1. 1

                                                                I had the impression that this particular statistic was about GPs but I might be misremembering. (I can’t even remember where I heard it, so it might even have been debunked!)

                                                                1. 1

                                                                  For GPs it does sound plausible; outside hospitals, most work long hours without a second opinion to keep their mind straight. That’s a hard situation to maintain skills in.

                                                            2. 1

                                                              Hmm all else being equal the one who has more experience. However in practice all else is not equal…

                                                              1. 0

                                                                And experience in what? The doctor who explains what is happening in terms that I, a layperson, can understand, is far more valuable to me than someone who writes me a prescription and dismisses me, regardless of how many studies they’ve read or even conducted.

                                                            1. 2

                                                              I find this to be true for words in general. Well. A lot of them, anyway. Their meaning depend heavily on context.

                                                              1. 7

                                                                I don’t want to be the one debugging a service that refuses to boot up in the middle of a dog-fight :|

                                                                Now every F-16 will need a PRE on-board (plane reliability engineer).

                                                                1. 8

                                                                  R2 units for all!

                                                                  1. 1

                                                                    You know what? It all finally makes sense!

                                                                1. 13

                                                                  I still don’t get the purpose of running k8s on F-16. If it was for a show-off, then it’s a pricey one, as it took 45 days to have it running, and probably took a couple of developers. The whole article makes me a bit uneasy, as the whole premise is: we’re now using k8s and istio, without revealing why it was needed in the first place, and what problem they wanted to solve. In addition, seems there are 100k people employed there. Thus, I’d assume they all have different requirements from the service – meaning running those k8s cluster(s) will require quite a lot of man power.

                                                                  1. 5

                                                                    They said it was to avoid vendor lock-in, since now their code can run in any cloud.

                                                                    1. 8

                                                                      … as well as in the clouds.

                                                                      1. 2

                                                                        And as it is known, planes are things that can occasionally run into clouds. It’s only logical.

                                                                      2. 5

                                                                        Which doesn’t make sense to me. At least, I don’t expect an F-16 to be network connected while in flight, let alone offloading computation to the cloud. Unless an F-16 runs something akin to a PaaS service, but even that sounds… unnecessarily complicated?

                                                                        1. 2

                                                                          Exactly! Offloading any type of computation to the cloud means it’s subject of all dangers of asynchronous communication, which in other words may mean we never get a response. Which in other words mean that a big chunk of metal, loaded with weapons may miss an important computation mid flight. Dunno, every aspect of it seems unnecessarily complicated – I wouldn’t trust any of these machines when in the sky, as there are so many dimensions it can go wrong.

                                                                    1. 4

                                                                      I find that my single most useful skill as a programmer, excluding any and all social aspects of software being a community endeavor, is my ability to read, understand, and navigate code that is not mine. I put those three together because to trace a program, you need to be able to understand what file to jump to next. Also to know what to change in the program such that it can do what you mean it to, without looking like the Potato Jesus restoration project.

                                                                      1. 1

                                                                        For those to whom “Potato Jesus Restoration” is not obvious, it’s a reference to a botched restoration of a painting. https://en.wikipedia.org/wiki/Ecce_Homo_(Mart%C3%ADnez_and_Gim%C3%A9nez,_Borja)#Failed_restoration_attempt_and_internet_phenomenon

                                                                      1. 2

                                                                        I’ve been using xo/xo for over a year now on my team’s two biggest projects at work. It’s been great – even if the error messaging isn’t super mature. I see little value in using Go for the improved type-safety on Ruby/Python/Node.js just to throw it all with a dynamic ORM layer.

                                                                        1. 1

                                                                          I had never seen xo/xo. Yea, now I’m confused – looks very similar. At a first glance do you see any obvious differences?

                                                                          1. 2

                                                                            xo supports more dbs, for one.

                                                                            1. 1

                                                                              xo/xo isn’t infinitely flexible but you specify the templates to use to generate code for each SQL flavor. We’ve had to heavily augment xo/xo’s default templates since they didn’t provide things like *GetMany or *BulkUpsert. At this point I think the template is definitely more original than default. This in turn meant we had to build our own tooling for list filtering that outputs a squirrel struct. Unfortunately, this layer is dynamic currently because the original version of the code was in Node.js and the API for filtering was just sequelize’s JSON filter objects.

                                                                              We haven’t yet gotten into code generation for MySQL but it’s something we’ll be looking into as an optional db backend.

                                                                          1. 4

                                                                            I used to have a special email address that would forward to sms for my own purpose; it was pretty useful when I was The IT Department And Also Software Development Department at a small business.

                                                                            1. 2

                                                                              I can also recommend the Block Site extension. I develop a muscle memory rather fast and this is a good way to prevent opening certain sites without even having the motivation to do so.

                                                                              1. 5

                                                                                Hi, is this the “Accidental Ctrl+T F+Enter Facebook Tab Anonymous” group?

                                                                                1. 3

                                                                                  Firefox containers also work like this. Just put all your “social” websites in a container and then when you try to go to them it gives you a popup. You just press enter again to bypass it, but it’s enough to make me close the tab.

                                                                                  1. 2

                                                                                    I looked it up and on the first look it looks awesome, thanks for informing me. I really should give Firefox another go (as I elaborated recently).

                                                                                1. 5

                                                                                  I’ll taxi around a bit for offspring extracurriculars, food, and possibly random things needed for part 2:

                                                                                  Prepping room for kid #4 and kid #5 to cohabit, thus finalizing a room shuffle made so we could optimize our use of space in the house so that:

                                                                                  We reclaim the complete basement as a grownup space, which will require me to put away and/or donate a vast quantity of toys and useless doodads.

                                                                                  The remaining time will be allocated to, in order of urgency: quality time with my significant other, that contract I need to continue/finish, chores, entertainment, and rest.

                                                                                  1. 2

                                                                                    For work, probably a lot of code reviews and facilitation and mentoring, because reasons.

                                                                                    I also have a side gig where I’m trying to fix the performance of an R app which is, in good part, a database problem from where i stand. The other part is fixing the output so that it’s less confusing, which i suck more at and am less interested in.

                                                                                    Whatever free time i have left will be spent accidentally learning data science stuff, preparing the house for the arrival of my fifth kid in March, and wondering why i have so little free time and why am i so tired.

                                                                                    1. 1

                                                                                      Fifth kid! I thought this didn’t happen anymore.

                                                                                    1. 2

                                                                                      I track what I’m doing through making a posteriori calendar events on a caldav server. I track a prioritized list of things I want to do in caldav tasks.

                                                                                      1. 4

                                                                                        Companies defeat this using open floor plans, no? Otherwise super cool.

                                                                                        1. 3

                                                                                          I’m surprised. I’ve seen misleading Kafka docs before (claims to support exactly once delivery but small print saying something like exactly once delivery semantics for idempotent processing), but I actually assumed ordering within a partition worked. I’ve used NSQ for years and I’ve always pointed out in comparisons that Kafka has more guarantees about your data so Kafka is the right tool if you need those guarantees.

                                                                                          Now I’ll think that much harder about using it.

                                                                                          1. 1

                                                                                            For idempotent processing, you just need at least once. Is that what they meant?

                                                                                            1. 1

                                                                                              That’s what i get from it. I mean, if message processing is idempotent, you don’t really care about exactly once, just as long as it is at least once.

                                                                                              1. 1

                                                                                                I haven’t seen “at least once” and “exactly once” used equivalently in the Kafka docs, but “exactly once” does have subtly specific meaning.

                                                                                                The major asterisk is that it only applies when consuming from and producing back to Kafka itself. Note that “committing your offsets” is a form of producing, as these are stored in the special __consumer_offsets topic. Essentially you wrap the commit of your offsets and the produce in a transaction so that both are persisted, or neither. This allows you to, say, relay messages from one topic to another exactly once. It’s not magic, though — if the processing of the messages has side effects those may be repeated!

                                                                                                https://kafka.apache.org/documentation/#upgrade_11_exactly_once_semantics

                                                                                              2. 1

                                                                                                Kafka is extremely complex and that sort of thing makes me very uncomfortable with any guarantees they put on the tin since there always seems to be a lot of asterisks on guarantees in extremely complex things.

                                                                                              1. 4

                                                                                                The city where I live allows for a maximum of two dogs per household. Three dogs, as far as the city is concerned, is too many dogs.

                                                                                                1. 5

                                                                                                  Time for regime change.

                                                                                                  1. 3

                                                                                                    Where is that?

                                                                                                    In the US, limits on the number of dogs in a household were struck down in a district court decision a long time ago but many cities still have the law on the books and enforce it tactically, knowing that not a lot of people would try to fight it despite a precedent that may or may not apply in their judicial district.

                                                                                                    1. 2

                                                                                                      That sounds familiar, but a district court would only have impact on…well, the district. If it had then been appealed and denied ceriorari at both the appellate and Supreme Court level, it’d (within at least the narrow confines of however the decision was written) potentially have national appeal, but otherwise, it’d have been a local decision. Do you know the case, or anything about it?

                                                                                                      1. 1

                                                                                                        I may have misremembered the scope. I thought it was a federal court decision, but it appears that it was a Pennsylvania Commonwealth Court decision. So, it only applies to PA.

                                                                                                        http://www.naiaonline.org/articles/article/pennsylvania-court-strikes-down-ordinance-limiting-number-of-cats-per-resid

                                                                                                        There are other cases, such as one in Minnesota at the MN state level, too. I know that there is not case law declaring such laws unconstitutional in Kentucky, as an acquaintance of ours lives just outside of Louisville because Louisville has limit and breed laws that are apparently aggressive enforced. A contact in the metro government there confirmed this.

                                                                                                        Breed clubs and responsible breeders have better info on this, such as on https://omalmalamutes.com/omal/doglimits.htm, from an older AKC bulletin on the subject:

                                                                                                        Several courts have agreed that limit laws are unjust. In 1994 the Commonwealth of Pennsylvania struck down an ordinance enacted by the Borough of Carnegie that limited residents to five cats or dogs per household (Commonwealth of Pennsylvania v. Creighton, 1994). Similarly, a two-dog limit in Sauk Rapids, Minnesota was challenged and ruled unconstitutional (Holt v. City of Sauk Rapids, 1997).

                                                                                                        The modern AKC position is documented in http://images.akc.org/pdf/GLEG02.pdf. More info here: https://animallawcoalition.com/are-you-a-victim-of-pet-limits/.

                                                                                                        Source: family breeds and I’ve had litters in my house yearly for the last several years. Entering it by relationship, I’ve covered all of my bases. Limit laws are still on the books in most municipalities, preferring citation of case law should the educated plaintiff take the matter to court. Uneducated law enforcement presents a risk to dogs with complex medical and behavioral needs.

                                                                                                    2. 1

                                                                                                      Considering carbon footprint impact of dogs I would limit myself without waiting for the city to enforce.

                                                                                                    1. 15

                                                                                                      There’s something cool about having a whole community on one machine. It’s like we’re all on one space-ship. We share the same silicon. The bits stay on the mothership.

                                                                                                      1. 7

                                                                                                        If you are on the same machine, finger and .plan work just as well, no need to reinvent them. ;)

                                                                                                        1. 3

                                                                                                          The beautiful thing about the tilde-verse, which you’d never know until you have an account there and use it, is that it’s like a giant art experiment.

                                                                                                          People build things out of sheer whimsy, and other people use them and share in that whimsy. The result can often be quite beautiful in ways that are hard to find on the larger intertubes.

                                                                                                          This is a fine example.

                                                                                                          Could you use plan and finger? Kind of, but that wouldn’t create a timeline like this does, or collect all the .plans together in a ‘feed’.

                                                                                                          1. 4

                                                                                                            Could you use plan and finger? Kind of, but that wouldn’t create a timeline like this does, or collect all the .plans together in a ‘feed’.

                                                                                                            There would definitely be value in building those things on top of .plan/finger.

                                                                                                            1. 1

                                                                                                              I disagree, but we’re getting into my personal ideas about what these things “should” be used for.

                                                                                                              In my experience, your .plan file is where you advertised who you were and what you worked on in a general sense. While you could make your .plan this incredibly long rambling affair, I feel like there are better mechanisms for doing this sort of thing, and Dustin has written one.

                                                                                                        2. 3

                                                                                                          You should check out cosmic.voyage. It’s quite literally what you’re describing.

                                                                                                          1. 2

                                                                                                            I’ve never heard of this, it sound amazing. Thanks for sharing :)

                                                                                                          2. 2

                                                                                                            This has fun privacy implications too. I’d like my social network to better model my actual meatspace social network. The problem, of course, is that people have many different meatspace social networks.

                                                                                                            1. 2

                                                                                                              Except the physics of computer security, esp covert/side channels, make that impossible. You’ll always be more private if your friends are in a room together instead of on a server. Especially if there’s obstacles to seeing or hearing things that people can optionally use.

                                                                                                          1. 4

                                                                                                            I’ve had trouble in Mac OS, this slowed down the terminal’s start time some. I’m pretty sure it’s not asdf’s problem specifically but it was a significant slowdown

                                                                                                            1. 2

                                                                                                              Is there an issue on the issue tracker for this? I think we recommend using brew --prefix or something like that in the docs for finding the right path, but it’s really slow. Much better to hardcode the path. I’ve got some plans to simplify asdf and make the install process easier.

                                                                                                            1. 9

                                                                                                              My wife and I are looking for inspiration for a family website and we’d like to see cool stuff around the internet.

                                                                                                              I’m only responding to voice my opinion that it’s immoral to publicize children’s lives, especially before they’re even born.

                                                                                                              I know a lot of sites that come to mind will be personal branding sites, but we’d be especially interested in cool concepts for family sites, too.

                                                                                                              I may as well. I prefer my own website; it’s free from modern WWW nonsense, which happens to be worse than classic WWW nonsense. Since I’m mentioning any, I also like Richard Stallman’s personal website.

                                                                                                              1. 3

                                                                                                                I’m only responding to voice my opinion that it’s immoral to publicize children’s lives, especially before they’re even born

                                                                                                                As am I, however since the birth of my Son, my wife and I have realised we’re firmly in the minority here. It can be difficult to keep pictures away from facebook et all as most people do not have similar concerns. However without more context a family website is a broad description that could cover lots of difficult scenario’s.

                                                                                                                1. 2

                                                                                                                  I have four kids, and I wish there was an easy way to keep tabs on my family (people getting married, having kids) without resorting to Facebook, with everything defaulting to private. And hopefully I could host it myself somewhere. Anyway. I see the use case. I want my not-tech-savvy aunts to be able to see pictures of my kids, because in pre-internet, I would just have mailed them pictures. There’s a private case.

                                                                                                                  1. 2

                                                                                                                    It’s an interesting problem, I tend to send pictures over whatsapp or icloud private shared albums. I’m not particularly happy with those either as one is linked to facebook and the other is still a massive corporate behemoth. I would love to try a private site with pictures behind a login but I fear that would be wasted effort for my non tech savvy side or even worse - I would be forever dealing with login issues for them!

                                                                                                                    As mentioned previously - I’m in the minority, lots of people are happy having everything in the open.

                                                                                                                    1. 1

                                                                                                                      because in pre-internet, I would just have mailed them pictures

                                                                                                                      Email?

                                                                                                                1. 4

                                                                                                                  Working on a library for doing deep copying in Go. We don’t need to do it often at $work, but when we do, it’s super inconvenient and error prone to write it out by hand. (Or, if that’s too annoying, we have hacks that just gob encode/decode to get a deep copy, when it works.)

                                                                                                                  The best library out there for this, as far as I can see, is copystructure. But it’s not particularly configurable and doesn’t help with unexported fields.

                                                                                                                  1. 1

                                                                                                                    I don’t program in Go. Can you please explain what an unexported field is. Also, just curious what problem space has you deep-copying data?

                                                                                                                    1. 2

                                                                                                                      It doesn’t really have anything to do with the problem space. You just occasionally want to be able to copy stuff, for example, when you want to ensure nothing shares any memory. Kubernetes has its own bespoke code generation tooling for this, and HashiCorp uses copystructure in a lot of their stuff AIUI.

                                                                                                                      But yeah, unexported fields just refer to the visibility of members in a struct. One can only access unexported fields within the same package in which the struct is defined. Reflection based tools normally respect this, but deep copying is often orthogonal to the visibility of struct fields, particularly since you might want to deep copy something that has unexported fields. Since copystructure doesn’t support this, you wind up having to annoying role your own manual and error prone deep copy implementation for structs with unexported fields, or you wind up just exporting stuff so that it plays nice, which obviously isn’t ideal.

                                                                                                                      1. 1

                                                                                                                        I wish there was an interface and/or de facto standard for this. Then you can just implement what it means for a thing to copy itself at that thing’s level, and anything wrapping that can just internally call the “Copy” of what they wrap.

                                                                                                                        1. 1

                                                                                                                          It’s tricky to just use interfaces to solve this problem. The first issue is that the natural type signature of a copy method is something like this:

                                                                                                                          func (t T) Copy() T
                                                                                                                          

                                                                                                                          But you can’t express that in Go in an interface, so you wind up with this:

                                                                                                                          type Copier interface {
                                                                                                                              Copy() interface{}
                                                                                                                          }
                                                                                                                          

                                                                                                                          … which is obviously less than ideal, and makes it a bit annoying to use.

                                                                                                                          Second issue is that even if you accept the interface{} here, it’s still a major pain to actually write out the implementation of it. It’s a place in the code that’s just waiting for hard to diagnose bugs and it’s hard to unit test effectively. The simple case where this falls over is when you add a new field to a struct. There’s nothing that will actually tell you that the new field also needs to be added to the Copy implementation for that type. You’ll only find out about it when some other piece of code uses the Copy method and a subtle bug crops up because your copy doesn’t include everything.

                                                                                                                          You can devise unit tests that will fail, but you need another piece of machinery. That is, you need something that says, “fail this test if this value has any zero values in it.” That way, you can write a test that asserts your Copy routine roundtrips correctly and will also fail if you add a new field to a struct but forget to update both the test and the Copy implementation.

                                                                                                                          My idea here is to take a page out of go-cmp’s book and look for methods with the type signature, func (t T) Copy() T and use that before falling back on to automatic reflection based machinery to do the copy. That way, types can precisely control how they are copied when necessary, but otherwise, a Copy will “just work” in the common case.

                                                                                                                        2. 1

                                                                                                                          Cool thanks. Ah it sounds like the problem space is distributed computing, or short lived tasks or containers in this case, which Go is suited for.

                                                                                                                          I do alot of web development and outside of maybe cloning an online Order or some basic strings I don’t do this much.

                                                                                                                          Recently the only copying I’ve done programmatically is to “clone” a tables from db server 1 to server 2 as apart of an adhoc task. Interestingly enough usually I do this via insert into select from statements, but recently learned of Federated tables in Mysql which make the cloning even task between distributed mysql instances easier. Again, in this case as you’ve noted sometimes cloning has shortfalls. In Mysql a Federated table has various limitations such as limited allowed DDL statements on the table, or certain password character limitations.

                                                                                                                        3. 1

                                                                                                                          An unexported field is basically a private field in a struct. Unexported fields are only visible within the package they are defined in.

                                                                                                                          1. 1

                                                                                                                            Thanks

                                                                                                                        4. 1

                                                                                                                          Oh, cool, so you’re still writing Go! Good to know. I somehow though you’re a Rust-only celebrity now ;D Good luck regardless, anywhere the Road takes you! :)

                                                                                                                          1. 1

                                                                                                                            Yeah I never stopped. I just don’t typically do it in my free time any more.

                                                                                                                            1. 1

                                                                                                                              Given your experience in both, I admit I’m now quite curious what are your thoughts on pros & cons of each? But no pressure or whatever; suppose people often ask you about this ;)

                                                                                                                              1. 13

                                                                                                                                That’s kind of a loaded question. :-) People don’t actually often ask me that question. A real answer is probably pretty involved. Personally, I think the most important benefit of Go is its “simplicity.”[1] And by that, I mean that it is very easy for people to hit the ground running with Go without too much fuss at all. There are a limited number of constructs available in the language, so it’s in general pretty rare to stumble into something that’s difficult to understand because of its abstraction. (My own experience supports the pithy phrase, “abstraction solves all problems, except for the problem of abstraction.”) If code is hard to understand, it is usually, at minimum, concrete, such that it doesn’t require thinking carefully through sophisticated type system shenanigans. The only truly complex Go code I run into is either deeply reflection based (which is pretty rare outside highly reusable shared libraries) or a mess of goroutines using a non-standard concurrency pattern. But I’ll take that over the pthreads code I’ve seen in C any day.

                                                                                                                                Of course, like any good trade off, its strength is also its weakness. When you bump into Go’s abstraction limits, it can sometimes be really annoying. For example, I often really want a generic Option type that encodes the possibility of absence—even if it’s only enforced at runtime—since it isn’t always the case that the zero value is a useful indicator of absence. e.g., Dave Cheney’s famous “functional options” article uses the fact that the default value of 0 can also have meaning in a particular domain, so it isn’t sufficient to treat 0 as “missing” (and thereby resort to some other default). This in turn serves as part of a motivation for avoiding configuration structs entirely. Of course, you wind up with more machinery, but this can be worth it for a highly reusable library.

                                                                                                                                Rust also has abstraction limits, but I very very rarely run into them in the work I do. Of course, those limits are much much higher than Go, and as a result, using the language is itself much more complex. I personally think it’s still comfortably less complex than using Haskell, and definitely less complex than using C++, but it’s pretty clear that it takes a lot more ramp up time to get started with Rust than it does Go. This has not only been echoed by many other people that have tried Rust (“I gave up a couple times before succeeding, and now writing Rust is not that hard” is a common story), but is also consistent with my own personal experience teaching both Go and Rust. I’ve helped people learn both, and the number of times I needed to go to a whiteboard and carefully explain a somewhat dense snippet of code is markedly different between the languages.

                                                                                                                                Obviously, this trade off is intentional. Rust isn’t complex for no good reason. There are super good reasons for almost all of its complexity, and they generally boil down to some combination of safety and performance. Go also values safety and performance, but not nearly to the degree that Rust does. In Rust, I can push a lot more invariants into the type system quite naturally and idiomatically, where as with Go, the language actively fights against encapsulation (in the “data hiding” sense) in a lot of circumstances. Again, this comes down to complexity. For example, it’s totally reasonable to want to write your own type that exposes a map-like interface—and maybe uses a map internally or maybe not—but this is just fundamentally impossible because the language blesses the map type with special syntax. You can see this clearly even when the standard library struggles with it, for example, the sync.Map type and its Range method. Moreover, if you’re hiding things, this completely destroys the utility of most of the ecosystem’s reflection based encoding/decoding infrastructure. You wind up having to write error-prone serialization goop if you want to hide your internals. (Error-prone because if the internals change, e.g., with an additional field, then you have to remember to update the serialization goop. It’s possible to write unit tests for this, and we have them at work, but that in turn requires knowing to add the field to the test to serialize in the first place. So we have test helpers for that which can check that all values in a particular type do NOT have the zero value. So if you add a new field, that test automatically fails.) So… encapsulation in Go is possible, you just wind up getting punished for it, so sometimes you invariably choose “encapsulation isn’t worth it” just because of how the language is designed, instead of what makes sense for you specific circumstances. The frequency with which this happens is annoying in my experience. In Rust, I almost never have to make this sacrifice; encapsulation is well supported and nearly effortless compared to Go. (I could articulate some cases where Rust punishes you too, but that gets into the weeds and they are fairly rare.)

                                                                                                                                [1] - I purposely use the word “simple” in quotes, because people love to imbue their own definition of what “simplicity” means. e.g., You’ll see plenty of people arguing that Haskell is actually “simpler” than Go just by comparing their core language specifications. e.g., The full generality of Haskell makes it “simple.” I don’t think this perspective is 100% wrong, but it just completely misses the very obvious point I’m trying to make and completely derails the conversation into a brain-dead definitional turf war. That is, I think it’s completely uncontroversial to state that, as an observation, it is much easier, in general, to read, write, learn and productively use Go than it is Haskell. I don’t give two poops why that is (“it’s because we don’t teach functional programming as a first language” is a common refrain) and I don’t care if it isn’t true in some cases, because, obviously, individuals vary.

                                                                                                                                1. 8

                                                                                                                                  This comment is far too good to be buried in a weekend update thread. :)

                                                                                                                                  1. 2

                                                                                                                                    Thanks a lot for the response! And for your time taken to write it. Sure, I know it’s kinda loaded ;) but of all the people, who could be better posed to try and answer it in a balanced way than you! ;) As such, it carries a lot of value and authority to me.

                                                                                                                                    Personally, I’m currently kinda licking my scars after a first stroll into the Rust land. What surprised me most, is I think that it felt more complex than C++ to me; but I’m kinda coming to terms with the fact that it may just be because how far I got in C++, and how used to it I’ve become. Also, I was taken by surprise by the fact, that my difficulties weren’t with borrow checker per se, but rather secondary and tertiary consequences of BC on the typesystem coming at me from the least expected angles. With all that said, and with your report as an important point, I’m kinda starting to think I may just need to come back to trying a few more times in future, until I’ll maybe grok it at some point. But also my appreciation for simplicity and readability of Go is reinforced by your explanations.

                                                                                                                                    One more question, if I may: would you risk comparing the languages on a scale of “malleability” (ease of change), when some new features require deep refactoring of existing codebase? Do you find Go easier, Rust more supportive (b/c invariants in types), or do those kinda balance in your mind? You can answer by PM, or plain refuse to, if you’re afraid of being quoted on this in flame wars ;)

                                                                                                                                    1. 2

                                                                                                                                      Personally, I’m currently kinda licking my scars after a first stroll into the Rust land.

                                                                                                                                      I think that’s okay! I’m aware of a lot of people bouncing off Rust, at least initially. But I’ve heard a lot of success stories where people come back to it and figure it out.

                                                                                                                                      What surprised me most, is I think that it felt more complex than C++ to me; but I’m kinda coming to terms with the fact that it may just be because how far I got in C++, and how used to it I’ve become.

                                                                                                                                      Possibly. I am not a C++ practitioner, so it’s hard for me to say too much. I would hazard a guess that the presence of ubiquitous UB would bring its complexity above Rust almost on its own. In most Rust code that I write, I don’t need to think about UB at all, and I probably write more unsafe than most (since a lot of my work is in core libraries). With that said, I think this is a big rabbit hole, because C also has lots of UB, and I could see an argument to be made that C is simpler than Rust in the same sense that Go is simpler than Rust. It’s a pretty hand wavy thing in general, and I think “unknown unknowns” probably plays into this quite a bit. That is, I think a lot of people who write C or C++ are probably not intimately familiar with the language lawyering necessary to think carefully about whether some piece of code is actually UB or not, so the presence of UB might not contribute to the perceived complexity of the language.

                                                                                                                                      C++ also has a lot of other crud in it, and its template system is, I think, at least as complex as Rust’s parametric polymorphism facilities. But alas, we could circle the drain on this one forever. :-)

                                                                                                                                      One more question, if I may: would you risk comparing the languages on a scale of “malleability” (ease of change), when some new features require deep refactoring of existing codebase? Do you find Go easier, Rust more supportive (b/c invariants in types), or do those kinda balance in your mind? You can answer by PM, or plain refuse to, if you’re afraid of being quoted on this in flame wars ;)

                                                                                                                                      Hmm, good question. I haven’t thought about this one as carefully as I’ve thought about my encapsulation issues detailed in the previous comment. I think both languages ultimately make refactoring substantially easier than languages without a static type system, at least in my experience. I realize reasonable people might disagree on this, but it’s been reinforced for me personally many times throughout the years.

                                                                                                                                      In terms of Rust vs Go… I guess I honestly feel like refactoring is generally pleasant in both languages. I suppose, as you’ve guessed, I have found Go a bit harder to refactor in some cases, but this mostly ties back into my encapsulation argument in the previous comment. That is, sometimes I’ll just give up on encapsulation completely in Go for a particular type, and just expose its internals. Even if I think it’s the “wrong” thing to do all else being equal, you really just do not want to fight the language too much, so you have to pick your battles. In some cases, an exposed representation can make it awfully difficult to rigorously enforce an invariant. Even something as simple as imposing a “fail fast” change where you check an invariant on some piece of data on access is hard when everything is exposed, because you can’t control the access in the first place.

                                                                                                                                      Anyway, that’s all I’ve got for now. Please accept my thoughts with an appropriate grain of salt. I’m waving my hands a fair amount here. :-)

                                                                                                                                      1. 2

                                                                                                                                        Thanks. As to UB, sure, that’s what finally scared me away from C++, but I started finding out about it only once I was quite deep, unfortunately :( And I too fully believe much too many people still don’t grasp well enough what it means. In part it feels to me like many people don’t want to believe; I assume in part being subconsciously afraid of losing so many years of experience when switching tech stacks. Also, before Rust, there was no serious alternative. So, personally, I too hope Rust would eventually replace C++.

                                                                                                                          1. 4

                                                                                                                            A shame that it focused more on the hardware side of things, instead of his experiences with Plan 9.

                                                                                                                            1. 2

                                                                                                                              Agreed. I wanted to hear about how you set up the whole cluster, how it runs, conceptually and effectively how do login and permissions work. I never could run a plan9 correctly, protecting the access to local resources by password.