Moar Power! On this episode Ben, Cassidy, and Matt talk new Mac machines, developers’ favorite OS, and empty NPM packages. Time to ditch those dongles!
Why has this empty NPM package been installed 700,000 times? We’ve got the answer for ya.
A nice article and podcast on flow state, including the claim that 23 minutes is the magic number of minutes it takes to find your flow.
Thanks to our Lifeboat badge winner of the week, Manjusha, for explaining how to:
Parse a pipe-delimited file in Python
Matt Kiernander When I left my desk to go to a meeting, I had one cable to plug in and I would get access to my entire peripheral setup. And I loved how clean that was. That, for me, was a winner. But it had some issues.
Ben Popper They don't put the dongle in the box, even. They make you buy a dongle. I don't want to buy a dongle.
[intro music plays]
BP Hello, everybody. Welcome back to the Stack Overflow Podcast, multiplicity edition. I am Ben Popper, the Director of Content here at Stack Overflow. Joined as I often am by my wonderful crew of co-hosts, Matt and Cassidy. Hi, y'all.
Cassidy Williams Hello!
MK Hello everyone.
BP So we have here in our first list of developer news to talk about, the Apple event. And it is very apropos because Cassidy and I are on MacBooks. Cassidy has an M1, I don't yet. And they are both huffing and puffing, struggling mightily to record this podcast with two video streams and two browsers.
CW I didn't use my M1 on this. I had to switch to my Windows desktop.
BP Right. So maybe it's unfair to knock Apple since even your gaming PC is huffing and puffing.
CW Just a little.
BP Maybe you need an external setup for this that just channels it in or something. It's not what personal computers were meant for.
CW Honestly, I probably need a new graphics card, but with all the mining and things in the world today.
BP Right. The crypto-riche have made that impossible. Yeah, exactly. There was a new Mac Studio released, which seems like the kind of thing that is essentially meant for this. I kind of like that Apple has a whole world that I don't participate in but is essentially creators. And the Mac Studio basically looks like two Mac Minis, one stacked on top of the other. And I'm sure it's got hardware out the wazoo. So maybe the Mac Mini will be our savior in the future.
MK I'm hoping so. The new Mac Studio that they unveiled, it's a new style of chip because essentially they've got the M1 chip, the M1 Max chip, and now what they've essentially done is created an interconnect between two different M1 Max chips to create the M1 Ultra, which has a ludicrous amount of bandwidth. It's got a ludicrous amount of video encoders. I have no idea what the performance is going to be relative to previous generations, whether or not it's going to be able to compete with a top of the line GPU like the 3090, which is what they used in the benchmarks. So I'm very, very, very curious from a creative perspective, how this is going to impact my life and my wallet in the next couple of months.
CW I saw this kind of funny and interesting quote talking about how Tim Cook used to brag about how all of Apple's products could fit on a small desk and that's all they sold and they liked that it was a small lineup. And now I can't actually keep up with all of the products that they have, like all the different types of iPads, and computers, and iPhones and stuff like that. Which is cool, but also I wonder if it's a sign of them just having to keep up with just other offerings in the world.
BP I mean, I think you make a good point, which is that for a while Apple was on this hit parade. They just couldn't fail. They went from the iPod, to the iPhone, to the iPad, and each one of those is just a phenomenal success. Their laptops were kind of like a laggard for a little bit there and then they came back and became like best in breed. And obviously the Mac Minis, that part of it has always been something that creatives have been interested in since the 80's and 90's. The Apple Watch and the AirPods seem less relevant to us, but themselves are each like $10 billion businesses.
CW There was a time, it used to be a thing where all developers had Macs. Like it was just a thing, and when you went to a company, you were going to get a Mac computer, and that's just how it was. And that's not what it is anymore. I don't know if it was because they took away all the ports and made developers mad or what. But I mean the fact that they reversed that and they brought an HDMI port back to the new Mac, it's a very, very strong signal. And I mean, once again, I'm on my PC right now, granted it's because of video stuff, but also I develop perfectly fine on my PC. And it's probably a combination of multiple things where Apple took that whole courage thing probably a little bit too far in just taking away ports and making things look sleek. But then also Microsoft leaned heavily into open source and making developers more first class citizens and all of the vendors followed suit.
BP Acquiring GitHub. Yeah. Matt K, if your machine is not lagging while we're having this conversation, could you look up in our developer survey, do we ask people what platform they use, and what it said in the last year or two? I would be interested to know. Maybe we'll do an internal poll, Cassidy you can do it at Remote and we'll do it at Stack. Like among all the developers, what do they request? Because I know when you sign up to be an employee of Stack Overflow they say, "Do you want a Mac or a PC?" And they let you choose, like it's not pushed on you one way or the other. You can pick whichever one you want. It's personal preference.
CW Yeah. And that's the thing, the choice thing feels new because I didn't have a choice for the longest time. It was just like, this is what you get. And now companies are letting you choose which kind of machine you want. And if I'm being honest, the only reason why I picked a Mac at work is because I have a PC at home. So I figured I might as well have both operating systems.
BP Well, I already have my gaming PC at home, so I guess I'll take a MacBook at work.
CW Yeah, for testing and compatibility reasons. But if I didn't have this computer I'd probably pick the PC just at this point in time.
BP Right. That makes sense.
MK I'm going to play devil's advocate here and say that I kind of liked the lack of ports because what it forced me to do was, I would have my MacBook laptop. I would have a single like Thunderbolt dock. And I would have all of my peripherals, everything plugged into that one thing. So when I left my desk to go to a meeting, I had one cable to plug in and I would get access to my entire peripheral setup. And I loved how clean that was. That, for me, was a winner. But it had some issues.
BP They don't put the dongle in the box, even. They make you buy a dongle. I don't want to buy a dongle.
CW I do have one of those setups because between my PC and my Mac, I have the setup where I swap one cable and all of my accessories are connected through here. So my camera is connected through it, my headphones, my microphone, keyboard, mouse, stream deck, all the things are connected into this one thing. So it is nice being able to switch between computers. That being said, it's a lot of power that has to go into this one little thing and it can't handle my big monitors. And I tried looking into if I just need a bigger dock and stuff like that and I've basically been told by all of the IT nerds in the world that I need an actual enterprise-level set up if I want to go bigger than that. So I have to have three cables in my Mac. Ugh.
BP Yeah, I'm looking at the chips here. We'll put this in the show notes, it's a great visual. So I was saying the Mac Studio looks like two Minis stacked on top of each other. And then the M1 Ultra, like you said Matt, it's two M1 Max chips basically, one on top of the other. So the old M1 now takes up about one eighth of the chip size of the M1 Ultra. So I don't know if that translates to raw performance but it's significantly bigger.
MK It's a big deal because previously in other kinds of systems where you were putting multiple CPUs into a single package, they were not historically treated as multiple CPUs. If you had a desktop board with multiple Xeon processors in it, those were treated as two discrete CPU units, whereas this one is going to be treated as a single CPU. They dropped a teaser for the Mac Pro, which is due to come out at some stage in the future which I think a lot of people are hanging out for. I don't think a lot of developers are going to be using the Mac Pro. I barely think a lot of developers are going to be using the Mac Studio that was released. But it'll be exciting nonetheless, I think.
BP They also announced you can use FaceID with your mask on, which I thought was kind of cool. I, ironically or hysterically, when I did FaceID for my latest device, my new phone, I had these glasses on and it only recognized my face with these glasses on. So I have to redo it. Like if I take the glasses off, I'm not Ben anymore. So I have to work on that.
CW That's really funny, actually.
MK You would make a very good superhero in that case.
BP Yeah, exactly. Unrecognizable once I take the glasses off.
MK I did pull up, by the way, the split between Windows users and MacOS users and Linux users from the Stack Overflow dev survey. If people would like to hazard a guess, put in their bets. No winners or losers here, but do you want to see a split percentage of how many professional developers from the Stack Overflow dev survey of last year are operating on Windows versus Mac?
CW Versus Linux.
BP Versus Linux. I'm going to go 70/20/10.
MK Was that for Windows, Mac, then Linux?
BP Mac, Windows, Linux. It's just random, I don't know.
CW I'm going to go 45/35/10.
MK Okay. Today, Benjamin and Cassidy. The correct answer for what is the split between Windows, MacOS, and Linux-based users from the Stack Overflow dev survey of 2021 is, Windows: 41.2%. MacOS: 30.04%. Linux-based users: 25.17%. That is a lot higher than I would have previously thought. Windows and Linux.
BP Cassidy, you were super close. You left off I think 10%, and your guess was missing 10%.
CW I did. I did my math wrong and then as soon as I said it I was like, "Cassidy, you idiot." But yeah, that is wild. I feel incredibly smug right now, but that seems about right, honestly. Because I think we also live in a bubble because we are people who are active on Twitter and in a lot of these spaces where developers have lots of vocal opinions that we follow. And there are a lot of developers out there who don't care. They just get the machine that does the job and stuff, and that could be a PC, that could be a Mac, that could be whatever. But I think personal preferences tend to go towards the machines that can do things like gaming, and do things that are more traditionally nerdy. I don't want to lean into stereotypes necessarily, but that doesn't surprise me.
MK I've come the opposite way ever since I started working as a software developer. Dealing with front end web development where there's a lot of negative reinforcement for, "I'm going to try this. Oh, that's wrong. I'm going to try this. That's broken. I'm going to do this. That's also wrong." So when it comes to technology in general for me, I like things that make my work as frictionless as possible that I know aren't going to cause any issues. And for me personally in my experience, I found that MacOS just offers things like AirDrop for instance. When I'm trying to move files between multiple devices on my phone, or laptop, or other integrations with the ecosystem that I'm in, which is the Apple ecosystem, I found worked better for me, personally. And then I have my Windows PC at home which can do things that my Apple system just straight cannot do, because it doesn't have the compute performance. But I am on an older Intel-based system, too.
CW Right. Well and also, we were also not necessarily considering the fact that C-Sharp and the .NET ecosystem is pretty high up. It's a lot of front end languages and like database stuff, and then C-Sharp, I know it was top 10. I don't know where in the top 10 it was, but that's a very popular ecosystem that can be built on Mac machines and Linux machines, but it's almost always built on Windows ones.
MK You are 100% correct there.
BP Let's move on. We've got a few other news hits we want to do here. I would like this to be explained to me, this mystery. This is from our programming. "An empty NPM package has over 700,000 downloads.” Is this malware, is this RickRoll? Is this just futility? Why are people downloading this NPM package over and over and over again when it's empty inside?
MK I have a funny feeling that what happened was, this is just a guess. Cassidy, if you've got any thoughts on this, please correct me if I'm getting this wrong. What I think has happened is that there is one popular NPM package that has dependency on this NPM package, or there might be a string of dependencies. And somebody just forgot that this is no longer needed. And so basically I think what's happened is there's a popular host that's using this as the dependency, which is then being downloaded hundreds of thousands of times, 720,000 times. And that's causing, without people realizing it, this extra dependency to pull on which has no role. It's like a limpet.
CW I'm sure that that is part of it. I also think that if it is a package name that might be similar to another package, or if it's something that just, I don't know, sounds necessary or something that someone might add. It could also be someone squatting on the name so a bad actor doesn't grab it.
MK The package name is simply a dash, which I'm not sure if it might be a syntax error, it might be people thinking that’s Lodash, which is like a JavaScript array utility library. I don't know.
CW Yeah then I lean even more into that theory then. I bet someone is squatting on it so someone doesn't take it and do something malicious.
BP Yeah. It seems like it slipped in accidentally as a dash and when this article was written in August of 2021, it was attached as a dependency to 56 packages, and now it's 184. So as you said, its presence continues to snowball.
MK I just had a quick look at the article as well. So the package's author, Dmitry, I am so sorry, Dmitry if you're listening, Parzhitsky, and he mentioned that he was not intentioning to be nefarious or anything like that. He was just trying to see whether or not he could publish an NPM package with a hyphen as a name.
CW Oh, well there you go.
MK He said, "Let me say right off the bat, with this package I mean no harm to anyone in any way," stressing the package was fully compliant with NPM's naming rules at the time of its creation and created as a test.
BP Okay.
CW You know what also might be it, you know how you can add flags? Like -force or -whatever? It could be where someone accidentally hits enter after a typo. So it's NPM install- and then it starts to install, and I'm sure that that has happened at some point.
MK I've done that so many times. And then I panic because I don't know what to do. I'm like, "Oh, I need to cancel this, I need to delete. Did I install this globally?"
CW Well if it's an empty package then people are just like, "Oh, phew. That was nothing." And then they just move on and then don't think about the fact that they might've added an empty package to their dependencies.
BP Right, exactly. Alright. We've been recording this for 19 minutes and 20 seconds as I speak, and our last article of the day, "It takes developers 23 minutes of uninterrupted work to get into a flow state." So if you've been listening to this podcast, we're going to stop at the 23 minute mark. Feel free to go right into whatever you're doing because you're going to be in the flow state. But Cassidy, I know this is something that super interests you. You've talked about some research you read on it that you really enjoyed. And it's actually one of the sort of key words that came up as we were doing research for Stack Overflow for teams, and why it might appeal to people, was context switching, flow state, optimizing for mental focus. It was just something that we got a lot of feedback on as being super relevant to the average working developer. So I guess, what do you think about this number? High? Low? Sounds about right?
CW It sounds about right to me. And I do think that depending on what the task is, it can be faster for me. But it's definitely something where once I have that feeling of flow, I'm just like, "I have to hold onto this and do as many things as I possibly can because I won't be this motivated later,” and just lean into it heavily.
BP Right. A lot of people in the comments, and I thought this was interesting, were saying that they would have tasks assigned on projects and sprints, that in general they had the time to deliver. The deadline wasn't unreasonable, except they would get 2, 3, 4, 5 ticket requests, help requests a day, have to switch off what they were doing and go solve this problem for somebody, come back. And of course you do that a bunch of times with a 20 minute buffer on each side, and boom, your whole day is gone and now you're behind deadline. So I thought that was kind of interesting and talking about maybe trying to prioritize or triage support by almost like a PagerDuty. Put somebody on that one day a week, as opposed to having them on every day, and they're on the full day for that or whatever.
MK I think this is going to be much more of a relevant issue in the future as well, especially with remote working now. We have a lot of tools, even like myself coming to Stack Overflow. There are a lot of tools here that people use to communicate, and it's kind of hard to keep up with all the different vertical flows. I have my Slack desktop app, we have a whole bunch of other web-based tools that I need to actually remind myself to go and view because they're not readily accessible. And so I know that when I'm doing deep work or I try to get into a focus state and somebody messages me on Slack, just having that context switch, or I guess it's split into two parts. There's one which is the immediate notification that brings you out of what you're doing and onto something else. But then also having multiple different priorities in a single day, like looking at support tickets versus doing your actual development work, too. And all of these things can contribute to taking you off your flow state, which is an incredibly frustrating process for anyone.
CW Yeah. If you don't mind my transitioning into the rec corner...
BP Yeah, do it. We're at 22 minutes. Let's get it done, let's do it.
CW Let's go, let's go. We've got to get it done. My recommendation for this week is actually an app that helps you get into flow state, and it's called Centered. And I'm kind of obsessed with it right now because it's honestly a glorified to-do app. And when I first got it, I was just like, "I don't understand why this is a big deal. All it is is a to-do app. I have one of those. It's fine." But, what you do is you define what tasks you want to get done in a given flow session. And you could schedule it on your calendar, you can just put it in the app, whatever. And you can assign how much time you want to assign to each task. And then when you click 'Get Flowing,' it has like a little modal that pops up and you hear this voice, "Let's Flow," and it plays some trancy music and you can choose what genre you want and you just start working. And what's cool about it is that it is called distraction nudges, I like to think of it as it's yelling at me and I will obey because I don't like being yelled at. Where if you start going onto Slack or onto Twitter or anything that might be a distraction, it says, "Hey, make sure you stay focused," and stay back on task and stuff. And it also has programmed in regular five minute breaks. Also you can share your video, too, if you want. And like anybody who's flowing at the same time, you'll all be on video and keep each other accountable a little bit because it's like people are watching you, even though it's not.
BP Ooh, nice. Like a little Peloton crew. I like it.
CW Yeah. It's a lot of different things in one, which almost makes it hard to describe because there's so many things in there, but it has worked for me so well. Whenever I use it I get so much more done than I thought I would in a given day.
MK I have an alternative to-do list system that's physical based. And it's something that I very much enjoy. I'm going to check out Centered because I love that idea. Also, if they have any kind of voice prompts, like if I can get a Mike Tyson artificial intelligence voice yelling at me every time I open up Facebook, that would keep me accountable. But what I have here as an alternative, I'll hold this up to the camera. It's a physical to-do list system called Ugmonk. And essentially what it is is, you have a series of cards. You write down what it is you need to get done on these cards. It folds up, sits there. And so throughout the entire day I've basically got my entire to-do list sitting right in front of me. And then you can check it off and you put times and all that kind of stuff. But having a physical reminder like that, something that's not tied to my computer systems, I find really helps. Because every time I look down when I'm thinking, I'm like, "Ah, that's the thing I need to be doing. I should probably get that done."
[music plays]
BP Alright. “Parsing a pipe-delimited file in Python." Thank you to Manjusha, awarded March 7th at 6:37. We appreciate the lifeboat. You came on Stack Overflow and helped rescue some knowledge from the dustbin of obscurity. Thanks for sharing with everybody and congrats on your badge. I am Ben Popper. I am the Director of Content here at Stack Overflow. You can always find me @BenPopper on Twitter. You can always email us with questions and suggestions at podcast@stackoverflow.com. And if you like the show, do leave us a rating and a review. It really helps.
CW I'm Cassidy Williams, Head of Developer Experience and Education at Remote. You can find me @Cassidoo on most things.
MK And I'm Matt Kiernander. I am a Technical Advocate here at Stack Overflow. You can find me online, YouTube, Twitter, whatever that might be @MattKander.
[outro music plays]