1. 14

    Unhelpful article. Complains about gitflow, makes no real recommendations beyond “ask questions of your team”.

    1. 24

      The whole point of the article is to advocate spending significant time & effort on original thinking about what works for you and your group, and why - instead of copying a neatly-documented workflow you found on the internet.

      Given that, what other kind of recommendations could it possibly make?

      (nb: I have a preference but no strong opinions on the topic - deriving your own workflow is actually pretty expensive and you might want to spend those cycles elsewhere, but I’ve had good yield from the exercise in one team).

      1. 4

        encouraging your team to communicate is great! if that was the main point, then the article should have been titled “talk with your team” and been filled with techniques for better communication. but the article i read mainly complained about a git pattern that lots of people find useful.

        1. 4

          Why must every article critical of a topic take the paternal role of telling you what to do instead? Can’t you exercise the critical thinking yourself? There are likely hundreds of articles out there, some linked in this thread, about alternative version control workflows, and they’re not too hard to find. Flagged your reply series as “troll” because it adds nothing to the conversation except “the author didn’t write enough and so I didn’t like the article”.

          1. 4

            The point isn’t simply to communicate, the point is to critically think about the workflow. The blog post contains the author’s critical thoughts on the workflow, and encourages people to think critically about their own workflows. Asking questions of one’s team is really a means to that end rather than the end itself.

            1. 0

              Its easy to complain about something that’s causing you pain. Its harder and more useful to look for a better course of action that can alleviate the suffering. My problem with the article is that it complains alot about problems but talks very little about solutions.

              (The problems described are real, I’ve experienced them myself)

              1. 8

                While I generally agree with this, it is very important to see what is being criticised.

                git-flow is a heavy process that has to argue for its value at every corner. The “other option” is using unstructured branching and PRs to master.

                It’s a general problem that processes are argued for by pointing out the absence of a replacement. Some processes can be removed without replacement.

                1. 1

                  I disagree strongly with the idea that GitHub-style pull requests should ever be considered the ‘default’ workflow with git.

                  1. 1

                    I neither suggested one or mind which PR style you use.

                    1. 1

                      Well I extend that to all pull requests that aren’t git-pull-request. Sending patches is the default: it’s what git was designed around.

                    2. 1

                      What’s your thinking here? Or what are you advocating against? Can you point me towards any resources or your own thoughts on this?

                    3. 1

                      That’s a useful point, which would have been helpful if included in and expanded upon in the article. (Unless I missed it somehow?)

                      1. 4

                        On that level, I definitely agree with you.

                        But the article in the end does make a case for reflection and inspecting your process. I think it’s a bit much to ask for what is essentially an essay to cover all the corners.

            2. 2

              Please see my answer above for one very simple suggested workflow I’ve seen work well.

              I think you may be going too far by labeling this ’unhelpful” because there is in fact no one size fits all solution, and the author is right about that, but I agree it could certainly be more helpful by offering some potential starting points for a solution.

            1. 2

              akka streams has superb support for handling and creating many flavors of back pressure and very nice abstractions for data streams. I feel like the work I’ve done using akka streams is probably the most robust code I’ve ever written.

              1. 5

                I’m really impressed, both by the site, and the fact that the GDPR seems to be a very effective piece of legislation, that has been given real teeth!

                1. 2

                  Congrats! This is inspirational.

                  1. 2

                    I really want to dabble with the oculus SDK example code, but it doesn’t even build. Maybe I’ll try to figure out why. Other than that I plan to sit in a hammock and read about birds.

                    1. 11

                      This post resonated with me, but I have complicated feelings about it. I’ve done software for scientific research, health-tech, and adtech. It makes a difference if you believe that you work makes the world a better place.

                      What the article says about the toxic effect of building morally questionable products - that’s really true. Doing adtech and other “surveillance capitalism” work, I grew cynical. It became harder to think of myself as a “good” person. Eventually I quit and did something that made me feel like I was part of the solution, not the problem.

                      I went to work for a company that made software for neuroscience. It felt meaningful because I was writing code that supports scientific investigators trying to solve monstrous illnesses. I respect the people running the thing, and believe that their motives are fundamentally good. But because of issues with poor project management, I burnt out and left.

                      My new job in a telco is not as meaningful, but the work environment is more stable, people are kind and I feel productive again. Those are not small things.

                      1. 1

                        I love this article. I’ve experienced the pain its referring to.

                        1. 2

                          PG is just such an amazing piece of engineering. Always reliable and does what it needs to do.

                          1. 1

                            I think its my single favorite piece of open source software

                          1. 4

                            I really like these personal threads.

                            I’m planning to go see the movie The Sisters Brothers with my brother. It was great book, so I’m (naively?) hopeful it will be a great movie.

                            I started building an OpenBCI EEG interface and I want to test the leads and see the data coming back. if that all works, I’m going to assemble the 3D printed parts and try to record an EEG while I’m meditating. Should be fun!

                            1. 6

                              This is a great post and a great question and could be fodder for a whole book.

                              Process items:

                              • I stack the deck by picking interesting projects. If I’m bored by a project, I don’t do it as well
                              • avoid tarpits by speaking up if assigned unreasonable tasks.
                              • consistently break down large stories into small, discrete tasks. this gives everyone a sense of my progress and cadence
                              • working closely with the other folks on the team. If our pieces of code need to mesh, we need be on the same page, the sooner the better

                              Technical items:

                              • I use strongly typed languages that help me prevent bugs by using things like exhaustive pattern matching
                              • where ever possible, I write total functions and avoid partial functions
                              • Good testing / CI hygiene - I write tests that run with the build
                              • I avoid mutation because I’ve found it to be a large source of bugs
                              • I outsource the things that I’m not good at. Whenever possible, I use managed solutions like Heroku/Elastic Beanstalk, RDS, Cloudfront. (instead of managing servers and databases)
                              • I asked for, and received superior hardware. My work desktop has 8 cores and 32 GB of RAM
                              1. 2

                                another thing: productivity is a function of you and your environment. If you take a great engineer and put them in a terrible environment, they may be far less productive than a average engineer in an excellent environment. But at the next level are people who transform their environment to make it better, more supportive, more productive, more fun. But that’s a whole other subject!

                              1. 20

                                I like that the author disagrees politely, and works from the assumption that he’s coming at the problem from a different place. Its a well taken point that issues of scale and configuration management are important, but for many side projects and even full fledged startups, those considerations might be premature. Sometimes your energy might be better spent building product instead of infrastructure.

                                1. 11

                                  You know its a good story when In-Q-Tel is involved

                                  1. 8

                                    And they aren’t even the focus!

                                  1. 7

                                    I brew beer, I’ve been a craft beer fan for a long time (10+ years) and about two years ago I got a beginners kit from my partner, it escalated quite fast and now I brew 8 - 12 times a year in a small all in one brew system.

                                    I’ve mainly done clone recipes, but recently started designing my own ones.

                                    1. 2

                                      I love how brewing your own beer enriches the experience of drinking beer, just as cooking makes you enjoy food more because you understand and participate in the process, ingredients, work…

                                    1. 11

                                      Parenting my other full-time job. Rewarding and exhausting in equal measure; I’ll quickly say it is the most meaningful work I’ve ever done, and I was never someone who had to be a parent.

                                      Weight lifting I see a trainer once a week to check form/adjust programming/stay motivated, and go by myself once a week. I’ve progressed from stability to hypertrophy and am starting on power. This is huge progress after having my shoulder dislocated.

                                      Cooking right now I love grilling because I can be outside and cook for my family. I’d like to do more with the instant pot (brisket!) and learn how to cook some entrees indoors for wintertime.

                                      Video games playing Ori and the Blind Forest right now. Heroes of the Storm is my go-to for multiplayer.

                                      1. 1

                                        +1 for parenting. Its astonishing how hard and how fun it is to nurture a young person and their young mind!

                                      1. 2

                                        I like to go on bike rides with my kids. They’re 6 and 3, so I have a kid trailer I put them in. Recently I’ve started a daily meditation practice, which has been very rewarding.

                                        1. 3

                                          I don’t write C/C++ anymore so I can’t even say I have an opinion on the subject - but seeing the term “GOTO” made me instantly check to see what year this article was written.

                                          1. 1

                                            This paper is tagged “C”, so the Dijkstra paper predates it.

                                            1. 1

                                              Remember that when “goto considered harmful” was written you couldn’t take for granted control flow structures like if/else statements or true function (i.e., stack frame allocating) calls. He was saying don’t use goto to jump arbitrarily far in your code for control flow, like the equivalent of jumping into the middle of one function from another. It’s a strange interpretation that Dijkstra was saying don’t ever use goto even locally for function postambles and whatnot.

                                            1. 1

                                              I love this idea. If I were to make my own knowledge base, I think I’d try to use RDF

                                              1. 4

                                                I installed Magisk on my new Android (Gemini PDA) so I could install a self-signed trusted CA certificate and, using a VPN app called Postern, MITM all the HTTP(S) traffic with a Mac HTTP(S) proxy app called Charles, and finally, block hosts using an Android app called AdAway which provides a nice UI to manage /etc/hosts.

                                                It’s really disturbing the amount of tracking that’s baked into an Android installation with a few basic apps installed, and the effort required to stop it. I was thinking of doing a write-up on it but maybe no one would care.

                                                1. 2

                                                  I would care! show me how!

                                                1. 4

                                                  Building a multi-tenant job scheduler for an ETL pipeline. We need to strike a balance between reasonable resource utilization and fairness. We can’t have one user monopolizing all our resources. I was pretty surprised I couldn’t find a reasonable open source or COTS solution that I could just plug into our existing pipeline. Everything I saw was for some specific pipeline system.

                                                  1. 1

                                                    I think that’s because most pipelines should have some sort of workload management built into them. Like airflow has priority weight (which works fairly well if you build it into feedback loops, etc). What system(s) are you using in your pipeline?

                                                    1. 2

                                                      Airflow was actually the first workflow system we evaluated. We needed to trigger one-time jobs based on messages in a queue - i.e. kafka or SQS, and that seemed not at all straightforward to do at the time we looked (about two years ago). It seemed like you would have to have a long-running job that polled for messages.

                                                      The other thing is that the priority weighting needs to be dynamic - to support something like round-robin per customer. That also seemed like it would not be a good fit. The workflow system we’re currently using is nextflow but with a custom system to kick jobs off.

                                                  1. 1

                                                    Blackfynn is hiring. We power neuroscience by linking all kinds of data like EEG, fMRI, and pathology data, and organizing that data so that investigators can concentrate on doing science instead of tedious data management. We use Python & Scala, graph databases and Postgres. We work out of our office in Philadelphia. email me with any questions: jim@blackfynn.com