Threads for migurski

  1. 6

    “Mcrib” is the best code name I’ve heard in a while.

    In a way it’s comforting that Slack, with these brilliant engineers, has these issues too. I mean, I know everyone does, but when a product I designed or worked on has an issue, I always beat myself up about it. Realizing I can make mistakes too and not be an imposter is a lesson I still haven’t fully learned after all these years.

    1. 21

      Its appropriate for a service called “mcrib” to be only intermittently available…

      1. 2

        Bravo.

        1. 2

          This is the greatest comment I have ever seen here.

        2. 3

          EVERYONE does!

          Let me tell you about some internal only post mortems (We call them COEs - Correction Of Error) that made my hair stand up :)

          And I guarantee you that every other BigCorp in existence has them too. Solving problems at crazy pants scale means that sometimes despite everyone’s best efforts you end up with disasters at said scale :)

          1. 2

            In a way it’s comforting that Slack, with these brilliant engineers, has these issues too.

            Haha! Not just Slack … literally every place I’ve worked at has had something like this.

          1. 3

            Fascinating implication for projects with different amounts of risk, expressed as sigma:

            So just as an example, if σ = 1.0, then we should give up at 320% of the original estimate. If we follow this policy, then we finish about 88% of all project.

            But if σ = 1.4, then we should give up at 72% of the original estimate, and if we do that, we finish only 41% of all projects.

            High risk projects should be abandoned at just two-thirds of their expected duration.

            1. 4

              Doesn’t work without JS… I assume because of the stupid loading circle and Google Analytics?

              Edit: Oh my bad, they decided to write the whole fronted of their blog in JS. What a world we live in.

              1. 5

                You also need to allow port 8080. You know, like a normal page of interweb text. 🙄

                1. 4

                  If I were to pastebin a few KiB of text, would you run it on your machine in an interpreter of my choice? It would be quite reasonable to turn down my offer, I think!

                  1. 3

                    I think it’s okay to have fun with your webpage! He wrote it that way because he wanted to play around with Vue.

                    1. 4

                      I admit my previous comment was rant-y. I think I just woke up on the wrong side of the bed today.

                      There is nothing wrong with at all. You should do what you want with your own website. But on that same token, surely some opposition is expected regardless of anything you post on the internet. In fairness, I didn’t make the best comment. I instead should’ve been constructive and said that perhaps he should consider a non-JS fallback, and given my POV of a” lot of websites use tons of JS, but only a small few actually completely bar you out for not having JS enabled”.

                      I dunno where I’m trying to go with this. So I’ll sum up with, at least don’t bar people from your website.

                      Edit: I mean “you” as in a general sense. Not like you, you, specifically.

                      1. 5

                        You have nothing to admit, you are 100% right. This website requires you to run code on your machine to display text. That’s really a problem.

                        On the other hand, if someone is willing to add so much complexity on top of a simple web page just to display text, then I probably don’t need to heard what that person has to say about software development.

                        1. 14

                          This whole comment thread is 1) off topic 2) boring and overdone 3) unnecessarily harsh toward the author. Read the article or don’t, we don’t need to dredge up this same tired argument every time a link to a JS-heavy blog gets posted. I thought it was an interesting article and I was looking forward to seeing the discussion but the majority of comments are about JavaScript.

                          1. 7

                            There’s a rather important point here : if you want your message to be heard, then make sure do not distract the attention with a fancy/hard to open envelope. If you want to message to be heard, always choose the most simple, direct way to send your message. (I feel that every single developer should be reminded of that regularly).

                            The reason why it is important to tell it every time, especially on a website dedicated to developers, is that maybe, just maybe, the original author is young and just doesn’t know there’s something else than JS and Chrome and Google. Maybe the author doesn’t know that there are many really valid reason to disable JS or not being able to run it. Education about diversity is utterly important in a world dedicated to monopolies. So those comments are needed.

                            Just ask yourself : how did multiple people realize there was a problem with this site ? Not because we inspect the code source of every single website but because we were surprised to not see any content here and investigated to see if there was a problem on our side. Because the title was appealing but, for whatever reason, we were locked out of the content. And how do you want people to talk about a content they can’t read?

                            I admit I was a bit harsh against the author in my previous comment. I assumed a kind of malevolent behavior from someone perfectly knowing what he/she was doing. I’m apologize for that because maybe the author simply didn’t know and reading those comments might be a small learning experience.

                1. 22

                  The greatest trick the Devil ever pulled was convincing us the BSD license means “free as in beer”, not “free as in puppy”. All software rots.

                  1. 8

                    I love the phrase “free as in puppy”.

                    1. 6

                      “Free as in mattress” is the bleaker version.

                      1. 6

                        Mattresses are a lot less work than puppies.

                        I’ve been using “free as in mattress” for projects that I make freely available but am not interested in accepting contributions for or supporting beyond simple, obvious bugfixes. You can have it, but I probably don’t want to hear about how it’s going.

                        1. 5

                          Pretty sure it isn’t the mattress itself that is the expensive part…

                  1. 4

                    This feels like a bad justification for new technical architecture decisions:

                    Many organizations have invested in a central data lake and a data team with the expectation to drive their business based on data. However, after a few initial quick wins, they notice that the central data team often becomes a bottleneck. The team cannot handle all the analytical questions of management and product owners quickly enough.

                    It’s a bad move to put all your data in one place and then task a single team with the role of answering questions about it. You should put all your data in one place and then make querying it easy for any team to do, no mesh needed. Maybe I’m spoiled at my present dayjob but we have a very big data warehouse for literally everything with analytical tools available to everyone in the company who can write a bit of SQL, currently tens of thousands of people. When I come in contact with dedicated data teams I can usually assume that they won’t make their time available to my team and we still have to self-serve.

                    Am I just restating the data mesh vision here? If so, why don’t I recognize our approach in this article?

                    1. 1

                      Hi migurski! I am one of the authors of datamesh-architecture.com. Thanks for describing the data approach in your company.

                      You might have data mesh. Two important concepts of data mesh are not mentioned in your description:

                      1. Domain Ownership: Data is only valid within one domain/bounded context (see Strategic Domain-driven Design) and needs to be curated and described that other domains can get an understanding what data actually means. The domain providing data is responsible for the selection and quality of the provided data products. Which team ingests data into your platform?

                      2. Federated Governance: Do you have rules for the domain teams, how data is provided and how keep them interoperable? Do you have a board that agrees on these rules?

                    1. 6

                      I am thankful for docker as well. But I am actually commenting here because you introduced me to Eyvind Earle’s paintings. The one you chose for that page is amazing, but he has others like “Green Hillside”. So good. Thank you for that.

                      1. 3

                        Oh wow, yes, these are fantastic.

                        1. 3

                          Eyvind Earle’

                          His style is reminiscent of Pierneef https://images.google.com/images?hl=en&source=hp&q=j.h.+pierneef

                      1. 13

                        Get the distinct impression that Moxie is pulling his punches a little here in order to preserve the impression of being even handed.

                        1. 8

                          If the goal is to persuade, max vehemence can be counter-productive. The goal is to be hard to dismiss.

                          1. 6

                            He’s not pulling them too hard:

                            The cost of making a visual contribution increases over time, and the funds a contributor pays to mint are distributed to all previous artists (visualizing this financial structure would resemble something similar to a pyramid shape).

                            1. 4

                              I think Moxie’s Autonomous Art is clever - it is the NFT equivalent of the Million Dollar Homepage. Both projects I would consider art because each reflects in its own way on the state of society.

                              1. 1

                                He’s describing his own stuff there, though. The app he used to get a feel for the platform.

                            1. 0

                              Excellent essay.

                              1. 3

                                It’s so weird to me to think that Photoshop started life on the decidedly black-and-white Macintosh.

                                1. 2

                                  Just to be clear, Photoshop 1.0 definitely required (or at least supported) Color QuickDraw. I vaguely remember the unreleased product was grayscale, but I don’t think that ever shipped. You just mean how the Mac itself started as a monochrome device?

                                  1. 3

                                    I could’ve sworn that Photoshop 1.0 would run on a monochrome Mac (though it recommended a color one), and would support color printing regardless.

                                    However it looks as though 1.0 required at a minimum a Macintosh II, which supported color.

                                    I think I’m misremembering because I read a history of Photoshop article and they talked about earlier products from Adobe doing clever things with 1-but dithering.

                                    1. 3

                                      I used Photoshop on a black & white classic Macintosh in 1992, after first using it on a Mac II in 1990. It wasn’t fast but it did work. Images on screen were dithered for display.

                                      1. 2

                                        Photoshop dithered for display until 24bit colour displays became standard.

                                      2. 2

                                        I remember using it on an LC475 in 1995 and my memory is of the about screen being B&W too. I guess memory is unreliable though, that’s probably nonsense ‘cos it was on System 7.1 which was definitely color. In summary, dunno.

                                  1. 2

                                    lockrun is an alternative that uses a lockfile instead of ports. It can be told to wait or simply exit.

                                    (I also just learned this tool I have used repeatedly over the past decade+ was created by a recent close collaborator, thanks Steve!)

                                    1. 1

                                      Although I probably won’t read this new pop science book, dismissing Nobel Prize winner Daniel Kahneman as “a psychologist” with a specious example about cars and hills seems like a very weird approach.

                                      1. 5

                                        The book “Noise” contains the wrong statement “In short, wherever there is causality, there is correlation.”

                                        This statement is wrong; to anybody versed in statistics, it is obviously wrong.

                                        In Andrew Gelman’s blog post, the section you refer to runs like this:

                                        The question is, how could the authors of this book have made such a clear mistake? […] The authors of this new book are a psychologist, a law professor, and some dude who describes himself as “a professor, writer and keynote speaker specializing in the quality of strategic thinking and the design of decision processes.” Between them, there’s no reason to think they’d have any particular expertise in correlation, causation, or statistics.

                                        So the point of mentioning Kahneman is a psychologist is not out-of-hand dismissal, but to point out that the mistake probably arose from lack of expertise in statistics. Psychology is one of many academic fields for which you don’t have to know the ins and outs of how correlation behaves. It could just as well say ‘chemist’ or ‘computer scientist’.


                                        As for the example about cars and hills: it is a simple example to show how “wherever there is causality, there is correlation” is wrong. Let me quote the example again.

                                        Imagine driving a car, reaching a hill and pumping the gas as you begin to go up so that your speed is constant. The correlation between pressing on the gas and the speed of the car is zero but they’re obviously causally related, it’s that the agent is optimizing speed! –Example written by Rachael Meager

                                        1. 1

                                          But the example makes no sense! The correlation to pay attention to isn’t between gas and speed, it’s between a driver who hits the gas on the hill and a driver who doesn’t. Would you describe the effects of hitting the brakes as “negative correlation”? Only if you were making a narrow argument about a single variable. The original statement is saying something more like “causes have effects” which seems trivially true. This blog post author is boring a needle-sized hole of an argument and generalizing from it to an ad hominem dismissal of at least two serious academics, both of whom I am dead-certain understand statistics very well.

                                          1. 3

                                            You might prefer the 3 postscripts to the main blog post – they’re a bit more clear on what Gelman does and doesn’t object to. It’s not Kahneman; and it’s not Noise per se; but apparently Cass Sunstein has a history of making claims that sound good but aren’t true, and the blog post mainly seems to be a warning to read the book critically.

                                            (Plus, the “We must remember […] causation does imply correlation” thing really is completely wrong, and Gelman is a professor of statistics, so that fish jumped straight into Gelman’s wheelhouse. If you still feel the car/gas/speed/hill example doesn’t work, Gelman names other things that that can cause zero correlation when observing causally-related variables.)

                                            Past posts on incorrect claims by Sunstein, for you to judge on their merits:

                                            This thread is rapidly heading off-topic, so don’t feel you owe me a reply, although you are welcome to.

                                            1. 1

                                              The example only makes no sense if you take into account context that the author did not supply. In general, any control system trying to maintain a setpoint in spite of noise will exhibit no correlation between its output and the controlled variable. This seems like an egregious oversight to not point out in a book literally called “noise”.

                                          2. 1

                                            According to his Wikipedia page, he’s a psychologist:

                                            https://en.wikipedia.org/wiki/Daniel_Kahneman#Education_and_early_career

                                            And call me a snob but the Sveriges Riksbank Prize in Economic Sciences in Memory of Alfred Nobel is a junior Nobel Prize at best.

                                          1. 4

                                            I’m surprised that the three pedals send characters only when pressed. From the description, I would’ve guess the author was going to have it also send ESC when released to behave more like a clutch.

                                            1. 6

                                              Hi, migurski. It might have been misconstrued by the single function definition that I included, but each pedal does indeed create an “Esc” keypress on release. It’s much clearer in the full “vim-clutch.py” script in the GitHub repo if you’re interested: https://github.com/l00sed/vim-clutch.git I think I should have put that in a more pronounced place.

                                            1. 10

                                              I use Make in all my projects just to leave breadcrumbs for my future self on how to get started if I revisit something old. Build systems and installed software come and go, Make is forever.

                                              1. 7

                                                Make is forever

                                                Yeah! You just gotta put the effort to learn it once and it’ll be useful and relevant forever for any build pipeline or task running. I’ve used it for programming languages, but I’ve also used it for a video pipeline with ffmpeg.

                                              1. 14

                                                The demo is in Ruby, but in Python there’s also an easy way to do this. The zipfile built-in library accepts “file-like objects” in addition to directory paths, which expose a simple read/seek/write interface. With a class that implements range requests behind the scenes you can grab just the portion of the archive you need with no zip-specific code like the directory header bytes in the linked code.

                                                Here is a complete example I have used in production.

                                                1. 4

                                                  I’ve implemented something similar, just to add seek support for fileobj backed by http. Maybe the urllib itself should support mapping seek to range request, so python developers don’t need to re-invent the wheel on their own.

                                                  1. 4

                                                    That is actually exceptionally clean:

                                                    collection = zipfile.ZipFile(remote.RemoteFileObject(collection_url))
                                                    

                                                    All it needs is read/seek/tell as if it was a file, and then uses ranges underneath. Clever!

                                                    1. 1

                                                      Related: GDAL has a really neat virtual filesystem feature that allows you to prepend paths with one or more of /vsi*/ strings to read from remote URLs, peer inside archives, and talk to blob stores on various public cloud providers. Very handy in combination with new designs for cloud-optimized data formats that provide DB-like performance over dumb pipes.

                                                    1. 1

                                                      Excellent article. This bit, toward the end, resonated with me:

                                                      If the startup fails, there’s no harm done. If the startup gets traction, the engineers can apply their newfound wisdom. This means startups don’t adopt new technologies despite their immaturity, they adopt them because of that immaturity. This drives a constant churn of novelty and obsolescence, which amplifies the importance of a technologist’s skillset, which drives startups to adopt new technologies.

                                                      1. 8

                                                        A frustrating view of history. Many of the 70s & 80s debates against computing “priesthoods” were being carried out by people like Kay who wanted to take over the function of the priests themselves. The author’s disdain for button-pushing appliances leaves out the kinds of things that such devices allow their users to do, like writing stories, publishing online, organizing communities, creating visual art, or recording music. I was a Logo kid but also a Mac kid, and I found so much more potential in tinkering with photoshop than drawing yet another turtle spirograph.

                                                        Apple once used the phrase “bicycle for the mind” when describing computers and I think it’s apt: a minority of cyclists love wrenching on their own bikes, but for a majority of people a bike is a way to get fit and go places. Let the bike shop techs fix your derailleur when it goes wonky.

                                                        As a follow up I would be curious to learn whether the popularity of black box systems like Macintosh impeded the parallel evolution of hacking? I would guess no, but alternative histories are hard to prove.

                                                        1. 4

                                                          As a follow up I would be curious to learn whether the popularity of black box systems like Macintosh impeded the parallel evolution of hacking? I would guess no, but alternative histories are hard to prove.

                                                          ResEdit had quite its own hacking scene, and an accessible one at that.

                                                          edit because I forgot to include:

                                                          I do agree a lot with what you say. I think we tend to forgot not everyone is into computers for the sake of computers - they want to do other stuff with their computer; it’s a means to an end. I certainly am, but I know not everyone is.

                                                          1. 3

                                                            I spent so much time in ResEdit. One of my favorite fun activities was modifying PICT resources in games to make my own themed variants, like a ghoulish skull-kicking version of Pararena. If I had known about the hacking scene at that time I would have been so, so into it.

                                                        1. 1

                                                          “Poop”, “stuff”, or “blah” are some of my reflexive choices.

                                                          1. 4

                                                            Always liked Atkinson’s. Not entirely accurate because (as TFA points out) it doesn’t propagate the entire error, but it yields pleasantly “contrasty” results.

                                                            1. 2

                                                              Yes, Atkinson’s is the finest dither.

                                                            1. 1

                                                              I’ve been a Pair.com customer since 2001 and would recommend them for basic web, email, and server hosting.

                                                              1. 5

                                                                As someone with only tangential exposure to databases, the way offsets affect performance was new to me. (I thought the point of alternatives was simply a matter of offering some stability to the result set.)

                                                                When using a pointer to a specific row as the basis of the pagination, how do you normally handle having to remove the row? Do you soft-delete it, or just sacrifice bookmarked URLs referencing it?

                                                                As for using an ordinal aspect, such as a timestamp, one thing that can happen — and has coincidentally happened to me recently with a tool I’m using — is ending up with more than N records sharing a timestamp, where N is the number of results per page, thus compromising the pagination.

                                                                1. 5

                                                                  The row doesn’t need to exist, it’s just a boundary for a WHERE clause. This query will work correctly regardless of what exists in the DB:

                                                                  SELECT * FROM stuff WHERE key > 100 LIMIT 10
                                                                  

                                                                  This pattern is also applicable to non-SQL stores like S3, which provides the start-after parameter to ListObjectsV2 for the same functionality.

                                                                  1. 1

                                                                    more than N records sharing a timestamp

                                                                    In this case you need this “tie breaker” column, so you order by timestamp, id or something like that, and then use a pair of [timestamp, id] as a cursor.