Threads for fm

  1. 21

    Installing Slackware from a heap of floppies on a second hand piece of crap Packard Bell in 1994 is a very big part of why I’m where I’m at today.

    1. 8

      I got a Slackware CD-ROM with a magazine in 1993. Unfortunately, the 2 or 3 MB RAM we had in our home PC was too little. So I traded the CD with my uncle for some Sherlock Holmes game.

      In 1994 we had 5 MB RAM (we wanted to play Doom) and I had another Slackware CD-ROM and I was hooked. Lots of discussions with my brother followed about the 40 MB hard disk should be partitioned between Linux and MS-DOS (though I also used loadlin + UMSDOS for a while).

      Patrick Volkerding bootstrapped my Unix education.

      Edit: I even wrote a Slackware Book when I was a student: https://rlworkman.net/howtos/slackbasics.pdf , though I never completely finished it.

      1. 6

        1995 for me. On a Gateway 2000 486SX33 desktop that I picked up for $30 when a local business sold it off as surplus. The floppies were nearly all AOL freebies with scotch tape on the write protect notch.

        And I let the smoke out of a 14” monitor that cost at least as much as that PC when I screwed up my XFree86 modeline.

        The things I learned exploring that system gave me an entirely different view of what I was studying and influenced my tech choices for a long time after.

        The last time I daily drove Slackware was 2002. I’m half tempted to do it again for a while now, just for nostalgia’s sake.

        1. 5

          logging into darkstar was pretty cool.

          1. 4

            Same. But from a magazine CD 😂

            1. 3

              Same here, but in ’97. I downloaded the release from an FTP server on a 33.6 modem. The damn thing took a week!

              1. 3

                Whew, I feel young again! Same in 2001, on a 90 MHz Pentium someone at my dad’s office found in a closet. It had a whole 8 MB of RAM and Slackware was the only thing that would install on it. Never did get X11 working on it, but I sure learned a lot about living in the command line.

                1. 3

                  I don’t recall if I first downloaded Slackware via a modem or what. I bought my first copy of SLS Linux (SoftLanding Systems, which predated Slackware) from a Usenet post from some random guy. He mailed me a set of 5.25in floppies.

                  After that I was using Slackware for a while.

                  By the mid-1990’s I had a CD-ROM drive and was buying CDs with the latest releases. Sometimes in stores. Which had shelves of software in boxes. I am so old.

                  1. 2

                    Same here!

                    1. 2

                      But my experience was on a Toshiba Portege 610CT: https://www.youtube.com/watch?v=Ram4Faoo9t8

                  1. 1

                    I tried on my system (which isn’t THAT old) and it took 48s to compile Go :(. It’s mostly a single-core build, so having more cores doesn’t really make a difference, and the latest Intel cores aren’t that much faster. I would guess that WD Black SSD is most of the difference – I have a random off-brand SSD.

                    1. 5

                      40s on an M1 Pro Mac.

                      1. 2

                        ./make.bash 278.53s user 44.97s system 374% cpu 1:26.27 total

                        45s on a battery powered and fanless Macbook Air. The M1 ARM processors are the most notable performance boost since SSDs made their way into personal computers.

                        1. 3

                          If that is time output, then it took 1 minute and 26 seconds in total. 45s is the time spent in the kernel for the process (e.g. for handling system calls).

                          1. 3

                            🙈 You’re absolutely correct, I was confused by the time output. On my Linux machine time has a different output in bash:

                            real  0m52.402s
                            user  4m8.435s
                            sys  0m18.317s
                            

                            which I prefer. Anyways, the M1 machine is plenty fast for my use case.

                            1. 2

                              I was confused by the time output.

                              Happens :), especially with the different orders.

                              Anyways, the M1 machine is plenty fast for my use case.

                              I also had an MacBook Air M1 prior to the MacBook Pro 14”. The M1 Air is an awesome machine for development. And I’d say for most people who don’t need >16 GB RAM, lot of cores, or many displays, the MacBook Air M1 is the better machine.

                          2. 1

                            I’m not sure if the ARM and x86 compilers are really doing the same work unfortunately.

                            1. 1

                              If people are just compiling for the native target, it will be a bit different at the end, yeah. But typically little time is spent in the backend so it doesn’t matter that much. But this is go which has much less stuff going on in the frontend/middle than something llvm based.

                          3. 2

                            I also get 40s on a M1 Pro and 35s on a Ryzen 5900X.

                            I am still amazed that my laptop that I can put in my backpack, with fans that barely spin up at all, is close to a 105W TDP Ryzen 5900X. Also not even that far away from the Intel Core i9-12900K from the article that has base power use of 125W and maximum turbo power use of 241W.

                            My default is now to do all development on the M1 Pro, including training basic machine learning models (the AMX matrix multiplication co-processors make training small networks pretty fast). I only use a headless GPU machine for training/finetuning large models.

                            1. 1

                              I get similar timings on my Ryzen 5600X: 39-40 seconds. My setup is optimized for noise and size though (it’s a SFFPC), and the CPU is deliberately set to limit the temperature to 75C. This way I can keep the fans super quiet, with their speed only increasing when there is prolonged load. I think I also slightly undervolted the CPU, but I’m not entirely sure.

                              I did experiment with faster fan speeds, but found it didn’t matter much unless I really crank them up. Even then we’re talking about a difference of maybe a few degrees Celsius. IIRC the Ryzen CPUs simply run a little on the hotter end when under load.

                              The M1 is definitely an impressive CPU, and I really hope we start to see some more diversity in the CPU landscape over time.

                          4. 2

                            49s on a Ryzen 9 3900X and 3x Samsung 860 EVO (built in 2020). But honestly no complaints, that’s not bad for a whole damn compiler and language runtime.

                            1. 1

                              It should go faster. Was that with PBO, manual OC or stock? What RAM settings?

                              1. 1

                                RAM is 3200MHz CL16 with XMP settings, don’t remember how I’m fixed for OC but I didn’t push it, these days I’d rather have it work 100% of the time than have it go 5% faster but crash once a week :)

                              2. 1

                                I had a 3700X before. If your mainboard supports it, it’s worth considering upgrading to a 5900X some time. E.g. it builds Go in 35s, so it’s a nice speedup.

                                1. 1

                                  I’m wondering if it’s time to replace my TR2950x

                                  ./make.bash 381.03s user 41.99s system 632% cpu 1:06.84 total

                                  1. 1

                                    I guess my machine was not fully optimized.

                                    ./make.bash 299.47s user 28.67s system 646% cpu 50.781 total

                                2. 1

                                  It’s not really single-core and storage doesn’t have that much of an impact.

                                  NFS share: ./make.bash 193.40s user 36.32s system 690% cpu 33.273 total

                                  in-memory tmpfs: ./make.bash 190.17s user 35.55s system 708% cpu 31.843 total

                                  (this is not exactly apples-to-oranges, I’m building 1.17.6 with 1.17.4; this is on a 5950X with PBO on and RAM slightly above XMP, and an OS that doesn’t support CPPC; oh and the caches are probably pretty warm for NFS since I’ve extracted the archive on the same client machine)

                                  1. 1

                                    It’s mostly a single-core build, so having more cores doesn’t really make a difference, and the latest Intel cores aren’t that much faster.

                                    Here is a CPU profile for 30s of the ./make.bash build:

                                    https://www.dropbox.com/s/jzxklglwze7125i/go-build-cpu-counters.png?dl=0

                                    There are lot of concurrent regions during the build, so I definitely wouldn’t say it’s mostly single-core.

                                  1. 1

                                    I’ll write emails begging for CM3+ modules for a research project I need to finish by end of the year. My turning pi is lying on the shelf as I have to fight with virtual machines, but I hit a dead end and I need real hardware.

                                    Besides that, I’ll play with the kids and do some reading.

                                    1. 1

                                      If you have 6 CM3+ lying around w/o use please DM me.

                                    1. 2

                                      work:

                                      • Battling a crazy Kafka bug

                                      home:

                                      • My office is a mess, I’m tidying up the space (it’s been a week or so I’m doing this)
                                      • I finally assembled my 3D printer and I’m printing fixers, supporters and dividers to help me organize my electronics/paints/cables.
                                      1. 8

                                        It’s sad for all the old minecraft modpacks that are from now on a security hazard to play,host or otherwise interact with. Basically destroying the legacy.

                                        1. 8

                                          Well… don’t be.

                                          The amount of trivial RCE in most modpacks is incredible. Many mod packs execute untrusted code from their clients directly and vice versa! Not to mention the very nature of a modpack is telling people to execute untrusted unsigned code from multiple sources.

                                          Modded minecraft is as safe as it’s ever been.

                                          1. 12

                                            There’s a significant difference between trusting a group of select modders to run code on your machine and trusting everyone on the server you’re playing on to run code on your machine. Neither is great exactly, but don’t try to equate them.

                                            1. 3

                                              I agree as well, but this is an and situation, not an or but situation… Many mods do allow clients to talk to other clients.

                                              I am responding to someone who sees one recent java CVE and throws their hands up saying, ‘welp, I guess that’s not secure anymore!’

                                              1. 1

                                                Yeah you may as well distrust opensource at that point.. And running a server that can be pwned by connecting is a whole different story.

                                            2. 1

                                              JVM is the easiest place to patch something like this.

                                              1. 1

                                                Mojang has released official instructions for all Minecraft versions explaining how to patch servers, they’ll be fine.

                                                1. 1

                                                  https://help.minecraft.net/hc/en-us/articles/4416199399693-Security-Vulnerability-in-Minecraft-Java-Edition

                                                  Here they are. It looks like for older versions it’s either “pass a Java flag that disables the network lookups”, “set an XML policy that disables network access from logging”, or “it’s so old it doesn’t have the vulnerable code”.

                                              1. 1

                                                Interesting, I’ve been collecting a bunch of old screenshot this seems to be the place to dump then

                                                1. 1

                                                  I’ve been using Hetzner for a year, I’m quite happy.

                                                  Price for large chunks of storage is a bit expensive.

                                                  The only issue I’ve faced was a snail mail letter threatening collection if I forgot to pay an open invoice. I had no idea they couldn’t auto process paypal.

                                                  I’m based in Germany so my experience could be different from others outside.

                                                  1. 3

                                                    People often advertise infinity scroll as a feature designed to retain user attention and increase engagement but ignore that this UX implementation is a way to handle cursors transparently.

                                                    When you need high availability guarantees usually search and aggregations query gets distributed across different specialized systems and results are federated to be presented. It’s impossible to present consistency grantees that regular offset pagination can offer, like in a real database.

                                                    1. 2

                                                      I think that https://cloud.google.com/blog/products/devops-sre/join-sre-classroom-nalsd-workshops could be of some use to you, it is not focused around a single programming language or approach (and it does focus on the design of the distributed system) but IMHO does a good job in evaluating different options while using a practical~ish system. I had the chance of going over the workshop (or a very similar one) in the Velocity Conference last year and I really enjoyed it.

                                                      They’ve made available all the materials, slides, guides, notes, etc. (https://landing.google.com/sre/resources/practicesandprocesses/sre-classroom/) which should also help you to reuse whatever (if any) part you find useful.

                                                      1. 2

                                                        I attended one of these workshops last year during velocity and it’s a fun and refreshing experience. If you have safaribooks the presentation is here https://learning.oreilly.com/videos/oreilly-velocity-conference/9781492050742/9781492050742-video328447

                                                      1. 3

                                                        I was going to recommend the course @nikivi already did, but since you mentioned about being more practicably than theoretical I think my answer would be helpful.

                                                        In regards of distributed systems to give people a bit of vocabulary, a good idea is to start with the following books

                                                        • Martin Kleppmann Designing Data-Intensive Applications.

                                                        • Burns, B. (2015). Designing Distributed Systems. O’Reilly.

                                                        You can find both on safari online, before jumping into the book itself, take a look at the outline to understand how they structure the path ahead.

                                                        Also, Sam Newman’s latest book Monolith to Microservices can be a good source of ideas as well, as you’d find a good overlap between DS and the micro-services hype.

                                                        I’ve been thinking myself how to rump up our internal teams at work, it could be a good opportunity to collaborate.

                                                        1. 1

                                                          I am not sure where the first one is, but the latter book’s actual link is here, https://www.oreilly.com/library/view/designing-distributed-systems/9781491983638/

                                                          1. 1

                                                            My bad, it auto completed with my references and it was wrong.

                                                          2. 1

                                                            I Loved all of those. Burns distributed systems is full of fantastic tricks with containers. And from the perspective of an architect that deals with real world enterprises, Newman’s is absolutely invaluable. I think this last one OP will benefit you greatly. It neatly delineates migration strategies and political/organizational complexities, that as developers we too often miss.

                                                          1. 1

                                                            You've read all of your free stories this month. Become a member to keep reading.

                                                            1. 15

                                                              Doesn’t really paint sway in a bad picture, but wow does it sound complicated to replicate your X working environment with wayland… Still…

                                                              1. 8

                                                                I think part of it is that many of the Wayland tools aren’t yet packaged for Ubuntu (or are outdated), so you need to compile them from source. Also, you probably took some time to setup your i3 environment as well, similarly setting up Sway will take some time too (you can just copy-paste your i3 config, but you’ll need to do the work for the rest of your tools).

                                                                1. 5

                                                                  But that’s exactly what I meant.

                                                                  I actually don’t use a lot of i3-specific tooling. One i3-addon and dmenu and the bar. So everything that was described is “Linux GUI stuff” for me, like xdotool (I hardly use it) - so X applications and tools. I suppose replacing dmenu would be trivial for me.

                                                                  People get used to doing things if they use Linux for years, and all the work there seemed pretty wayland-specific to me. Of course it was adjusting sway to be like i3, but people who want to do that sort of customization would have done that on another WM on X as well…

                                                                  1. 5

                                                                    If you don’t use many X11-specific tools, then I don’t really understand how switching to Sway would be complicated. You don’t even need to replace dmenu if you don’t want to. Just copy over the config and you’re good to go?

                                                                    Sway is strictly an i3(-gaps) port of i3 to Wayland, so you don’t need to adjust Sway to behave like i3.

                                                                    1. 4

                                                                      Just because I don’t use them doesn’t mean I see why some problems in the article are solved just like I would solve them. Which means I seem to have at least the same basic understanding.

                                                                      And I find the procedure to mimic things quite involved. I didn’t say wayland was bad, just that this seems like a lot of work to replace tools that have always worked.

                                                                      1. 3

                                                                        While it seems to be the case that Ubuntu doesn’t have these tools packaged (yet), there are quite a few already packaged for Arch Linux, and I know that Fedora also has a pretty thorough selection. I had very little trouble switching to Sway and Wayland (earlier this year I think), which was a pleasant surprise. Most of my customisations were more quality of life than strictly necessary. It’s quite usable before you even start customising it.

                                                                2. 3

                                                                  As long as I can run a browser and a terminal on X I won’t switch.

                                                                  1. 3

                                                                    People will argue that you aren’t guaranteed to be able to either of those things… Without tearing, on xorg. Depends à bit on your gpu.

                                                                1. 3

                                                                  If you could transverse time backwards, I’d say the pattern would be visible as

                                                                  “Do you feel Ruby/Python developers are pushing …” “Do you feel Java developers are pushing …”
                                                                  “Do you feel PHP developers are pushing …” “Do you feel VB developers are pushing …” “Do you feel Delphi developers are pushing …”

                                                                  There’s not much we can do here other than try to bring different ideas packed in a form different than the language flamewar.

                                                                  The thing I say to my younglings is that tomorrow they will hate JS, so learn what’s behind it.

                                                                  1. 7

                                                                    It still blows my mind that Microsoft lost their antitrust case over bundling IE with Windows, given how far monopolies have pushed their advantages in the decades since. Antitrust enforcement has all but disappeared in the US.

                                                                    1. 7

                                                                      I’m unsure why people interpret the Microsoft antitrust case as producing an outcome of “it is illegal in the United States to bundle a web browser with an operating system”.

                                                                      That was not the outcome the case produced, and there’s basically no valid analogy to be drawn between that case and the present-day Apple hardware/software ecosystem (the Microsoft case was about abuse of an existing monopoly; Apple does not have a monopoly, or anything close to a monopoly, in any category that would be relevant for drawing such an analogy). The only thing they have in common is the anger of a certain subset of the tech community at the companies involved.

                                                                      1. 6

                                                                        Tech learned a thing or two about lobby since then.

                                                                      1. 2

                                                                        I’ve been iterating over the same concept but with slightly modifications over the years

                                                                        Basically I have a command called logbook to log entries. It opens a new “today” vim buffer, appends the current timestamp and once saved, it pushes the changes to a github wiki, so I have an online version if I’m on the run.

                                                                        If I call logbook topic it creates a specific page or appends to the existing log, easy to organize related stuff

                                                                        The basic script is here https://gist.github.com/fmeyer/dfbe320b7f53808f52e2fa7edd12b810/revisions

                                                                          1. 9

                                                                            The UI/UX is worthy of exploration; unlike anything I’ve seen.

                                                                            1. 2

                                                                              kind of similar in some ways to void (void is TUI though). I actually started void to be a tui spreadsheet, but over time found that a strict tree worked better for my own workflows. but maybe over time I’ll revisit the nested spreadsheet idea.

                                                                            2. 6

                                                                              This looks awesome. I don’t personally see this as a replacement for Joplin which I use and adore for note taking, but I could totally see it as a fabulous tool for ideation and outlining.

                                                                              Definitely giving this a look, thanks for the pointer!

                                                                              1. 3

                                                                                How did you manage to get a handle on it? It seems so damned alien and all the tutorials I’ve managed to find when I go looking every 6 months or so are always really shallow, like one of those “button and counter” Medium posts about React.

                                                                                1. 3

                                                                                  This is completely new to me. Thanks for sharing!

                                                                                  1. 2

                                                                                    Interesting, this reminds me a bit of MaxThink for DOS back in the 90s

                                                                                    1. 1

                                                                                      Welp, this looks amazing. Thank you!

                                                                                      1. 1

                                                                                        This does look intriguing, but I can’t help but be disinterested in it because it doesn’t look like you can share and collaborate over the Internet. Can you? Or are is there an online equivalent or competitor?

                                                                                        1. 2

                                                                                          No, this is strictly desktop software. Miro is the closest I could find to an online version.

                                                                                      1. 2

                                                                                        I will be there if anyone wants to hang out :)

                                                                                        1. 5

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

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

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

                                                                                          1. 6

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

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

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

                                                                                            1. 2

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

                                                                                              1. 1

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

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

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

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

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

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

                                                                                                1. 0

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

                                                                                              2. 1

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

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

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

                                                                                                1. 1

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

                                                                                                  1. 1

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

                                                                                                    1. 1

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

                                                                                                      1. 1

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

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

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

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

                                                                                                        1. 1

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

                                                                                                          1. 1

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

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

                                                                                                          1. 3

                                                                                                            Due to duck typing design, Interface Segregation and Dependency Inversion principle are not relevant in Ruby.

                                                                                                            Sorry, but I strongly disagree with you on this statement. I understand some ruby developers have an aversion to any type system or any formality, but being highly dependent on DT can cause you serious problems. Specially when you’re working with a large codebase, that has been around for a while and abuse on monkey patching.

                                                                                                            Here are two good examples where these principles can be applied successfully in ruby and help you bring some sanity to your projects.

                                                                                                            http://rubyblog.pro/2017/07/solid-interface-segregation-principle http://rubyblog.pro/2017/07/solid-dependency-inversion-principle

                                                                                                            1. 1

                                                                                                              Thanks for your feedback.

                                                                                                              But, this is not ISP.. The example doesn’t follow the principles:

                                                                                                              • Clients should not be forced to depend on methods that they do not use. OK
                                                                                                              • Many client specific interfaces are better than one general purpose interface. KO

                                                                                                              This example show a FeeCalculator that provides 2 methods..

                                                                                                              1. 2

                                                                                                                ISP definitely does apply to Ruby, or any other language, because the principle in itself is not dependent on language constructs. It’s easier to visualize in statically typed languages because it’s explicit, it’s something you need to write. When working with dynamic languages, the construct doesn’t exist explicitly, but you’re still making design decisions about how the classes interact with each other. Understanding and reasoning about how much one class know about another in a given context, is exactly what ISP is about.

                                                                                                                For example, in Ruby’s standard library, we have a File and a StringIO class. They each have their own methods, but they also share a smaller common interface. That is not accidental, the library designers made a conscious decision to have similar methods so that the class can be used interchangeably in specific contexts.

                                                                                                                As a user of those libraries, you also have an option. You can use methods on those classes that are specific to each one, or you can organize your code in a way where you pick a very small interface that you’re gonna depend on. If you only use methods that are available on both classes, you can pass any of those classes into your component and it will just work.

                                                                                                                The main difference on dynamic languages is that you don’t have a fixed set of interfaces that are provided by the library authors. You have a number of interfaces that is equal to the combination of all methods available in that class API.

                                                                                                            1. 12

                                                                                                              No! Every new sprint is a mini waterfall and the stakeholders secretly still treat your sprints as grant tasks.

                                                                                                              1. 1

                                                                                                                What is a grant task?

                                                                                                                1. 2

                                                                                                                  I have a feeling “grant” was meant to be Gantt.

                                                                                                                  1. 1

                                                                                                                    Yeap, it was a typo - sorry about that.