Podcasts about zsh

Unix shell

  • 58PODCASTS
  • 90EPISODES
  • 45mAVG DURATION
  • ?INFREQUENT EPISODES
  • Aug 16, 2024LATEST
zsh

POPULARITY

20172018201920202021202220232024


Best podcasts about zsh

Latest podcast episodes about zsh

Latent Space: The AI Engineer Podcast — CodeGen, Agents, Computer Vision, Data Science, AI UX and all things Software 3.0
AI Magic: Shipping 1000s of successful products with no managers and a team of 12 — Jeremy Howard of Answer.ai

Latent Space: The AI Engineer Podcast — CodeGen, Agents, Computer Vision, Data Science, AI UX and all things Software 3.0

Play Episode Listen Later Aug 16, 2024 58:56


Disclaimer: We recorded this episode ~1.5 months ago, timing for the FastHTML release. It then got bottlenecked by Llama3.1, Winds of AI Winter, and SAM2 episodes, so we're a little late. Since then FastHTML was released, swyx is building an app in it for AINews, and Anthropic has also released their prompt caching API. Remember when Dylan Patel of SemiAnalysis coined the GPU Rich vs GPU Poor war? (if not, see our pod with him). The idea was that if you're GPU poor you shouldn't waste your time trying to solve GPU rich problems (i.e. pre-training large models) and are better off working on fine-tuning, optimized inference, etc. Jeremy Howard (see our “End of Finetuning” episode to catchup on his background) and Eric Ries founded Answer.AI to do exactly that: “Practical AI R&D”, which is very in-line with the GPU poor needs. For example, one of their first releases was a system based on FSDP + QLoRA that let anyone train a 70B model on two NVIDIA 4090s. Since then, they have come out with a long list of super useful projects (in no particular order, and non-exhaustive):* FSDP QDoRA: this is just as memory efficient and scalable as FSDP/QLoRA, and critically is also as accurate for continued pre-training as full weight training.* Cold Compress: a KV cache compression toolkit that lets you scale sequence length without impacting speed.* colbert-small: state of the art retriever at only 33M params* JaColBERTv2.5: a new state-of-the-art retrievers on all Japanese benchmarks.* gpu.cpp: portable GPU compute for C++ with WebGPU.* Claudette: a better Anthropic API SDK. They also recently released FastHTML, a new way to create modern interactive web apps. Jeremy recently released a 1 hour “Getting started” tutorial on YouTube; while this isn't AI related per se, but it's close to home for any AI Engineer who are looking to iterate quickly on new products: In this episode we broke down 1) how they recruit 2) how they organize what to research 3) and how the community comes together. At the end, Jeremy gave us a sneak peek at something new that he's working on that he calls dialogue engineering: So I've created a new approach. It's not called prompt engineering. I'm creating a system for doing dialogue engineering. It's currently called AI magic. I'm doing most of my work in this system and it's making me much more productive than I was before I used it.He explains it a bit more ~44:53 in the pod, but we'll just have to wait for the public release to figure out exactly what he means.Timestamps* [00:00:00] Intro by Suno AI* [00:03:02] Continuous Pre-Training is Here* [00:06:07] Schedule-Free Optimizers and Learning Rate Schedules* [00:07:08] Governance and Structural Issues within OpenAI and Other AI Labs* [00:13:01] How Answer.ai works* [00:23:40] How to Recruit Productive Researchers* [00:27:45] Building a new BERT* [00:31:57] FSDP, QLoRA, and QDoRA: Innovations in Fine-Tuning Large Models* [00:36:36] Research and Development on Model Inference Optimization* [00:39:49] FastHTML for Web Application Development* [00:46:53] AI Magic & Dialogue Engineering* [00:52:19] AI wishlist & predictionsShow Notes* Jeremy Howard* Previously on Latent Space: The End of Finetuning, NeurIPS Startups* Answer.ai* Fast.ai* FastHTML* answerai-colbert-small-v1* gpu.cpp* Eric Ries* Aaron DeFazio* Yi Tai* Less Wright* Benjamin Warner* Benjamin Clavié* Jono Whitaker* Austin Huang* Eric Gilliam* Tim Dettmers* Colin Raffel* Sebastian Raschka* Carson Gross* Simon Willison* Sepp Hochreiter* Llama3.1 episode* Snowflake Arctic* Ranger Optimizer* Gemma.cpp* HTMX* UL2* BERT* DeBERTa* Efficient finetuning of Llama 3 with FSDP QDoRA* xLSTMTranscriptAlessio [00:00:00]: Hey everyone, welcome to the Latent Space podcast. This is Alessio, partner and CTO-in-Residence at Decibel Partners, and I'm joined by my co-host Swyx, founder of Smol AI.Swyx [00:00:14]: And today we're back with Jeremy Howard, I think your third appearance on Latent Space. Welcome.Jeremy [00:00:19]: Wait, third? Second?Swyx [00:00:21]: Well, I grabbed you at NeurIPS.Jeremy [00:00:23]: I see.Swyx [00:00:24]: Very fun, standing outside street episode.Jeremy [00:00:27]: I never heard that, by the way. You've got to send me a link. I've got to hear what it sounded like.Swyx [00:00:30]: Yeah. Yeah, it's a NeurIPS podcast.Alessio [00:00:32]: I think the two episodes are six hours, so there's plenty to listen, we'll make sure to send it over.Swyx [00:00:37]: Yeah, we're trying this thing where at the major ML conferences, we, you know, do a little audio tour of, give people a sense of what it's like. But the last time you were on, you declared the end of fine tuning. I hope that I sort of editorialized the title a little bit, and I know you were slightly uncomfortable with it, but you just own it anyway. I think you're very good at the hot takes. And we were just discussing in our pre-show that it's really happening, that the continued pre-training is really happening.Jeremy [00:01:02]: Yeah, absolutely. I think people are starting to understand that treating the three ULM FIT steps of like pre-training, you know, and then the kind of like what people now call instruction tuning, and then, I don't know if we've got a general term for this, DPO, RLHFE step, you know, or the task training, they're not actually as separate as we originally suggested they were in our paper, and when you treat it more as a continuum, and that you make sure that you have, you know, more of kind of the original data set incorporated into the later stages, and that, you know, we've also seen with LLAMA3, this idea that those later stages can be done for a lot longer. These are all of the things I was kind of trying to describe there. It wasn't the end of fine tuning, but more that we should treat it as a continuum, and we should have much higher expectations of how much you can do with an already trained model. You can really add a lot of behavior to it, you can change its behavior, you can do a lot. So a lot of our research has been around trying to figure out how to modify the model by a larger amount rather than starting from random weights, because I get very offended at the idea of starting from random weights.Swyx [00:02:14]: Yeah, I saw that in ICLR in Vienna, there was an outstanding paper about starting transformers from data-driven piers. I don't know if you saw that one, they called it sort of never trained from scratch, and I think it was kind of rebelling against like the sort of random initialization.Jeremy [00:02:28]: Yeah, I've, you know, that's been our kind of continuous message since we started Fast AI, is if you're training for random weights, you better have a really good reason, you know, because it seems so unlikely to me that nobody has ever trained on data that has any similarity whatsoever to the general class of data you're working with, and that's the only situation in which I think starting from random weights makes sense.Swyx [00:02:51]: The other trends since our last pod that I would point people to is I'm seeing a rise in multi-phase pre-training. So Snowflake released a large model called Snowflake Arctic, where they detailed three phases of training where they had like a different mixture of like, there was like 75% web in the first instance, and then they reduced the percentage of the web text by 10% each time and increased the amount of code in each phase. And I feel like multi-phase is being called out in papers more. I feel like it's always been a thing, like changing data mix is not something new, but calling it a distinct phase is new, and I wonder if there's something that you're seeingJeremy [00:03:32]: on your end. Well, so they're getting there, right? So the point at which they're doing proper continued pre-training is the point at which that becomes a continuum rather than a phase. So the only difference with what I was describing last time is to say like, oh, there's a function or whatever, which is happening every batch. It's not a huge difference. You know, I always used to get offended when people had learning rates that like jumped. And so one of the things I started doing early on in Fast.ai was to say to people like, no, you should actually have your learning rate schedule should be a function, not a list of numbers. So now I'm trying to give the same idea about training mix.Swyx [00:04:07]: There's been pretty public work from Meta on schedule-free optimizers. I don't know if you've been following Aaron DeFazio and what he's doing, just because you mentioned learning rate schedules, you know, what if you didn't have a schedule?Jeremy [00:04:18]: I don't care very much, honestly. I don't think that schedule-free optimizer is that exciting. It's fine. We've had non-scheduled optimizers for ages, like Less Wright, who's now at Meta, who was part of the Fast.ai community there, created something called the Ranger optimizer. I actually like having more hyperparameters. You know, as soon as you say schedule-free, then like, well, now I don't get to choose. And there isn't really a mathematically correct way of, like, I actually try to schedule more parameters rather than less. So like, I like scheduling my epsilon in my atom, for example. I schedule all the things. But then the other thing we always did with the Fast.ai library was make it so you don't have to set any schedules. So Fast.ai always supported, like, you didn't even have to pass a learning rate. Like, it would always just try to have good defaults and do the right thing. But to me, I like to have more parameters I can play with if I want to, but you don't have to.Alessio [00:05:08]: And then the more less technical side, I guess, of your issue, I guess, with the market was some of the large research labs taking all this innovation kind of behind closed doors and whether or not that's good, which it isn't. And now we could maybe make it more available to people. And then a month after we released the episode, there was the whole Sam Altman drama and like all the OpenAI governance issues. And maybe people started to think more, okay, what happens if some of these kind of labs, you know, start to break from within, so to speak? And the alignment of the humans is probably going to fall before the alignment of the models. So I'm curious, like, if you have any new thoughts and maybe we can also tie in some of the way that we've been building Answer as like a public benefit corp and some of those aspects.Jeremy [00:05:51]: Sure. So, yeah, I mean, it was kind of uncomfortable because two days before Altman got fired, I did a small public video interview in which I said, I'm quite sure that OpenAI's current governance structure can't continue and that it was definitely going to fall apart. And then it fell apart two days later and a bunch of people were like, what did you know, Jeremy?Alessio [00:06:13]: What did Jeremy see?Jeremy [00:06:15]: I didn't see anything. It's just obviously true. Yeah. So my friend Eric Ries and I spoke a lot before that about, you know, Eric's, I think probably most people would agree, the top expert in the world on startup and AI governance. And you know, we could both clearly see that this didn't make sense to have like a so-called non-profit where then there are people working at a company, a commercial company that's owned by or controlled nominally by the non-profit, where the people in the company are being given the equivalent of stock options, like everybody there was working there with expecting to make money largely from their equity. So the idea that then a board could exercise control by saying like, oh, we're worried about safety issues and so we're going to do something that decreases the profit of the company, when every stakeholder in the company, their remuneration pretty much is tied to their profit, it obviously couldn't work. So I mean, that was a huge oversight there by someone. I guess part of the problem is that the kind of people who work at non-profits and in this case the board, you know, who are kind of academics and, you know, people who are kind of true believers. I think it's hard for them to realize that 99.999% of the world is driven very heavily by money, especially huge amounts of money. So yeah, Eric and I had been talking for a long time before that about what could be done differently, because also companies are sociopathic by design and so the alignment problem as it relates to companies has not been solved. Like, companies become huge, they devour their founders, they devour their communities and they do things where even the CEOs, you know, often of big companies tell me like, I wish our company didn't do that thing. You know, I know that if I didn't do it, then I would just get fired and the board would put in somebody else and the board knows if they don't do it, then their shareholders can sue them because they're not maximizing profitability or whatever. So what Eric's spent a lot of time doing is trying to think about how do we make companies less sociopathic, you know, how to, or more, you know, maybe a better way to think of it is like, how do we make it so that the founders of companies can ensure that their companies continue to actually do the things they want them to do? You know, when we started a company, hey, we very explicitly decided we got to start a company, not a academic lab, not a nonprofit, you know, we created a Delaware Seacorp, you know, the most company kind of company. But when we did so, we told everybody, you know, including our first investors, which was you Alessio. They sound great. We are going to run this company on the basis of maximizing long-term value. And in fact, so when we did our second round, which was an angel round, we had everybody invest through a long-term SPV, which we set up where everybody had to agree to vote in line with long-term value principles. So like never enough just to say to people, okay, we're trying to create long-term value here for society as well as for ourselves and everybody's like, oh, yeah, yeah, I totally agree with that. But when it comes to like, okay, well, here's a specific decision we have to make, which will not maximize short-term value, people suddenly change their mind. So you know, it has to be written into the legal documents of everybody so that no question that that's the way the company has to be managed. So then you mentioned the PBC aspect, Public Benefit Corporation, which I never quite understood previously. And turns out it's incredibly simple, like it took, you know, like one paragraph added to our corporate documents to become a PBC. It was cheap, it was easy, but it's got this huge benefit, which is if you're not a public benefit corporation, then somebody can come along and offer to buy you with a stated description of like turning your company into the thing you most hate, right? And if they offer you more than the market value of your company and you don't accept it, then you are not necessarily meeting the kind of your fiduciary responsibilities. So the way like Eric always described it to me is like, if Philip Morris came along and said that you've got great technology for marketing cigarettes to children, so we're going to pivot your company to do that entirely, and we're going to pay you 50% more than the market value, you're going to have to say yes. If you have a PBC, then you are more than welcome to say no, if that offer is not in line with your stated public benefit. So our stated public benefit is to maximize the benefit to society through using AI. So given that more children smoking doesn't do that, then we can say like, no, we're not selling to you.Alessio [00:11:01]: I was looking back at some of our emails. You sent me an email on November 13th about talking and then on the 14th, I sent you an email working together to free AI was the subject line. And then that was kind of the start of the C round. And then two days later, someone got fired. So you know, you were having these thoughts even before we had like a public example of like why some of the current structures didn't work. So yeah, you were very ahead of the curve, so to speak. You know, people can read your awesome introduction blog and answer and the idea of having a R&D lab versus our lab and then a D lab somewhere else. I think to me, the most interesting thing has been hiring and some of the awesome people that you've been bringing on that maybe don't fit the central casting of Silicon Valley, so to speak. Like sometimes I got it like playing baseball cards, you know, people are like, oh, what teams was this person on, where did they work versus focusing on ability. So I would love for you to give a shout out to some of the awesome folks that you have on the team.Jeremy [00:11:58]: So, you know, there's like a graphic going around describing like the people at XAI, you know, Elon Musk thing. And like they are all connected to like multiple of Stanford, Meta, DeepMind, OpenAI, Berkeley, Oxford. Look, these are all great institutions and they have good people. And I'm definitely not at all against that, but damn, there's so many other people. And one of the things I found really interesting is almost any time I see something which I think like this is really high quality work and it's something I don't think would have been built if that person hadn't built the thing right now, I nearly always reach out to them and ask to chat. And I tend to dig in to find out like, okay, you know, why did you do that thing? Everybody else has done this other thing, your thing's much better, but it's not what other people are working on. And like 80% of the time, I find out the person has a really unusual background. So like often they'll have like, either they like came from poverty and didn't get an opportunity to go to a good school or had dyslexia and, you know, got kicked out of school in year 11, or they had a health issue that meant they couldn't go to university or something happened in their past and they ended up out of the mainstream. And then they kind of succeeded anyway. Those are the people that throughout my career, I've tended to kind of accidentally hire more of, but it's not exactly accidentally. It's like when I see somebody who's done, two people who have done extremely well, one of them did extremely well in exactly the normal way from the background entirely pointing in that direction and they achieved all the hurdles to get there. And like, okay, that's quite impressive, you know, but another person who did just as well, despite lots of constraints and doing things in really unusual ways and came up with different approaches. That's normally the person I'm likely to find useful to work with because they're often like risk-takers, they're often creative, they're often extremely tenacious, they're often very open-minded. So that's the kind of folks I tend to find myself hiring. So now at Answer.ai, it's a group of people that are strong enough that nearly every one of them has independently come to me in the past few weeks and told me that they have imposter syndrome and they're not convinced that they're good enough to be here. And I kind of heard it at the point where I was like, okay, I don't think it's possible that all of you are so far behind your peers that you shouldn't get to be here. But I think part of the problem is as an R&D lab, the great developers look at the great researchers and they're like, wow, these big-brained, crazy research people with all their math and s**t, they're too cool for me, oh my God. And then the researchers look at the developers and they're like, oh, they're killing it, making all this stuff with all these people using it and talking on Twitter about how great it is. I think they're both a bit intimidated by each other, you know. And so I have to kind of remind them like, okay, there are lots of things in this world where you suck compared to lots of other people in this company, but also vice versa, you know, for all things. And the reason you came here is because you wanted to learn about those other things from those other people and have an opportunity to like bring them all together into a single unit. You know, it's not reasonable to expect you're going to be better at everything than everybody else. I guess the other part of it is for nearly all of the people in the company, to be honest, they have nearly always been better than everybody else at nearly everything they're doing nearly everywhere they've been. So it's kind of weird to be in this situation now where it's like, gee, I can clearly see that I suck at this thing that I'm meant to be able to do compared to these other people where I'm like the worst in the company at this thing for some things. So I think that's a healthy place to be, you know, as long as you keep reminding each other about that's actually why we're here. And like, it's all a bit of an experiment, like we don't have any managers. We don't have any hierarchy from that point of view. So for example, I'm not a manager, which means I don't get to tell people what to do or how to do it or when to do it. Yeah, it's been a bit of an experiment to see how that would work out. And it's been great. So for instance, Ben Clavier, who you might have come across, he's the author of Ragatouille, he's the author of Rerankers, super strong information retrieval guy. And a few weeks ago, you know, this additional channel appeared on Discord, on our private Discord called Bert24. And these people started appearing, as in our collab sections, we have a collab section for like collaborating with outsiders. And these people started appearing, there are all these names that I recognize, like Bert24, and they're all talking about like the next generation of Bert. And I start following along, it's like, okay, Ben decided that I think, quite rightly, we need a new Bert. Because everybody, like so many people are still using Bert, and it's still the best at so many things, but it actually doesn't take advantage of lots of best practices. And so he just went out and found basically everybody who's created better Berts in the last four or five years, brought them all together, suddenly there's this huge collaboration going on. So yeah, I didn't tell him to do that. He didn't ask my permission to do that. And then, like, Benjamin Warner dived in, and he's like, oh, I created a whole transformers from scratch implementation designed to be maximally hackable. He originally did it largely as a teaching exercise to show other people, but he was like, I could, you know, use that to create a really hackable BERT implementation. In fact, he didn't say that. He said, I just did do that, you know, and I created a repo, and then everybody's like starts using it. They're like, oh my god, this is amazing. I can now implement all these other BERT things. And it's not just answer AI guys there, you know, there's lots of folks, you know, who have like contributed new data set mixes and blah, blah, blah. So, I mean, I can help in the same way that other people can help. So like, then Ben Clavier reached out to me at one point and said, can you help me, like, what have you learned over time about how to manage intimidatingly capable and large groups of people who you're nominally meant to be leading? And so, you know, I like to try to help, but I don't direct. Another great example was Kerem, who, after our FSTP QLORA work, decided quite correctly that it didn't really make sense to use LoRa in today's world. You want to use the normalized version, which is called Dora. Like two or three weeks after we did FSTP QLORA, he just popped up and said, okay, I've just converted the whole thing to Dora, and I've also created these VLLM extensions, and I've got all these benchmarks, and, you know, now I've got training of quantized models with adapters that are as fast as LoRa, and as actually better than, weirdly, fine tuning. Just like, okay, that's great, you know. And yeah, so the things we've done to try to help make these things happen as well is we don't have any required meetings, you know, but we do have a meeting for each pair of major time zones that everybody's invited to, and, you know, people see their colleagues doing stuff that looks really cool and say, like, oh, how can I help, you know, or how can I learn or whatever. So another example is Austin, who, you know, amazing background. He ran AI at Fidelity, he ran AI at Pfizer, he ran browsing and retrieval for Google's DeepMind stuff, created Jemma.cpp, and he's been working on a new system to make it easier to do web GPU programming, because, again, he quite correctly identified, yeah, so I said to him, like, okay, I want to learn about that. Not an area that I have much expertise in, so, you know, he's going to show me what he's working on and teach me a bit about it, and hopefully I can help contribute. I think one of the key things that's happened in all of these is everybody understands what Eric Gilliam, who wrote the second blog post in our series, the R&D historian, describes as a large yard with narrow fences. Everybody has total flexibility to do what they want. We all understand kind of roughly why we're here, you know, we agree with the premises around, like, everything's too expensive, everything's too complicated, people are building too many vanity foundation models rather than taking better advantage of fine-tuning, like, there's this kind of general, like, sense of we're all on the same wavelength about, you know, all the ways in which current research is fucked up, and, you know, all the ways in which we're worried about centralization. We all care a lot about not just research for the point of citations, but research that actually wouldn't have happened otherwise, and actually is going to lead to real-world outcomes. And so, yeah, with this kind of, like, shared vision, people understand, like, you know, so when I say, like, oh, well, you know, tell me, Ben, about BERT 24, what's that about? And he's like, you know, like, oh, well, you know, you can see from an accessibility point of view, or you can see from a kind of a actual practical impact point of view, there's far too much focus on decoder-only models, and, you know, like, BERT's used in all of these different places and industry, and so I can see, like, in terms of our basic principles, what we're trying to achieve, this seems like something important. And so I think that's, like, a really helpful that we have that kind of shared perspective, you know?Alessio [00:21:14]: Yeah. And before we maybe talk about some of the specific research, when you're, like, reaching out to people, interviewing them, what are some of the traits, like, how do these things come out, you know, usually? Is it working on side projects that you, you know, you're already familiar with? Is there anything, like, in the interview process that, like, helps you screen for people that are less pragmatic and more research-driven versus some of these folks that are just gonna do it, you know? They're not waiting for, like, the perfect process.Jeremy [00:21:40]: Everybody who comes through the recruiting is interviewed by everybody in the company. You know, our goal is 12 people, so it's not an unreasonable amount. So the other thing to say is everybody so far who's come into the recruiting pipeline, everybody bar one, has been hired. So which is to say our original curation has been good. And that's actually pretty easy, because nearly everybody who's come in through the recruiting pipeline are people I know pretty well. So Jono Whitaker and I, you know, he worked on the stable diffusion course we did. He's outrageously creative and talented, and he's super, like, enthusiastic tinkerer, just likes making things. Benjamin was one of the strongest parts of the fast.ai community, which is now the alumni. It's, like, hundreds of thousands of people. And you know, again, like, they're not people who a normal interview process would pick up, right? So Benjamin doesn't have any qualifications in math or computer science. Jono was living in Zimbabwe, you know, he was working on, like, helping some African startups, you know, but not FAANG kind of credentials. But yeah, I mean, when you actually see people doing real work and they stand out above, you know, we've got lots of Stanford graduates and open AI people and whatever in our alumni community as well. You know, when you stand out above all of those people anyway, obviously you've got something going for you. You know, Austin, him and I worked together on the masks study we did in the proceeding at the National Academy of Science. You know, we had worked together, and again, that was a group of, like, basically the 18 or 19 top experts in the world on public health and epidemiology and research design and so forth. And Austin, you know, one of the strongest people in that collaboration. So yeah, you know, like, I've been lucky enough to have had opportunities to work with some people who are great and, you know, I'm a very open-minded person, so I kind of am always happy to try working with pretty much anybody and some people stand out. You know, there have been some exceptions, people I haven't previously known, like Ben Clavier, actually, I didn't know before. But you know, with him, you just read his code, and I'm like, oh, that's really well-written code. And like, it's not written exactly the same way as everybody else's code, and it's not written to do exactly the same thing as everybody else's code. So yeah, and then when I chatted to him, it's just like, I don't know, I felt like we'd known each other for years, like we just were on the same wavelength, but I could pretty much tell that was going to happen just by reading his code. I think you express a lot in the code you choose to write and how you choose to write it, I guess. You know, or another example, a guy named Vic, who was previously the CEO of DataQuest, and like, in that case, you know, he's created a really successful startup. He won the first, basically, Kaggle NLP competition, which was automatic essay grading. He's got the current state-of-the-art OCR system, Surya. Again, he's just a guy who obviously just builds stuff, you know, he doesn't ask for permission, he doesn't need any, like, external resources. Actually, Karim's another great example of this, I mean, I already knew Karim very well because he was my best ever master's student, but it wasn't a surprise to me then when he then went off to create the world's state-of-the-art language model in Turkish on his own, in his spare time, with no budget, from scratch. This is not fine-tuning or whatever, he, like, went back to Common Crawl and did everything. Yeah, it's kind of, I don't know what I'd describe that process as, but it's not at all based on credentials.Swyx [00:25:17]: Assemble based on talent, yeah. We wanted to dive in a little bit more on, you know, turning from the people side of things into the technical bets that you're making. Just a little bit more on Bert. I was actually, we just did an interview with Yi Tay from Reka, I don't know if you're familiar with his work, but also another encoder-decoder bet, and one of his arguments was actually people kind of over-index on the decoder-only GPT-3 type paradigm. I wonder if you have thoughts there that is maybe non-consensus as well. Yeah, no, absolutely.Jeremy [00:25:45]: So I think it's a great example. So one of the people we're collaborating with a little bit with BERT24 is Colin Raffle, who is the guy behind, yeah, most of that stuff, you know, between that and UL2, there's a lot of really interesting work. And so one of the things I've been encouraging the BERT group to do, Colin has as well, is to consider using a T5 pre-trained encoder backbone as a thing you fine-tune, which I think would be really cool. You know, Colin was also saying actually just use encoder-decoder as your Bert, you know, why don't you like use that as a baseline, which I also think is a good idea. Yeah, look.Swyx [00:26:25]: What technical arguments are people under-weighting?Jeremy [00:26:27]: I mean, Colin would be able to describe this much better than I can, but I'll give my slightly non-expert attempt. Look, I mean, think about like diffusion models, right? Like in stable diffusion, like we use things like UNet. You have this kind of downward path and then in the upward path you have the cross connections, which it's not a tension, but it's like a similar idea, right? You're inputting the original encoding path into your decoding path. It's critical to make it work, right? Because otherwise in the decoding part, the model has to do so much kind of from scratch. So like if you're doing translation, like that's a classic kind of encoder-decoder example. If it's decoder only, you never get the opportunity to find the right, you know, feature engineering, the right feature encoding for the original sentence. And it kind of means then on every token that you generate, you have to recreate the whole thing, you know? So if you have an encoder, it's basically saying like, okay, this is your opportunity model to create a really useful feature representation for your input information. So I think there's really strong arguments for encoder-decoder models anywhere that there is this kind of like context or source thing. And then why encoder only? Well, because so much of the time what we actually care about is a classification, you know? It's like an output. It's like generating an arbitrary length sequence of tokens. So anytime you're not generating an arbitrary length sequence of tokens, decoder models don't seem to make much sense. Now the interesting thing is, you see on like Kaggle competitions, that decoder models still are at least competitive with things like Deberta v3. They have to be way bigger to be competitive with things like Deberta v3. And the only reason they are competitive is because people have put a lot more time and money and effort into training the decoder only ones, you know? There isn't a recent Deberta. There isn't a recent Bert. Yeah, it's a whole part of the world that people have slept on a little bit. And this is just what happens. This is how trends happen rather than like, to me, everybody should be like, oh, let's look at the thing that has shown signs of being useful in the past, but nobody really followed up with properly. That's the more interesting path, you know, where people tend to be like, oh, I need to get citations. So what's everybody else doing? Can I make it 0.1% better, you know, or 0.1% faster? That's what everybody tends to do. Yeah. So I think it's like, Itay's work commercially now is interesting because here's like a whole, here's a whole model that's been trained in a different way. So there's probably a whole lot of tasks it's probably better at than GPT and Gemini and Claude. So that should be a good commercial opportunity for them if they can figure out what those tasks are.Swyx [00:29:07]: Well, if rumors are to be believed, and he didn't comment on this, but, you know, Snowflake may figure out the commercialization for them. So we'll see.Jeremy [00:29:14]: Good.Alessio [00:29:16]: Let's talk about FSDP, Qlora, Qdora, and all of that awesome stuff. One of the things we talked about last time, some of these models are meant to run on systems that nobody can really own, no single person. And then you were like, well, what if you could fine tune a 70B model on like a 4090? And I was like, no, that sounds great, Jeremy, but like, can we actually do it? And then obviously you all figured it out. Can you maybe tell us some of the worst stories behind that, like the idea behind FSDP, which is kind of taking sharded data, parallel computation, and then Qlora, which is do not touch all the weights, just go quantize some of the model, and then within the quantized model only do certain layers instead of doing everything.Jeremy [00:29:57]: Well, do the adapters. Yeah.Alessio [00:29:59]: Yeah. Yeah. Do the adapters. Yeah. I will leave the floor to you. I think before you published it, nobody thought this was like a short term thing that we're just going to have. And now it's like, oh, obviously you can do it, but it's not that easy.Jeremy [00:30:12]: Yeah. I mean, to be honest, it was extremely unpleasant work to do. It's like not at all enjoyable. I kind of did version 0.1 of it myself before we had launched the company, or at least the kind of like the pieces. They're all pieces that are difficult to work with, right? So for the quantization, you know, I chatted to Tim Detmers quite a bit and, you know, he very much encouraged me by saying like, yeah, it's possible. He actually thought it'd be easy. It probably would be easy for him, but I'm not Tim Detmers. And, you know, so he wrote bits and bytes, which is his quantization library. You know, he wrote that for a paper. He didn't write that to be production like code. It's now like everybody's using it, at least the CUDA bits. So like, it's not particularly well structured. There's lots of code paths that never get used. There's multiple versions of the same thing. You have to try to figure it out. So trying to get my head around that was hard. And you know, because the interesting bits are all written in CUDA, it's hard to like to step through it and see what's happening. And then, you know, FSTP is this very complicated library and PyTorch, which not particularly well documented. So the only really, really way to understand it properly is again, just read the code and step through the code. And then like bits and bytes doesn't really work in practice unless it's used with PEF, the HuggingFace library and PEF doesn't really work in practice unless you use it with other things. And there's a lot of coupling in the HuggingFace ecosystem where like none of it works separately. You have to use it all together, which I don't love. So yeah, trying to just get a minimal example that I can play with was really hard. And so I ended up having to rewrite a lot of it myself to kind of create this like minimal script. One thing that helped a lot was Medec had this LlamaRecipes repo that came out just a little bit before I started working on that. And like they had a kind of role model example of like, here's how to train FSTP, LoRa, didn't work with QLoRa on Llama. A lot of the stuff I discovered, the interesting stuff would be put together by Les Wright, who's, he was actually the guy in the Fast.ai community I mentioned who created the Ranger Optimizer. So he's doing a lot of great stuff at Meta now. So yeah, I kind of, that helped get some minimum stuff going and then it was great once Benjamin and Jono joined full time. And so we basically hacked at that together and then Kerim joined like a month later or something. And it was like, gee, it was just a lot of like fiddly detailed engineering on like barely documented bits of obscure internals. So my focus was to see if it kind of could work and I kind of got a bit of a proof of concept working and then the rest of the guys actually did all the work to make it work properly. And, you know, every time we thought we had something, you know, we needed to have good benchmarks, right? So we'd like, it's very easy to convince yourself you've done the work when you haven't, you know, so then we'd actually try lots of things and be like, oh, and these like really important cases, the memory use is higher, you know, or it's actually slower. And we'd go in and we just find like all these things that were nothing to do with our library that just didn't work properly. And nobody had noticed they hadn't worked properly because nobody had really benchmarked it properly. So we ended up, you know, trying to fix a whole lot of different things. And even as we did so, new regressions were appearing in like transformers and stuff that Benjamin then had to go away and figure out like, oh, how come flash attention doesn't work in this version of transformers anymore with this set of models and like, oh, it turns out they accidentally changed this thing, so it doesn't work. You know, there's just, there's not a lot of really good performance type evals going on in the open source ecosystem. So there's an extraordinary amount of like things where people say like, oh, we built this thing and it has this result. And when you actually check it, so yeah, there's a shitload of war stories from getting that thing to work. And it did require a particularly like tenacious group of people and a group of people who don't mind doing a whole lot of kind of like really janitorial work, to be honest, to get the details right, to check them. Yeah.Alessio [00:34:09]: We had a trade out on the podcast and we talked about how a lot of it is like systems work to make some of these things work. It's not just like beautiful, pure math that you do on a blackboard. It's like, how do you get into the nitty gritty?Jeremy [00:34:22]: I mean, flash attention is a great example of that. Like it's, it basically is just like, oh, let's just take the attention and just do the tiled version of it, which sounds simple enough, you know, but then implementing that is challenging at lots of levels.Alessio [00:34:36]: Yeah. What about inference? You know, obviously you've done all this amazing work on fine tuning. Do you have any research you've been doing on the inference side, how to make local inference really fast on these models too?Jeremy [00:34:47]: We're doing quite a bit on that at the moment. We haven't released too much there yet. But one of the things I've been trying to do is also just to help other people. And one of the nice things that's happened is that a couple of folks at Meta, including Mark Seraphim, have done a nice job of creating this CUDA mode community of people working on like CUDA kernels or learning about that. And I tried to help get that going well as well and did some lessons to help people get into it. So there's a lot going on in both inference and fine tuning performance. And a lot of it's actually happening kind of related to that. So PyTorch team have created this Torch AO project on quantization. And so there's a big overlap now between kind of the FastAI and AnswerAI and CUDA mode communities of people working on stuff for both inference and fine tuning. But we're getting close now. You know, our goal is that nobody should be merging models, nobody should be downloading merged models, everybody should be using basically quantized plus adapters for almost everything and just downloading the adapters. And that should be much faster. So that's kind of the place we're trying to get to. It's difficult, you know, because like Karim's been doing a lot of work with VLM, for example. These inference engines are pretty complex bits of code. They have a whole lot of custom kernel stuff going on as well, as do the quantization libraries. So we've been working on, we're also quite a bit of collaborating with the folks who do HQQ, which is a really great quantization library and works super well. So yeah, there's a lot of other people outside AnswerAI that we're working with a lot who are really helping on all this performance optimization stuff, open source.Swyx [00:36:27]: Just to follow up on merging models, I picked up there that you said nobody should be merging models. That's interesting because obviously a lot of people are experimenting with this and finding interesting results. I would say in defense of merging models, you can do it without data. That's probably the only thing that's going for it.Jeremy [00:36:45]: To explain, it's not that you shouldn't merge models. You shouldn't be distributing a merged model. You should distribute a merged adapter 99% of the time. And actually often one of the best things happening in the model merging world is actually that often merging adapters works better anyway. The point is, Sean, that once you've got your new model, if you distribute it as an adapter that sits on top of a quantized model that somebody's already downloaded, then it's a much smaller download for them. And also the inference should be much faster because you're not having to transfer FB16 weights from HPM memory at all or ever load them off disk. You know, all the main weights are quantized and the only floating point weights are in the adapters. So that should make both inference and fine tuning faster. Okay, perfect.Swyx [00:37:33]: We're moving on a little bit to the rest of the fast universe. I would have thought that, you know, once you started Answer.ai, that the sort of fast universe would be kind of on hold. And then today you just dropped Fastlight and it looks like, you know, there's more activity going on in sort of Fastland.Jeremy [00:37:49]: Yeah. So Fastland and Answerland are not really distinct things. Answerland is kind of like the Fastland grown up and funded. They both have the same mission, which is to maximize the societal benefit of AI broadly. We want to create thousands of commercially successful products at Answer.ai. And we want to do that with like 12 people. So that means we need a pretty efficient stack, you know, like quite a few orders of magnitude more efficient, not just for creation, but for deployment and maintenance than anything that currently exists. People often forget about the D part of our R&D firm. So we've got to be extremely good at creating, deploying and maintaining applications, not just models. Much to my horror, the story around creating web applications is much worse now than it was 10 or 15 years ago in terms of, if I say to a data scientist, here's how to create and deploy a web application, you know, either you have to learn JavaScript or TypeScript and about all the complex libraries like React and stuff, and all the complex like details around security and web protocol stuff around how you then talk to a backend and then all the details about creating the backend. You know, if that's your job and, you know, you have specialists who work in just one of those areas, it is possible for that to all work. But compared to like, oh, write a PHP script and put it in the home directory that you get when you sign up to this shell provider, which is what it was like in the nineties, you know, here are those 25 lines of code and you're done and now you can pass that URL around to all your friends, or put this, you know, .pl file inside the CGI bin directory that you got when you signed up to this web host. So yeah, the thing I've been mainly working on the last few weeks is fixing all that. And I think I fixed it. I don't know if this is an announcement, but I tell you guys, so yeah, there's this thing called fastHTML, which basically lets you create a complete web application in a single Python file. Unlike excellent projects like Streamlit and Gradio, you're not working on top of a highly abstracted thing. That's got nothing to do with web foundations. You're working with web foundations directly, but you're able to do it by using pure Python. There's no template, there's no ginger, there's no separate like CSS and JavaScript files. It looks and behaves like a modern SPA web application. And you can create components for like daisy UI, or bootstrap, or shoelace, or whatever fancy JavaScript and or CSS tailwind etc library you like, but you can write it all in Python. You can pip install somebody else's set of components and use them entirely from Python. You can develop and prototype it all in a Jupyter notebook if you want to. It all displays correctly, so you can like interactively do that. And then you mentioned Fastlight, so specifically now if you're using SQLite in particular, it's like ridiculously easy to have that persistence, and all of your handlers will be passed database ready objects automatically, that you can just call dot delete dot update dot insert on. Yeah, you get session, you get security, you get all that. So again, like with most everything I do, it's very little code. It's mainly tying together really cool stuff that other people have written. You don't have to use it, but a lot of the best stuff comes from its incorporation of HTMX, which to me is basically the thing that changes your browser to make it work the way it always should have. So it just does four small things, but those four small things are the things that are basically unnecessary constraints that HTML should never have had, so it removes the constraints. It sits on top of Starlet, which is a very nice kind of lower level platform for building these kind of web applications. The actual interface matches as closely as possible to FastAPI, which is a really nice system for creating the kind of classic JavaScript type applications. And Sebastian, who wrote FastAPI, has been kind enough to help me think through some of these design decisions, and so forth. I mean, everybody involved has been super helpful. Actually, I chatted to Carson, who created HTMX, you know, so about it. Some of the folks involved in Django, like everybody in the community I've spoken to definitely realizes there's a big gap to be filled around, like, highly scalable, web foundation-based, pure Python framework with a minimum of fuss. So yeah, I'm getting a lot of support and trying to make sure that FastHTML works well for people.Swyx [00:42:38]: I would say, when I heard about this, I texted Alexio. I think this is going to be pretty huge. People consider Streamlit and Gradio to be the state of the art, but I think there's so much to improve, and having what you call web foundations and web fundamentals at the core of it, I think, would be really helpful.Jeremy [00:42:54]: I mean, it's based on 25 years of thinking and work for me. So like, FastML was built on a system much like this one, but that was of hell. And so I spent, you know, 10 years working on that. We had millions of people using that every day, really pushing it hard. And I really always enjoyed working in that. Yeah. So, you know, and obviously lots of other people have done like great stuff, and particularly HTMX. So I've been thinking about like, yeah, how do I pull together the best of the web framework I created for FastML with HTMX? There's also things like PicoCSS, which is the CSS system, which by default, FastHTML comes with. Although, as I say, you can pip install anything you want to, but it makes it like super easy to, you know, so we try to make it so that just out of the box, you don't have any choices to make. Yeah. You can make choices, but for most people, you just, you know, it's like the PHP in your home directory thing. You just start typing and just by default, you'll get something which looks and feels, you know, pretty okay. And if you want to then write a version of Gradio or Streamlit on top of that, you totally can. And then the nice thing is if you then write it in kind of the Gradio equivalent, which will be, you know, I imagine we'll create some kind of pip installable thing for that. Once you've outgrown, or if you outgrow that, it's not like, okay, throw that all away and start again. And this like whole separate language that it's like this kind of smooth, gentle path that you can take step-by-step because it's all just standard web foundations all the way, you know.Swyx [00:44:29]: Just to wrap up the sort of open source work that you're doing, you're aiming to create thousands of projects with a very, very small team. I haven't heard you mention once AI agents or AI developer tooling or AI code maintenance. I know you're very productive, but you know, what is the role of AI in your own work?Jeremy [00:44:47]: So I'm making something. I'm not sure how much I want to say just yet.Swyx [00:44:52]: Give us a nibble.Jeremy [00:44:53]: All right. I'll give you the key thing. So I've created a new approach. It's not called prompt engineering. It's called dialogue engineering. But I'm creating a system for doing dialogue engineering. It's currently called AI magic. I'm doing most of my work in this system and it's making me much more productive than I was before I used it. So I always just build stuff for myself and hope that it'll be useful for somebody else. Think about chat GPT with code interpreter, right? The basic UX is the same as a 1970s teletype, right? So if you wrote APL on a teletype in the 1970s, you typed onto a thing, your words appeared at the bottom of a sheet of paper and you'd like hit enter and it would scroll up. And then the answer from APL would be printed out, scroll up, and then you would type the next thing. And like, which is also the way, for example, a shell works like bash or ZSH or whatever. It's not terrible, you know, like we all get a lot done in these like very, very basic teletype style REPL environments, but I've never felt like it's optimal and everybody else has just copied chat GPT. So it's also the way BART and Gemini work. It's also the way the Claude web app works. And then you add code interpreter. And the most you can do is to like plead with chat GPT to write the kind of code I want. It's pretty good for very, very, very beginner users who like can't code at all, like by default now the code's even hidden away, so you never even have to see it ever happened. But for somebody who's like wanting to learn to code or who already knows a bit of code or whatever, it's, it seems really not ideal. So okay, that's one end of the spectrum. The other end of the spectrum, which is where Sean's work comes in, is, oh, you want to do more than chat GPT? No worries. Here is Visual Studio Code. I run it. There's an empty screen with a flashing cursor. Okay, start coding, you know, and it's like, okay, you can use systems like Sean's or like cursor or whatever to be like, okay, Apple K in cursors, like a creative form that blah, blah, blah. But in the end, it's like a convenience over the top of this incredibly complicated system that full-time sophisticated software engineers have designed over the past few decades in a totally different environment as a way to build software, you know. And so we're trying to like shoehorn in AI into that. And it's not easy to do. And I think there are like much better ways of thinking about the craft of software development in a language model world to be much more interactive, you know. So the thing that I'm building is neither of those things. It's something between the two. And it's built around this idea of crafting a dialogue, you know, where the outcome of the dialogue is the artifacts that you want, whether it be a piece of analysis or whether it be a Python library or whether it be a technical blog post or whatever. So as part of building that, I've created something called Claudette, which is a library for Claude. I've created something called Cosette, which is a library for OpenAI. They're libraries which are designed to make those APIs much more usable, much easier to use, much more concise. And then I've written AI magic on top of those. And that's been an interesting exercise because I did Claudette first, and I was looking at what Simon Willison did with his fantastic LLM library. And his library is designed around like, let's make something that supports all the LLM inference engines and commercial providers. I thought, okay, what if I did something different, which is like make something that's as Claude friendly as possible and forget everything else. So that's what Claudette was. So for example, one of the really nice things in Claude is prefill. So by telling the assistant that this is what your response started with, there's a lot of powerful things you can take advantage of. So yeah, I created Claudette to be as Claude friendly as possible. And then after I did that, and then particularly with GPT 4.0 coming out, I kind of thought, okay, now let's create something that's as OpenAI friendly as possible. And then I tried to look to see, well, where are the similarities and where are the differences? And now can I make them compatible in places where it makes sense for them to be compatible without losing out on the things that make each one special for what they are. So yeah, those are some of the things I've been working on in that space. And I'm thinking we might launch AI magic via a course called how to solve it with code. The name is based on the classic Polya book, if you know how to solve it, which is, you know, one of the classic math books of all time, where we're basically going to try to show people how to solve challenging problems that they didn't think they could solve without doing a full computer science course, by taking advantage of a bit of AI and a bit of like practical skills, as particularly for this like whole generation of people who are learning to code with and because of ChatGPT. Like I love it, I know a lot of people who didn't really know how to code, but they've created things because they use ChatGPT, but they don't really know how to maintain them or fix them or add things to them that ChatGPT can't do, because they don't really know how to code. And so this course will be designed to show you how you can like either become a developer who can like supercharge their capabilities by using language models, or become a language model first developer who can supercharge their capabilities by understanding a bit about process and fundamentals.Alessio [00:50:19]: Nice. That's a great spoiler. You know, I guess the fourth time you're going to be on learning space, we're going to talk about AI magic. Jeremy, before we wrap, this was just a great run through everything. What are the things that when you next come on the podcast in nine, 12 months, we're going to be like, man, Jeremy was like really ahead of it. Like, is there anything that you see in the space that maybe people are not talking enough? You know, what's the next company that's going to fall, like have drama internally, anything in your mind?Jeremy [00:50:47]: You know, hopefully we'll be talking a lot about fast HTML and hopefully the international community that at that point has come up around that. And also about AI magic and about dialogue engineering. Hopefully dialogue engineering catches on because I think it's the right way to think about a lot of this stuff. What else? Just trying to think about all on the research side. Yeah. I think, you know, I mean, we've talked about a lot of it. Like I think encoder decoder architectures, encoder only architectures, hopefully we'll be talking about like the whole re-interest in BERT that BERT 24 stimulated.Swyx [00:51:17]: There's a safe space model that came out today that might be interesting for this general discussion. One thing that stood out to me with Cartesia's blog posts was that they were talking about real time ingestion, billions and trillions of tokens, and keeping that context, obviously in the state space that they have.Jeremy [00:51:34]: Yeah.Swyx [00:51:35]: I'm wondering what your thoughts are because you've been entirely transformers the whole time.Jeremy [00:51:38]: Yeah. No. So obviously my background is RNNs and LSTMs. Of course. And I'm still a believer in the idea that state is something you can update, you know? So obviously Sepp Hochreiter came up, came out with xLSTM recently. Oh my God. Okay. Another whole thing we haven't talked about, just somewhat related. I've been going crazy for like a long time about like, why can I not pay anybody to save my KV cash? I just ingested the Great Gatsby or the documentation for Starlet or whatever, you know, I'm sending it as my prompt context. Why are you redoing it every time? So Gemini is about to finally come out with KV caching, and this is something that Austin actually in Gemma.cpp had had on his roadmap for years, well not years, months, long time. The idea that the KV cache is like a thing that, it's a third thing, right? So there's RAG, you know, there's in-context learning, you know, and prompt engineering, and there's KV cache creation. I think it creates like a whole new class almost of applications or as techniques where, you know, for me, for example, I very often work with really new libraries or I've created my own library that I'm now writing with rather than on. So I want all the docs in my new library to be there all the time. So I want to upload them once, and then we have a whole discussion about building this application using FastHTML. Well nobody's got FastHTML in their language model yet, I don't want to send all the FastHTML docs across every time. So one of the things I'm looking at doing in AI Magic actually is taking advantage of some of these ideas so that you can have the documentation of the libraries you're working on be kind of always available. Something over the next 12 months people will be spending time thinking about is how to like, where to use RAG, where to use fine-tuning, where to use KV cache storage, you know. And how to use state, because in state models and XLSTM, again, state is something you update. So how do we combine the best of all of these worlds?Alessio [00:53:46]: And Jeremy, I know before you talked about how some of the autoregressive models are not maybe a great fit for agents. Any other thoughts on like JEPA, diffusion for text, any interesting thing that you've seen pop up?Jeremy [00:53:58]: In the same way that we probably ought to have state that you can update, i.e. XLSTM and state models, in the same way that a lot of things probably should have an encoder, JEPA and diffusion both seem like the right conceptual mapping for a lot of things we probably want to do. So the idea of like, there should be a piece of the generative pipeline, which is like thinking about the answer and coming up with a sketch of what the answer looks like before you start outputting tokens. That's where it kind of feels like diffusion ought to fit, you know. And diffusion is, because it's not autoregressive, it's like, let's try to like gradually de-blur the picture of how to solve this. So this is also where dialogue engineering fits in, by the way. So with dialogue engineering, one of the reasons it's working so well for me is I use it to kind of like craft the thought process before I generate the code, you know. So yeah, there's a lot of different pieces here and I don't know how they'll all kind of exactly fit together. I don't know if JEPA is going to actually end up working in the text world. I don't know if diffusion will end up working in the text world, but they seem to be like trying to solve a class of problem which is currently unsolved.Alessio [00:55:13]: Awesome, Jeremy. This was great, as usual. Thanks again for coming back on the pod and thank you all for listening. Yeah, that was fantastic. Get full access to Latent Space at www.latent.space/subscribe

LINUX Unplugged
568: All Your Silos are Broken

LINUX Unplugged

Play Episode Listen Later Jun 24, 2024 81:03


Online identity is a ticking time bomb. Are trustworthy, open-source solutions ready to disarm it? Or will we be stuck with lackluster, proprietary systems?Sponsored By:Core Contributor Membership: Take $1 a month of your membership for a lifetime!Tailscale: Tailscale is a programmable networking software that is private and secure by default - get it free on up to 100 devices!1Password Extended Access Management: 1Password Extended Access Management is a device trust solution for companies with Okta, and they ensure that if a device isn't trusted and secure, it can't log into your cloud apps.Support LINUX UnpluggedLinks:

Atareao con Linux
ATA 559 Fish ha revolucionado mi terminal Linux

Atareao con Linux

Play Episode Listen Later Jan 15, 2024 17:54


Pasar de Bash a Zsh fue un auténtico drama. Así como lo estás leyendo. Me resistía a abandonar esa shell que tanto tiempo me había acompañado. Después de un tiempo, me di cuenta que no era para tanto. Al final, los scripts seguiría haciéndolos en Bash, o en Zsh, a mi conveniencia. Y lo cierto, es que han sido muchos mas en Bash, que en Zsh. En este último casi, fue al final de los tiempos cuando quise hacer algunos complementos. Hoy, pasar de Zsh a Fish, no ha supuesto tanto drama para mi. Si, inicialmente, quise resistirme, pero luego todo vino rodado. Así que finalmente le dije adiós a Zsh, y bienvenido al super productivo Fish. En este episodio te cuento mi aventura con Zsh y el porqué del cambio a Fish. Más información, enlaces y notas en https://atareao.es/podcast/559

Sospechosos Habituales
ATA 559 Fish ha revolucionado mi terminal Linux

Sospechosos Habituales

Play Episode Listen Later Jan 15, 2024 17:54


Pasar de Bash a Zsh fue un auténtico drama. Así como lo estás leyendo. Me resistía a abandonar esa shell que tanto tiempo me había acompañado. Después de un tiempo, me di cuenta que no era para tanto. Al final, los scripts seguiría haciéndolos en Bash, o en Zsh, a mi conveniencia. Y lo cierto, es que han sido muchos mas en Bash, que en Zsh. En este último casi, fue al final de los tiempos cuando quise hacer algunos complementos. Hoy, pasar de Zsh a Fish, no ha supuesto tanto drama para mi. Si, inicialmente, quise resistirme, pero luego todo vino rodado. Así que finalmente le dije adiós a Zsh, y bienvenido al super productivo Fish. En este episodio te cuento mi aventura con Zsh y el porqué del cambio a Fish. Más información, enlaces y notas en https://atareao.es/podcast/559

Atareao con Linux
ATA 542 Zsh no es Bash

Atareao con Linux

Play Episode Listen Later Nov 16, 2023 15:15


Como ya te conté hace algún tiempo, Zsh se ha convertido en mi Shell por defecto. Sin embargo, hasta la fecha, he continuado haciendo mis scripts en Bash. Simplemente, porque estoy acostumbrado a utilizar Bash como lenguaje de scripting, entre otras cosas, porque también es el lenguaje de scripting que utilizo habitualmente tanto de forma personal como profesional. Esto no quita que puntualmente haga algún script en Zsh, pero no es lo normal. Sin embargo, el otro día, me topé de nuevo con la realizad de que Zsh no es Bash. No son totalmente compatibles, aunque por poco, la verdad. Más información, enlaces y notas en https://atareao.es/podcast/542

Sospechosos Habituales
ATA 542 Zsh no es Bash

Sospechosos Habituales

Play Episode Listen Later Nov 16, 2023 15:15


Como ya te conté hace algún tiempo, Zsh se ha convertido en mi Shell por defecto. Sin embargo, hasta la fecha, he continuado haciendo mis scripts en Bash. Simplemente, porque estoy acostumbrado a utilizar Bash como lenguaje de scripting, entre otras cosas, porque también es el lenguaje de scripting que utilizo habitualmente tanto de forma personal como profesional. Esto no quita que puntualmente haga algún script en Zsh, pero no es lo normal. Sin embargo, el otro día, me topé de nuevo con la realizad de que Zsh no es Bash. No son totalmente compatibles, aunque por poco, la verdad. Más información, enlaces y notas en https://atareao.es/podcast/542

Late Night Linux
Late Night Linux – Episode 255

Late Night Linux

Play Episode Listen Later Nov 13, 2023 27:03


Using open source software to get paid for using electricity, automatically formatting your terrible Python code, speeding up Zsh, a couple of ways to get notifications, M1 Macbook Air problems, an epic ThinkPad collection, and more.   Support us on Patreon and get an ad-free RSS feed with early episodes sometimes   Discoveries Control your... Read More

Late Night Linux All Episodes
Late Night Linux – Episode 255

Late Night Linux All Episodes

Play Episode Listen Later Nov 13, 2023 27:03


Using open source software to get paid for using electricity, automatically formatting your terrible Python code, speeding up Zsh, a couple of ways to get notifications, M1 Macbook Air problems, an epic ThinkPad collection, and more.   Support us on Patreon and get an ad-free RSS feed with early episodes sometimes   Discoveries Control your... Read More

Python Bytes
#358 Collecting Shells

Python Bytes

Play Episode Listen Later Oct 24, 2023 35:28


Topics covered in this episode: Django 5.0 beta 1 released git bash, terminals, and Windows Mastering Integration Testing with FastAPI Reuven Learner has been banned for trading in rare animals (Pythons and Pandas) Extras Joke Watch on YouTube About the show Sponsored by us! Support our work through: Our courses at Talk Python Training The Complete pytest Course Patreon Supporters Connect with the hosts Michael: @mkennedy@fosstodon.org Brian: @brianokken@fosstodon.org Show: @pythonbytes@fosstodon.org Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesdays at 11am PT. Older video versions available there too. Brian #1: Django 5.0 beta 1 released Django 5.0 release notes supports Python 3.10, 3.11, 3.12 Facet filters in the admin Simplified templates for form field rendering Database-computed default values Database generated model field More options for declaring field choices More Django news Djangonaut Space now accepting applications for our next contributor mentorship cohort Take the Django Developers Survey 2023 Michael #2: git bash, terminals, and Windows See the screenshot Requires Windows 10 Install the Windows Terminal from the Microsoft Store Brian #3: Mastering Integration Testing with FastAPI Alex Jacobs Some great integration testing techniques Focused on FastAPI, but relevant to many frameworks. Mocking authentication Mocking external APIs Fun use of parametrize and indirect fixtures for mocking responses. Mocking MongoDB Mocking AWS S3 Michael #4: Reuven Learner has been banned for trading in rare animals (Pythons and Pandas) via Pat Decker Reuven, like us, teaches Python and Data Sci Tried to advertise his courses (Python and Pandas courses) on Meta Got permanently (life-time) banned for selling rare and endangered animals. Sometimes I really hate these big tech companies My recent beefs have been with app store reviewers and surveillance-based capitalism Extras Brian: Where did everyone go? - Ned Batchelder I do feel like we're more fragmented than before, but I am feeling like we have a community on Mastodon. reminder that Mastodon has text search now On Sunday, I released Ch9, Coverage, as part of The Complete pytest course, specifically part of pytest Working with Projects. It was super fun. I've used coverage a lot since writing the book, for example, I demonstrate branch coverage. It's so much more effective to teach in video than in printed screenshots. Michael: Autin shell enhancer by Ellie Huxtable recommended by recommended by Nik JupyterCon 2023 videos are out More shells follow up from Teemu Hukkanen for “editor like” features Zsh and Bash ruff format and strings, aka format.quote-style = "single" Glyph's programming your computer talk is up. Joke: this is what the experts do

Atareao con Linux
ATA 527 Tienes que instalar Rust para exprimir Linux

Atareao con Linux

Play Episode Listen Later Sep 25, 2023 15:44


En estos últimos días, he estado actualizando mi terminal Linux. Y no me refiero tanto a Kitty, que como sabes es mi terminal por defecto, sino a todas las herramientas que utilizo junto a Kitty. Herramientas que me proporcionan una mayor productividad, pero, que sobre todo hacen que me sienta mucho más cómodo utilizando la terminal. Así, por ejemplo, he actualizado los complementos de Zsh que utilizo, he modificado algunos scripts, y de paso, he actualizado algunas de estas herramientas. En ese proceso de actualización, me he dado cuenta, de que cada vez hay mas herramientas implementadas en Rust, en mi terminal Linux. Es mas, en los últimos tiempos se han multiplicado como la espuma. Esto me ha hecho pensar que tienes que instalar Rust para exprimir Linux. Y esto es precisamente lo que te quiero contar en este episodio del podcast. Más información, enlaces y notas en https://atareao.es/podcast/527

Sospechosos Habituales
ATA 527 Tienes que instalar Rust para exprimir Linux

Sospechosos Habituales

Play Episode Listen Later Sep 25, 2023 15:44


En estos últimos días, he estado actualizando mi terminal Linux. Y no me refiero tanto a Kitty, que como sabes es mi terminal por defecto, sino a todas las herramientas que utilizo junto a Kitty. Herramientas que me proporcionan una mayor productividad, pero, que sobre todo hacen que me sienta mucho más cómodo utilizando la terminal. Así, por ejemplo, he actualizado los complementos de Zsh que utilizo, he modificado algunos scripts, y de paso, he actualizado algunas de estas herramientas. En ese proceso de actualización, me he dado cuenta, de que cada vez hay mas herramientas implementadas en Rust, en mi terminal Linux. Es mas, en los últimos tiempos se han multiplicado como la espuma. Esto me ha hecho pensar que tienes que instalar Rust para exprimir Linux. Y esto es precisamente lo que te quiero contar en este episodio del podcast. Más información, enlaces y notas en https://atareao.es/podcast/527

Syntax - Tasty Web Development Treats
Roundup - Sick AI Tools For Developers

Syntax - Tasty Web Development Treats

Play Episode Listen Later Jul 10, 2023 36:16


In this supper club episode of Syntax, Wes and Scott talk with Colby Fayock about Cloudinary's new AI tools, media flow, removing backgrounds, using AI for video templates, and Colby's stack for creating YouTube content. Show Notes 00:36 Welcome 01:11 Who is Colby Fayock? ColbyFayock.com Colby Fayock (@colbyfayock)on Twitter ColbyFayock - Twitch colbyfayock on GitHub Colby Fayock (@colbyfayock) • Instagram 01:57 What is Cloudinary? Image and Video Upload, Storage, Optimization and CDN 03:03 What's with the space jellyfish? 03:52 How is Cloudinary using AI for the web? Developer resources for using images and videos in your apps 09:54 What is media flow? 13:00 Who is the target audience for AI tools from Cloudinary? 17:03 Removing backgrounds Remove Background from Image for Free – remove.bg iPhone Messages stickers: How to make and use them - 9to5Mac 21:14 Cloudinary's Video API ascorbic/unpic-img: Multi-framework responsive image component 22:44 Function calling in OpenAI 26:22 How do you deal with the random generation of AI? 29:00 What are the community SDKs for Cloudinary? 37:04 What's your process for creating content for YouTube? 42:49 Supper Club Questions Open Broadcaster Software | OBS Facecam Pro – Elgato Recut — Automatic Video Editor Night Owl - Visual Studio Marketplace iTerm2 - macOS Terminal Replacement Oh My Zsh - a delightful & open source framework for Zsh 51:40 SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS ××× Ready To Drink Cold Brew Coffee | Trader Joe's Shameless Plugs Colby Fayock on YouTube Tweet us your tasty treats Scott's Instagram LevelUpTutorials Instagram Wes' Instagram Wes' Twitter Wes' Facebook Scott's Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

Syntax - Tasty Web Development Treats
Supper Club × Cloudinary with Colby Fayock

Syntax - Tasty Web Development Treats

Play Episode Listen Later Jul 7, 2023 54:12


In this supper club episode of Syntax, Wes and Scott talk with Colby Fayock about Cloudinary's new AI tools, media flow, removing backgrounds, using AI for video templates, and Colby's stack for creating YouTube content. Show Notes 00:36 Welcome 01:11 Who is Colby Fayock? ColbyFayock.com Colby Fayock (@colbyfayock)on Twitter ColbyFayock - Twitch colbyfayock on GitHub Colby Fayock (@colbyfayock) • Instagram 01:57 What is Cloudinary? Image and Video Upload, Storage, Optimization and CDN 03:03 What's with the space jellyfish? 03:52 How is Cloudinary using AI for the web? Developer resources for using images and videos in your apps 09:54 What is media flow? 13:00 Who is the target audience for AI tools from Cloudinary? 17:03 Removing backgrounds Remove Background from Image for Free – remove.bg iPhone Messages stickers: How to make and use them - 9to5Mac 21:14 Cloudinary's Video API ascorbic/unpic-img: Multi-framework responsive image component 22:44 Function calling in OpenAI 26:22 How do you deal with the random generation of AI? 29:00 What are the community SDKs for Cloudinary? 37:04 What's your process for creating content for YouTube? 42:49 Supper Club Questions Open Broadcaster Software | OBS Facecam Pro – Elgato Recut — Automatic Video Editor Night Owl - Visual Studio Marketplace iTerm2 - macOS Terminal Replacement Oh My Zsh - a delightful & open source framework for Zsh 51:40 SIIIIICK ××× PIIIICKS ××× ××× SIIIIICK ××× PIIIICKS ××× Ready To Drink Cold Brew Coffee | Trader Joe's Shameless Plugs Colby Fayock on YouTube Tweet us your tasty treats Scott's Instagram LevelUpTutorials Instagram Wes' Instagram Wes' Twitter Wes' Facebook Scott's Twitter Make sure to include @SyntaxFM in your tweets Wes Bos on Bluesky Scott on Bluesky Syntax on Bluesky

LaunchPad Jamf Admin Podcast
Why Jamf Admins Should Switch to Zsh

LaunchPad Jamf Admin Podcast

Play Episode Listen Later Feb 3, 2023 56:43


Beginning with Catalina (10.15), Apple changed the default login shell from Bash to Zsh. Many admins, ourselves included, have been slow to move to this new shell. Why should we? It turns out there are few advantages to Zsh over Bash. In this session we'll show off a few ways we've been able to leverage Zsh to write better scripts, and even regain some of what we lost when Python went away. ---------------------------------  Launchpad Podcast is hosted by Rocketman Tech where we discuss recent news, updates and happenings in the Jamf and Apple world. Always relevant and always casual, we'll have a Keynote speaker, discuss current LaunchPad events, and invite group discussion, questions and topic requests throughout the ~1 hour meeting.  

uGeek - Tecnología, Android, Linux, Servidores y mucho más...

Encendido remoto de PC, ZSH, modo markdown Sigue leyendo el post completo de Encendido remoto de PC, ZSH, modo markdown Visita uGeek Podcast Visita uGeek Podcast Suscribete al Podcast de uGeek

Atareao con Linux
ATA 456 Bash y viene Zsh o donde dije Bash…

Atareao con Linux

Play Episode Listen Later Jan 19, 2023 20:22


En el episodio 442 del podcast titulado creo que tengo tiling-hopping, y una marcha atrás, te comenté que había decidido regresar a Bash, y te expliqué algunas de las razones para volver a Bash. Básicamente, se resumía en que no terminaba de encontrarme y por el otro lado la compatibilidad que todo el ecosistema de Servidores, Raspberry, etc. Sin embargo, no ha pasado ni mes y medio, y me he dado cuenta de que, para el uso que yo le estoy dando, Zsh se adecua mucho mas a mi flujo de trabajo, así que he decidido dejarme de tonterías y ponerme serio. Así que se va Bash y viene Zsh, o como quería haber titualado este episodio del podcast, donde dije Bash, digo Zsh. Sin embargo, no he vuelto a Zsh de la misma forma en la que me encontraba, y esto es precisamente lo que quería contarte, mi regreso a lo especialito. Me he dejado parte del lastre atrás. --- Más información en las notas del podcast sobre Bash y viene Zsh o donde dije Bash…

Sospechosos Habituales
ATA 456 Bash y viene Zsh o donde dije Bash…

Sospechosos Habituales

Play Episode Listen Later Jan 19, 2023 20:22


En el episodio 442 del podcast titulado creo que tengo tiling-hopping, y una marcha atrás, te comenté que había decidido regresar a Bash, y te expliqué algunas de las razones para volver a Bash. Básicamente, se resumía en que no terminaba de encontrarme y por el otro lado la compatibilidad que todo el ecosistema de Servidores, Raspberry, etc. Sin embargo, no ha pasado ni mes y medio, y me he dado cuenta de que, para el uso que yo le estoy dando, Zsh se adecua mucho mas a mi flujo de trabajo, así que he decidido dejarme de tonterías y ponerme serio. Así que se va Bash y viene Zsh, o como quería haber titualado este episodio del podcast, donde dije Bash, digo Zsh. Sin embargo, no he vuelto a Zsh de la misma forma en la que me encontraba, y esto es precisamente lo que quería contarte, mi regreso a lo especialito. Me he dejado parte del lastre atrás. --- Más información en las notas del podcast sobre Bash y viene Zsh o donde dije Bash…

Free the Geek.fm with Matthew Setter
With Mihalis Tsoukalos. C-based Languages, Code Documentation, & Unix Over Windows

Free the Geek.fm with Matthew Setter

Play Episode Listen Later Oct 25, 2022 63:13


In this episode, I had the absolute pleasure of talking with Mihalis Tsoukalos, a long-time Twitter friend and someone who's given me loads of advice, about software development. He shared with me so much about his journey with C-based languages, particularly Python, C, Go, & Rust. He talked about Linux shells including Bash and Zsh (and of course the excellent Oh My Zsh project). On the flip side, he shared why he's no fan of Java and Microsoft Windows, preferring almost all things Linux and Unix. Then, he finished up by talking about file formats such as Latex, Markdown, and AsciiDoc (my favourite format), the importance of software documentation, and what he believes it takes to become a professional developer. You don't want to miss this closing aspect of the episode!Some key takeaways are: Start by writing small command-line utilities, re-implementing the ones that you know. Then, gradually take on bigger, more complex ones. Keep writing code and keep improving each time. Read a lot of code, experiment even more, talk to other developers, and fail better each time. Even if you only learn a little something, it's something more than you knew before. Software documentation is very important. To learn Rust, you really have to do it full-time. He's a big fan of Go because of the speed, size of the standard library, and because it's a simple and fast language. Links Mastering Go, 3rd edition (written by Mihalis) Go Systems Programming (written by Mihalis) Latex AsciiDoc Markdown Oh My Zsh Guests: Mihalis Tsoukalos (@mactsouk).Hosted By: Matthew Setter.Thanks for tuning in to Free the Geek. If you'd like to be a guest on the podcast or know someone who'd make a great guest, email me: matthew@matthewsetter.com. This podcast is produced by Matthew Setter. SupportIf you want to support the show, you can always buy me a coffee. I'd greatly appreciate your financial support. ★ Support this podcast ★

Der Data Analytics Podcast
Direkt effizienter & schneller arbeiten als Data Engineer und Data Scientist-Mitverschiedene Shells

Der Data Analytics Podcast

Play Episode Listen Later Sep 9, 2022 8:46


Shell was ist das? Bash, Powershell, Fish, ZSH... verschiedene Shells. Direkt effizienter arbeiten als Data Engineer und Data Scientist - Mit verschiedenen Shells

Destination Linux
287: Customizing Your Terminal to be a 1337 h@x0r

Destination Linux

Play Episode Listen Later Jul 19, 2022 52:52


FULL SHOW NOTES ►► https://tuxdigital.com/podcasts/destination-linux/dl-287/ Chapters: 00:00 = Welcome to DL 287 00:49 = Community Feedback: 2D Animation Software on Linux 06:22 = DigitalOcean: Cloud Platform ( https://do.co/tux2022 ) 07:44 = Customizing Your Terminal to be a 1337 h@x0r 30:54 = PSA for Beginners about the Terminal 33:15 = Bash vs ZSH vs Fish on […]

The History of Computing
The Evolution Of Unix, Mac, and Chrome OS Shells

The History of Computing

Play Episode Listen Later Jul 15, 2022 12:43


In the beginning was the command line. Actually, before that were punch cards and paper tape. But at Multics and RSTS and DTSS came out, programmers and users needed a way to interface with the computer through the teletypes and other terminals that appeared in the early age of interactive computing. Those were often just a program that sat on a filesystem eventually as a daemon, listening for input on keyboards. This was one of the first things the team that built Unix needed, once they had a kernel that could compile. And from the very beginning it was independent of the operating system. Due to the shell's independence from the underlying operating system, numerous shells have been developed during Unix's history, albeit only a few have attained widespread use. Shells are also referred to as Command-Line Interpreters (or CLIs), processes commands a user sends from a teletype, then a terminal. This provided a simpler interface for common tasks, rather than interfacing with the underlying C programming. Over the years, a number of shells have come and gone. Some of the most basic and original commands came from Multics, but the shell as we know it today was introduced as the Thompson shell in the first versions of Unix. Ken Thompson introduced the first Unix shell in 1971 with the Thompson Shell, the ancestor of the shell we still find in /bin/sh. The shell ran in the background and allowed for a concise syntax for redirecting the output of commands to one another. For example, pass the output to a file with > or read input from a file with

R Weekly Highlights
Issue 2022-W27 Highlights

R Weekly Highlights

Play Episode Listen Later Jul 13, 2022 37:01


Advice on building Docker containers for Shiny applications, an R-centric tutorial on fundamentals with shell, and tips on evaluating GitHub activity for contributors. Episode Links This issue's curator: Tony ElHabr (@TonyElHabr (https://twitter.com/TonyElHabr)) UseR!2022: Best Practices for Shiny Apps with Docker and More (https://hosting.analythium.io/user-2022-best-practicesfor-shiny-apps-with-docker-and-more/) Shell vs R Fundamentals – From Syntax to Control Structures with Zsh & BASH (https://morphoscape.wordpress.com/2022/06/24/shell-vs-r-fundamentals-from-syntax-to-control-structures-with-zsh-amp-bash/) Evaluating GitHub Activity for Contributors (https://ropensci.org/blog/2022/07/01/evaluating-github-activity-for-contributors/) Entire issue available at rweekly.org/2022-W27 (https://rweekly.org/2022-W27.html) Supplement Resources Hosting Data Apps: https://hosting.analythium.io slim.ai: https://www.slim.ai/ {dockerfiler} - Easy Dockerfile creation from R: https://github.com/ThinkR-open/dockerfiler Data Science at the Command Line: https://datascienceatthecommandline.com

Rustacean Station
New Rustacean with Chris Krycho

Rustacean Station

Play Episode Listen Later Jul 1, 2022 71:15


Allen Wyma talks with Chris Krycho, host of the now-ended New Rustacean podcast about learning the Rust programming language. Contributing to Rustacean Station Rustacean Station is a community project; get in touch with us if you'd like to suggest an idea for an episode or offer your services as a host or audio editor! Twitter: @rustaceanfm Discord: Rustacean Station Github: @rustacean-station Email: hello@rustacean-station.org Timestamps [@1:08] - Chris' background and introduction [@4:33] - Chris' current career and projects [@12:17] - Rust and WebAssembly [@19:35] - Chris' podcasting plans [@23:47] - Chris' podcasting preparation and processes [@36:02] - Lessons and insights coming from podcasting [@48:08] - ZSH vs Fish [@53:12] - Picking out potential podcast guests and making great interviews [@57:12] - Chris' opinion and comparison on the different programming languages [@1:07:33] - Chris' parting thoughts and future plans Other Resources Chris's Twitter Credits Intro Theme: Aerocity Audio Editing: Plangora Hosting Infrastructure: Jon Gjengset Show Notes: Plangora Hosts: Allen Wyma

lessons fish picking rust contributing webassembly zsh allen wyma chris krycho new rustacean
Screaming in the Cloud
Granted, Common Fate, and AWS Functionality with Chris Norman

Screaming in the Cloud

Play Episode Listen Later Jun 30, 2022 33:34


About ChrisChris is a robotics engineer turned cloud security practitioner. From building origami robots for NASA, to neuroscience wearables, to enterprise software consulting, he is a passionate builder at heart. Chris is a cofounder of Common Fate, a company with a mission to make cloud access simple and secure.Links: Common Fate: https://commonfate.io/ Granted: https://granted.dev Twitter: https://twitter.com/chr_norm TranscriptAnnouncer: Hello, and welcome to Screaming in the Cloud with your host, Chief Cloud Economist at The Duckbill Group, Corey Quinn. This weekly show features conversations with people doing interesting work in the world of cloud, thoughtful commentary on the state of the technical world, and ridiculous titles for which Corey refuses to apologize. This is Screaming in the Cloud.Corey: Let's face it, on-call firefighting at 2am is stressful! So there's good news and there's bad news. The bad news is that you probably can't prevent incidents from happening, but the good news is that incident.io makes incidents less stressful and a lot more valuable. incident.io is a Slack-native incident management platform that allows you to automate incident processes, focus on fixing the issues and learn from incident insights to improve site reliability and fix your vulnerabilities. Try incident.io, recover faster and sleep more.Corey: This episode is sponsored in part by Honeycomb. When production is running slow, it's hard to know where problems originate. Is it your application code, users, or the underlying systems? I've got five bucks on DNS, personally. Why scroll through endless dashboards while dealing with alert floods, going from tool to tool to tool that you employ, guessing at which puzzle pieces matter? Context switching and tool sprawl are slowly killing both your team and your business. You should care more about one of those than the other; which one is up to you. Drop the separate pillars and enter a world of getting one unified understanding of the one thing driving your business: production. With Honeycomb, you guess less and know more. Try it for free at honeycomb.io/screaminginthecloud. Observability: it's more than just hipster monitoring.Corey: Welcome to Screaming in the Cloud. I'm Corey Quinn. It doesn't matter where you are on your journey in cloud—you could never have heard of Amazon the bookstore—and you encounter AWS and you spin up an account. And within 20 minutes, you will come to the realization that everyone in this space does. “Wow, logging in to AWS absolutely blows goats.”Today, my guest, obviously had that reaction, but unlike most people I talked to, decided to get up and do something about it. Chris Norman is the co-founder of Common Fate and most notably to how I know him is one of the original authors of the tool, Granted. Chris, thank you so much for joining me.Chris: Hey, Corey, thank you for having me.Corey: I have done podcasts before; I have done a blog post on it; I evangelize it on Twitter constantly, and even now, it is challenging in a few ways to explain holistically what Granted is. Rather than trying to tell your story for you, when someone says, “Oh, Granted, that seems interesting and impossible to Google for in isolation, so therefore, we know it's going to be good because all the open-source projects with hard to find names are,” what is Granted and what does it do?Chris: Granted is a command-line tool which makes it really easy for you to get access and assume roles when you're working with AWS. For me, when I'm using Granted day-to-day, I wake up, go to my computer—I'm working from home right now—crack open the MacBook and I log in and do some development work. I'm going to go and start working in the cloud.Corey: Oh, when I start first thing in the morning doing development work and logging into the cloud, I know. All right, I'm going to log in to AWS and now I know that my day is going downhill from here.Chris: [laugh]. Exactly, exactly. I think maybe the best days are when you don't need to log in at all. But when you do, I go and I open my terminal and I run this command. Using Granted, I ran this assume command and it authenticates me with single-sign-on into AWS, and then it opens up a console window in a particular account.Now, you might ask, “Well, that's a fairly standard thing.” And in fact, that's probably the way that the console and all of the tools work by default with AWS. Why do you need a third-party tool for this?Corey: Right. I've used a bunch of things that do varying forms of this and unlike Granted, you don't see me gushing about them. I want to be very clear, we have no business relationship. You're not sponsoring anything that I do. I'm not entirely clear on what your day job entails, but I have absolutely fallen in love with the Granted tool, which is why I'm dragging you on to this show, kicking and screaming, mostly to give me an excuse to rave about it some more.Chris: [laugh]. Exactly. And thank you for the kind words. And I'd say really what makes it special or why I've been so excited to be working on it is that it makes this access, particularly when you're working with multiple accounts, really, really easy. So, when I run assume and I open up that console window, you know, that's all fine and that's very similar to how a lot of the other tools and projects that are out there work, but when I want to open that second account and that second console window, maybe because I'm looking at like a development and a staging account at the same time, then Granted allows me to view both of those simultaneously in my browser. And we do that using some platform sort of tricks and building into the way that the browser works.Corey: Honestly, one of the biggest differences in how you describe what Granted is and how I view it is when you describe it as a CLI application because yes, it is that, but one of the distinguishing characteristics is you also have a Firefox extension that winds up leveraging the multi-container functionality extension that Firefox has. So, whenever I wind up running a single command—assume with a-c' flag, then I give it the name of my AWS profile, it opens the web console so I can ClickOps my heart's content inside of a tab that is locked to a container, which means I can have one or two or twenty different AWS accounts and/or regions up running simultaneously side-by-side, which is basically impossible any other way that I've ever looked at it.Chris: Absolutely, yeah. And that's, like, the big differentiating factor right now between Granted and between this sort of default, the native experience, if you're just using the AWS command line by itself. With Granted, you can—with these Firefox containers, all of your cookies, your profile, everything is all localized into that one container. It's actually it's a privacy features that are built into Firefox, which keeps everything really separate between your different profiles. And what we're doing with Granted is that we make it really easy to open a specific profiles that correspond with different AWS profiles that you're using.So, you'd have one which could be your development account, one which could be production or staging. And you can jump between these and navigate between them just as separate tabs in your browser, which is a massive improvement over, you know, what I've previously had to use in the past.Corey: The thing that really just strikes me about this is first, of course, the functionality and the rest, so I saw this—I forget how I even came across it—and immediately I started using it. On my Mac, it was great. I started using it when I was on the road, and it was less great because you built this thing in Go. It can compile and install on almost anything, but there were some assumptions that you had built into this in its early days that did not necessarily encompass all of the use cases that I use. For example, it hadn't really occurred to you that some lunatic would try and only use an iPad when they're on the road, so they have to be able to run this to get federated login links via SSHing into an EC2 instance running somewhere and not have it open locally.You seemed almost taken aback when I brought it up. Like, “What lunatic would do that?” Like, “Hi, I'm such a lunatic. Let's talk about this.” And it does that now, and it's awesome. It does seem to me though, and please correct me if I'm wrong on this assumption slash assessment that this is first and foremost aimed at desktop users, specifically people running Mac on the desktop, is that the genesis of it?Chris: It is indeed. And I think part of the cause behind that is that we originally built a tool for ourselves. And as we were building things and as we were working using the cloud, we were running things—you know, we like to think that we're following best practices when we're using AWS, and so we'd set up multiple accounts, we'd have a special account for development, a separate one for staging, a separate one for production, even internal tools that we would build, we would go and spin up an individual account for those. And then you know, we had lots of accounts. and to go and access those really easily was quite difficult.So, we definitely, we built it for ourselves first and I think that that's part of when we released it, it actually a little bit of cause for some of the initial problems. And some of the feedback that we had was that it's great to build tools for yourself, but when you're working in open-source, there's a lot of different diversity with how people are using things.Corey: We take different approaches. You want to try to align with existing best practices, whereas I am a loudmouth white guy who works in tech. So, what I do definitionally becomes a best practice in the ecosystem. It's easier to just comport with the ones that are already existing that smart people put together rather than just trying to competence your way through it, so you took a better path than I did.But there's been a lot of evolution to Granted as I've been using it for a while. I did a whole write-up on it and that got a whole bunch of eyes onto the project, which I can now admit was a nefarious plan on my part because popping into your community Slack and yelling at you for features I want was all well and good, but let's try and get some people with eyes on this who are smarter than me—which is not that high of a bar when it comes to SSO, and IAM, and federated login, and the rest—and they can start finding other enhancements that I'll probably benefit from. And sure enough, that's exactly what happened. My sneaky plan has come to fruition. Thanks for being a sucker, I guess. I mean—[laugh] it worked. I'm super thrilled by the product.Chris: [laugh]. I guess it's a great thing I think that the feedback and particularly something that's always been really exciting is just seeing new issues come through on GitHub because it really shows the kinds of interesting use cases and the kinds of interesting teams and companies that are using Granted to make their lives a little bit easier.Corey: When I go to the website—which again is impossible to Google—the website for those wondering is granted.dev. It's short, it's concise, I can say it on a podcast and people automatically know how to spell it. But at the top of the website—which is very well done by the way—it mentions that oh, you can, “Govern access to breakglass roles with Common Fate Cloud,” and it also says in the drop shadow nonsense thing in the upper corner, “Brought to you by Common Fate,” which is apparently the name of your company.So, the question I'll get to in a second is what does your company do, but first and foremost, is this going to be one of those rug-pull open-source projects where one day it's, “Oh, you want to log into your AWS accounts? Insert quarter to continue.” I'm mostly being a little over the top with that description, but we've all seen things that we love turn into molten garbage. What is the plan around this? Are you about to ruin this for the rest of us once you wind up raising a round or something? What's the deal?Chris: Yeah, it's a great question, Corey. And I think that to a degree, releasing anything like this that sits in the access workflow and helps you assume roles and helps you day-to-day, you know, we have a responsibility to uphold stability and reliability here and to not change things. And I think part of, like, not changing things includes not [laugh] rug-pulling, as you've alluded to. And I think that for some companies, it ends up that open-source becomes, like, a kind of a lead-generation tool, or you end up with, you know, now finally, let's go on add another login so that you have to log into Common Fate to use Granted. And I think that, to be honest, a tool like this where it's all about improving the speed of access, the incentives for us, like, it doesn't even make sense to try and add another login for to try to get people to, like, to say, login to Common Fate because that would make your signing process for AWS take even longer than it already does.Corey: Yeah, you decided that you know, what's the biggest problem? Oh, you can sleep at night, so let's go ahead and make it even worse, by now I want you to be this custodian of all my credentials to log into all of my accounts. And now you're going to be critical path, so if you're down, I'm not able to log into anything. And oh, by the way, I have to trust you with full access to my bank stuff. I just can't imagine that is a direction that you would be super excited about diving head-first into.Chris: No, no. Yeah, certainly not. And I think that the, you know, building anything in this space, and with what we're doing with Common Fate, you know, we're building a cloud platform to try to make IAM a little bit easier to work with, but it's really sensitive around granting any kind of permission and I think that you really do need that trust. So, trying to build trust, I guess, with our open-source projects is really important for us with Granted and with this project, that it's going to continue to be reliable and continue to work as it currently does.Corey: The way I see it, one of the dangers of doing anything that is particularly open-source—or that leans in the direction of building in Amazon's ecosystem—it leads to the natural question of, well, isn't this just going to be some people say stolen—and I don't think those people understand how open-source works—by AWS themselves? Or aren't they going to build something themselves at AWS that's going to wind up stomping this thing that you've built? And my honest and remarkably cynical answer is that, “You have built a tool that is a joy to use, that makes logging into AWS accounts streamlined and efficient in a variety of different patterns. Does that really sound like something AWS would do?” And followed by, “I wish they would because everyone would benefit from that rising tide.”I have to be very direct and very clear. Your product should not exist. This should be something the provider themselves handles. But nope. Instead, it has to exist. And while I'm glad it does, I also can't shake the feeling that I am incredibly annoyed by the fact that it has to.Chris: Yeah. Certainly, certainly. And it's something that I think about a little bit. I like to wonder whether there's maybe like a single feature flag or some single sort of configuration setting in AWS where they're not allowing different tabs to access different accounts, they're not allowing this kind of concurrent access. And maybe if we make enough noise about Granted, maybe one of the engineers will go and flick that switch and they'll just enable it by default.And then Granted itself will be a lot less relevant, but for everybody who's using AWS, that'll be a massive win because the big draw of using Granted is mainly just around being able to access different accounts at the same time. If AWS let you do that out of the box, hey, that would be great and, you know, I'd have a lot less stuff to maintain.Corey: Originally, I had you here to talk about Granted, but I took a glance at what you're actually building over at Common Fate and I'm about to basically hijack slash derail what probably is going to amount the rest of this conversation because you have a quick example on your site for by developers, for developers. You show a quick Python script that tries to access a S3 bucket object and it's denied. You copy the error message, you paste it into what you're building over a Common Fate, and in return, it's like, “Oh. Yeah, this is the policy that fixes it. Do you want us to apply it for you?”And I just about fell out of my chair because I have been asking for this explicit thing for a very long time. And AWS doesn't do it. Their IAM access analyzer claims to. Like, “Oh, just go look at CloudTrail and see what permissions it uses and we'll build a policy to scope it down.” “Okay. So, it's S3 access. Fair enough. To what object or what bucket?” “Guess,” is what it tells you there.And it's, this is crap. Who thinks this is a good user experience? You have built the thing that I wish AWS had built in natively. Because let's be honest here, I do what an awful lot of people do and overscope permissions massively just because messing around with the bare minimum set of permissions in many cases takes more time than building the damn thing in the first place.Chris: Oh, absolutely. Absolutely. And in fact, this—was a few years ago when I was consulting—I had a really similar sort of story where one of the clients that we were working with, the CTO of this company, he was needing to grant us access to AWS and we were needing to build a particular service. And he said, “Okay, can you just let me know the permissions that you will need and I'll go and deploy the role for this.” And I came back and I said, “Wait. I don't even know the permissions that I'm going to need because the damn thing isn't even built yet.”So, we went sort of back and forth around this. And the compromise ended up just being you know, way too much access. And that was sort of part of the inspiration for, you know, really this whole project and what we're building with Common Fate, just trying to make that feedback loop around getting to the right level of permissions a lot faster.Corey: Yeah, I am just so overwhelmingly impressed by the fact that you have built—and please don't take this as a criticism—but a set of very simple tools. Not simple in the terms of, “Oh, that's, like, three lines of bash, and a fool could write that on a weekend.” No. Simple in the sense of it solves a problem elegantly and well and it's straightforward—well, straightforward as anything in the world of access control goes—to wrap your head around exactly what it does. You don't tend to build these things by sitting around a table brainstorming with someone you met at co-founder dating pool or something and wind up figuring out, “Oh, we should go and solve that. That sounds like a billion-dollar problem.”This feels very much like the outcome of when you're sitting around talking to someone and let's start by drinking six beers so we become extraordinarily honest, followed immediately by let's talk about what sucks. What pisses you off the most? It feels like this is sort of the low-hanging fruit of things that upset people when it comes to AWS. I mean, if things had gone slightly differently, instead of focusing on AWS bills, IAM was next on my list of things to tackle just because I was tired of smacking my head into it.This is very clearly a problem space that you folks have analyzed deeply, worked within, and have put a lot of thought into. I want to be clear, I've thrown a lot of feature suggestions that you for Granted from start to finish. But all of them have been around interface stuff and usability and expanding use cases. None of them have been, “Well, that seems screamingly insecure.” Because it hasn't been.Chris: [laugh].Corey: It has been effective, start to finish, I think that from a security posture, you make terrific choices, in many cases better than ones I would have made a starting from scratch myself. Everything that I'm looking at in what you have built is from a position of this is absolutely amazing and it is transformative to my own workflows. Now, how can we improve it?Chris: Mmm. Thank you, Corey. And I'll say as well, maybe around the security angle, that one of the goals with Granted was to try and do things a little bit better than the default way that AWS does them when it comes to security. And it's actually been a bit of a source for challenges with some of the users that we've been working with with Granted because one of the things we wanted to do was encrypt the SSO token. And this is the token that when you sign in to AWS, kind of like, it allows you to then get access to all of the rest of the accounts.So, it's like a pretty—it's a short-lived token, but it's a really sensitive one. And you know, by default, it's just stored in plain text on your disk. So, we dump to a file and, you know, anything that can go and read that, they can go and get it. It's also a little bit hard to revoke and to lock people out. There's not really great workflows around that on AWS's side.So, we thought, “Okay, great. One of the goals for Granted can be that we will go and store this in your keychain in your system and we'll work natively with that.” And that's actually been a cause for a little bit of a hassle for some users, though, because by doing that and by storing all of this information in the keychain, it's actually broken some of the integrations with the rest of the tooling, which kind of expects tokens and things to be in certain places. So, we've actually had to, as part of dealing with that with Granted, we've had to give users the ability to opt out for that.Corey: DoorDash had a problem. As their cloud-native environment scaled and developers delivered new features, their monitoring system kept breaking down. In an organization where data is used to make better decisions about technology and about the business, losing observability means the entire company loses their competitive edge. With Chronosphere, DoorDash is no longer losing visibility into their applications suite. The key? Chronosphere is an open-source compatible, scalable, and reliable observability solution that gives the observability lead at DoorDash business, confidence, and peace of mind. Read the full success story at snark.cloud/chronosphere. That's snark.cloud slash C-H-R-O-N-O-S-P-H-E-R-E.Corey: That's why I find this so, I think, just across the board, fantastic. It's you are very clearly engaged with your community. There's a community Slack that you have set up for this. And I know, I know, too many Slacks; everyone has this problem. This is one of those that is worth hanging in, at least from my perspective, just because one of the problems that you have, I suspect, is on my Mac it's great because I wind up automatically updating it to whatever the most recent one is every time I do a brew upgrade.But on the Linux side of the world, you've discovered what many of us have discovered, and that is that packaging things for Linux is a freaking disaster. The current installation is, “Great. Here's basically a curl bash.” Or, “Here, grab this tarball and install it.” And that's fine, but there's no real way of keeping that updated and synced.So, I was checking the other day, oh wow, I'm something like eight versions behind on this box. But it still just works. I upgraded. Oh, wow. There's new functionality here. This is stuff that's actually really handy. I like this quite a bit. Let's see what else we can do.I'm just so impressed, start to finish, by just how receptive you've been to various community feedbacks. And as well—I want to be very clear on this point, too—I've had folks who actually know what they're doing in an InfoSec sense look at what you're up to, and none of them had any issues of note. I'm sure that they have a pile of things like, with that curl bash, they should really be doing a GPG check. Yes, yes, fine. Whatever. If that's your target threat model, okay, great. Here in reality-land for what I do, this is awesome.And they don't seem to have any problems with, “Oh, yeah. By the way, sending analytics back up”—which, okay, fine, whatever. “And it's not disclosing them.” Okay, that's bad. “And it's including the contents of your AWS credentials.”Ahhhh. I did encounter something that was doing that on the back-end once. [cough]—Serverless Framework—sorry, something caught in my throat for a second.Chris: [laugh].Corey: No faster way I can think of to erode trust in that. But everything you're doing just makes sense.Chris: Oh, I do remember that. And that was a little bit of a fiasco, really, around all of that, right? And it's great to hear actually around that InfoSec folks and security people being, you know, not unhappy, I guess, with a tool like this. It's been interesting for me personally. We've really come from a practitioner's background.You know, I wouldn't call myself a security engineer at all. I would call myself as a sometimes a software developer, I guess. I have been hacking my way around Go and definitely learning a lot about how the cloud has worked over the past seven, eight years or so, but I wouldn't call myself a security engineer, so being very cautious around how all of these things work. And we've really tried to defer to things like the system keychain and defer to things that we know are pretty safe and work.Corey: The thing that I also want to call out as well is that your licensing is under the MIT license. This is not one of those, “Oh, you're required to wind up doing a bunch of branding stuff around it.” And, like some people say, “Oh, you have to own the trademark for all of these things.” I mean, I'm not an expert in international trademark law, let's be very clear, but I also feel that trademarking a term that is already used heavily in the space such as the word ‘Granted,' feels like kind of an uphill battle. And let's further be clear that it doesn't matter what you call this thing.In fact, I will call attention to an oddity that I've encountered a fair bit. After installing it, the first thing you do is you run the command ‘granted.' That sets it up, it lets you configure your browser, what browser you want to use, and it now supports standard out for that headless, EC2 use case. Great. Awesome. Love it. But then the other binary that ships with it is Assume. And that's what I use day-to-day. It actually takes me a minute sometimes when it's been long enough to remember that the tool is called Granted and not Assume what's up with that?Chris: So, part of the challenge that we ran into when we were building the Granted project is that we needed to export some environment variables. And these are really important when you're logging into AWS because you have your access key, your secret key, your session token. All of those, when you run the assume command, need to go into the terminal session that you called it. This doesn't matter so much when you're using the console mode, which is what we mentioned earlier where you can open 100 different accounts if you want to view all of those at the same time in your browser. But if you want to use it in your terminal, we wanted to make it look as really smooth and seamless as possible here.And we were really inspired by this approach from—and I have to shout them out and kind of give credit to them—a tool called AWSume—they're spelled A-W-S-U-M-E—Python-based tool that they don't do as much with single-sign-on, but we thought they had a really nice, like, general approach to the way that they did the scripting and aliasing. And we were inspired by that and part of that means that we needed to have a shell script that called this executable, which then will export things back out into the shell script. And we're doing all this wizardry under the hood to make the user experience really smooth and seamless. Part of that meant that we separated the commands into granted and assume and the other part of the naming for everything is that I felt Granted had a far better ring to it than calling the whole project Assume.Corey: True. And when you say assume, is it AWS or not? I've used the AWSume project before; I've used AWS Vault out of 99 Designs for a while. I've used—for three minutes—the native AWS SSO config, and that is just trash. Again, they're so good at the plumbing, so bad at the porcelain, I think is the criticism that I would levy toward a lot of this stuff.Chris: Mmm.Corey: And it's odd to think there's an entire company built around just smoothing over these sharp, obnoxious edges, but I'm saying this as someone who runs a consultancy and have five years that just fixes the bill for this one company. So, there's definitely a series of cottage industries that spring up around these things. I would be thrilled, on some level, if you wound up being completely subsumed by their product advancements, but it's been 15 years for a lot of this stuff and we're still waiting. My big failure mode that I'm worried about is that you never are.Chris: Yeah, exactly, exactly. And it's really interesting when you think about all of these user experience gaps in AWS being opportunities for, I guess, for companies like us, I think, trying to simplify a lot of the complexity for things. I'm interested in sort of waiting for a startup to try and, like, rebuild the actual AWS console itself to make it a little bit faster and easier to use.Corey: It's been done and attempted a bunch of different times. The problem is that the console is a lot of different things to a lot of different people, and as you step through that, you can solve for your use case super easily. “Yeah, what do I care? I use RDS, I use some VPC nonsense, and I use EC2. The end.” “Great. What about IAM?”Because I promise you're using that whether you know it or not. And okay, well, I'm talking to someone else who's DynamoDB, and someone else is full-on serverless, and someone else has more money than sense, so they mostly use SageMaker, and so on and so forth. And it turns out that you're effectively trying to rebuild everything. I don't know if that necessarily works.Chris: Yeah, and I think that's a good point around maybe while we haven't seen anything around that sort of space so far. You go to the console, and you click down, you see that list of 200 different services and all of those have had teams go and actually, like, build the UI and work with those individual APIs. Yeah.Corey: Any ideas as far as what's next for features on Granted?Chris: I think that, for us, it's continuing to work with everybody who's using it, and with a focus of stability and performance. We actually had somebody in the community raise an issue because they have an AWS config file that's over 7000 lines long. And I kind of pity that person, potentially, for their day-to-day. They must deal with so much complexity. Granted is currently quite slow when the config files get very big. And for us, I think, you know, we built it for ourselves; we don't have that many accounts just yet, so working to try to, like, make it really performant and really reliable is something that's really important.Corey: If you don't mind a feature request while we're at it—and I understand that this is more challenging than it looks like—I'm willing to fund this as a feature bounty that makes sense. And this also feels like it might be a good first project for a very particular type of person, I would love to get tab completion working in Zsh. You have it—Chris: Oh.Corey: For Fish because there's a great library that automatically populates that out, but for the Zsh side of it, it's, “Oh, I should just wind up getting Zsh completion working,” and I fell down a rabbit hole, let me tell you. And I come away from this with the perception of yeah, I'm not going to do it. I have not smart enough to check those boxes. But a lot of people are so that is the next thing I would love to see. Because I will change my browser to log into the AWS console for you, but be damned if I'm changing my shell.Chris: [laugh]. I think autocomplete probably should be higher on our roadmap for the tool, to be honest because it's really, like, a key metric and what we're focusing on is how easy is it to log in. And you know, if you're not too sure what commands to use or if we can save you a few keystrokes, I think that would be the, kind of like, reaching our goals.Corey: From where I'm sitting, you definitely have. I really want to thank you for taking the time to not only build this in the first place, but also speak with me about it. If people want to learn more, where's the best place to find you?Chris: So, you can find me on Twitter, I'm @chr_norm, or you can go and visit granted.dev and you'll have a link to join the Slack community. And I'm very active on the Slack.Corey: You certainly are, although I will admit that I fall into the challenge of being in just the perfectly opposed timezone from you and your co-founder, who are in different time zones to my understanding; one of you is on Australia and one of you was in London; you're the London guy as best I'm aware. And as a result, invariably, I wind up putting in feature requests right when no one's around. And, for better or worse, in the middle of the night is not when I'm usually awake trying to log into AWS. That is Azure time.Chris: [laugh]. Yeah, no, we don't have the US time zone properly covered yet for our community support and help. But we do have a fair bit of the world timezone covered. The rest of the team for Common Fate is all based in Australia and I'm out here over in London.Corey: Yeah. I just want to thank you again, for just being so accessible and, like, honestly receptive to feedback. I want to be clear, there's a way to give feedback and I do strive to do it constructively. I didn't come crashing into your Slack one day with a, “You know what your problem is?” I prefer to take the, “This is awesome. Here's what I think would be even better. Does that make sense?” As opposed to the imperious demands and GitHub issues and whatnot? It's, “I'd love it if it did this thing. Doesn't do this thing. Can you please make it do this thing?” Turns out that's the better way to drive change. Who knew?Chris: Yeah. [laugh]. Yeah, definitely. And I think that one of the things that's been the best around our journey with Granted so far has been listening to feedback and hearing from people how they would like to use the tool. And a big thank you to you, Corey, for actually suggesting changes that make it not only better for you, but better for everybody else who's using Granted.Corey: Well, at least as long as we're using my particular byzantine workload patterns in some way, or shape, or form, I'll hear that. But no, it's been an absolute pleasure and I really want to thank you for your time as well.Chris: Yeah, thank you for having me.Corey: Chris Norman, co-founder of Common Fate, as well as one of the two primary developers originally behind the Granted project that logs you into AWS without you having to lose your mind. I'm Cloud Economist Corey Quinn and this is Screaming in the Cloud. If you've enjoyed this podcast, please leave a five-star review on your podcast platform of choice, whereas if you've hated this podcast, please leave a five-star review on your podcast platform of choice along with an angry, incensed, raging comment that talks about just how terrible all of this is once you spend four hours logging into your AWS account by hand first.Corey: If your AWS bill keeps rising and your blood pressure is doing the same, then you need The Duckbill Group. We help companies fix their AWS bill by making it smaller and less horrifying. The Duckbill Group works for you, not AWS. We tailor recommendations to your business and we get to the point. Visit duckbillgroup.com to get started.Announcer: This has been a HumblePod production. Stay humble.

Sustain
Episode 124: Julia Ferraioli on Open Source Stories, and Responsible Recognition for Open Source Contributions

Sustain

Play Episode Listen Later Jun 10, 2022 40:26


Guest Julia Ferraioli Panelists Richard Littauer | Justin Dorfman | Alyssa Wright Show Notes Hello and welcome to Sustain! The podcast where we talk about sustaining open source for the long haul. Today, we have joining us as our guest, Julia Ferraioli, who's an open source human, co-founded Open Source Stories, and has been part of the Sustain community for a while. Our conversations today take us through learning about Julia's background, what Open Source Stories is, and how she quantifies a black swan open source. We also learn about two camps of people who work on open source that Julia encountered, a detailed explanation of what “matters” means, and what Julia does when she works on standardizing open source information. Go ahead and download this episode now to hear more! [00:01:40] Julia talks about her history and how she got to where she is today. [00:02:43] What is Open Source Stories? [00:06:05] We find out the story how Julia and Amanda Casari ended up working together on Open Source Stories. [00:10:48] Julia explains how she quantifies a black swan open source and what she worries about in terms of recognition. [00:15:11] Alyssa asks Julia if there are people that are contributing to open source projects that don't feel recognized and acknowledged and if there's an invisible community that we're trying to not only grow and diversify. [00:16:32] Justin shares a story about Guist, a designer he worked on a Zsh project with. [00:18:07] Julia brings up how you can sponsor a developer on GitHub, but wonders if you can sponsor a designer on GitHub. [00:20:00] Alyssa asks Julia why we have to recognize people in order to sustain the open source software communities. [00:23:35] Richard brings up the topic of recognition of individuals and how do we make sure that recognition is equal across the board, and Julia shares her thoughts. [00:26:57] Julia explains two camps she's encountered, the camp where the contribution matters and the camp where the whole person matters. [00:30:03] We find out what “matters” means to the whole ecosystem, what matters to a sub ecosystem, and what matters to a project. [00:32:42] What does Julia work on when she works on standardizing open source information? [00:35:18] Find out where you can follow Julia online. Quotes [00:08:14] “The conversations that we have tend to lead to some really interesting explorations and one of our talks was about black swans and open source.” [00:10:51] “I think it's completely subjective.” [00:13:22] “We've made really good strides in recognizing contributions outside of code such as technical writing, triage, and code reviews.” [00:14:15] “It's really important as more and more companies are relying on open source because it makes it into products.” Spotlight [00:36:22] Justin's spotlight is The Non-Code Contributor newsletter. [00:36:57 Alyssa's spotlight is Wikipedia for quick searches and seeing people outside and meeting each other in person. [00:37:50] Richard's spotlight is Marquette University and the J.R.R. Tolkien Fandom Oral History Collection. [00:38:24] Julia's spotlight is a paper called Chalk: Materials and Concepts in Mathematics Research. Links SustainOSS (https://sustainoss.org/) SustainOSS Twitter (https://twitter.com/SustainOSS?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor) SustainOSS Discourse (https://discourse.sustainoss.org/) podcast@sustainoss.org (mailto:podcast@sustainoss.org) Julia Ferraioli LinkedIn (https://www.linkedin.com/in/juliaferraioli) Julia Ferraioli Twitter (https://twitter.com/juliaferraioli) Julia Ferraioli Website (https://www.juliaferraioli.com/) Julia Ferraioli LeadDev (https://leaddev.com/search/results?search-index=julia+ferraioli) Open Source Stories (https://www.opensourcestories.org/) Vermont Complex Systems Center (https://vermontcomplexsystems.org/) StoryCorps (https://storycorps.org/) Sustain Open Source Design Podcast (https://sosdesign.sustainoss.org/) Amanda Casari Twitter (https://twitter.com/amcasari?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5Eauthor) Z shell (https://en.wikipedia.org/wiki/Z_shell) guist.eth Twitter (https://twitter.com/g_uist) Black Swan theory (https://en.wikipedia.org/wiki/Black_swan_theory) Bananas Are Berries? (Stanford Magazine) (https://stanfordmag.org/contents/bananas-are-berries) The Non-Code Contributor By Justin Dorfman (https://www.getrevue.co/profile/tncc?via=twitter-profile) The J.R.R. Tolkien Fandom Oral History Collection (https://www.marquette.edu/library/archives/tolkienfandom.php) [Chalk: Materials and Concepts in Mathematics Research by Michael J. Barany and Donald MacKenzie](https://www.sps.ed.ac.uk/sites/default/files/assets/pdf/Chalk0.pdf)_ The Non-Code Contributor- Issue #32 by Justin Contributor (https://www.getrevue.co/profile/tncc/issues/the-non-code-contributor-issue-32-1120100) Credits Produced by Richard Littauer (https://www.burntfen.com/) Edited by Paul M. Bahr at Peachtree Sound (https://www.peachtreesound.com/) Show notes by DeAnn Bahr Peachtree Sound (https://www.peachtreesound.com/) Special Guest: Julia Ferraioli.

Atareao con Linux
ATA 388 Y me cambié a un Slimbook One con AMD Ryzen 9

Atareao con Linux

Play Episode Listen Later May 26, 2022 22:06


Estaba repasando los últimos títulos de los podcast y voy de cambio en cambio y tiro porque me toca. En estos últimos tiempos he ido sustituyéndolo todo. He cambiado de editor de Vim a NeoVim, de shell de Bash a Zsh, de tiling window manager de bspwm a sway (que mola mucho mas el nombre). Incluso he cambiado de distribución en el escritorio de Ubuntu a Manjaro, en los servidores sigue Ubuntu. Pero faltaba una pieza fundamental, una pieza imprescindible el ordenador. Así que he reemplazado mi Dell xps-13 por un Slimbook One con AMD Ryzen 9. Si he pasado de portátil a un ¿sobremesa? (no se si le puede llamar así). --- Puedes seguir las publicaciones en Twitter

Sospechosos Habituales
ATA 388 Y me cambié a un Slimbook One con AMD Ryzen 9

Sospechosos Habituales

Play Episode Listen Later May 26, 2022 22:06


Estaba repasando los últimos títulos de los podcast y voy de cambio en cambio y tiro porque me toca. En estos últimos tiempos he ido sustituyéndolo todo. He cambiado de editor de Vim a NeoVim, de shell de Bash a Zsh, de tiling window manager de bspwm a sway (que mola mucho mas el nombre). Incluso he cambiado de distribución en el escritorio de Ubuntu a Manjaro, en los servidores sigue Ubuntu. Pero faltaba una pieza fundamental, una pieza imprescindible el ordenador. Así que he reemplazado mi Dell xps-13 por un Slimbook One con AMD Ryzen 9. Si he pasado de portátil a un ¿sobremesa? (no se si le puede llamar así). --- Puedes seguir las publicaciones en Twitter

Coder Radio
465: Mike's Magic Mom

Coder Radio

Play Episode Listen Later May 11, 2022 59:47


After solving a moral dilemma in our particular kind of way, Mike dishes on some ambitious plans that might kick off a new era of development for him.

Atareao con Linux
ATA 378 Un prompt para gobernalos a todos Linux, Windows y MacOS

Atareao con Linux

Play Episode Listen Later Apr 21, 2022 19:17


Hace algunos meses que publiqué en el canal de Youtube sobre como personalizar el prompt de la terminal, utilizando Zsh, Oh-My-Zsh y un tema como es PowerLevel10k. Por aquel entonces estaba realmente satisfecho con la personalización que me proporcionaba el tema PowerLevel10k, porque con solo mirar el prompt en el directorio que me encontrara, era capaz de obtener una gran cantidad de información, sin necesidad de pulsar una tecla. No solo esto, sino que además quedaba realmente resultón. Realmente estaba muy satisfecho con el resultado obtenido. Sin embargo, y a la vez, por aquel entonces también probé, starship, el promp definitivo (al menos por ahora) que viene a sustituir el tema que he estado utilizando hata el momento. --- Mas información en las notas del podcast sobre Un prompt para gobernarlos a todos Linux, Windows y MacOS

Sospechosos Habituales
ATA 378 Un prompt para gobernalos a todos Linux, Windows y MacOS

Sospechosos Habituales

Play Episode Listen Later Apr 21, 2022 19:17


Hace algunos meses que publiqué en el canal de Youtube sobre como personalizar el prompt de la terminal, utilizando Zsh, Oh-My-Zsh y un tema como es PowerLevel10k. Por aquel entonces estaba realmente satisfecho con la personalización que me proporcionaba el tema PowerLevel10k, porque con solo mirar el prompt en el directorio que me encontrara, era capaz de obtener una gran cantidad de información, sin necesidad de pulsar una tecla. No solo esto, sino que además quedaba realmente resultón. Realmente estaba muy satisfecho con el resultado obtenido. Sin embargo, y a la vez, por aquel entonces también probé, starship, el promp definitivo (al menos por ahora) que viene a sustituir el tema que he estado utilizando hata el momento. --- Mas información en las notas del podcast sobre Un prompt para gobernarlos a todos Linux, Windows y MacOS

Merge Conflict
301: Going Beyond ZSH

Merge Conflict

Play Episode Listen Later Apr 11, 2022 35:53


Where did my bash go says James! Well I am swimming with Fish over here says Frank! We explore what the heck is going on in terminals on all of the different operating systems and how to get them setup to your liking. Register for James's webinar with Syncfusion on .NET MAUI & Blazor Hybrid: https://bit.ly/3qV6Fij Fish Shell: https://fishshell.com/ Follow Us Frank: Twitter, Blog, GitHub James: Twitter, Blog, GitHub Merge Conflict: Twitter, Facebook, Website, Chat on Discord Music : Amethyst Seer - Citrine by Adventureface ⭐⭐ Review Us (https://itunes.apple.com/us/podcast/merge-conflict/id1133064277?mt=2&ls=1) ⭐⭐ Machine transcription available on http://mergeconflict.fm

The Beer and Broadband Podcast
Season 05 Episode 02 Braggots and Crypto

The Beer and Broadband Podcast

Play Episode Listen Later Apr 11, 2022 26:35


Show Synopsis: In Season 05 Episode 02, we discuss Crypto, Braggots, and ZSH. Working from home. What we are drinking: Melona Let's talk about zsh Crypto over the break TON Avian RavenCoin Cosmos Atom     We have a twitter @BeerandBroad  Get 25 dollars in credit at Ting. This Episode of Beer and Broadband is licensed under the Creative Commons Attribution License   Creative Commons License

soundbite.fm: a podcast network
Merge Conflict: 301: Going Beyond ZSH

soundbite.fm: a podcast network

Play Episode Listen Later Apr 11, 2022 35:53


Where did my bash go says James! Well I am swimming with Fish over here says Frank! We explore what the heck is going on in terminals on all of the different operating systems and how to get them setup to your liking. Register for James's webinar with Syncfusion on .NET MAUI & Blazor Hybrid: https://bit.ly/3qV6Fij Fish Shell: https://fishshell.com/ Follow Us Frank: Twitter, Blog, GitHub James: Twitter, Blog, GitHub Merge Conflict: Twitter, Facebook, Website, Chat on Discord Music : Amethyst Seer - Citrine by Adventureface ⭐⭐ Review Us (https://itunes.apple.com/us/podcast/merge-conflict/id1133064277?mt=2&ls=1) ⭐⭐ Machine transcription available on http://mergeconflict.fm

Sospechosos Habituales
ATA 362 Mi experiencia con Zsh y Oh My Zsh tras 4 meses de uso

Sospechosos Habituales

Play Episode Listen Later Feb 24, 2022 21:52


Siempre me tomo a la ligera aquello de el tiempo vuela. Sin embargo, lo cierto, es que ya han pasado aproximadamente unos cuatro meses desde que adopté Zsh, como mi shell de trabajo, y Oh My Zsh como el framework que lo acompaña. Ha llegado el momento de echar la vista atrás, hacer una valoración y contarte mi experiencia con este shell y este framework. Ha llegado el momento de contarte mi experiencia con Zsh y Oh My Zsh, y, replantearse en su caso, si continuar con esta pareja, o recular. Desde luego, no quiero que estés con la duda hasta haber leído las notas del podcast, o hasta haber escuchado el mismo. La valoración de mi experiencia con Zsh y Oh My Zsh no puede ser mas positiva, y en este sentido, te tengo que decir, que definitivamente me quedo con ambos, al menos durante los próximos tiempos. --- Más información en las notas del podcas sobre mi experiencia con Zsh y Oh My Zsh tras cuatro meses de uso

Atareao con Linux
ATA 362 Mi experiencia con Zsh y Oh My Zsh tras 4 meses de uso

Atareao con Linux

Play Episode Listen Later Feb 24, 2022 21:52


Siempre me tomo a la ligera aquello de el tiempo vuela. Sin embargo, lo cierto, es que ya han pasado aproximadamente unos cuatro meses desde que adopté Zsh, como mi shell de trabajo, y Oh My Zsh como el framework que lo acompaña. Ha llegado el momento de echar la vista atrás, hacer una valoración y contarte mi experiencia con este shell y este framework. Ha llegado el momento de contarte mi experiencia con Zsh y Oh My Zsh, y, replantearse en su caso, si continuar con esta pareja, o recular. Desde luego, no quiero que estés con la duda hasta haber leído las notas del podcast, o hasta haber escuchado el mismo. La valoración de mi experiencia con Zsh y Oh My Zsh no puede ser mas positiva, y en este sentido, te tengo que decir, que definitivamente me quedo con ambos, al menos durante los próximos tiempos. --- Más información en las notas del podcas sobre mi experiencia con Zsh y Oh My Zsh tras cuatro meses de uso

BSD Now
438: Toolchain Adventures

BSD Now

Play Episode Listen Later Jan 20, 2022 46:35


FreeBSD Foundation reviews 2021 activities, DragonflyBSD 6.2.1 is here, Lumina Desktop 1.6.2 available, toolchain adventures, The OpenBSD BASED Challenge Day 7, Bastille Template: AdGuard Home, setting up ZSH on FreeBSD and more. NOTES This episode of BSDNow is brought to you by Tarsnap (https://www.tarsnap.com/bsdnow) and the BSDNow Patreon (https://www.patreon.com/bsdnow) Headlines FreeBSD Foundation 2021 in Review Software Development (https://freebsdfoundation.org/blog/2021-in-review-software-development/) Year End Fundraising Report (https://freebsdfoundation.org/blog/2021-year-end-fundraising-report/) Infrastructure Support (https://freebsdfoundation.org/blog/2021-in-review-infrastructure-support/) Advocacy (https://freebsdfoundation.org/blog/2021-in-review-advocacy/) FreeBSD 2022 CfP (https://freebsdfoundation.org/blog/freebsd-foundation-2022-call-for-proposals/) DragonFlyBSD 6.2.1 is out (https://www.dragonflybsd.org/release62/) News Roundup Lumina Desktop 1.6.2 is out (https://lumina-desktop.org/post/2021-12-25/) Toolchain Adventures (https://www.cambus.net/toolchains-adventures-q4-2021/) The OpenBSD BASED Challenge Day 7 (https://write.as/adventures-in-bsd/) Bastille Template: AdGuard Home (https://bastillebsd.org/blog/2022/01/03/bastille-template-examples-adguardhome/) Setting up ZSH on FreeBSD (https://www.danschmid.me/article/setting-up-zsh-on-freebsd) Tarsnap This weeks episode of BSDNow was sponsored by our friends at Tarsnap, the only secure online backup you can trust your data to. Even paranoids need backups. Feedback/Questions • Producers Note: We did get some Christmas AMA questions in after we recorded that episode (since we recorded it early) but don't worry, I've made a note of them and we'll save them for our next AMA episode. Patrick - Volume (https://github.com/BSDNow/bsdnow.tv/blob/master/episodes/438/feedback/Patrick%20-%20Volume.md) Reptilicus Rex - FreeBSD Docs Team (https://github.com/BSDNow/bsdnow.tv/blob/master/episodes/438/feedback/Reptilicus%20Rex%20-%20FreeBSD%20Docs%20Team.md) michael - question (https://github.com/BSDNow/bsdnow.tv/blob/master/episodes/438/feedback/michael%20-%20question.md) Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv (mailto:feedback@bsdnow.tv) ***

52 Weeks of Cloud
52 Weeks of AWS Episode 6: Cloud Practitioner Part4 Final

52 Weeks of Cloud

Play Episode Listen Later Jan 12, 2022 46:37


# zero-to-five-aws-bootcampA Graduate Level Three to Five Week Bootcamp on AWS. Go from ZERO to FIVE Certifications.## Week 1:  AWS Certified Solutions Architect & Cloud Practicioner### Resources#### Slides and Links* [AWS Certified Cloud Practitioner Exam Overview from AWS](https://aws.amazon.com/certification/certified-cloud-practitioner/) * [AWS CP Slides](https://drive.google.com/drive/folders/1aWlpDJ_Z-UXizsmfNGR-lGUzXnTgMoq3?usp=sharing)  * [AWS Certified Solutions Architect Exam Overview from AWS](https://aws.amazon.com/certification/certified-solutions-architect-associate/) * [AWS SA Slides](https://drive.google.com/drive/folders/1qhlwvlLejIhWa_vHvI7CF29VK3_wSyXr?usp=sharing)#### Video Content* [Watch AWS Certified Cloud Practitioner Video Course on O'Reilly (5 hours)](https://learning.oreilly.com/videos/aws-certified-cloud/60644VIDEOPAIML/)* [Watch AWS in One Hour on O'Reilly (35 min)](https://learning.oreilly.com/videos/aws-in-one/61092021VIDEOPAIMLL/)* [Watch AWS Solutions Architect Certification in One Hour](https://learning.oreilly.com/videos/aws-solutions-architect/61132021VIDEOPAIML/)## Week 2:  AWS Certified Data Analytics & AWS Developer### Resources#### Slides and Links* [AWS Certified Developer Exam Overview from AWS](https://aws.amazon.com/certification/certified-developer-associate/) * [AWS Developer Certification Slides](https://drive.google.com/drive/folders/1f6Op27XfAW4LajwDFnZ42LHXUQ-gWV2X?usp=sharing)* [AWS Certified Data Analytics Exam Overview from AWS](https://aws.amazon.com/certification/certified-data-analytics-specialty/)#### Video Content* [AWS Certified Big Data - Specialty Complete Video Course and Practice Test Video Training](https://learning.oreilly.com/videos/aws-certified-big/9780135772324/)* [Data Engineering with Python and AWS Lambda LiveLessons](https://learning.oreilly.com/videos/data-engineering-with/9780135964330/)* [AWS Certified DevOps Engineer - Professional](https://learning.oreilly.com/videos/aws-certified-devops/9780136612919/)* [Zero to One: AWS Lambda with SAM and Python in One Hour](https://learning.oreilly.com/videos/zero-to-one/60304VIDEOPAIML/)## Week 3:  AWS Certified Machine Learning### Resources#### Slides and Links* [AWS Certified Machine Learning Speciality](https://aws.amazon.com/certification/certified-machine-learning-specialty/) * [AWS ML Slides](https://drive.google.com/drive/folders/1lI9v1K0BWbhpbgi6Ri2EmHvbggrEWYpi?usp=sharing)#### Video Content* [AWS ML Certification in One Hour on O'Reilly](https://learning.oreilly.com/videos/aws-machine-learning/61232021VIDEOPAIML/)* [AWS Certified Machine Learning-Speciality on O'Reilly (5 hours)](https://learning.oreilly.com/videos/aws-certified-machine/9780135556597/)* [AWS Sagemaker Autopilot from Zero](https://learning.oreilly.com/videos/aws-sagemaker-autopilot/60262021VIDEOPAIML/)* [Using AWS Sagemaker](https://learning.oreilly.com/videos/using-aws-sagemaker/11172021VIDEOPAIML/)## Week 4:  AWS Solutions Architect Pro### Resources* [Overview](https://aws.amazon.com/certification/certified-solutions-architect-professional)    * [Guide](https://d1.awsstatic.com/training-and-certification/docs-sa-pro/AWS-Certified-Solutions-Architect-Professional_Exam-Guide.pdf)    * [Sample Questions](https://d1.awsstatic.com/training-and-certification/docs-sa-pro/AWS-Certified-Solutions-Architect-Professional_Sample-Questions.pdf)    #### Slides and Links#### Video Content## 52 Weeks of AWS Podcast and Live StreamLivestream every Tuesday at 3pm ET on YouTube/Linkedin/Twitch.* [Subscribe to Podcast](https://podcast.paiml.com)* [Subscribe to Livestream](https://www.youtube.com/c/PragmaticAILabs)* [Episode Notes](https://github.com/noahgift/aws-bootcamp/blob/main/episodes)### Episode 1:O'Reilly C# on AWS book overview* [52 Weeks of AWS: Episode 1: O'Reilly C# on AWS book overview](https://podcast.paiml.com/episodes/52-weeks-of-aws-episode-1-oreilly-c-on-aws-book-overview)* [View on O'Reilly Video Livestream](https://learning.oreilly.com/videos/52-weeks-of/12072021VIDEOPAIML/)### Episode 2:  Reinvent Recap and Getting Started with AWS* Part 1:  [Cover Reinvent 2021 announcements](https://aws.amazon.com/blogs/aws/top-announcements-of-aws-reinvent-2021/?nc2=h_rei_ht)* Part2: Talk about getting started: * [AWS Free Tier](https://aws.amazon.com/free/) * [AWS Academy (for students)](https://aws.amazon.com/training/awsacademy/) * [AWS Sagemaker Studio Lab](https://aws.amazon.com/sagemaker/studio-lab/)* Part 3:  Cloud development environments * [AWS Cloudshell](https://aws.amazon.com/cloudshell/) Can run Bash, ZSH or Powershell * [AWS Cloud9](https://aws.amazon.com/cloud9/) Supports many languages including Python and C#  * [Notes on Episode 2](https://github.com/noahgift/aws-bootcamp/blob/main/episodes/episode2-dec14-2021.md)* [View Episode 2 on O'Reilly](https://learning.oreilly.com/videos/52-weeks-of/12142021VIDEOPAIML/)* [Listen to Episode2](https://52-weeks-of-cloud.simplecast.com/episodes/52-weeks-of-aws-episode-2-reinvent-2021-and-getting-started-with-aws)### Episode 3:  AWS CP Part 1* [52 Weeks of AWS: Episode 3: AWS Cloud Practitioner Part 1](https://52-weeks-of-cloud.simplecast.com/episodes/52-weeks-of-aws-episode-3-aws-cloud-practitioner-part-1)* [Watch episode 3 on O'Reilly](https://learning.oreilly.com/videos/52-weeks-of/122132021VIDEOPAIML/)### Episode 4:  AWS CP Part 2* Benchmarking:  https://github.com/noahgift/benchmarking-aws* History of AWS (AWS Shareholder Letter 2020):  https://www.aboutamazon.com/news/company-news/2020-letter-to-shareholders* Visual Studio AWS Tool* Github Codespaces vscode tutorial:  https://github.com/noahgift/DotNet-AWS/blob/main/chapters/appendix/AppendixB-CSharp-Tutorial.md* AWS CP Part 2:  Cover Global infra and security* [Listen to episode 4](https://52-weeks-of-cloud.simplecast.com/episodes/52-weeks-of-aws-episode-4-aws-cloud-practitioner-part-2)* [Watch episode 4 on O'Reilly](https://learning.oreilly.com/videos/52-weeks-of/122132021VIDEOPAIML/)### Episode 5:  AWS CP Part 3* Writing a AWS S3 Bucket Lister application in Visual Studio 2022* AWS CP Part 3:  Network and Content Delivery, Compute Storage### Episode 6### Potential Topics#### IAC* [Constructs Dev](https://constructs.dev)* [AWS CDK V2](https://docs.aws.amazon.com/cdk/v2/guide/home.html)## Global Resources* [Notes for O'Reilly Book:  C# on AWS I am writing](https://github.com/noahgift/DotNet-AWS)* [Learn AWS Cloudshell](https://learning.oreilly.com/videos/learn-aws-cloudshell/11212021VIDEOPAIML/)* [AWS Python CDK Structure](https://aws.amazon.com/blogs/developer/recommended-aws-cdk-project-structure-for-python-applications/)* [Diagramming CDK](https://github.com/pistazie/cdk-dia)* [Podcast 52 Weeks of AWS](https://podcast.paiml.com)* [Benchmarking AWS](https://github.com/noahgift/benchmarking-aws)* [Flask-CDK-Lambda-AWS](https://github.com/cdk-patterns/serverless/blob/main/the-lambda-trilogy/README.md)* [configure-aws-credentials](https://github.com/aws-actions/configure-aws-credentials)* [AWS-Swift](https://aws.amazon.com/blogs/developer/announcing-new-aws-sdk-for-swift-alpha-release/)If you enjoyed this video, here are additional resources to look at:Coursera + Duke Specialization: Building Cloud Computing Solutions at Scale Specialization: https://www.coursera.org/specializations/building-cloud-computing-solutions-at-scalePython, Bash, and SQL Essentials for Data Engineering Specialization: https://www.coursera.org/specializations/python-bash-sql-data-engineering-dukeO'Reilly Book: Practical MLOps: https://www.amazon.com/Practical-MLOps-Operationalizing-Machine-Learning/dp/1098103017O'Reilly Book: Python for DevOps: https://www.amazon.com/gp/product/B082P97LDW/Pragmatic AI: An Introduction to Cloud-based Machine Learning: https://www.amazon.com/gp/product/B07FB8F8QP/Pragmatic AI Labs Book: Python Command-Line Tools: https://www.amazon.com/gp/product/B0855FSFYZPragmatic AI Labs Book: Cloud Computing for Data Analysis: https://www.amazon.com/gp/product/B0992BN7W8Pragmatic AI Book: Minimal Python: https://www.amazon.com/gp/product/B0855NSRR7Pragmatic AI Book: Testing in Python: https://www.amazon.com/gp/product/B0855NSRR7Subscribe to Pragmatic AI Labs YouTube Channel: https://www.youtube.com/channel/UCNDfiL0D1LUeKWAkRE1xO5QView content on noahgift.com: https://noahgift.com/View content on Pragmatic AI Labs Website: https://paiml.com/

Talk Python To Me - Python conversations for passionate developers
#345: 10 Tips and Tools for Developer Productivity

Talk Python To Me - Python conversations for passionate developers

Play Episode Listen Later Dec 15, 2021 76:39


You know that feeling when one of your developer friends or colleague tells you about some amazing tool, library, or shell environment that you never heard of that you just have to run out and try right away? This episode is jam-packed full of those moments. We welcome back Jay Miller to discuss tools and tips for developer productivity. The title says 10 tips, but we actually veer into many more along the way. I think you'll really enjoy this useful and light-hearted episode. Links from the show Jay on Twitter: @kjaymiller More Oh my ZSH plugins: github.com exa: the.exa.website bat: github.com ripgrep/amber: github.com Neovim: neovim.io RUMPS macOS Framework: github.com Black: github.com pypi-changes package: readthedocs.io asdf-python: github.com WAVE Web Accessibility Evaluation Tool: wave.webaim.org Google PageSpeed: pagespeed.web.dev XKCD Commit messages: xkcd.com secure package: github.com OWASP Top 10: owasp.org ngrok: ngrok.com starship: starship.rs Homebrew: brew.sh Chocolatey: chocolatey.org pip-tools: github.com Let's Encrypt: letsencrypt.org Sourcetree Git App: sourcetreeapp.com Oh my ZSH: ohmyz.sh nerd fonts: nerdfonts.com Oh my Posh: ohmyposh.dev Windows Terminal: microsoft.com McFly shell history: github.com Fig IO enhanced shell: fig.io Conduit podcast: relay.fm htmx course at Talk Python: talkpython.fm/htmx Watch this episode on YouTube: youtube.com Episode transcripts: talkpython.fm --- Stay in touch with us --- Subscribe on YouTube: youtube.com Follow Talk Python on Twitter: @talkpython Follow Michael on Twitter: @mkennedy Sponsors Coiled CockroachDB AssemblyAI Talk Python Training

52 Weeks of Cloud
52 Weeks of AWS: Episode 2: Reinvent 2021 and Getting Started with AWS

52 Weeks of Cloud

Play Episode Listen Later Dec 14, 2021 29:20


Part 1: Cover Reinvent 2021 announcementsPart2: Talk about getting started:AWS Free TierAWS Academy (for students)AWS Sagemaker Studio LabPart 3: Cloud development environmentsAWS Cloudshell Can run Bash, ZSH or PowershellAWS Cloud9 Supports many languages including Python and C#Notes on Episode 2If you enjoyed this video, here are additional resources to look at:Coursera + Duke Specialization: Building Cloud Computing Solutions at Scale Specialization: https://www.coursera.org/specializations/building-cloud-computing-solutions-at-scalePython, Bash, and SQL Essentials for Data Engineering Specialization: https://www.coursera.org/specializations/python-bash-sql-data-engineering-dukeO'Reilly Book: Practical MLOps: https://www.amazon.com/Practical-MLOps-Operationalizing-Machine-Learning/dp/1098103017O'Reilly Book: Python for DevOps: https://www.amazon.com/gp/product/B082P97LDW/Pragmatic AI: An Introduction to Cloud-based Machine Learning: https://www.amazon.com/gp/product/B07FB8F8QP/Pragmatic AI Labs Book: Python Command-Line Tools: https://www.amazon.com/gp/product/B0855FSFYZPragmatic AI Labs Book: Cloud Computing for Data Analysis: https://www.amazon.com/gp/product/B0992BN7W8Pragmatic AI Book: Minimal Python: https://www.amazon.com/gp/product/B0855NSRR7Pragmatic AI Book: Testing in Python: https://www.amazon.com/gp/product/B0855NSRR7Subscribe to Pragmatic AI Labs YouTube Channel: https://www.youtube.com/channel/UCNDfiL0D1LUeKWAkRE1xO5QView content on noahgift.com: https://noahgift.com/View content on Pragmatic AI Labs Website: https://paiml.com/

Sospechosos Habituales
ATA 336 Me cambio de shell de Bash a Zsh

Sospechosos Habituales

Play Episode Listen Later Nov 25, 2021 21:43


Sin lugar a dudas este año es un año de cambios al menos para mi. Durante este año te he ido hablando en los diferentes episodios del podcast sobre algunos de estos cambios. La mayoría relacionados con la tecnología y en general, y por supuesto con Linux, y el Open Source, aunque de cuando en cuando, se me escapa algo que no tiene que ver. Pero en general, si, normalmente sobre Linux, y el basto ecosistema de herramientas y aplicaciones que hay en en torno a él. Y si, sobre algo me he repetido es sobre la terminal, porque como me dijeron en un reciente episodio del podcast, soy un friki de Linux y la terminal. Y este nuevo cambio está relacionado precisamente con la terminal, y en concreto con la shell. Por que lo que me temía finalmente ha llegado, me cambio de shell, de Bash a Zsh. Si, lo que has leído, me cambio de Bash a Zsh, me cambio de shell, de intérprete de comandos. En este episodio del podcast, te cuento que es eso de la shell, y las razones que me han motivado a este cambio de shell.

Atareao con Linux
ATA 336 Me cambio de shell de Bash a Zsh

Atareao con Linux

Play Episode Listen Later Nov 25, 2021 21:43


Sin lugar a dudas este año es un año de cambios al menos para mi. Durante este año te he ido hablando en los diferentes episodios del podcast sobre algunos de estos cambios. La mayoría relacionados con la tecnología y en general, y por supuesto con Linux, y el Open Source, aunque de cuando en cuando, se me escapa algo que no tiene que ver. Pero en general, si, normalmente sobre Linux, y el basto ecosistema de herramientas y aplicaciones que hay en en torno a él. Y si, sobre algo me he repetido es sobre la terminal, porque como me dijeron en un reciente episodio del podcast, soy un friki de Linux y la terminal. Y este nuevo cambio está relacionado precisamente con la terminal, y en concreto con la shell. Por que lo que me temía finalmente ha llegado, me cambio de shell, de Bash a Zsh. Si, lo que has leído, me cambio de Bash a Zsh, me cambio de shell, de intérprete de comandos. En este episodio del podcast, te cuento que es eso de la shell, y las razones que me han motivado a este cambio de shell.

DevDiscuss
S7:E1 - Deeply Human Stories in Software with The Changelog

DevDiscuss

Play Episode Listen Later Nov 10, 2021 49:08


In this episode, we talk about deeply human stories in software with the hosts of The Changelog podcast, Adam Stacoviak and Jerod Santo. Show Notes Microsoft 30 Days to Learn It (DevDiscuss) (sponsor) DevNews (sponsor) CodeNewbie (sponsor) New Relic (sponsor) Vultr (sponsor) Changelog The Sass Way Five years of freeCodeCamp with Quincy Larson Oh my! Zsh. with Robby Russell Pure Charity A Protocol for Dying A Protocol for Dying with Pieter Hintjens The ZeroMQ Process: C4 Leading Leaders Who Lead Engineers with Lara Hogan Maintainer Week Every Commit is a Gift Open Sourcing the DEV Community with Ben Halpern

Brad & Will Made a Tech Pod.
111: Flanders Is Running in a Degraded State

Brad & Will Made a Tech Pod.

Play Episode Listen Later Oct 31, 2021 89:02


It's the most horrifying Q&A episode we've ever recorded! This month we field Qs about such topics as: how to teach your kids to view Internet content and influencers with a critical eye, our home electronics protocols for going out of town, essential gadgets we just can't bring ourselves to splurge on, listening to podcasts at super speed, and our favorite historical OS transitions. Plus, Will recounts his longtime experience running BartStorage, and Brad reveals his deepest personal secrets... at least as pertains to network hostnames and the contents of his .zshrc file.Support the Pod! Contribute to the Tech Pod Patreon and get access to our booming Discord, your name in the credits, and other great benefits! You can support the show at: https://patreon.com/techpod

The Bike Shed
308: That's Picante

The Bike Shed

Play Episode Listen Later Sep 14, 2021 48:05


You know what really grinds Chris' gears? (Spoiler Alert: It's Single-Page Applications.) Steph needs some consulting help. So much to do, so little time. Sarah Drasner tweet about shared element transitions (https://twitter.com/sarah_edo/status/1431282994581413893) Article about Page Transitions API (https://developer.chrome.com/blog/shared-element-transitions-for-spas/) Svelte Crossfade layout demo (https://svelte.dev/repl/a7af336f906c4caab3936972754e4d6f?version=3.23.2) Svelte Crossfade tutorial page (https://svelte.dev/tutorial/deferred-transitions) (Note - click "Show Me" on the bottom left) Transcript: CHRIS: I have restarted my recording, and we are now recording. And we are off on the golden roads. Isn't software fun? STEPH: Podcast battle. Here we go! Hello and welcome to another episode of The Bike Shed, a weekly podcast from your friends at thoughtbot about developing great software. I'm Steph Viccari. CHRIS: And I'm Chris Toomey. STEPH: And together, we're here to share a bit of what we've learned along the way. Hey, Chris, happy Friday. How's your week been? CHRIS: Happy Friday to you as well. My week's been good with the exception of right before we started this recording, I had one of those experiences. You know the thing where software is bad and software is just terrible overall? I had one of those. And very briefly to describe it, I started recording, but I could hear some feedback in my headphones. So I was like, oh no, is that feedback going to show up on the final recording? Which I really hope it doesn't. Spoiler alert - listener, if I sound off, sorry about that. But so I stopped recording and then I went to go listen to the file, and I have our audio software configured to record directly to the desktop. And it does that normally quite well. But for some reason, the file wasn't there. But I remember this recently because I ran into it another time. For some reason, this is Finder failing me. So the thing that shows me the files in a graphical format, at least on my operating system. Although I think it also messes up in the terminal maybe. That feels like it shouldn't be true, but maybe it is. Anyway, I had to kill all Finder from the terminal to aggressively restart that process. And then suddenly, Finder was like, oh yeah, there's totally files there, absolutely. They were there the whole time. Why do you even ask? And I know that state management is a hard problem, I am aware. I have felt this pain. I have been the person who has introduced some bugs related to it, but that's not where I want to experience it. Finder is one of those applications that I want to just implicitly trust, never question whether or not it's just sneakily telling me that there are files that are not there or vice versa. So anyway, software. STEPH: I'm worried for your OS. I feel like there's a theme lately [chuckles] in the struggles of your computer. CHRIS: On a related note, I had to turn off transparency in my terminal because it was making my computer get very hot. [chuckles] STEPH: Oh no, you're not a hacker any more. CHRIS: I'm not. [chuckles] I just have a weird screen that's just dark. And jellybeans is my color scheme, so there's that going on. That's in Vim specifically. Pure is my prompt. That's a lovely little prompt. But lots of Day-Glo colors on just a black background, not the cool hacker transparency. I have lost some street cred. STEPH: What is your prompt? What did you say it is? CHRIS: Pure. STEPH: Pure, I don't know that one. CHRIS: It is by Sindre Sorhus; I think is his name. That's his Twitter handle, GitHub name. He is a prolific open-source creator in the Node world, particularly. But he created this...I think it's a Bash and a Zsh prompt. It might be for others as well. It's got a bunch of features. It's pretty fast. It's minimal. It got me to stop messing around with my prompt, which was mostly what I was going for. And it has a nice benefit that occasionally now I'll be pairing with someone, and I'll be like, "Your prompt looks like my prompt. Everything is familiar. This is great." STEPH: Well, if you get back in the waters of messing around with your prompts again, I'm using Starship. And I hadn't heard of Pure before, but I really like Starship. That's been my new favorite. CHRIS: Wow. STEPH: Wow. CHRIS: I mean, on the one hand… STEPH: You're welcome. [laughs] CHRIS: On the one hand, thank you. On the other hand, again, let me lead in with the goal was to stop messing around with my prompt. So you're like, oh, cool. Here's another prompt for you, though. [chuckles] STEPH: [laughs] But my goal is to nerd snipe you into trying more things because it's fun. CHRIS: I don't know if you know this, but I am impervious to nerd sniping. STEPH: [laughs] CHRIS: So try as you might, I shall remain steady in my course of action. STEPH: Are we playing two truths and a lie? Is that what we're doing today? [laughs] CHRIS: Nah, just one lie. It's easier. Everybody wins one lie. STEPH: [laughs] CHRIS: But anyway, in other news, we're going to do a segment called this really grinds my gears. That's today's segment, which is much like when I do a good idea, terrible idea. But this is one that I'm sure I've talked about before. But there's been some stuff that I saw moving around on the internet as one does, and it got these ideas back into my head. And it's around the phrase single-page application. I am not a fan of that phrase or SPA as the initialism. Thank you, Edward Loveall, for teaching me the difference between an initialism and an acronym. I really hope I'm getting it right, by the way, [laughs] SPA as people call them these days. I feel weird because of how much I care about this thing, how much I care about this idea, and how much whenever I hear this acronym, I get a little bit unhappy. And so there's a part of it that's I really do think our words shape our thinking. And I think single-page application has some deeply problematic ideas. Most notably, I think one of the most important things about building web applications is the URL. And those are different pages, at least in my head. I don't know of a different way to think about this. But if you are not emphasizing the URL and the fact that the URL is a way to address different pages or resources within your application, then you are throwing away one of the greatest advancements that humankind has made, in my mind. I care a lot about URLs; it turns out. And it's not inherent to an SPA that you will not be thinking about URLs. But again, in that idea that our words shape our thinking, by calling it an SPA, by leaning into that idea, I think you are starting down a path that leads to bad outcomes. I'm going to pause there because I'm getting kind of ranty. I got more to say on the topic. But what do you think? STEPH: Yeah, these are hot takes. I'm into it. I'm pretty sure that I know why URLs are so important to you and more of your feelings around why they're important. But would you dive in a bit deeper as to why you really cherish URLs, and why they're so important, and why they're one of the greatest advancements of humanity? CHRIS: [laughs] It sounds lofty when you say it back to me, but yeah. It's interesting that as you put into a question, it is a little bit hard to name. So there are certain aspects that are somewhat obvious. I love the idea that I can bookmark or share a given resource or representation of a resource very simply. Like the URL, it's this known thing. We can put hyperlinks in a document. It's this shared way to communicate, frankly, very complex things. And when I think of a URL, it's not just the domain and the path, but it's also any query parameters. So if you imagine faceted search on a website, you can be like, oh, filter down to these and only ones that are more than $10, and only ones that have a future start date and all those kinds of nuance. If you serialize that into the URL as part of the query param, then that even more nuanced view of this resource is shareable is bookmarkable is revisitable. I end up making Alfred Workflows that take advantage of the fact that, like, oh, I can look at this URL scheme, and I can see where different parts are interpolated. And so I can navigate directly to any given thing so fast. And that's deeply valuable, and it just falls naturally out of the idea that we have URLs. And so to not deeply embrace that, to not really wrap your arms around it and give that idea a big hug feels weird to me. STEPH: Yeah, I agree. I remember we've had this conversation in the past, and it really frustrates me when I can't share specific resources with folks because I don't know how to link to it. So then I can send you a link to the application itself to the top URL. But then I have to tell you how to find the information that I thought was really helpful. And that feels like a step backward. CHRIS: Yeah. That ability to say, "Follow this link, and then it will be obvious," versus "Go to this page, click on this thing, click on the dropdown, click on this other thing." Like, that's just a fundamentally different experience. So one of the things that I saw that got me thinking about this was I saw folks referring to single-page applications but then contrasting them with MPAs, which are multiple-page applications. STEPH: So the normal application? [laughs] CHRIS: And I was like, whoa, whoa, everybody. You mean like a website or a web app? As much as I was angry at the first initialism, this second one's really getting me going. But it really does speak to what are we doing? What are we trying to build? And as with anything, you could treat this as a binary as just like there are two options. There are either websites which, yeah, those have got a bunch of URLs, and that's all the stuff. And then there are web apps, and they're different. And it's a bundle of JavaScript that comes down, boots up on the client, and then it's an app thing. And who cares about URLs? I think very few people would actually fall in that camp. So I don't really believe that there is a dichotomy here. I think, as always, it's a continuum; it's a spectrum. But leaning into the nomenclature of single-page application, I think pushes you more towards that latter end of the spectrum. I think there are other things that fall out of it. Like, I believe deeply in having the server know more, have more of the logic, own more of the logic, own more authorization and routing, and all of those things because really great stuff falls out of that. And that one has more of a trade-off, I'd say. But I won't name any names, but there is a multiple billion-dollar company whose website I had to interact with recently. And you land on their page on their marketing site. And then, if you click log in, it navigates you to the application, so a separate domain or a separate subdomain, the application subdomain, and the login page there. And the login page renders, and then I go to fill in my username and password. Like, my mouse makes it all the way to click on the little box or whatever I'm doing if I'm using keyboard things. But I have enough time to actually start to interact with this page. And then suddenly, it rips away, and it actually just renders the authenticated application because it turns out I was already logged in. But behind the scenes, they're doing some JWT dance around that they're checking; oh no, no, you're already logged in, so never mind. We don't need to show you the login page, but I was already on the login page. And my feeling is this sort of brittle UI; this sort of inconsistency erodes my trust in that application, particularly when I'm on the login page. That is a page that matters. I don't believe that they're doing anything fundamentally insecure. But I do have the question in my head now. I'm like, wait, what's going on there, everybody? Is it fine? Was that okay? Or if you see something that you shouldn't see and then suddenly it's ripped away from you, if you see half of a layout that's rendered on a page and then suddenly you see, no, no, no, you actually don't have access to that page, that experience erodes my trust. And so, I would rather wait for the server to fully resolve, determine what's going to happen, and then we get a response that is holistically consistent. You either have access, or you don't, that sort of thing. Give me a loading indicator; give me those sorts of things. I'm fine with that. But don't render half of a layout and then redirect me back away. STEPH: I feel like that's one of the problems with knowing too much because most people are not going to pick up on a lot of the things that you're noticing and caring deeply about where they would just see like, oh, I was logged in and be like, huh, okay, that was a little weird, but I'm in and just continue on. Versus other folks who work very closely to this who may recognize and say, "That was weird." And the fact that you asked me to log in, but then I was already logged in, did you actually log me in correctly? What's happening? And then it makes you nervous. CHRIS: Maybe. Probably. But I wonder…the way you just said that sounds like another dichotomy. And I would say it's probably more of a continuum of an average not terribly tech-savvy user would still have a feeling of huh, that was weird. And that's enough. That's a little tickle in the back of your brain. It's like, huh, that was weird. And if that happens enough times or if you've seen someone who uses an application and uses it consistently, if that application is reasonably fast and somewhat intuitive and consistent, then they can move through it very quickly and very confidently. But if you have an app that half loads and then swaps you to another page and other things like that, it's very hard to move confidently through an application like that. I do think you're right in saying that I am over-indexed on this, and I probably care more than the average person, but I do care a lot. I do think one of the reasons that I think this happens is mobile applications came along, and they showed us a different experience that can happen and also desktop apps for some amount of time this was true. But I think iOS apps, in particular really great ones, have super high fidelity interactions. And so you're like, you're looking at a list view, and then you click on the cell for that list view. And there's this animated transition where the title floats up to the top and grows just a little bit. And the icon that was in the corner moves up to the corner, and it gets a little bigger. And it's this animated transition to the detailed view for that item. And then if you go back, it sort of deanimates back down. And that very consistent experience is kind of lovely when you get it right, but it's really, really hard. And people, I think, have tried to bring that to the web, but it's been such a struggle. And it necessitates client-side routing and some other things, or it's probably easiest to do if you have those sorts of technologies at play, but it's been a struggle. I can't think of an application that I think really pulls that off. And I think the trade-offs have been very costly. On the one positive note, there was a tweet that I saw by Sarah Drasner that was talking about smooth and simple page transitions with the shared element transition API. So this is a new API that I think is hoping to bring some of this functionality to the web platform natively so that web applications can provide that higher fidelity experience. Exactly how it'll work whether or not it requires embracing more of the single-page application, client-side routing, et cetera, I'm not sure on that. But it is a glimmer of hope because I think this is one of the things that drives folks in this direction. And if we have a better answer to it, then maybe we can start to rethink the conversation. STEPH: So I think you just said shared element transitions. I don't know what that is. Can you talk more about that? CHRIS: I can try, or I can make a guess. So my understanding is that would be that sort of experience where you have a version of a certain piece of content on the page. And then, as you transition to a new page, that piece of content is still represented on the new page, but perhaps the font size is larger, or it's expanded, or the box around it has grown or something like that. And so on mobile, you'll often see that animate change. On the web, you'll often see the one page is just completely replaced with the other. And so it's a way to have continuity between, say, a detailed view, and then when you click on an item in it, that item sort of grows to become the new page. And now you're on the detail page from the list page prior. There's actually a functionality in Svelte natively for this, which is really fancy; it's called crossfade. And so it allows you to say, "This item in the component hierarchy in the first state of the application is the same as this item in the second state of the application." And then, Svelte will take care of transitioning any of the properties that are necessary between those two. So if you have a small circle that is green, and then in the next state of the application, it's a blue rectangle, it will interpolate between those two colors. It will interpolate the shape and grow and expand it. It will float it to its new location. There is a really great version of it in the Svelte tutorial showing a to-do list. And so it's got a list on the left, which is undone things, and a list on the right that is done things. And when you click on something to complete it, it will animate it, sort of fly across to the other list. And if you click on it to uncomplete, it will animate it and fly back. And what's great is within Svelte because they have this crossfade as a native idea; all you need to say is like, "It was on this list, now it's on this list." And as long as it's identifiable, Svelte handles that crossfade and all the animations. So it's that kind of high-fidelity experience that I think we want. And that leads us to somewhat more complex applications, and I totally get that. I want those experiences as well. But I want to ask some questions, and I want to do away with the phrasing single-page application entirely. I don't want to say that anymore. I want to say URLs are one honking good idea. Let's have more of those. And also, just to name it, Inertia is a framework that allows me to build using some of the newer technologies but not have to give up on URLs, give up on server-side logic as the primary thing. So I will continue to shout my deep affection for Inertia in this moment once again. STEPH: Cool. Thanks. That was really helpful. That does sound really neat. So in the ideal world, we have URLs. We also have high fidelity and cool interactions and transitions on our pages. We don't have to give it a fancy name like single-page application or then multi-page application. I do wonder, with our grumpiness or our complaint about the URLs, is that fair to call it grumpy? CHRIS: It's fair to call it grumpy, although you don't need to loop yourself in with me. I'm the grump today. STEPH: [laughs] CHRIS: You're welcome to come along for the ride if you'd like. And I'm trying to find a positive way to talk about it. But yeah, it's my grumpytude. STEPH: Well, I do feel similarly where I really value URLs, and I value the ability to bookmark and share, like you said earlier. And I do wonder if there is a way to still have that even if we don't have the URL. So one of the things that I do is I'll inspect the source code. And if I can find an ID that's for a particular header or section on the page, then I will link someone to a section of that page by then adding the ID into the URL, and that works. It's not always great because then I have to rely on that being there. But it's a fix, it's a workaround. So I wonder if we could still have something like that, that as people are building content that can't be bookmarked or the URL doesn't change explicitly, or reference that content, to add more thoughtful bookmark links, essentially, or add an ID and then add a user-facing link that says, "Hey, if you want to link someone to this content, here you go." And under the hood, it's just an ID. But most people aren't going to know how to do that, so then you're helping people be able to reference content because we're used to URLs, so just thinking outside the box. I wonder if there are ways that we can still bookmark this content, share it with people. But it's okay if the URL isn't the only way that we can bookmark or reference that content. CHRIS: It's interesting that you bring that up, so the anchor being the thing after the hash symbol in the URL. I actually use that a ton as well. I think I built a Chrome extension a while back to try what you're saying of I'll inspect the DOM. I did that enough times that I was like, what if the DOM were to just tell me if there were an ID here and I could click on a thing? Some people's blogs...I think the thoughtbot blog has this at this point. All headers are clickable. So they are hyperlinks that append that anchor to the URL. So I wouldn't want to take that and use that functionality as our way to get back to URLs that are addressing resources because that's a way to then navigate even further, which I absolutely love, to a portion of the page. So thinking of Wikipedia, you're on an article, but it's a nice, long article. So you go down to the section, which is a third of the way down the page. And it's, again, a very big page, so you can link directly to that. And when someone opens that in their browser, the browsers know how to do this because it's part of the web platform, and it's wonderful. So we've got domains, we've got paths, we've got anchors, we've got query params. I want to use them all. I want to embrace them. I want that to be top of mind. I want to really think about it and care about that as part of the interface to the application, even though most users like you said, are not thinking about the shape of a URL. But that addressability of content is a thing that even if people aren't thinking of it as a primary concern, I think they know it when they...it's one of those like, yeah, no, that app's great because I can bookmark anything, and I can get to anything, and I can share stuff with people. And I do like the idea of making the ID-driven anchor deep links into a page more accessible to people because you and I would go into the DOM and slice it out. Your average web user may not be doing that, or that's much impossible to do on mobile, so yes, but only more so in my mind. [laughs] I don't want to take anchors and make them the way we do this. I want to just have all the URL stuff, please. Mid-roll Ad Now we're going to take a quick break to tell you about today's sponsor, Orbit. Orbit is mission control for community builders. Orbit offers data analytics, reporting, and insights across all the places your community exists in a single location. Orbit's origins are in the open-source and developer relations communities. And that continues today with an active open-source culture in an accessible and documented API. With thousands of communities currently relying on Orbit, they are rapidly growing their engineering team. The company is entirely remote-first with team members around the world. You can work from home, from an Orbit outpost in San Francisco or Paris, or find yourself a coworking spot in your city. The tech stack of the main orbit app is Ruby on Rails with JavaScript on the front end. If you're looking for your next role with an empathetic product-driven team that prides itself on work-life balance, professional development, and giving back to the larger community, then consider checking out the Orbit careers page for more information. Bonus points if working in a Ruby codebase with a Ruby-oriented team gives you a lot of joy. Find out more at orbit.love/weloveruby. STEPH: I have a confession from earlier when you were talking about the examples for those transitions. And you were describing where you take an action, and then the page does a certain motion to let you know that new content is coming onto the page and the old content is fading away. And I was like, oh, like a page reload? We're just reimplementing a page reload? [laughs] That's what we have? CHRIS: You have a fancy, though. STEPH: Fancy, okay. [laughs] But that felt a little sassy. And then you provided the other really great example with the to-do list. So what are some good examples of a SPA? Do you have any in mind? I think there are some use cases where...so Google Maps, that's the one that comes to mind for me where URLs feel less important. Are there other applications that fit that mold in your mind? CHRIS: Well, so again, it's sort of getting at the nomenclature, and how much does the acronym actually inform what we're thinking about? But taking Google Maps as an example, or Trello is a pretty canonical one in my mind, most people say those are single-page applications. And they are probably in terms of what the tech actually is, but there are other pages in those apps. There's a settings page, and there's a search page, and there's this and that. And there's like the board list in Trello. And so when we think about Trello, there is the board view where you're seeing the lists, and you can move cards, and you can drag and drop and do all the fancy stuff. That is a very rich client-side application that happens to be one page of the Trello web app and that one being higher fidelity, that one being more stateful. Stateful is probably the thing that I would care about more than anything. And so for that page, I would be fine with the portion of the JavaScript that comes down to the client being a larger payload, being more complex, and probably having some client-side state management for that. But fundamentally, I would not want to implement those as a true client-side application, as a true SPA. And I think client-side routing is really the definition point for me on this. So with Trello, I would probably build that as an Inertia-type application. But that one page, the board page, I'd be like, yeah, sorry, this is not going to be the normal Inertia thing. I'm going to have to be hitting JSON endpoints that are specifically built for this page. I'm going to have a Redux store that's local. I'm going to lean into all of that complex state management and do that within the client-side app but not use client-side routing for actual page-level transitions, the same being true for Google Maps. The page where you're looking at the map, and you can do all sorts of stuff, that's a big application. But it is one page within the broader website, if you will. And so, I still wouldn't want client-side routing if I can avoid it because I think that is where I run into the most problems. And that thing I was talking about where I was on the login page for a second, and then I wasn't; I do not like that thing. So if I can avoid that thing, which I have now found a way to avoid it, and I don't feel like I'm trading off on that, I feel like it's just a better experience but still reserving the right to this part of the application is so complex. This is our Wiziwig drag and drop graphical editor thing, cool. That's going to have Redux. That's going to have client-side state management, all that stuff. But at no point does single-page application feel like the right way to describe the thing that we're building because I still want to think about it as holistically part of the full web app. Like the Trello board view is part of the Trello web app. And I want it all to feel the same and move around the same. STEPH: Yeah, that makes sense. And it's funny, as you were mentioning this, I pulled up Google Maps because I definitely only interact with that heavy JavaScript portion, same for Trello. And I wasn't even thinking about the fact that there are settings. By the way, Google Maps does a lot. I don't use hardly any of this. But you make a great point. There's a lot here that still doesn't need such heavy JavaScript interaction and doesn't really fit that mold of where it needs to be a single-page app or even needs to have that amount of interactivity. And frankly, you may want URLs to be able to go specifically to these pages. CHRIS: That actually is an interesting, perhaps counterpoint to what I'm saying. So if you do have that complex part of one of your applications and you still want URL addressability, maybe you need client-side routing, and so that becomes a really difficult thing to answer in my mind. And I don't necessarily have a great answer for that. I'm also preemptively preparing myself for anyone on the internet that's listening to this and loves the idea of single-page applications and feels like I'm just building a straw man here, and none of what I'm saying is actually real and whatnot. And although I try to...I think we generally try and stay in the positive space of like what's good on the internet. This is a rare case where I'm like, these are things that are not great. And so I think in this particular case, leaning into things that I don't like is the way to properly capture this. And giant JavaScript bundles where the entirety of the application logic comes down in 15-megabyte download, even if you're on 3G on a train; I don't like that. I don't like if we have flashes of a layout that they can get ripped away b; it'secause it turns out we actually aren't authorized to view that page, that sort of thing. So there are certain experiences from an end client perspective that I really don't like, and that's mostly what I take issue with. Oh, also, I care deeply about URLs, and if you don't use the URL, then I'm going to be sad. Those are my things. Hopefully, that list is perhaps a better summary of it than like...I don't want it to seem like I'm just coming after SPA as a phrase or a way of thinking because that's not as real of a conversation. But those particular things that I just highlighted don't feel great. And so I would rather build applications that don't have those going on. And so if there's a way to do that that still fits any other mold or is called whatever, but largely what I see called an SPA often has those sorts of edge cases. And I do not like those edge cases. STEPH: Yeah, I like how you're breaking it down where it's less of this whole thing like I can't get on board with any of it. You are focusing on the things that you do have concerns with. So there can be just more interesting, productive conversations around those concerns versus someone feels like they have to defend their view of the world. I have found that I think I'm a bit unique in this area where when people have a really differing opinion than mine, that gets me really excited because then I want to know. Because if I believe very strongly in something and I just think this is the way and then someone very strongly says like, "No, that's not," I'm like, "Oh yeah. Okay, we should talk because I'm interested in why you would have such a different opinion than mine." And so, I typically find those conversations really interesting. As long as everybody's coming forward to be productive and kind, then I really enjoy those conversations. CHRIS: That is, I think, an interesting frame that you have there. But I think I'm similar, and hopefully, my reframing there puts it in the way that can be a productive conversation starter as opposed to a person griping on a podcast. But with that said, that's probably enough of me griping on a podcast. [chuckles] So what's up in your world, Steph? STEPH: Oh, there are a couple of things going on. So I am in that pre-vacation chaotic zone where I'm just trying to get everything done. And I heard someone refer to it recently as going into a superman or superwoman mode where you're just trying to do all the things before you go, which is totally unreasonable. So that has been interesting. And the name of the game this week has been delegate, delegate, delegate, and it seems to be going fairly well. [chuckles] So I'm very excited for the downtime that I'm about to have. And some other news, some personal news, Utah, my dog, turns one. I'm very excited. I'm pretty sure we'll have a dog birthday party and everything. It's going to be a thing. I'll share pictures on Twitter, I promise. CHRIS: So he's basically out of the puppy phase then. STEPH: Yeah, the definition for being a puppy seems to be if you're a year or younger, so he will not be an adult. Teenager? I don't know. [laughs] CHRIS: What about according to your lived experience? STEPH: He has calmed down a good bit. CHRIS: Okay, that's good. STEPH: He has gotten so much better. Back when we first got him, I swear I couldn't get 15 minutes of focus where he just needed all the attention. Or it was either constant playtime, or I had to put him in his kennel since we're using that. That was the only way I was really ever getting maker's time. And now he will just lounge on the couch for like an hour or two at a time. It's glorious. And so he has definitely calmed down, and he is maturing, becoming such a big boy. CHRIS: Well, that is wonderful. Astute listeners, if you go back to previous episodes over the past year, you can certainly find little bits of Utah sprinkled throughout, subtle sounds in the background. STEPH: He is definitely an important part of the show. And in some other news, I have a question for you. I'm in need of some consulting help, and I would love to run something by you and get your thoughts. So specifically, the project that I'm working on, we are always in a state where there's too much to do. And even though we have a fairly large team, I want to say there's probably somewhere between 7 and 10 of us. And so, even though we have a fairly...for thoughtbot, that's a large team to have on one project. So even though there's a fair number of us, there's always too much to do. Everything always feels like it's urgent. I can't remember if I've told you this or not, but in fact, we had so many tickets marked as high priority that we had to introduce another status to then indicate they're really, really high, and that is called Picante. [chuckles] CHRIS: Well, the first part of that is complicated; the actual word that you chose, though, fantastic. STEPH: I think that was CTO Joe Ferris. I think he's the one that came up with Picante. So that's a thing that we have, and that really represents like, the app is down. So something major is happening. That's like a PagerDuty alert when we get to that status where people can't access a page or access the application. So there's always a lot to juggle, and it feels a lot like priority whiplash in terms that you are working on something that is important, but then you suddenly get dragged away to something else. And then you have to build context on it and get that done. And then you go back to the thing that you're working on. And that's a really draining experience to constantly be in that mode where you're having to pivot from one type of work to the other. And so my question to you (And I'll be happy to fill in some details and answer questions.) is how do you calm things down? When you're in that state where everything feels so urgent and busy, and there's too much to do, how do you start to chip away at calming things down where then you feel like you're in a good state of making progress versus you feel like you're just always putting out fires or adding a band-aid to something? Yeah, that's where I'm at. What thoughts might you have, or what questions do you have? CHRIS: Cool. I'm glad you brought an easy question that I can just very quickly answer, and we'll just run with that. It is frankly...what you're describing is a nuanced outcome of any number of possible inputs. And frankly, some of them may just be like; this is just the nature of the thing. Like, we could talk about adding more people to the project, but the mythical man-month and that idea that you can't just throw additional humans at the work and suddenly have that makes sense because now you have to coordinate between those humans. And there's that wonderful image of two people; there's one line of communication. Three people, suddenly there are a lot more lines of communication. Four people, wow. The exponential increase as you add new people to a network graph, that whole idea. And so I think one of the first questions I would ask is, and again, this is probably not either/or. But if you would try and categorize it, is it just a question of there's just a ton of work to do and we're just not getting it done as quickly as we would want? Or is it that things are broken, that we're having to fix things, that there are constant tweaks and updates, that the system doesn't support the types of changes that we want, so any little thing that we want to do actually takes longer? Is it the system resisting, or is it just that there's too much to do? If you were to try and put it into one camp or the other. STEPH: It is both, my friend. It is both of those camps. [chuckles] CHRIS: Cool. That makes it way easier. STEPH: Totally. [laughs] To add some more context to that, it is both where the system is resistant to change. So we are trying to make improvements as we go but then also being respectful of the fact if it is something that we need to move quickly on, it doesn't feel great where you never really get to go back and address the system in a way that feels like it's going to help you later. But then, frankly, it's one of those tools that we can use. So if we are in the state where there's too much to do, and the system is resisting us, we can continue to punt on that, and we can address things as we go. But then, at some point, as we keep having work that has slowed down because we haven't addressed the underlying issues, then we can start to have that conversation around okay; we've done this twice now. This is the third time that this is going to take a lot longer than it should because we haven't really fixed this. Now we should talk about slowing things down so we can address this underlying issue first and then, from now on, pay the tax upfront. So from now on, it's going to be easier, but then we pay that tax now. So it is a helpful tool. It's something that we can essentially defer that tax to a later point. But then we just have to have those conversations later on when things are painful. Or it often leads to scope creep is another way that that creeps up. So we take on a ticket that we think, okay, this is fairly straightforward; I don't think there's too much here. But then we're suddenly getting into the codebase, and we realize, oh, this is a lot more work. And suddenly, a ticket will become an epic, and you really have one ticket that's spiraled or grown into five or six tickets. And then suddenly, you have a person that's really leading like a mini project in terms of the scope of the work that they are doing. So then that manifests in some interesting ways where then you have the person that feels a bit like a silo because they are the ones that are making all these big changes and working on this mini-project. And then there's the other one where there's a lot to do. There are a lot of customers, and there's a lot of customization for these customers. So then there are folks that are working really hard to keep the customers happy to give them what they need. And that's where we have too much to do. And we're prioritizing aggressively and trying to make sure that we're always working on the top priority. So like you said, it's super easy stuff. CHRIS: Yeah. To say it sincerely and realistically, you're just playing the game on hard mode right now. I don't think there is any singular or even multiple easy answers to this. I think one question I would have particularly as you started to talk about that, there are multiple customers each with individualized needs, so that's one of many surface areas that I might look t say, "Can we sort of choke things off there?" So I've often been in organizations where there is this constant cycle of the sales team is going out. They're demoing against an InVision mock. They're selling things that don't exist. They're making promises that are ungrounded and, frankly, technically infeasible or incredibly complicated, but it's part of the deal. They just sold it, and now we have to implement it as a team. I've been on teams where that was just a continuing theme. And so the engineering team was just like, "We can never catch up because the goalpost just keeps moving." And so to whatever degree that might be true in this case, if there are ten different customers and each of them right now feels like they have an open line to make feature requests or other things like that, I would try to have the conversation of like, we've got to cut that off right now because we're struggling. We're not making the forward progress that we need to, and so we need to buy ourselves some time. And so that's one area that I would look at. Another would be scope, anywhere that you can, go into an aggressive scope cutting mode. And so things like, well, we could build our own modal dialogue for this, but we could also use alert just like the JavaScript alert API. And what are all of the versions of that where we can say, "This is not going to be as nice, and as refined, and as fitting with the brand and feel and polish of the website. But ways that we can make an application that will be robust, that will work well on all of the devices that our users might be using but saves us a bunch of development time"? That's definitely something that I would look to. What you described about refactoring is interesting. So I agree with we're not in a position where we can just gently refactor as we find any little mess. We have to be somewhat ruthless in our prioritization there. But like you said, when you get to that third time that a thing is working way harder, then take the time to do it. But really, like just every facet of the work, you just have to be a little better. If you're an individual developer and you're feeling stuck, raise your hand all the earlier because that being stuck, we don't have spare cycles right now. We need everybody to be working at maximum efficiency. And so if you've hit a wall, then raise your hand and grab somebody else, get a pair, rubber duck, whatever it is that will help you get unstuck. Because we're in a position where we need everybody moving as fast as they can. But also to say all of those aren't free. Every one of those where you're just like, yeah, do it the best you can. Dial it up to 11 on every front. That's going to drain the team, and so we have to also be mindful of that. This can't be forever. And so maybe it is bringing some new people onto the team or trying to restructure things so that we can have smaller communication channels. So it's only four people working together on this portion of the application, and therefore their communication lines are a bit simpler. That's one way that we can maybe save a little bit. But yeah, none of these are free. And so, we also need to be mindful that we can't just try harder forever. [laughs] That's a way to burn out the team. But what you're describing is like the perfect storm of every facet of this is difficult, and there's no singular answer. There's the theory of constraints (I think I'm saying that right.) where it's like, what's the part of our process that is introducing the most slowdowns? And so you go, and you tackle that. So if you imagine a website and the app is slow is the report that you're getting, and you're like, okay, what does that mean? And you instrument it, and you log some stuff out. And you're like, all right, turns out we have tons of N+1s. So frankly, everything else doesn't matter. I don't care if we've got a 3 megabyte JavaScript bundle right now; the 45 N+1s on the dashboard that's the thing that we need to tackle. So you start, and you focus on that. And now you've removed that constraint. And suddenly, the three megabyte JavaScript bundle is the new thing that is the most complicated. So you're like, okay, cool, let's look into tree shaking or whatever it is, but you move from one focus to another. And so that's another thing that could come to play here is like, which part of this is introducing the most pain? Is it feature churn? Is it unrealistic sales expectations? Is it developers getting stuck? And find the first of those and tackle it. But yeah, this is hard. STEPH: Yeah, it is. That's all really helpful, though. And then, I can share some of the things that we are experimenting with right now and then provide an update on how it's going. And one of the things that we're trying; I think it's similar to the theory of constraints. I'm not familiar with that, but based on the way you described it, I think they're related. One of the things that we are trying is breaking the group into smaller teams because there are between 7 and 10 of us. And so, trying to jump from one issue to the next you may have to really level up on different portions of the application to be able to make an impact. And there are areas that we really need infrastructure improvements and then essentially paving the way for other people to be able to move more quickly. We do have to prioritize some of that work as well. So if we break up into smaller teams, it addresses a couple of areas, or at least that's the goal is to address a couple of areas. One is we avoid having silos so that people aren't a bottleneck, or they're the only ones that are really running this mini-project and the only one that has context. Because then when that person realizes the scope has grown, bringing somebody on to help feels painful because then you're in an urgent state, but now you have to spend time leveling someone else up just so that they can help you, and that's tough. So the goal is that by having smaller teams, we will reduce that from happening because at least everything that feels like a small project...and by feels like a small project, I mean if we have more than one ticket that's associated with the same theme, that's going to start hinting at maybe this is more than just one ticket itself, and it might actually belong to an epic. Or there's a theme here, and maybe we should have two people working on this. And breaking people into groups, then we can focus on some people are focused more on the day-to-day activity. Some people are focused on another important portion of the codebase as we have what may be extracted. I'm going to say this, but we're going to move on, maybe extracted into its own service. [laughs] I know that's a hot one for us, so I'm just going to say it. CHRIS: I told you I can't be nerd sniped. This is fine. Let's continue on. [laughs] STEPH: [laughs] And then a small group can also focus on some of those infrastructure improvements that I was alluding to. So smaller teams is something that we are trying. We are also doing a really great job. I've been really happy and just proud of the team where folks are constantly reaching out to each other to say, "Hey, I'm done with my ticket. Who can I help?" So instead of immediately going to the backlog and grabbing the next thing. Because we recognize that because of this structure where some people are some silos, they have their own little mini backlog, which we are working to remove that to make sure everything is properly prioritized instead of getting assigned to one particular person. But we are reaching out to each other to say, "Hey, what can I do to help? What do you need to get done with your work before I go pick something else up?" The other two things that come to mind is who's setting the deadlines? I think you touched on this one as well. It's just understanding why is it urgent? Does it need to be urgent? What is the deadline? Is this something that internally we are driving? Is this something that was communicated without talking to the rest of the team? Is this just a really demanding customer? Are they setting unrealistic expectations? But having more communication around what is the sense of urgency? What happens if we miss this deadline? What happens if we don't get to this for a week, a month? What does that look like? And then also, my favorite are retros because then we can vote on what feels like the highest priority in terms of pain points or run these types of experiments like the smaller teams. So those are the current strategies that we have. And I'm very interested to see how they turn out because it is a tough way. Like you said, it's challenge mode, and it is going to burn people out. And it does make people feel fatigued when they have to jump from one priority to the next. So I'm very interested. It's a very interesting problem to me too. It just feels like something that I imagine a lot of teams may be facing. So I'm really excited if anybody else is facing a similar issue or has gone through a similar challenge mode; I'd love to hear how your team tackled it. CHRIS: Yeah, I'm super interested to hear the outcome of those experiments. As a slightly pointed question there, is there any semi-formal version of tracking the experiments? And is it just retro to retro that you're using for feedback on that? I've often been on teams where we have retro. We come up with it, and we're like, oh, this is a pain point. All right, let's try this. And then two weeks later, we're like, oh, did anyone actually do that? And then we just forget. And it's one of those things that I've tried to come up with better ways to actually manage, make slightly more explicit the experiments, and then have a timeline, have an almost scientific process of what's the hypothesis? What's the procedure? What are the results? Write up an executive summary. How'd it go? STEPH: We are currently using retro, but I like that idea of having something that's a bit more concrete. So we have action items. And typically, going through retro, I tend to revisit the action items first as a way to kick off retro. So then that highlights what did we do? What did we not do? What do we not want to do anymore? What needs to roll over to the current iteration? And I think that could be just a way that we chat about this. We try something new, and we see how it's going each week in retro. But I do like the idea of stating upfront this is what we're looking to achieve because I think that's not captured in the retro action item. We have the thing that we're doing, but we haven't captured this is what we hope to achieve by taking this experiment on. Mid-roll Ad And now a quick break to hear from today's sponsor, Scout APM. Scout APM is leading-edge application performance monitoring that's designed to help Rails developers quickly find and fix performance issues without having to deal with the headache or overhead of enterprise platform feature bloat. With a developer-centric UI and tracing logic that ties bottlenecks to source code, you can quickly pinpoint and resolve those performance abnormalities like N+1 queries, slow database queries, memory bloat, and much more. Scout's real-time alerting and weekly digest emails let you rest easy knowing Scout's on watch and resolving performance issues before your customers ever see them. Scout has also launched its new error monitoring feature add-on for Python applications. Now you can connect your error reporting and application monitoring data on one platform. See for yourself why developers call Scout their best friend and try our error monitoring and APM free for 14 days; no credit card needed. And as an added-on bonus for Bike Shed listeners, Scout will donate $5 to the open-source project of your choice when you deploy. Learn more at scoutapm.com/bikeshed. That's scoutapm.com/bikeshed. STEPH: As for the other thing that you mentioned, I do have an idea for that because a former client that I worked with where we had experiments or things that we wanted to do, we were using Trello. And so we would often take those action items…or it was even more of a theme. It wasn't something that could be one-and-done. It was more of a daily reminder of, hey; we are trying this new thing. And so, we want to remind you each day to embrace this experiment and this practice. And so we would turn it into a Trello ticket, and then we would just leave it at the top of the board. So then, each day, as we were walking the board, it was a nice reminder to be like, hey, this is an ongoing experiment. Don't forget to do this. CHRIS: I do like the idea of bringing it into a stand-up potentially as like that's just a recurring point that we all have. So we can sort of revisit it, keep it top of mind, and discard it at some point if it's not useful. And if we're saying we're doing a thing, then let's do the thing and see how it goes. So yeah, very interested to hear the outcomes of the experiment and also the meta experiment framework that you're going to build here. Very interested to hear more about that. And just to say it again, this sounds like your perfect storm is not quite right because it doesn't sound like there's a ton of organizational dysfunction here. It sounds like this is just like, nah, it's hard. The code's not in perfect shape, but no code is. And there's just a lot of work to be done. And there are priorities because frankly, sometimes in the world, there are priorities, and you're sort of at the intersection of that. And I've been in plenty of teams where it was hard because of humans. In fact, that's often the reason of we're sort of making up problems, or we're poorly communicating or things like that. But it sounds like you're in the like, nope, this is just hard. And so, in a way, it sounds like you're thinking about it like, I don't know, it's kind of the challenge that I signed up for. Like, if we can win this, then there's going to be some good learnings that come out of that, and we're going to be all the better. And so, I wish you all the best of luck on that and would love to hear more about it in the future. STEPH: Thank you. And yeah, it has been such an interesting project with so many different challenges. And as you've mentioned, that is one area that is going really well where the people are wonderful. Everybody is doing their best and working hard. So that is not one of the competing challenges. And it is one of those; it's hard. There are a lot of external factors that are influencing the priority of our work. And then also, some external areas that we don't have control over that are forcing some of those deadlines where customers need something and not because they're being fussy, but they are themselves reacting to external deadlines that they don't have control over. So it is one of those where the people are great, and the challenges are just real, and we're working through them together. But it's also hard. But it's helpful chatting through all the different challenges with you. So I appreciate all of your thoughts on the matter. And I'll report some updates once I have some more information. On that note, shall we wrap up? CHRIS: Let's wrap up. STEPH: The show notes for this episode can be found at bikeshed.fm. CHRIS: This show is produced and edited by Mandy Moore. STEPH: If you enjoyed listening, one really easy way to support the show is to leave us a quick rating or a review in iTunes as it helps other people find the show. CHRIS: If you have any feedback for this or any of our other episodes, you can reach us at @_bikeshed on Twitter. And I'm @christoomey. STEPH: And I'm @SViccari. CHRIS: Or you can email us at hosts@bikeshed.fm. STEPH: Thanks so much for listening to The Bike Shed, and we'll see you next week. All: Byeeeeeeee! Announcer: This podcast was brought to you by thoughtbot. thoughtbot is your expert design and development partner. Let's make your product and team a success.

Ruby on Rails Podcast
Episode 381: Life Stories and Some Of Our Favorite Things (Brittany & Jemma)

Ruby on Rails Podcast

Play Episode Listen Later Aug 25, 2021 28:56


Jemma is going to be joining Shopify as a member of the Core Foundations team! She and Brittany discuss the interview process from Jemma's perspective. They then talk through their favorite developer tools, what they would improve and what sponsorship means for this show and WNB.rb. Show Notes & Links: Six Degrees of Kevin Bacon (https://en.wikipedia.org/wiki/Six_Degrees_of_Kevin_Bacon) Episode 365 - I Believe in the Rails Magic with Brittany & Nick (https://www.therubyonrailspodcast.com/365) Tmux - GitHub (https://github.com/tmux/tmux/wiki) Oh My Zsh - a delightful & open source framework for Zsh (https://ohmyz.sh/) WNB.rb (@wnb_rb) | Twitter (https://twitter.com/wnb_rb?lang=en) Contact WNB.rb for Sponsoring at womennonbinary.rb@gmail.com Sponsored By: Honeybadger (https://www.honeybadger.io/) Honeybadger makes you a DevOps hero by combining error monitoring, uptime monitoring and check-in monitoring into a single, easy to use platform. Go to Honeybadger.io (https://www.honeybadger.io/) and discover how Starr, Josh, and Ben created a 100% bootstrapped monitoring solution. Scout APM (http://scoutapm.com/rubyonrails) Try their error monitoring and APM free for 14-days, no credit card needed! And as an added bonus for Ruby on Rails listeners: Scout will donate $5 to the open-source project of your choice when you deploy. Learn more at http://scoutapm.com/rubyonrails (http://scoutapm.com/rubyonrails).

Changelog Master Feed
Modern Unix tools (The Changelog #451)

Changelog Master Feed

Play Episode Listen Later Jul 31, 2021 75:06 Transcription Available


This week we're talking with Nick Janetakis about modern unix tools, and the various commands, tooling, and ways we use the commmand line. Do you Bash or Zsh? Do you use cat or bat? What about man vs tldr? Today's show is a deep dive into unix tools you know and love, or should know and maybe love.

The Changelog
Modern Unix tools

The Changelog

Play Episode Listen Later Jul 31, 2021 75:06 Transcription Available


This week we're talking with Nick Janetakis about modern unix tools, and the various commands, tooling, and ways we use the commmand line. Do you Bash or Zsh? Do you use cat or bat? What about man vs tldr? Today's show is a deep dive into unix tools you know and love, or should know and maybe love.

SDG – Startup Podcast für Entwickler
#074 Bitcoin, Instagram und der Gutenberg Editor

SDG – Startup Podcast für Entwickler

Play Episode Listen Later May 30, 2021 28:45


Hallo zusammen, in der heutigen Folge starten wir die neue Kategorie, Jurek und Benny erklären die Welt. Zum Start versucht Benny zu erklären was ein Bitcoin. Wir sprechen auch über unseren Instagram Account und Jurek gibt Einblicke in seine Erfahrungen mit dem Gutenberg Editor für Wordpress. Wie immer viel Spass beim hören Jurek und Benny Links der Woche: Jurek: Gutenberg Editor (https://heyper.link/mJdUrB) Benny: Autosuggestions mit Zsh (https://heyper.link/Vm0WH7) --- Send in a voice message: https://anchor.fm/schaffdichgluecklich/message

Working Code
024: The Archetype of an Effective Developer

Working Code

Play Episode Listen Later May 26, 2021 84:52


We all love the Hollywood portrayal of the "brilliant programmer" who can step in and just crush it at a moment's notice. We've probably all fantasized about being that programmer. But, that's not how people work. And it's not how teams work. Highly effective developers don't just "crush it" - they cultivate good habits that they then apply consistently, day-in and day-out, for years. This week, the crew discusses which habits make - or break - the most effective developers.Triumphs & FailuresAdam's Triumph - After struggling to get several Java-based feature flag services configured correctly in ColdFusion (which is one layer of indirection above Java), Adam decided to pull the ultimate power move and created his own open-source, ColdFusion-based feature flag library: Semaphore. While still in active development, it's already feeling very "feature complete". Pull-requests welcome!Ben's Failure - Without being able to point at anything in particular, this week kind of just kicked his butt. Without a Product Manager (PM) or an Engineering Manager (EM) on his team, he's felt as though noone is "protecting" him or his people. And, even though an EM may not have actually made a the week better, there's an emotional cost to feeling so exposed. One saving grace, however, is that he received a stellar review from someone on the Customer Facing Team (CFT). So, he must be doing something right.Carol's Triumph - She totally survived a mercury-based allergic reaction to something she ate! That which doesn't kill Carol only makes her bolder when it comes to that sweet, sweet shellfish.Tim's Triumph - He recently built a custom solution for one of his customers. However, he built it with clean boundaries and multi-tenancy in mind. Which means, now that he's successfully rolled-it-out to his first customer, he's ready to cash-in on that work by using the same solution as an upsell opportunity for his other customers. He's even gone back and refactored some of the architecture using the Clean Code tips from our earlier book review.Notes & LinksSemaphore - A minimalist Feature Flag engine for CFML apps.Taffy - A low friction, extremely simple way to build REST-ful end-points in your CFML apps.FW/1 - A family of small, lightweight, convention-over-configuration frameworks, primarily for CFML apps.Oh My Zsh - A delightful, open source, community-driven framework for managing your Zsh configuration.Follow the show! Our website is workingcode.dev and we're @WorkingCodePod on Twitter and Instagram. Or, leave us a message at (512) 253-2633‬ (that's 512-253-CODE). New episodes drop weekly on Wednesday.And, if you're feeling the love, support us on Patreon.

BSD Now
399: Comparing Sandboxes

BSD Now

Play Episode Listen Later Apr 22, 2021 57:04


Comparing sandboxing techniques, Statement on FreeBSD development processes, customizing FreeBSD ports and packages, the quest for a comfortable NetBSD desktop, Nginx as a TCP/UDP relay, HardenedBSD March 2021 Status Report, Detailed Behaviors of Unix Signal, and more NOTES This episode of BSDNow is brought to you by Tarsnap (https://www.tarsnap.com/bsdnow) Headlines Comparing sandboxing techniques (https://www.omarpolo.com/post/gmid-sandbox.html) I had the opportunity to implement a sandbox and I'd like to write about the differences between the various sandboxing techniques available on three different operating systems: FreeBSD, Linux and OpenBSD. Statement on FreeBSD development processes (https://lists.freebsd.org/pipermail/freebsd-hackers/2021-March/057127.html) In light of the recent commentary on FreeBSD's development practices, members of the Core team would like to issue the following statement. Customizing FreeBSD Ports and Packages (https://klarasystems.com/articles/customizing-freebsd-ports-and-packages/) A basic intro to building your own packages News Roundup FVWM(3) and the quest for a comfortable NetBSD desktop (https://www.unitedbsd.com/d/442-fvwm3-and-the-quest-for-a-comfortable-netbsd-desktop) FVWM substantially allows one to build a fully-fledged lightweight desktop environment from scratch, with an almost unparalleled degree of freedom. Although using FVWM does not require any knowledge of programming languages, it is possible to extend it with M4, C, and Perl preprocessing. Nginx as a TCP/UDP relay (https://dataswamp.org/~solene/2021-02-24-nginx-stream.html) In this tutorial I will explain how to use Nginx as a TCP or UDP relay as an alternative to Haproxy or Relayd. This mean nginx will be able to accept requests on a port (TCP/UDP) and relay it to another backend without knowing about the content. It also permits to negociates a TLS session with the client and relay to a non-TLS backend. In this example I will explain how to configure Nginx to accept TLS requests to transmit it to my Gemini server Vger, Gemini protocol has TLS as a requirement. HardenedBSD March 2021 Status Report (https://hardenedbsd.org/article/shawn-webb/2021-03-31/hardenedbsd-march-2021-status-report) This month, I worked on finding and fixing the regression that caused kernel panics on our package builders. I think I found the issue: I made it so that the HARDENEDBSD amd64 kernel just included GENERIC so that we follow FreeBSD's toggling of features. Doing so added QUEUEMACRODEBUGTRASH to our kernel config. That option is the likely culprit. If the next package build (with the option removed) completes, I will commit the change that removes QUEUEMACRODEBUGTRASH from the HARDENEDBSD amd64 kernel. Detailed Behaviors of Unix Signal (https://www.dyx.name/posts/essays/signal.html) When Unix is mentioned in this document it means macOS or Linux as they are the mainly used Unix at this moment. When shell is mentioned it means Bash or Zsh. Most demos are written in C for macOS with Apple libc and Linux with glibc. Tarsnap This weeks episode of BSDNow was sponsored by our friends at Tarsnap, the only secure online backup you can trust your data to. Even paranoids need backups. Feedback/Questions andrew - flatpak (https://github.com/BSDNow/bsdnow.tv/blob/master/episodes/399/feedback/andrew%20-%20flatpak) chris - mac and truenas (https://github.com/BSDNow/bsdnow.tv/blob/master/episodes/399/feedback/chris%20-%20mac%20and%20truenas) robert - some questions (https://github.com/BSDNow/bsdnow.tv/blob/master/episodes/399/feedback/robert%20-%20some%20questions) Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv (mailto:feedback@bsdnow.tv)

Atareao con Linux
ATA 266 ComunidadLinux con Ivan y Zsh

Atareao con Linux

Play Episode Listen Later Mar 25, 2021 71:30


Durante casi toda mi vida con Linux he utilizado como intérprete de comandos, como shell Bash. Cierto es que en algún momento puntual he utilizado algún otro intérprete, inicialmente por curiosidad, para ver exactamente que aporta, y luego, por supuesto en busca de la productividad. Sin embargo, siempre termino regresando a Bash, justificándome a mi mismo que es por compatibilidad con lo que me vaya encontrar en otras máquinas. Pero ¿realmente es así?. Al fin y al cabo, en mi equipo personal estoy utilizando herramientas que en otros lugares no tengo. En este sentido, a lo mejor es necesario, dar otras oportunidades a otros intérpretes de comando como el que trae Ivan con Zsh. En este nuevo episodio del podcast tengo la suerte de contar con otro miembro del grupo de Telegram que cuenta su experiencia con Zsh, y con el resto de herramientas que utiliza de forma habitual. Comunidad Linux con Ivan y Zsh Sobre Zsh La shell Z, Zsh, es una shell Unix que puede ser utilizada de forma interactiva y como un intérprete de comandos para realizar scripts. Zsh incluye determinadas características de otras shell como Bash, ksh y tcsh. Características de Zsh Algunas de las características de Zsh son las siguientes, Completado programable de la línea de comandos. Esto ayuda al usuario a lidiar tanto con comandos como con los argumentos de estos comandos. La ventaja en el caso de Zsh, es que recién instalado, ya proporciona el completado de cientos de comandos.Comparte la historia entre las distintas instancias que tengas en marcha en el mismo momento. Esto es una característica que me resulta realmente interesante, porque en mi día a día, suelo tener de 3 a cuatro terminales abiertos de forma simultánea.Se mejora al gestión de variables y arrays.Corrección de comandos y opcionalmente deargmentos.Diferentes modos de compatibilidad.Línea de comandos personalizable. Oh My Zsh Ligado de forma casi indiscutible con Zsh encontrarás Oh My Zsh. Se trata de toda una colección de complementos y temas aportados por la comunidad. Todo ello, se recoge en un repositorio de GitHub, llegando a ser mas de 1300 contibuidores, con mas de 250 complementos y en torno a los 150 temas. Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast. Más información, Wikipedia Imagen de portada Faye Cornish en Unsplash

Sospechosos Habituales
ATA 266 ComunidadLinux con Ivan y Zsh

Sospechosos Habituales

Play Episode Listen Later Mar 25, 2021 71:30


Durante casi toda mi vida con Linux he utilizado como intérprete de comandos, como shell Bash. Cierto es que en algún momento puntual he utilizado algún otro intérprete, inicialmente por curiosidad, para ver exactamente que aporta, y luego, por supuesto en busca de la productividad. Sin embargo, siempre termino regresando a Bash, justificándome a mi mismo que es por compatibilidad con lo que me vaya encontrar en otras máquinas. Pero ¿realmente es así?. Al fin y al cabo, en mi equipo personal estoy utilizando herramientas que en otros lugares no tengo. En este sentido, a lo mejor es necesario, dar otras oportunidades a otros intérpretes de comando como el que trae Ivan con Zsh. En este nuevo episodio del podcast tengo la suerte de contar con otro miembro del grupo de Telegram que cuenta su experiencia con Zsh, y con el resto de herramientas que utiliza de forma habitual. Comunidad Linux con Ivan y Zsh Sobre Zsh La shell Z, Zsh, es una shell Unix que puede ser utilizada de forma interactiva y como un intérprete de comandos para realizar scripts. Zsh incluye determinadas características de otras shell como Bash, ksh y tcsh. Características de Zsh Algunas de las características de Zsh son las siguientes, Completado programable de la línea de comandos. Esto ayuda al usuario a lidiar tanto con comandos como con los argumentos de estos comandos. La ventaja en el caso de Zsh, es que recién instalado, ya proporciona el completado de cientos de comandos.Comparte la historia entre las distintas instancias que tengas en marcha en el mismo momento. Esto es una característica que me resulta realmente interesante, porque en mi día a día, suelo tener de 3 a cuatro terminales abiertos de forma simultánea.Se mejora al gestión de variables y arrays.Corrección de comandos y opcionalmente deargmentos.Diferentes modos de compatibilidad.Línea de comandos personalizable. Oh My Zsh Ligado de forma casi indiscutible con Zsh encontrarás Oh My Zsh. Se trata de toda una colección de complementos y temas aportados por la comunidad. Todo ello, se recoge en un repositorio de GitHub, llegando a ser mas de 1300 contibuidores, con mas de 250 complementos y en torno a los 150 temas. Espero que te haya gustado este nuevo episodio del podcast. Si puedes, te agradecería una valoración en iVoox y/o en Apple Podcast. Más información, Wikipedia Imagen de portada Faye Cornish en Unsplash

LINUX Unplugged
395: The Waybig Machine

LINUX Unplugged

Play Episode Listen Later Mar 3, 2021 48:32


It's our worst idea yet. We share the password to our brand-new server and see who can own the box first. Whoever wins gets a special prize. Plus how Archive.org uses Linux, and more. Special Guests: Brent Gervais, Carl George, and Neal Gompa.

Remote Ruby
The Early Days of Rails, Long-term Maintenance, and Oh My Zsh with Robby Russell

Remote Ruby

Play Episode Listen Later Jan 1, 2021 50:40


On today’s episode our guest is Robby Russell, CEO and Founder of Planet Argon, the creator of Oh My Zsh, and host of Maintainable Software Podcast. Robby tells us some of things he’s involved in, how he got into Ruby on Rails, and Z shell (Zsh). We find out how things have changed in the Rails community, since Robby’s been in it for a long time. Robby explains how’s he not a maker, but a mender. Also, we learn some cool things to do with Oh My Zsh and some common misunderstandings with the project. He also tells us some of his favorite plug-ins and a new theme he’s working on. Download this episode now to find out much more!

BSD Now
382: BSDNow Q&A 2020

BSD Now

Play Episode Listen Later Dec 24, 2020 66:51


We asked for it, you answered our call. This episode features you interviewing us with questions that you sent in. JT, Allan, and Benedict answer everything that you ever wanted to know in this week’s special episode of BSDNow. NOTES This episode of BSDNow is brought to you by Tarsnap (https://www.tarsnap.com/bsdnow) Interview - Allan Jude - Allan.jude@gmail.com (Allan.jude@gmail.com) / @allanjude (https://twitter.com/allanjude) Interview - Benedict Reuschling - bcr@freebsd.org (mailto:bcr@freebsd.org) / @bsdbcr (https://twitter.com/bsdbcr) Interview - JT Pennington - jt@obs-sec.com (mailto:jt@obs-sec.com) / @q5sys (https://twitter.com/q5sys) AMA questions Benedict: You work at a university right? Were you already into tech before you started working there? What do you do there? Yes, I do work at the University of Applied Sciences, Darmstadt, Germany. I’m a lab engineer there (without a lab, but with a big data cluster). I teach in the winter semester an undergraduate, elective course called “Unix for Developers”. Yes, I was already in tech by that time. Did some previous work at companies before (selling hardware at the call-in hotline and later in the store) and during my CS studies. Allan: What’s the next big FreeBSD Project you plan on doing? JT: How did you get involved in BSD? Weren't you a Linux guy? All: Is there any way you can create an entire episode of BSDnow on hardware that runs OpenBSD and FreeBSD? We see you audacity, etc on a mac. Benedict: Not sure about OpenBSD (don’t use it), but FreeBSD should be doable for my part. If we switch from Skype to a different video chat tool, the rest is already there. Production side may be more difficult, but not impossible. All: if you could finish up one project right now... what would it be? Benedict: Updated ZFS chapter in the FreeBSD handbook. All: How did all of you guys meet? All: My question is, do you guys use FreeBSD as your main desktop OS? If not, what do you use? Benedict: No, but Mac OS is close enough. Doing a lot of SSHing into FreeBSD from there. All: Can you all give us the best shot of outside of their windows? JT’s answer: https://photos.smugmug.com/photos/i-2LSbspL/0/69437dbb/5K/i-2LSbspL-5K.jpg Allan: https://photos.app.goo.gl/UnKXnKMt6cn8FDhNA Benedict: No, it’s dark outside anyway. ;-) All: How old were you when you got your first computer and what was that computer? Allan: 12 or 13, a 486DX2/66hz with an insane 32mb of RAM, 400 and 500 MB SCSI HDDs, 14400 baud model, and a 1.7x CD rom drive Benedict: Around 13 or so. 386DX2, 4 MB RAM, IDE disk drive (no idea how big, but it wasn’t much), 3.5” floppy, DOS, and a lot of games. JT: Technically the first was a Atari 1200XL with a 6502 CPU running at 1.79 MHz 64KB RAM. It had it's own OS and you could load programs off of either cartridges, floppy disks, or cassette tapes. First PC Clone was a Packard Bell with a 386 and 1mb ram which later was upgraded to 4mb and a Dual speed CD-ROM. My dad got me a Compaq 286 laptop... this one (show)... a year or so later because he got tired of fighting me for the computer. All: Can we have a peek at your bookcase and what books are there? Allan: No picture handy, but my shelf is pretty small, mostly a collection of autographed FreeBSD books. I have D&I with all 3 autographs (took some travel to acquire), and a copy of my first book (FreeBSD Mastery: ZFS) autographed by Jeff Bonwick and Matt Ahrens, the creators of ZFS, plus a bunch of other big names in ZFS like George Wilson. JT’s answer: So... my library is packed away... but here’s about half of it... the rest is still in storage. https://photos.smugmug.com/photos/i-SBG2KDv/0/0b9856b8/4K/i-SBG2KDv-4K.jpg Software Collection: https://photos.smugmug.com/photos/i-HfTVPN9/0/ad610dd4/O/i-HfTVPN9.jpg Benedict: A mix of FreeBSD books (by MWL), the graveyard book, 4 hour work week, the once and future king (took me a long time to finish that one), Total Immersion swimming (still learning to swim) and some books in german language, fiction and tech. Groff lives in there while the pandemic lasts. All: What desktop/Window Manager/shell do each of you primarily use? Benedict: Mainly Mac OS, when on FreeBSD it’s i3. Zsh with zsh-autosuggestions currently. JT: Lumina/zsh Allan: Lumina and tcsh, want to learn zsh but never gotten time to change All: What spoken languages do you speak? Benedict: German and English (obviously), learning a bit of Spanish via Duolingo at the moment JT: English, Bad English, and some French. All: Do you have Non-Computer hobbies if so what are those? Benedict: Tai Chi Chuan (Yang Style) JT: I'd say photography, but that's a job for me. I have a lot of varied interests, Krav Maga, working on my VW Corrado, working on the old Victorian house I bought, and camping/backpacking. Ive done the northern half of the AT (Appalachian Trail, I want to finish it up and then do the PCT and CDT. (Pacific Crest Trail and Continental Divide Trail). All: When COVID passes, when are either of you are coming to BSD pizza night in Portland, OR, USA so I can buy you a beer/wine/whisky or pizza/coffee/tea (or six) Rapid Fire: All: What was the first car you ever owned? All: Do you own a vehicle and if so what is the make/model? All: Favorite Star franchise? Star Wars, Star Trek, Stargate, Battlestar, etc. JT: Will you ever host any more BSDNow episodes? All: Favorite superhero? Marvel and/or DC. All: Favorite game(s) of all time? All: Pants or no pants on virtual meetings/presentations? All: Do you or have you used alternative operating systems that are not "main stream or is considered retro" if so what are those? All: Who has more animals at home? Allan: Does Allan have any batteries for his tetris cubes? Can we see that thing light up? Allan and Benedict: Are you guys going to go on JT's new show? If you’re wondering what show this is, here are the two shows Im a host of: https://www.opensourcevoices.org & https://www.theopiniondominion.org Allan and Benedict: Have Allan or Benedict lost anything on the way to and from a conference? Benedict: Is Benedict going to do his NOEL blocks again? Benedict: Does Benedict make his bed every Wednesday morning? It always looks great! Not just Wednesdays, but pretty much every day. Here, watch this: https://www.youtube.com/watch?v=GKZRFDCbGTA Nuff said. ;-) JT: Are you batman because the episodes are always awesome sir so thank you JT’s answer: Can you ever admit to being batman? If I were batman wouldn't I have to deny it? All: What's your Daily Driver Hardware? All: Who has more servers or VMs at home? Benedict: Allan, easily JT: Allan definitely beats me with VMs, but I think I might give him a run on servers. 4x 4u HP DL580s, one HP DL980, three HP C3000 8 bay bladecenters, three HP C7000 16 bay Bladecenters, 2x Sun 280R, bunch of Dell and IBM 1Us… but all my stuff is old. Allan has all the new and shiny stuff. The Pile in the Kitchen: https://photos.smugmug.com/photos/i-HBScrpk/0/4b058cc5/X2/i-HBScrpk-X2.jpg The other pile: https://photos.smugmug.com/photos/i-wNxFszV/0/e7a4b2d6/X2/i-wNxFszV-X2.jpg All: What book(s) are you currently reading? Benedict: Antifragile by Nassim Taleb JT: Douglas Hofstader - Gödel, Escher, Bach: An Eternal Golden Braid. Douglas Rushkoff - program or be programmed. Also a 4 part book series on the American civil war written in the 1880s, by people in the civil war. All: Favorite mechanical keyboard switch? Cherry MX, Kalih, Gateron, etc. Benedict: Cherry MX brown currently Allan: Cherry MX Blue (Coolermaster Master Keys Pro-L) JT: I prefer scissor switches, so I use a Logitech K740. Tarsnap This weeks episode of BSDNow was sponsored by our friends at Tarsnap, the only secure online backup you can trust your data to. Even paranoids need backups. Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv (mailto:feedback@bsdnow.tv)

SBS Karen - tJ;pfbHtJ;pf unD
w>frRvRuyDRrl;yGJv>w>fo,k>fondtylR

SBS Karen - tJ;pfbHtJ;pf unD

Play Episode Listen Later Dec 4, 2020 8:15


2020eH.ftHR rh>fv>w>f-wDCH;w>fvJRw>fuhRoh.fwz.f'D; w>fb.ftd.fpDRpkR,HRvdmfo; w>fbs>oh.fwz.ftCd v>w>frRvRrRuyDRrl;o;zSH v>t&h'd.f'ftrh>f [H.fzdCDzd/ xloElqJ;vR'D; w>fbl.fw>fbgt*D>foh.fwz.fe h.f b.frRb.fvdmf'D;vlRydmfxGJ0J'.fw>fbs>'fv>w>fymfvDRtDRtod;e h.fvDR?

zsh wdch
Dental Startup - der Podcast für angehende Gründerzahnärzte
DSP-016 Praxisrechtsschutzversicherung

Dental Startup - der Podcast für angehende Gründerzahnärzte

Play Episode Listen Later Nov 14, 2020 42:06


Folge 16: Praxisrechtsschutzversicherung Diese Versicherung sollte Sie schon einige Jahre begleiten! Im Optimalfall bereits vor Abschluss erster Verträge (Ausbildungsvertrag, Arbeitsvertrag als Vorbereitungsassistentin, BU-Absicherung usw.)! Und spätestens nach dem Ende der Berufsausbildung der des Studium sin Eigenverantwortung! Erfahrungsgemäß ist dies leider selten der Fall. Wenn Sie erste Überlegungen in Richtung eigene Praxis anstellen sollten Sie sich spätestens um eine passende Absicherung kümmern. Warum das so wichtig ist erfahren Sie in dieser Podcast-Folge. In weiteren Folgen erläutere ich auch diese Absicherungsmöglichkeiten: PraxisinventarversicherungBetriebsunterbrechungsversicherungPraxisausfalltagegeldversicherungElektronikversicherungCyber-Versicherung In meiner Rolle als Versicherungsmakler für Zahnmediziner greife ich dank der Unterstützung durch die ZSH auf spezielle Rahmenverträge für Ihre Berufsgruppe zurück. Wenn Sie dazu weitere Fragen haben, kommen Sie gern auf mich zu. Ab sofort können Sie übrigens Termine mit mir auch online abstimmen: https://zsh.flexperto.com/berater/joerg.schroeder Links: https://zahnarztpraxis-versicherungen.zsh.de/ http://www.zahnmedizinerberater.de https://schroeder.zsh.de Wenn Ihnen diese Folge gefallen hat würde ich mich über eine Bewertung sowie ein Abo dieses Podcast freuen! Hinweis: Alle Angaben wurden mit größter Sorgfalt erarbeitet und zusammengestellt. Die Ausführungen, Inhalte und Auskünfte sind rechtlich unverbindlich und erheben keinen Anspruch auf Vollständigkeit oder Richtigkeit. Für zwischenzeitliche Änderungen übernimmt der Autor keine Gewähr. Ferner ersetzt der Inhalt keine qualifizierte Beratung und dient lediglich einer ersten Information.

Remote Ruby
Ruby 3 adds Ractor, Hook Relay, ZSH and more

Remote Ruby

Play Episode Listen Later Sep 11, 2020 57:53


Chris and Andrew are here today! We will have discussions on Ractor, writing threaded code, Anyway Config, OAuthable, Hook Relay, Rails Kits, starring repositories, Zsh, and Oh My Zsh. Also, the guys chat about how they can bring more beginner people into Rails. Download this episode now!

Dental Startup - der Podcast für angehende Gründerzahnärzte
DSP-014 Die Berufshaftpflichtversicherung für Zahnärzte

Dental Startup - der Podcast für angehende Gründerzahnärzte

Play Episode Listen Later Aug 22, 2020 6:30


Folge 14: Die Berufshaftpflichtversicherung für Zahnärzte Egal ob Praxisgründung oder -übernahme. Zwangsläufig müssen Sie sich mit neuen Versicherungsthemen auseinandersetzen. In diesem Podcast werde ich die praxisrelevanten Versicherungen erklären. Heute soll es um Ihre Berufshaftpflichtversicherung gehen. Die entsprechende Tonspur habe ich meinem YouTube-Video auf dem ZSH-Kanal entnommen. Hoffentlich hatten Sie bisher keinen Anlass diesen Vertrag nutzen zu müssen. Als Unternehmerzahnarzt stehen Sie aber sowohl für Ihr Wirken als auch für das Ihres Teams in der Pflicht. Dementsprechend lohnt es sich hier nochmal die Basics abzuklären. In weiteren Folgen erläutere ich auch diese Absicherungsmöglichkeiten: PraxisinventarversicherungBetriebsunterbrechungsversicherungPraxisausfalltagegeldversicherungElektronikversicherungPraxisrechtsschutzversicherungCyber-Versicherung In meiner Rolle als Versicherungsmakler für Zahnmediziner greife ich dank der Unterstützung durch die ZSH auf spezielle Rahmenverträge für Ihre Berufsgruppe zurück. Wenn Sie dazu weitere Fragen haben, kommen Sie gern auf mich zu. Links: https://zahnarztpraxis-versicherungen.zsh.de/ http://www.zahnmedizinerberater.de https://schroeder.zsh.de Wenn Ihnen diese Folge gefallen hat würde ich mich über eine Bewertung sowie ein Abo dieses Podcast freuen! Hinweis: Alle Angaben wurden mit größter Sorgfalt erarbeitet und zusammengestellt. Die Ausführungen, Inhalte und Auskünfte sind rechtlich unverbindlich und erheben keinen Anspruch auf Vollständigkeit oder Richtigkeit. Für zwischenzeitliche Änderungen übernimmt der Autor keine Gewähr. Ferner ersetzt der Inhalt keine qualifizierte Beratung und dient lediglich einer ersten Information.

All Jupiter Broadcasting Shows
2020-08-19 | Linux Headlines 190

All Jupiter Broadcasting Shows

Play Episode Listen Later Aug 19, 2020


Guardicore warns of a cryptominer spreading across the Internet, Nextcloud aims at the enterprise market with new security features, and the latest update to Kali Linux preps a switch to Zsh.

Dental Startup - der Podcast für angehende Gründerzahnärzte

Welche Etappen haben Sie auf dem Weg in die eigene Zahnarztpraxis zu meistern? "Den" Musterfahrplan gibt es sicher nicht! Doch als Niederlassungebrater ist es meine Aufgabe Ihnen den roten Faden nähr zu bringen. Denn die Fülle der auf Sie zukommenden Entscheidungen uns schon gewaltig. Deren Abarbeitung will also gut vorbereitet sein! Denn Versäumnisse oder übereilte Maßnahmen können Zeit und in aller Regel viel Geld kosten! Mit der ZSH haben wir Ihnen in Whitepaper zum Thema erstellt, dass Sie hier abrufen können! Links: http://www.zahnmedizinerberater.de https://schroeder.zsh.de Wenn Ihnen diese Folge gefallen hat würde ich mich über eine Bewertung sowie ein Abo dieses Podcast freuen! Hinweis: Alle Angaben wurden mit größter Sorgfalt erarbeitet und zusammengestellt. Die Ausführungen, Inhalte und Auskünfte sind rechtlich unverbindlich und erheben keinen Anspruch auf Vollständigkeit oder Richtigkeit. Für zwischenzeitliche Änderungen übernimmt der Autor keine Gewähr. Ferner ersetzt der Inhalt keine qualifizierte Beratung und dient lediglich einer ersten Information.

Syntax - Tasty Web Development Treats
The Fundamentals Leftovers - Terminal, Shortcuts, View Source, Github + More!

Syntax - Tasty Web Development Treats

Play Episode Listen Later Jun 17, 2020 44:47


In this episode of Syntax, Scott and Wes continue their discussion of fundamentals — Bash, text editors, Regex, Github, Dev tools, and more! Sanity - Sponsor Sanity.io is a real-time headless CMS with a fully customizable Content Studio built in React. Get a Sanity powered site up and running in minutes at sanity.io/create. Get an awesome supercharged free developer plan on sanity.io/syntax. Sentry - Sponsor If you want to know what’s happening with your errors, track them with Sentry. Sentry is open-source error tracking that helps developers monitor and fix crashes in real time. Cut your time on error resolution from five hours to five minutes. It works with any language and integrates with dozens of other services. Syntax listeners can get two months for free by visiting Sentry.io and using the coupon code “tastytreat”. Show Notes 03:17 - Typing Take an online typing test or skills - https://www.keybr.com/ 07:02 - Bash / Terminal WSL What directory am I in? SSH How to copy / paste / remove files and folders z Nice prompt (ZSH or fish) Know how to get out of VIM/VI and how to use it for fast editing Know how to make an alias 13:19 - Text editors Command Palette Keyboard shortcuts (just look them up!) Click through to source Multiple cursors Find/replace master Find and replace across files 18:37 - Regex Regex101 https://regexone.com will teach you just enough 22:03 - OS Basics Switching apps Unzipping File organization Searching for/in files 28:50 - Googling Learn how to google well What words to use and what not to Basic operators “-”, ", Use Reddit: for opinions Add dates - example: Library has been out for 6 months, and you can filter out 33:08 - Navigating GitHub Explore for finding interesting projects and creators Know how to clone a repo Create repo and push to it https://octolinker.now.sh/ to click through to files Use Octotree to navigate 36:20 - Navigating source View source Where to start in a repo (ie the entrance to a project) Most code repos are easier to read and understand than you give yourself credit for - it will improve your code reading and parsing skills Access to the minds of other developers 37:31 - Knowing how to pick the right dev tools pane Is it network based? Does it happen once you click something? Toggling CSS on/off When console logging makes sense vs using a better tool Links TypingTest.com Wes’ Command Line Power User Karabiner BetterTouchTool Alfred ××× SIIIIICK ××× PIIIICKS ××× Scott: The Fabric of the Cosmos Wes: Cosmonaut Stylus Shameless Plugs Scott: All Courses - Sign up for the year and save 25%! Wes: All Courses - Use the coupon code ‘Syntax’ for $10 off! Tweet us your tasty treats! Scott’s Instagram LevelUpTutorials Instagram Wes’ Instagram Wes’ Twitter Wes’ Facebook Scott’s Twitter Make sure to include @SyntaxFM in your tweets

The Byte - A Byte-sized podcast about Containers, Cloud, and Tech
Turbo Charge your Command Line with Oh My Zsh!

The Byte - A Byte-sized podcast about Containers, Cloud, and Tech

Play Episode Listen Later May 14, 2020 5:33


Oh My Zsh! - https://ohmyz.sh/GitHub - https://github.com/ohmyzsh/ohmyzsh/ ZSH - ( Z Shell) is an extended Bourne Shell (sh) with features from other shells like Bash, Korn Shell, and tsch (tee shell) macOS Catalina made Zsh default back in 2019 replacing Bash Oh My Zsh is an open-source, community-driven framework for managing your zsh configuration.Plugins - Git, Docker, VS Code, OSX, programming languagesThemes - customize the look and feel of ZSH

Trevlig Mjukvara
Från ett hål till ett annat - Wink, Peek, Whoogle

Trevlig Mjukvara

Play Episode Listen Later May 11, 2020 32:41


I veckans avsnitt bjuder vi på mycket Trevligheter. Firefox släpper ny version, en ny standard för sexleksaker kan revolutionera marknaden. Rykande färska versioner av PiHole och Inkscape med många trevliga features. Länkar: https://trevligmjukvara.se/s03e06

BSD Now
344: Grains of Salt

BSD Now

Play Episode Listen Later Apr 2, 2020 55:39


Shell text processing, data rebalancing on ZFS mirrors, Add Security Headers with OpenBSD relayd, ZFS filesystem hierarchy in ZFS pools, speeding up ZSH, How Unix pipes work, grow ZFS pools over time, the real reason ifconfig on Linux is deprecated, clear your terminal in style, and more. Headlines Text processing in the shell (https://blog.balthazar-rouberol.com/text-processing-in-the-shell) This article is part of a self-published book project by Balthazar Rouberol and Etienne Brodu, ex-roommates, friends and colleagues, aiming at empowering the up and coming generation of developers. We currently are hard at work on it! One of the things that makes the shell an invaluable tool is the amount of available text processing commands, and the ability to easily pipe them into each other to build complex text processing workflows. These commands can make it trivial to perform text and data analysis, convert data between different formats, filter lines, etc. When working with text data, the philosophy is to break any complex problem you have into a set of smaller ones, and to solve each of them with a specialized tool. Rebalancing data on ZFS mirrors (https://jrs-s.net/2020/03/10/rebalancing-data-on-zfs-mirrors/) One of the questions that comes up time and time again about ZFS is “how can I migrate my data to a pool on a few of my disks, then add the rest of the disks afterward?” If you just want to get the data moved and don’t care about balance, you can just copy the data over, then add the new disks and be done with it. But, it won’t be distributed evenly over the vdevs in your pool. Don’t fret, though, it’s actually pretty easy to rebalance mirrors. In the following example, we’ll assume you’ve got four disks in a RAID array on an old machine, and two disks available to copy the data to in the short term. News Roundup Using OpenBSD relayd to Add Security Headers (https://web.archive.org/web/20191109121500/https://goblackcat.com/posts/using-openbsd-relayd-to-add-security-headers/) I am a huge fan of OpenBSD’s built-in httpd server as it is simple, secure, and quite performant. With the modern push of the large search providers pushing secure websites, it is now important to add security headers to your website or risk having the search results for your website downgraded. Fortunately, it is very easy to do this when you combine httpd with relayd. While relayd is principally designed for layer 3 redirections and layer 7 relays, it just so happens that it makes a handy tool for adding the recommended security headers. My website automatically redirects users from http to https and this gets achieved using a simple redirection in /etc/httpd.conf So if you have a configuration similar to mine, then you will still want to have httpd listen on the egress interface on port 80. The key thing to change here is to have httpd listen on 127.0.0.1 on port 443. How we set up our ZFS filesystem hierarchy in our ZFS pools (https://utcc.utoronto.ca/~cks/space/blog/solaris/ZFSOurContainerFilesystems) Our long standing practice here, predating even the first generation of our ZFS fileservers, is that we have two main sorts of filesystems, home directories (homedir filesystems) and what we call 'work directory' (workdir) filesystems. Homedir filesystems are called /h/NNN (for some NNN) and workdir filesystems are called /w/NNN; the NNN is unique across all of the different sorts of filesystems. Users are encouraged to put as much stuff as possible in workdirs and can have as many of them as they want, which mattered a lot more in the days when we used Solaris DiskSuite and had fixed-sized filesystems. Speeding up ZSH (https://blog.jonlu.ca/posts/speeding-up-zsh) https://web.archive.org/web/20200315184849/https://blog.jonlu.ca/posts/speeding-up-zsh I was opening multiple shells for an unrelated project today and noticed how abysmal my shell load speed was. After the initial load it was relatively fast, but the actual shell start up was noticeably slow. I timed it with time and these were the results. In the future I hope to actually recompile zsh with additional profiling techniques and debug information - keeping an internal timer and having a flag output current time for each command in a tree fashion would make building heat maps really easy. How do Unix Pipes work (https://www.vegardstikbakke.com/how-do-pipes-work-sigpipe/) Pipes are cool! We saw how handy they are in a previous blog post. Let’s look at a typical way to use the pipe operator. We have some output, and we want to look at the first lines of the output. Let’s download The Brothers Karamazov by Fyodor Dostoevsky, a fairly long novel. What we do to enable us to grow our ZFS pools over time (https://utcc.utoronto.ca/~cks/space/blog/solaris/ZFSHowWeGrowPools) In my entry on why ZFS isn't good at growing and reshaping pools, I mentioned that we go to quite some lengths in our ZFS environment to be able to incrementally expand our pools. Today I want to put together all of the pieces of that in one place to discuss what those lengths are. Our big constraint is that not only do we need to add space to pools over time, but we have a fairly large number of pools and which pools will have space added to them is unpredictable. We need a solution to pool expansion that leaves us with as much flexibility as possible for as long as possible. This pretty much requires being able to expand pools in relatively small increments of space. Linux maintains bugs: The real reason ifconfig on Linux is deprecated (https://blog.farhan.codes/2018/06/25/linux-maintains-bugs-the-real-reason-ifconfig-on-linux-is-deprecated/) In my third installment of FreeBSD vs Linux, I will discuss underlying reasons for why Linux moved away from ifconfig(8) to ip(8). In the past, when people said, “Linux is a kernel, not an operating system”, I knew that was true but I always thought it was a rather pedantic criticism. Of course no one runs just the Linux kernel, you run a distribution of Linux. But after reviewing userland code, I understand the significant drawbacks to developing “just a kernel” in isolation from the rest of the system. Clear Your Terminal in Style (https://adammusciano.com/2020/03/04/2020-03-04-clear-your-terminal-in-style/) if you’re someone like me who habitually clears their terminal, sometimes you want a little excitement in your life. Here is a way to do just that. This post revolves around the idea of giving a command a percent chance of running. While the topic at hand is not serious, this simple technique has potential in your scripts. Feedback/Questions Guy - AMD GPU Help (http://dpaste.com/2NEPDHB) MLShroyer13 - VLANs and Jails (http://dpaste.com/31KBNP4#wrap) Master One - ZFS Suspend/resume (http://dpaste.com/0DKM8CF#wrap) Send questions, comments, show ideas/topics, or stories you want mentioned on the show to feedback@bsdnow.tv (mailto:feedback@bsdnow.tv) Your browser does not support the HTML5 video tag.

BSD Now Video Feed
Grains of Salt | BSD Now 344

BSD Now Video Feed

Play Episode Listen Later Apr 1, 2020


Shell text processing, data rebalancing on ZFS mirrors, Add Security Headers with OpenBSD relayd, ZFS filesystem hierarchy in ZFS pools, speeding up ZSH, How Unix pipes work, grow ZFS pools over time, the real reason ifconfig on Linux is deprecated, clear your terminal in style, and more.

All Jupiter Broadcasting Shows
Grains of Salt | BSD Now 344

All Jupiter Broadcasting Shows

Play Episode Listen Later Apr 1, 2020


Shell text processing, data rebalancing on ZFS mirrors, Add Security Headers with OpenBSD relayd, ZFS filesystem hierarchy in ZFS pools, speeding up ZSH, How Unix pipes work, grow ZFS pools over time, the real reason ifconfig on Linux is deprecated, clear your terminal in style, and more.

The Bike Shed
232: I'm Not Allowed to Play With Other Shells

The Bike Shed

Play Episode Listen Later Feb 11, 2020 36:00


On this week's episode, Chris and Steph celebrate the new Bike Shed website and logo! Steph finds a new way to optimize her keyboard happiness and Chris dabbles with Zsh auto-suggestions. They also explore the team and technical trade-offs in the pursuit of clean code and respond to a listener question about building products that meet strict security policies. This episode is brought to you by Clubhouse (http://go.thoughtleaders.io/1658320200211). Click through to get 2 free months on any paid plan. Karabiner-Elements (https://pqrs.org/osx/karabiner/) Oh My Zsh (https://ohmyz.sh/) Fish shell (https://fishshell.com/) zsh-autosuggestions (https://github.com/zsh-users/zsh-autosuggestions) Steve Losh - Shift Key Training Wheels (https://stevelosh.com/blog/2012/10/a-modern-space-cadet/#s16-shift-key-training-wheels) Learn Vimscript the Hard Way (https://learnvimscriptthehardway.stevelosh.com/) Grammarly (https://www.grammarly.com/) Dan Abramov - Goodbye, Clean Code (https://overreacted.io/goodbye-clean-code/) Clean Code: A Handbook of Agile Software Craftsmanship by Robert C. Martin (https://www.oreilly.com/library/view/clean-code/9780136083238/) 99 Bottles of OOP (https://www.sandimetz.com/99bottles) Steph's "Building Compliant Health Tech Products" Workshop (https://info.thoughtbot.com/building-compliant-health-tech-products-recording)

Views on Vue
VoV 082: Developer Tooling and Dev Setup for Working With Vue

Views on Vue

Play Episode Listen Later Oct 8, 2019 62:26


On this episode of Views on Vue the panelists discuss their preferences for their development environments and tools. They begin with their preferences for text editor, font, and theme in their Vue development environments. All three currently use Visual Studio Code as their main text editor. Ari Clark switched to VS Code from Atom because she prefers the support that it has for Vue and Ben Hong switched from Sublime. Ben prefers the night owl theme and the operator mono font. On the other hand, Ari prefers the one dark pro theme for its syntax highlighting and prefers dank mono as her font. The Views on Vue panelists then go on to discuss their preferences on using the terminal. They weigh the pros and cons of using the integrated terminal and when they turn to other shells. The other potential shells that the Vue panelists discuss are Bash, Zsh, and Fish. The panelists focus on the speed and performance of the shells, and make an important note that not all shell commands are valid on other shells and the user will have to be familiar with the shell they are using. The Vue experts discuss whether they use the command line interface (CLI) or VS Code version control to manage their git version control. The panelists then weigh the pros and cons of different terminal shells they like to use. The panelists also briefly discuss how open they are to changing their development environment setup.  The topic then shifts to extensions for VS Code. The Views on Vue podcasters mention their preferences for a bracket colorizer, extension packs, code snippets and other tools. They talk specifically about the following extensions: Vue VS Code Extension Pack and Vue VS Code Snippets by Sarah Drasner, and Vetur created by Pine Wu, the latter of which the panelists identify as a quintessential extension for writing Vue. They discuss the merits of code snippet extensions as reusable code and creating them in VS Code.  They also discuss some of the different types of snippets that exist and how to use them. The Views on Vue panelists discuss ways to enforce best practices in addition to code snippets. They talk about using code generators like Hygen to automatically fill out the template for specific types of files. They share that creating unit tests helps to ensure best practices and that the code works as intended, as well as the differences between unit tests and end to end tests. They go over the strengths of an end to end testing tool called cypress. Tools like Husky or Yorkie allow you to add pre commit hooks to the package.json file that will automatically manage all the linting for a project.  Finally the panelists share their preferences browser tooling for Vue projects in addition to browser developer tools and their browsers of choice. Ari says that she prefers the previous version (version 4) of Vue devtools than the current version (version 5) and her reasons why. Chris Fritz shares that he likes Vimium for setting up quick navigation and Ben shares that he likes to use Keyboard Maestro. Panelists Ben Hong  Ari Clark  Chris Fritz Sponsors Tidelift Sentry.io use code “devchat” for 2 months free React Round Up  Elixir Mix Links Atom  Sublime Vue VS Code Extension Pack by Sarah Drasner Vetur by Pine wu  Vue VS Code Snippets by Sarah Drasner  Hygen  Cypress  VoV 007: Testing Vue.js with Cypress with Gleb Bahmutov Husky Vimium Keyboard Maestro Vue devtools Picks Ari Clark Gris  Ben Hong Ralph Breaks the Internet Chris Fritz Spiderman: Into The Spiderverse Children of Ruin

Devchat.tv Master Feed
VoV 082: Developer Tooling and Dev Setup for Working With Vue

Devchat.tv Master Feed

Play Episode Listen Later Oct 8, 2019 62:26


On this episode of Views on Vue the panelists discuss their preferences for their development environments and tools. They begin with their preferences for text editor, font, and theme in their Vue development environments. All three currently use Visual Studio Code as their main text editor. Ari Clark switched to VS Code from Atom because she prefers the support that it has for Vue and Ben Hong switched from Sublime. Ben prefers the night owl theme and the operator mono font. On the other hand, Ari prefers the one dark pro theme for its syntax highlighting and prefers dank mono as her font. The Views on Vue panelists then go on to discuss their preferences on using the terminal. They weigh the pros and cons of using the integrated terminal and when they turn to other shells. The other potential shells that the Vue panelists discuss are Bash, Zsh, and Fish. The panelists focus on the speed and performance of the shells, and make an important note that not all shell commands are valid on other shells and the user will have to be familiar with the shell they are using. The Vue experts discuss whether they use the command line interface (CLI) or VS Code version control to manage their git version control. The panelists then weigh the pros and cons of different terminal shells they like to use. The panelists also briefly discuss how open they are to changing their development environment setup.  The topic then shifts to extensions for VS Code. The Views on Vue podcasters mention their preferences for a bracket colorizer, extension packs, code snippets and other tools. They talk specifically about the following extensions: Vue VS Code Extension Pack and Vue VS Code Snippets by Sarah Drasner, and Vetur created by Pine Wu, the latter of which the panelists identify as a quintessential extension for writing Vue. They discuss the merits of code snippet extensions as reusable code and creating them in VS Code.  They also discuss some of the different types of snippets that exist and how to use them. The Views on Vue panelists discuss ways to enforce best practices in addition to code snippets. They talk about using code generators like Hygen to automatically fill out the template for specific types of files. They share that creating unit tests helps to ensure best practices and that the code works as intended, as well as the differences between unit tests and end to end tests. They go over the strengths of an end to end testing tool called cypress. Tools like Husky or Yorkie allow you to add pre commit hooks to the package.json file that will automatically manage all the linting for a project.  Finally the panelists share their preferences browser tooling for Vue projects in addition to browser developer tools and their browsers of choice. Ari says that she prefers the previous version (version 4) of Vue devtools than the current version (version 5) and her reasons why. Chris Fritz shares that he likes Vimium for setting up quick navigation and Ben shares that he likes to use Keyboard Maestro. Panelists Ben Hong  Ari Clark  Chris Fritz Sponsors Tidelift Sentry.io use code “devchat” for 2 months free React Round Up  Elixir Mix Links Atom  Sublime Vue VS Code Extension Pack by Sarah Drasner Vetur by Pine wu  Vue VS Code Snippets by Sarah Drasner  Hygen  Cypress  VoV 007: Testing Vue.js with Cypress with Gleb Bahmutov Husky Vimium Keyboard Maestro Vue devtools Picks Ari Clark Gris  Ben Hong Ralph Breaks the Internet Chris Fritz Spiderman: Into The Spiderverse Children of Ruin

Software Developer's Journey
#58 Robby Russell succeeds being selfless

Software Developer's Journey

Play Episode Play 57 sec Highlight Listen Later Jul 15, 2019 49:52


Robby first told us how the selfless scratching of his own itch lead to the success of his tool "Oh my Zsh". We then backtracked to his early years and how he got into development. Step by step, Robby took us through the creation and growth of his consultancy ; which is deeply intertwined with Ruby on Rails, scratching his own itch(es) again, and helping others along the way.Robby co-founded Planet Argon in 2002, which is a a software consultancy based out of Portland, Oregon USA. Planet Argon helps companies with existing Ruby on Rails applications make them better and more maintainable. Robby was an early-adopter of the Rails and was known for his blog, Robby on Rails. In 2009, he created Oh My Z-shell, which is a productivity tool for software developers. It accidentally became success in the open source community. Nowadays, Robby spends his time helping lead his company's development team and is the host of the Maintainable software podcast.Here are the links of the show:https://twitter.com/robbyrussellhttps://www.planetargon.comhttps://www.planetargon.com/about/robby-russellhttps://www.planetargon.com/culture (we're hiring)https://ohmyz.shhttps://maintainable.fmhttp://robbyonrails.comNoteThere were unfortunately some audio gliches on my end of the recording that I couldn't remove. Sorry about that.CreditsMusic Aye by Yung Kartz is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 License.Your hostSoftware Developer‘s Journey is hosted and produced by Timothée (Tim) Bourguignon, a crazy frenchman living in Germany who dedicated his life to helping others learn & grow. More about him at timbourguignon.fr.Want to be next?Do you know anyone who should be on the podcast? Do you want to be next? Drop me a line: info@devjourney.info or via Twitter @timothep.Gift the podcast a ratingPlease do me and your fellow listeners a favor by spreading the good word about this podcast. And please leave a rating (excellent of course) on the major podcasting platforms, this is the best way to increase the visibility of the podcast:Apple PodcastsStitcherGoogle PlayThanks!Support the show (http://bit.ly/2yBfySB)

Rebuild
241: Pro Grave XDR (hak)

Rebuild

Play Episode Listen Later Jun 12, 2019 142:59


Hakuro Matsuda さんをゲストに迎えて、WWDC, チップ、E3, ゲーム、Netflix、SF などについて話しました。 Show Notes WWDC19 Apple debuts For All Mankind trailer, coming to Apple TV Plus NASA addresses Trump’s bizarre Moon tweet Apple puts accessibility features front and center Apple CEO Tim Cook on iOS 13's Sign In with Apple Sign In with Apple | Apple Developer Documentation macOS Catalina About the upcoming changes with iTunes on Mac Upcoming MacOS Catalina to Ditch Bash in Favour of Zsh Apple's 'Find My' Feature Uses Some Very Clever Cryptography Project Catalyst aims to bring apps to the Mac, enhance titles for iPad Mac Pro Grey Pro Display XDR - Apple Introducing SwiftUI: Building Your First App - WWDC 2019 Ryzen 9 AMD and Samsung's GPU Licensing Deal Qualcomm and Apple agree to drop all litigation Apple in Talks to Purchase Intel's German Modem Unit Export of cryptography from the United States Microsoft and Sony are teaming up for the future of gaming Stadia Founder's Edition Death Stranding Final Fantasy VII Remake - E3 2019 Trailer Auto Chess メガドライブミニ | セガ BitSummit 7 Spirits Black Mirror The Wandering Earth 折りたたみ北京 現代中国SFアンソロジー きみを死なせないための物語 流れよわが涙、と孔明は言った

Coder Radio
361: ZEEEE Shell!

Coder Radio

Play Episode Listen Later Jun 10, 2019 35:32


Apple is shaking up the foundations of UI development with SwiftUI and raising developer eyebrows with a new default shell on MacOS. Plus feedback with a FOSS dilemma and an update on our 7 languages challenge.

The Linux Cast
Episode 14: ZSH vs Fish for Noobs

The Linux Cast

Play Episode Listen Later Apr 7, 2019 45:09


In this episode of The Linux Cast, Matt and Ricky talk about their first experiences with ZSH and Fish, the two most popular replacements for Bash. 

44BITS 팟캐스트 - 클라우드, 개발, 가젯
stdout_018.log: .dev 도메인, 랭킹 시각화, 개발자 설문 조사

44BITS 팟캐스트 - 클라우드, 개발, 가젯

Play Episode Listen Later Feb 27, 2019 68:04


stdout.fm 18번째 로그에서는 .dev 도메인, 랭킹 시각화, 개발자 설문 조사에 대해서 이야기를 나눴습니다. 참가자: @seapy, @raccoonyy, @nacyo_t Blue - Yeti TX650 디지털 보이스 레코더 TX 시리즈 | ICD-TX650 | Sony KR Blue - Yeti Nano 개발자라면 탐나는 .dev 최상위 도메인 등록 시작 | 44bits.io .DEV 도메인 이름 | .DEV 도메인 등록 - GoDaddy KR .com - 위키백과, 우리 모두의 백과사전 .io - 위키백과, 우리 모두의 백과사전 Google Registry - .dev Jon Postel - Wikipedia The TLD map with Jon Postel Wikimedia Commons ICANN - Internet Corporation for Assigned Names and Numbers Top 15 Best Global Brands Ranking (2000-2018) - YouTube Best Global Brands - Interbrand Top 10 Country GDP Ranking History (1960-2017) - YouTube Hans Rosling: 한스 로슬링이 이제껏 보지 못했던 최고의 통계를 보여준다. | TED Talk 주요 연예기획사 시가총액 순위 변화 Carmen Hernández Andoh on Twitter: “A bunch of talented, amazing people from Travis will be looking for jobs soon. … /1” IDERA | SQL Server, Database Management, and IT Performance Tools Idera acquires Travis CI | TechCrunch It looks like Ibera is gutting Travis CI just a few weeks after acquiring it : devops The Travis CI Blog: Travis CI joins the Idera family Bitrise - Mobile Continuous Integration and Delivery Continuous Integration and Delivery - CircleCI GitLab Continuous Integration & Delivery | GitLab 프로그래머스 2019 개발자 설문조사 리포트 | 프로그래머스 Python Developers Survey 2018 Results Download IntelliJ IDEA: The Java IDE for Professional Developers by JetBrains For Students: Free Professional Developer Tools by JetBrains TextMate: Text editor for macOS Bash, Zsh에서 여러줄의 명령어를 에디터로 편집하고 실행하기 | 44bits.io 셸에서 여러줄의 명령어를 에디터로 편집하고 실행하기 /w VSCode - YouTube 데이터 베이스 관리 시스템 | MySQL | Amazon Web Services Host, run, and code Python in the cloud: PythonAnywhere

LINUX Unplugged
283: The Premiere Shell

LINUX Unplugged

Play Episode Listen Later Jan 8, 2019 70:33


Joe joins Wes to discuss the state of Adobe's Creative Cloud on Linux and why the Fish shell might be your favorite new tool. Plus community news, a reality check on Linux gaming, and some shiny new hardware. Special Guests: Jason Evangelho and Peter Ammon.

Friday Afternoon Deploy:  A Developer Podcast
Outdoors 4 Nerds, Shell Tips, and Ham Radio.

Friday Afternoon Deploy: A Developer Podcast

Play Episode Listen Later Nov 23, 2018 45:07


Alan, Tyrel, and Hayden overflow a memory buffer into catfish noodling then share some tips and preferences with bash, zsh, and git. http://friday.hirelofty.com/ https://facebook.com/fridaydeploy https://twitter.com/fridaydeploy In this Episode Linux Journal:  Using Bash History more Efficiently tig N-gate:  Hackernews with extra snark. Distrowatch

Laravel News Podcast
Laravel 5.7, ZSH, and Nova packages

Laravel News Podcast

Play Episode Listen Later Sep 11, 2018 40:16


Jake and Michael discuss all the latest Laravel releases, tutorials, and happenings in the community.

The freeCodeCamp Podcast
Ep. 34 - d'Oh My Zsh

The freeCodeCamp Podcast

Play Episode Listen Later Jun 11, 2018 25:31


In this episode, Oh My Zsh founder Robby Russell tells the story of how he unexpectedly launched one of the most popular zsh configuration frameworks out there. He shares his process, some mean tweets, and his advice for people starting open source projects. Written and read by Robby Russell: https://twitter.com/robbyrussell  Original article: https://fcc.im/2HzyjYN Learn to code for free at: https://www.freecodecamp.org Intro music by Vangough: https://fcc.im/2APOG02 Transcript: How I unexpectedly built a monster of an open source project It was the summer of 2009. I found myself helping a coworker debug something in their terminal. As I attempted to type in a few command lines, I noticed that the prompt wasn’t responding to the shortcuts that my brain had grown accustomed to. Frustrated, I exclaimed, “when are you finally going to switch over to Zsh?!” (yeah, I was the type of annoying coworker that would constantly point out that X was better than Y when given the chance. In hindsight, I don’t know how they put up with me…but between you and me, I had a point.) At that point in time, I had been a daily Zsh user for a little over three years. Some of my #caboose friends shared a few of their .zshrc configurations within our IRC channel. After a few years, my .zshrc file grew into a tangled rat's nest. Honestly, I didn’t know what ~30% of the configuration did. I trusted my friends enough to run with it, though. What I did know was that I had some git branch and status details, color highlighting for a few tools (i.e., grep), autocompleting file paths over SSH connections, and a handful of shortcuts for Rake and Capistrano. Working on a machine with a default Bash profile felt remarkably archaic; I’d become dependent on these shortcuts. A few coworkers were happy to copy/paste the .zshrc file that I shared and begin using it. A few others wouldn’t because they knew that I didn’t know what some of it did. Fair enough. After a few attempts to convert them and getting nowhere, I opted for a different approach. First, I reorganized my .zshrc configuration, which involved breaking it up into a collection of smaller files. My thinking here was that this would a) help me better understand how all of these bits worked while b) helping educate my peers when they went to read the code. Pre-empting their next question, “how do I get this to work on my machine?”, I drafted the first setup instructions. Most importantly, I packaged all these files into a shiny new git repository. I figured that if I tossed it up on Github, my peers would be able to collaborate with me on improving it. While not a huge leap, it was a step above inviting people to copy/paste a text file from Pastie. On Aug. 28th, 2009, Oh My Zsh was born. …but, wait a minute!! Where are the themes? Where are the plugins? Installation scripts? Logo? This might come to a surprise to most of the Oh My Zsh user base, but none of those were features that I had considered. My goal with the project was not to build a framework for maintaining Zsh configurations but to share my own config with my coworkers so that they’d use Zsh. Within a day of sharing it with all of my coworkers, everyone at Planet Argon had migrated from Bash to Zsh. Victory! …or so I thought. The first feature request came in the next day. “How do I customize MY prompt?” Two coworkers asked me how they could customize their prompt. They wanted to change the colors and the information that was displayed. What the hell!? Wasn’t my prompt compelling enough for them? So nitpicky. ;-) I pointed to the prompt.zsh file and said they could modify that. Quickly, this became an issue as they now had their own version of that file. As a result, this would add some complexity if we all wanted to share some of our shortcuts and features as we’d have conflicts to deal with. Hmm… So, a day after first announcing Oh My Zsh on my blog, I began introducing the initial concept of themes. Meanwhile, I got my first external pull-request from Geoff Garside to add a few aliases for TextMate. (Notice how that went straight into a catch-all aliases.zsh file) A day later, another theme was sent over. Groovy, I better add a link on the README to see some screenshots on the wiki. Within a month, we had a dozen themes contributed to the project. This began to be a really popular aspect to Oh My Zsh and we had to start hitting the brakes on accepting themes once we passed 100. (we’re currently at ~140 and rarely accept new ones) Simplifying setup with an installer It occurred to me that the initial setup was requiring people to run a handful of commands. Rather than asking people to re-type and/or copy/paste a handful of commands, I felt that it would be more efficient for both parties (as it’d reduce the questions my coworkers would have when they hit a problem and/or skipped a step). An installer was born. My initial thoughts were to handle save folks a few steps by automating the installer. If everyone ran the same commands, then we could cut down on human error (skipping a command, typos, etc.). I also wanted to be mindful that people might be switching from either Bash or an existing cobbled-together Zsh configuration. To help them with a possible switch back to the previous shell, we made a backup of their original configuration file. Finally, we’d switch their default shell to Zsh. “Hooray! Oh My Zsh has been installed.” Oh, right. How will people be able to stay updated with the new changes to the project? The next day, I added an upgrade script that strolls over to the Oh My Zsh directory, fetch updates from the git repository, and returns you to your previous working directory. Far from rocket science. About three weeks later, it became obvious that my coworkers weren’t manually keeping up with all of the new updates to the project. Rather than reminding them to do that from time-to-time, I added functionality that would periodically prompt the user to check for updates. Up until this point, this felt like the most complicated piece of code in the project. I wish that I could remember who gave me the great idea to use an epoch value here. In my opinion, it was also the turning point for the project. While a handful of people were using it, this functionality would allow nearly every user to stay up-to-date on project changes and more importantly, stay engaged. When they would run the updater, they’d see a list of files changed and that would, subtly, introduce them to new features… a la, “I wonder what that theme looks like..” Sadly, not everyone has been a fan. Despite a few vocal opponents over the years, I’ve stood by my decision to keep this as a default setting. Back in 2012, we made a change to reduce the frequency of auto-update prompts by 50%. The auto-update has allowed us to ship new features, performance improvements, and bug fixes without relying on everyone manually doing it. I’m convinced that this feature has helped keep the community engaged. This Muffin Needs Candy While the project was attracting a lot of themes, I really felt like the project could benefit from branding. My solution? Ascii art. I have no idea what prompted the git commit message. My thought process here was… sure, you get a bunch of useful shortcuts and themes when you begin using Oh My Zsh, but I really felt like the first impression after the installer would run was an opportunity to delight new users. People have been asking me to print shirts with the ascii art for quite some time. (we’ll likely do that this summer — follow us on twitter) Plugins Ten months after open sourcing the project, users had begun to request the ability to not have everything get loaded up. For example, a Python developer might not need the Rake and Capistrano related aliases to get loaded like a Ruby developer would. So, we implemented a basic plugin system that would allow folks to decide which to load on initialization by changing a value in .zshrc. When this feature was released, there were five plugins bundled. Within a few months, I started to get pull requests for new plugin ideas. Within a year, I had accepted over 40 plugins. Within two years? Over 70 plugins. Currently, we have plugins for adb, ant, apache2-macports, archlinux, autoenv, autojump, autopep8, aws, battery, bbedit, bgnotify, boot2docker, bower, branch, brew, brew-cask, bundler, bwana, cabal, cake, cakephp3, capistrano, cask, catimg, celery, chruby, chucknorris, cloudapp, codeclimate, coffee, colemak, colored-man-pages, colorize, command-not-found, common-aliases, compleat, composer, copydir, copyfile, cp, cpanm, debian, dircycle, dirhistory, dirpersist, django, dnf, docker, docker-compose, emacs, ember-cli, emoji, emoji-clock, emotty, encode64, extract, fabric, fancy-ctrl-z, fasd, fastfile, fbterm, fedora, forklift, frontend-search, gas, gem, git, git-extras, git-flow, git-flow-avh, git-hubflow, git-prompt, git-remote-branch, gitfast, github, gitignore, glassfish, gnu-utils, go, golang, gpg-agent, gradle, grails, grunt, gulp, heroku, history, history-substring-search, httpie, iwhois, jake-node, jhbuild, jira, jruby, jsontools, jump, kate, kitchen, knife, knife_ssh, laravel, laravel4, laravel5, last-working-dir, lein, lighthouse, lol, macports, man, marked2, mercurial, meteor, mix, mix-fast, mosh, mvn, mysql-macports, n98-magerun, nanoc, nmap, node, npm, nvm, nyan, osx, pass, paver, pep8, per-directory-history, perl, phing, pip, pj, pod, postgres, pow, powder, powify, profiles, pyenv, pylint, python, rails, rake, rake-fast, rand-quote, rbenv, rbfu, rebar, redis-cli, repo, rsync, ruby, rvm, safe-paste, sbt, scala, scd, screen, scw, sfffe, singlechar, spring, sprunge, ssh-agent, stack, sublime, sudo, supervisor, suse, svn, svn-fast-info, symfony, symfony2, systemadmin, systemd, taskwarrior, terminalapp, terminitor, terraform, textastic, textmate, thefuck, themes, thor, tmux, tmux-cssh, tmuxinator, torrent, tugboat, ubuntu, urltools, vagrant, vault, vi-mode, vim-interaction, virtualenv, virtualenvwrapper, vundle, wakeonlan, wd, web-search, wp-cli, xcode, yii, yii2, yum, z, zeus, zsh-navigation-tools, zsh_reload. In total… 214 plugins. Admittedly, not everyone has been impressed by this. I do agree that could be drastically improved. The few times that I considered it, I found the proposed approaches to be too complicated for folks who aren’t yet familiar and/or comfortable with the terminal. Perhaps a more sophisticated approach for version 2 of the framework. (more on this later) There has, also, been a part of me that has felt like this project would only be of interest to people for a few years. As users gained more experience and/or as technology evolved, the framework would be left behind by shiny new projects that solved problems far better than we had. I never thought Oh My Zsh would still be building momentum nearly seven years later. Where do all these new users keep coming from? I ❤ you people! While I have many stories to share (and intend to write more on this topic), I wanted to speak to those who have been debating the idea of open sourcing a project. Eight Considerations For Your Open Source Project Don’t start with a wildly ambitious goal. Start your project with a simple, attainable goal. What does success look like? In my scenario, I wanted 1–2 people on my team to use my scripts. The project was a success in under 24 hours. Everything since has been extra-credit. Don’t try to account for every scenario. If I had gotten hung up on some long-term details for the project, Oh My Zsh would never have happened. Nearly everything that has been added to the project has come organically post-initial release. One of the beautiful aspects of an open source project is that your user base can help shape it. Don’t try to make it perfect. Worrying how other people are going to react about your code shouldn’t be your biggest concern. Does it work? How do they feel when they’re interacting with it should be a higher concern. In my case, I’ve had some great contributors over the years who have helped tidy up and improve the quality of the code that I originally released. Rarely has anyone said anything critical about my old code — maybe they should have, though. ;-) Don’t try to be everything to everyone. There have been a few points in the history of the project where we hit a crossroads. In particular, there was a time when a huge rebuild was proposed, which I was quite excited about until I was able to wrap my head around some of the changes. As a result, a fork was rebranded and we agreed to follow different paths. Not everyone was happy with my decision here, but it was during this period that it became clear (to me) that I wanted to focus my attention on folks who weren’t too comfortable with the terminal and/or git. Don’t stop thanking contributors. If anybody helps your project out, please let them know how much you appreciate their effort. I can’t thank my contributors enough. One of my biggest self-critiques related to this project is that I’ve not been consistent enough in being vocal about my appreciation. There are 910 people from all over the world who have their code accepted into the master branch of Oh My Zsh at the time of writing this. It’s such a long list that Github can’t even list them all. In particular, thank you. (you know who you are) Don’t forget the documentation. Over the years, documentation of plugins and functionality has been vital to helping inform users on how to take advantage of the framework. I wish we had adopted this convention several years before. The README file is going to be seen the most…so make it count. In my case, I opted to introduce people to my personality and dry sense of humor. Honestly, seeing tweets like this means the world to me. Don’t forget about the rest of your life. Again, I never anticipated the project turning into what it is today. Are you familiar with the anecdote about the frog in a pot of boiling water? It took me 3–4 years, too many, to finally bring in another person to help maintain the project. I kept thinking that I could catch up with all the open pull requests and issues. What I kept telling myself was that folks who know how to fork the project can make their desired changes and work off of that, so reviewing and approving pull requests is a nice-to-happen versus a need-to-happen. In practice, it’s somewhere in between. I do feel a bit bad for old pull requests lingering, but I also don’t keep Oh My Zsh as one of the top few projects on my plate. Outside of Oh My Zsh, I run a 19-person agency, play guitar in an instrumental post-rock band, sit on the board of directors of a local homeless shelter non-profit, travel with my camera a lot, ride my motorcycle, ride my bicycle, and try to keep a social life with my friends. Oh My Zsh fits somewhere in amongst all of these. It’s not at the top of my priority list. It’s not at the bottom. It’s somewhere between. This isn’t an excuse to not being able to keep up with the community, but more of a reminder that those other things should matter to you, too, if you’re about to start your own project. (I will write more on the topic of leading an open source project w/maintainers in another story… ❤ are you following me? ❤) Don’t forget to have some fun. When you start your project, decide if this is going to be serious work time or play time. Perhaps it can be somewhere in the middle. Oh My Zsh has, always, been a play time activity project for me. Knowing that one of my playful projects has been and continues to be enjoyed by people is such a wonderful feeling. Some might call it a passion project. I call it playtime. Interested in my fun open source project? You can learn more at http://ohmyz.sh.

BSD Now
223: Compile once, debug twice

BSD Now

Play Episode Listen Later Dec 6, 2017 111:35


Picking a compiler for debuggability, how to port Rust apps to FreeBSD, what the point of Docker is on FreeBSD/Solaris, another EuroBSDcon recap, and network manager control in OpenBSD This episode was brought to you by Headlines Compile once, Debug twice: Picking a compiler for debuggability, part 1 of 3 (https://backtrace.io/blog/compile-once-debug-twice-picking-a-compiler-for-debuggability-1of3/) An interesting look into why when you try to debug a crash, you can often find all of the useful information has been ‘optimized out' Have you ever had an assert get triggered only to result in a useless core dump with missing variable information or an invalid callstack? Common factors that go into selecting a C or C++ compiler are: availability, correctness, compilation speed and application performance. A factor that is often neglected is debug information quality, which symbolic debuggers use to reconcile application executable state to the source-code form that is familiar to most software engineers. When production builds of an application fail, the level of access to program state directly impacts the ability for a software engineer to investigate and fix a bug. If a compiler has optimized out a variable or is unable to express to a symbolic debugger how to reconstruct the value of a variable, the engineer's investigation process is significantly impacted. Either the engineer has to attempt to recreate the problem, iterate through speculative fixes or attempt to perform prohibitively expensive debugging, such as reconstructing program state through executable code analysis. Debug information quality is in fact not proportionally related to the quality of the generated executable code and wildly varies from compiler to compiler. Different compilers emit debug information at varying levels of quality and accuracy. However, certain optimizations will certainly impact any debugger's ability to generate accurate stack traces or extract variable values. In the above program, the value of argv is extracted and then the program is paused. The ckprloadptr function performs a read from the region of memory pointed to by argv, in a manner that prevents the compiler from performing optimization on it. This ensures that the memory access occurs and for this reason, the value of argv must be accessible by the time ckprloadptr is executed. When compiled with gcc, the debugger fails to find the value of the variable. The compiler determines that the value of argv is no longer needed after the ckprload_ptr operation and so doesn't bother paying the cost of saving the value. Some optimizations generate executable code whose call stack cannot be sufficiently disambiguated to reconcile a call stack that mirrors that of the source program. Two common culprits for this are tail call optimization and basic block commoning. In another example If the program receives a first argument of 1, then function is called with the argument of "a". If the program receives a first argument of 2, then function is called with the argument of "b". However, if we compile this program with clang, the stack traces in both cases are identical! clang informs the debugger that the function f invoked the function("b") branch where x = 2 even if x = 1. Though some optimizations will certainly impact the accuracy of a symbolic debugger, some compilers simply lack the ability to generate debug information in the presence of certain optimizations. One common optimization is induction variable elimination. A variable that's incremented or decremented by a constant on every iteration of a loop or derived from another variable that follows this pattern, is an induction variable. Coupled with other optimizations, the compiler is then able to generate code that doesn't actually rely on a dedicated counter variable “i” for maintaining the current offset into “buffer”. As you can see, i is completely optimized out. The compiler determines it doesn't have to pay the cost of maintaining the induction variable i. It maintains the pointer in the register %rdi. The code is effectively rewritten to something closer to this: So the for loop, changes into a while loop, with a condition of the end of the input We have shown some common optimizations that may get in the way of the debuggability of your application and demonstrated a disparity in debug information quality across two popular compilers. In the next blog post of this series, we will examine how gcc and clang stack up with regards to debug information quality across a myriad of synthetic applications and real world applications. Looking forward to part 2 *** This is how you can port your rust application to FreeBSD (https://medium.com/@andoriyu/this-is-how-you-can-port-your-rust-application-to-freebsd-7d3e9f1bc3df) This is how you can port your rust application to FreeBSD The FreeBSD Ports Collection is the way almost everyone installs applications (“ports”) on FreeBSD. Like everything else about FreeBSD, it is primarily a volunteer effort. It is important to keep this in mind when reading this document. In FreeBSD, anyone may submit a new port, or volunteer to maintain an existing unmaintained port. No special commit privilege is needed. For this guide I will use fd tool written by David Peter as example project. Prerequisites FreeBSD installation (VM is fine) Local ports tree (done via svn) portlint (located at devel/portlint) poudriere (located at ports-mgmt/poudriere)[optional] Getting ports tree When you install FreeBSD opt-out of the ports tree. Install svn: pkg install svn svn checkout https://svn.freebsd.org/ports/head /usr/ports Poudriere Sometimes you might get asked to show poudriere build log, sometimes you won't. It's good to have anyway. If you choose to use poudriere, use ZFS. There are plenty of guides on the subject. FreeBSD Porter's Handbook is the most complete source of information on porting to FreeBSD. Makefile Whole porting process in most cases is writing one Makefile. I recommend doing something like this. Here is the one I wrote for fd: Port metadata Each port must have one primary category in case of fd it will be sysutils, therefore it's located in /usr/ports/systuils/fd. PORTNAME= fd CATEGORIES= sysutils Since this port conflicts with other util named fd I specified package suffix as: PKGNAMESUFFIX= -find and indicate conflict: CONFLICTS_INSTALL= fd-[0-9]*. That means to install it from packages user will have to type: pkg install fd-find Licenses This section is different for every port, but in case of fd it's pretty straightforward: LICENSE= MIT APACHE20 LICENSE_COMB= dual Since fd includes the text of licenses you should do this as well: LICENSE_FILE_MIT= ${WRKSRC}/LICENSE-MIT LICENSE_FILE_APACHE20= ${WRKSRC}/LICENSE-APACHE Distfiles FreeBSD has a requirement that all ports must allow offline building. That means you have specified which files are needed to be downloaded. Luckily we now have helpers to download GitHub sources directly from GitHub: USE_GITHUB= yes GH_ACCOUNT= sharkdp Since PORTNANE is fd it will try to download sources for sharkdp/fd. By default it's going to download tag: ${DISTVERSIONPREFIX}${DISTVERSION}${DISTVERSIONSUFFIX} fd uses v as the prefix, therefore we need to specify: DISTVERSIONPREFIX= v. It's also possible to specify GH_TAGNAME in case tag name doesn't match that pattern. Extra packages There are very few rust projects that are standalone and use no crates dependencies. It's used to be PITA to make it work offline, but now cargo is a first class citizen in ports: USES= cargo CARGO_CRATES= aho-corasick-0.6.3 atty-0.2.3 # and so goes on Yes, you have to specify each dependency. Luckily, there is a magic awk script that turns Cargo.lock into what you need. Execute make cargo-crates in the port root. This will fail because you're missing checksum for the original source files: make makesum make cargo-crates This will give you what you need. Double check that result is correct. There is a way to ignore checksum error, but I can't remember… Execute make makesum again. CARGO_OUT If. build.rs relies on that you have to change it. fd allows you to use SHELLCOMPLETIONSDIR to specify where completions go, while ripgrep doesn't. In our case we just specify SHELLCOMPLETIONSDIR: SHELL_COMPLETIONS_DIR= ${WRKDIR}/shell-completions-dir CARGO_ENV= SHELL_COMPLETIONS_DIR=${SHELL_COMPLETIONS_DIR} PLIST FreeBSD is very strict about files it's installing and it won't allow you to install random files that get lost. You have to specify which files you're installing. In this case, it's just two: PLIST_FILES= bin/fd man/man1/fd.1.gz Note that sources for fd have uncompressed man file, while here it's listed as compressed. If port installs a lot of files, specify them in pkg-plist like here. To actually install them: post-install: @${STRIP_CMD} ${STAGEDIR}${PREFIX}/bin/fd ${INSTALL_MAN}${WRKSRC}/doc/fd.1 ${STAGEDIR}${MAN1PREFIX}/man/man1 Shell completions clap-rs can generate shell completions for you, it's usually handled by build.rs script. First, we need to define options: OPTIONS_DEFINE= BASH FISH ZSH # list options OPTIONS_DEFAULT= BASH FISH ZSH # select them by default BASH_PLIST_FILES= etc/bash_completion.d/fd.bash-completion FISH_PLIST_FILES= share/fish/completions/fd.fish ZSH_PLIST_FILES= share/zsh/site-functions/_fd To actually install them: post-install-BASH-on: @${MKDIR} ${STAGEDIR}${PREFIX}/etc/bash_completion.d ${INSTALL_DATA} ${SHELL_COMPLETIONS_DIR}/fd.bash-completion ${STAGEDIR}${PREFIX}/etc/bash_completion.d post-install-FISH-on: @${MKDIR} ${STAGEDIR}${PREFIX}/share/fish/completions ${INSTALL_DATA} ${SHELL_COMPLETIONS_DIR}/fd.fish ${STAGEDIR}${PREFIX}/share/fish/completions post-install-ZSH-on: @${MKDIR} ${STAGEDIR}${PREFIX}/share/zsh/site-functions ${INSTALL_DATA} ${SHELL_COMPLETIONS_DIR}/_fd ${STAGEDIR}${PREFIX}/share/zsh/site-functions Bonus round - Patching source code Sometimes you have to patch it and send the patch upstream. Merging it upstream can take awhile, so you can patch it as part of the install process. An easy way to do it: Go to work/ dir Copy file you want to patch and add .orig suffix to it Edit file you want to patch Execute make makepatch in port's root Submitting port First, make sure portlint -AC doesn't give you any errors or warnings. Second, make sure poudriere can build it on both amd64 and i386. If it can't?—?you have to either fix it or mark port broken for that arch. Follow this steps like I did steps. If you have any issues you can always ask your question in freebsd-ports on freenode try to find your answer in porter's handbook before asking. Conference Recap: EuroBSDCon 2017 Recap (https://www.freebsdfoundation.org/blog/conference-recap-eurobsdcon-2017-recap/) The location was wonderful and I loved sneaking out and exploring the city when I could. From what I heard, it was the largest BSD conference in history, with over 320 attendees! Each venue is unique and draws many local BSD enthusiasts, who normally wouldn't be able to travel to a conference. I love having the chance to talk to these people about how they are involved in the projects and what they would like to do. Most of the time, they are asking me questions about how they can get more involved and how we can help. Magical is how I would describe the conference social event. To stand in front of the dinner cruise on the Seine, with the Eiffel Tower standing tall, lit up in the night, while working – talking to our community members, was incredible. But, let me start at the beginning. We attend these conferences to talk to our community members, to find out what they are working on, determine technologies that should be supported in FreeBSD, and what we can do to help and improve FreeBSD. We started the week with a half-day board meeting on Wednesday. BSD conferences give us a chance to not only meet with community members around the world, but to have face-to-face meetings with our team members, who are also located around the world. We worked on refining our strategic direction and goals, determining what upcoming conferences we want FreeBSD presence at and who can give FreeBSD talks and workshops there, discussed current and potential software development projects, and discussed how we can help raise awareness about and increase the use of FreeBSD in Europe. Thursday was the first day of the FreeBSD developer summit, led by our very own Benedict Reuschling. He surprised us all by having us participate in a very clever quiz on France. 45 of us signed into the software, where he'd show the question on the screen and we had a limited amount of time to select our answers, with the results listed on the screen. It was actually a lot of fun, especially since they didn't publicize the names of the people who got the questions wrong. The lucky or most knowledgeable person on France, was des@freebsd.org. Some of our board members ran tutorials in parallel to the summit. Kirk McKusick gave his legendary tutorial, An Introduction to the FreeBSD Open-Source Operating System , George Neville-Neil gave his tutorial, DTrace for Developers, and Benedict Reuschling gave a tutorial on, Managing BSD systems with Ansible. I was pleased to have two chairs from ACM-W Europe run an “Increasing Diversity in the BSDs” BoF for the second year in a row. We broke up into three groups to discuss different gender bias situations, and what we can do to address these types of situations, to make the BSD projects more diverse, welcoming, and inclusive. At the end, people asked that we continue these discussions at future BSD conferences and suggested having an expert in the field give a talk on how to increase the diversity in our projects. As I mentioned earlier, the social dinner was on a boat cruising along the Seine. I had a chance to talk to community members in a more social environment. With the conference being in France, we had a lot of first time attendees from France. I enjoyed talking to many of them, as well as other people I only get to see at the European conferences. Sunday was full of more presentations and conversations. During the closing session, I gave a short talk on the Foundation and the work we are doing. Then, Benedict Reuschling, Board Vice President, came up and gave out recognition awards to four FreeBSD contributors who have made an impact on the Project. News Roundup Playing with the pine64 (https://chown.me/blog/playing-with-the-pine64.html) Daniel Jakots writes in his blog about his experiences with his two pine64 boards: Finding something to install on it 6 weeks ago, I ordered two pine64 units. I didn't (and still don't) have much plan for them, but I wanted to play with some cheap boards. I finally received them this week. Initially I wanted to install some Linux stuff on it, I didn't have much requirement so I thought I would just look what seems to be easy and/or the best supported systemd flavour. I headed over their wiki. Everything seems either not really maintained, done by some random people or both. I am not saying random people do bad things, just that installing some random things from the Internet is not really my cup of tea. I heard about Armbian (https://www.armbian.com/pine64/) but the server flavour seems to be experimental so I got scared of it. And sadly, the whole things looks like to be alot undermanned. So I went for OpenBSD because I know the stuff and who to har^Wkindly ask for help. Spoiler alert, it's boring because it just works. Getting OpenBSD on it I downloaded miniroot62.fs, dd'ed it on the micro SD card. I was afraid I'd need to fiddle with some things like sysutils/dtb because I don't know what I would have needed to do. That's because I don't know what it does and for this precise reason I was wrong and I didn't need to do anything. So just dd the miniroot62.fs and you can go to next checkpoint. I plugged an HDMI cable, ethernet cable and the power, it booted, I could read for 10 seconds but then it got dark. Of course it's because you need a serial console. Of course I didn't have one. I thought about trying to install OpenBSD blindly, I could have probably succeeded with autoinstall buuuuuut… Following some good pieces of advice from OpenBSD people I bought some cp2102 (I didn't try to understand what it was or what were the other possibilities, I just wanted something that would work :D). I looked how to plug the thing. It appears you can plug it on two different places but if you plug it on the Euler bus it could power a bit the board so if you try to reboot it, it would then mess with the power disruption and could lead a unclean reboot. You just need to plug three cables: GND, TXD and RXD. Of course, the TXD goes on the RXD pin from the picture and the RXD goes on the TXD pin. Guess why I'm telling you that! That's it Then you can connect with the usual $ cu -dl /dev/cuaU0 -s 115200 What's the point of Docker on FreeBSD or Solaris? (http://blog.frankleonhardt.com/2017/whats-the-point-of-docker-on-freebsd-or-solaris/) Penguinisters are very keen on their docker, but for the rest of us it may be difficult to see what the fuss is all about – it's only been around a few years and everyone's talking about it. And someone asked again today. What are we missing? Well docker is a solution to a Linux (and Windows) problem that FreeBSD/Solaris doesn't have. Until recently, the Linux kernel only implemented the original user isolation model involving chroot. More recent kernels have had Control Groups added, which are intended to provide isolation for a group of processes (namespaces). This came out of Google, and they've extended to concept to include processor resource allocation as one of the knobs, which could be a good idea for FreeBSD. The scheduler is aware of the JID of the process it's about to schedule, and I might take a look in the forthcoming winter evenings. But I digress. So if isolation (containerisation in Linux terms) is in the Linux kernel, what is Docker bringing to the party? The only thing I can think of is standardisation and an easy user interface (at the expense of having Python installed). You might think of it in similar terms to ezjail – a complex system intended to do something that is otherwise very simple. To make a jail in FreeBSD all you need do is copy the files for your system to a directory. This can even be a whole server's system disk if you like, and jails can run inside jails. You then create a very simple config file, giving the jail a name, the path to your files and an what IP addresses to pass through (if any) and you're done. Just type “service jail nameofjal start”, and off it goes. Is there any advantage in running Docker? Well, in a way, there is. Docker has a repository of system images that you can just install and run, and this is what a lot of people want. They're a bit like virtual appliances, but not mind-numbingly inefficient. You can actually run docker on FreeBSD. A port was done a couple of years ago, but it relies on the 64-bit Linux emulation that started to appear in 10.x. The newer the version of FreeBSD the better. Docker is in ports/sysutils/docker-freebsd. It makes uses of jails instead of Linux cgroups, and requires ZFS rather than UFS for file system isolation. I believe the Linux version uses Union FS but I could be completely wrong on that. The FreeBSD port works with the Docker hub repository, giving you access to thousands of pre-packaged system images to play with. And that's about as far as I've ever tested it. If you want to run the really tricky stuff (like Windows) you probably want full hardware emulation and something like Xen. If you want to deploy or migrate FreeBSD or Solaris systems, just copy a new tarball in to the directory and go. It's a non-problem, so why make it more complicated? Given the increasing frequency Docker turns up in conversations, it's probably worth taking seriously as Linux applications get packaged up in to images for easy access. Jails/Zones may be more efficient, and Docker images are limited to binary, but convenience tends to win in many environments. Network Manager Control for OpenBSD (http://www.vincentdelft.be/post/post_20171023) I propose you a small script allowing you to easily manage your networks connections. This script is integrated within the openbox dynamic menus. Moreover, it allow you to automatically have the connections you have pre-defined based. I was frustrated to not be able to swap quickly from one network interface to an another, to connect simply and quickly to my wifi, to my cable connection, to the wifi of a friend, ... Every time you have to type the ifconfig commands, .... This is nice, but boring. Surely, when you are in a middle of a presentation and you just want a quick connection to your mobile in tethering mode. Thanks to OpenBSD those commands are not so hard, but this frustrate me to not be able to do it with one click. Directly from my windows environment. Since I'm using Openbox, from a menu of openbox. So, I've looked around to see what is currently existing. One tool I've found was netctl (https://github.com/akpoff/netctl). The idea is to have a repository of hostname.if files ready to use for different cases. The idea sounds great, but I had some difficulties to use it. But what annoys me the most, is that it modify the current hostname.if files in /etc. To my eyes, I would avoid to modify those files because they are my working basis. I want to rely on them and make sure that my network will be back to a normal mode after a reboot. Nevertheless, if I've well understood netctl, you have a feature where it will look for the predefined network config matching the environment where you are. Very cool. So, after having played with netctl, look for alternative on internet, I've decided to create nmctl. A small python script which just perform the mandatory network commands. 1. nmctl: a Network Manager Control tool for OpenBSD Nmctl a small tool that allow you to manage your network connections. Why python ? Just because it's the easiest programming language for me. But I should maybe rewrite it in shell, more standard in the OpenBSD world than python. 1.1. download and install I've put nmctl on my sourceforge account here (https://sourceforge.net/p/nmctl/code/ci/master/tree/) You can dowload the last version here (https://sourceforge.net/p/nmctl/code/ci/master/tarball) To install you just have to run: make install (as root) The per-requists are: - having python2.7 installed - Since nmctl must be run as root, I strongly recommend you to run it via doas (http://man.openbsd.org/doas.conf.5). 1.2. The config file First you have to create a config and store it in /etc/nmctl.conf. This file must respect few rules: Each block must starts with a line having the following format: ''':''' Each following lines must start by at least one space. Those lines have more or less the same format as for hostname.if. You have to create a block with the name "open". This will be used to establish a connection to the Open Wifi around you (in restaurant for example) The order of those elements is important. In case you use the -restart option, nmctl will try each of those network configs one after one until it can ping www.google.com. (if you wan to ping something else, you can change it in the python script if you want). You can use external commands. Just preced them with the "!". You have macors. Macros allow you to perform some actions. The 2 currently implemented are '''''' and ''''''. You can use keywords. Currently the only one implemented is "dhcp" Basically you can put all commands that nmctl will apply to the interface to which those commands are referring to. So, you will always have "ifconfig ". Check the manpage of ifconfig to see how flexible command is. You have currently 2 macros: - which refers to the "nwid " when you select an Open Wifi with the -open option of nmctl. - is a macro generating a random mac address. This is useful test a dhcp server for example. The keyword "dhcp" will trigger a command like "dhclient ". 1.3. Config file sample. Let me show you one nmctl.conf example. It speaks by itself. ``` # the name open is required for Open wifi. # this is the interface that nmctl will take to establish a connection # We must put the macro . This is where nmctl will put the nwid command # and the selected openwifi selected by the parameter --open open:iwn0 !route flush -wpa dhcp cable:em0 !route flush dhcp lgg4:iwn0 !route flush nwid LGG4s_8114 wpakey aanotherpassword dhcp home:iwn0 !route flush nwid Linksys19594 wpakey apassword dhcp college:iwn0 !route flush nwid john wpakey haahaaaguessme dhcp cable_fixip:em0 !route flush inet 192.168.3.3 netmask 255.255.255.0 !route add -host default 192.168.3.1 # with this network interface I'm using the macro # which will do what you guess it will do :-) cable_random:em0 !route flush lladdr dhcp ``` In this config we have several cable's networks associated with my interface "em0" and several wifi networks associated with my wireless interface "iwn0". You see that you can switch from dhcp, to fixed IP and even you can play with the random mac address macro. Thanks to the network called "open", you can connect to any open wifi system. To do that, just type ''' nmctl --open ''' So, now, with just one command you can switch from one network configuration to an another one. That's become cool :-). 2. Integration with openbox Thanks to the dynamic menu feature of oenbox[sic], you can have your different pre-defined networks under one click of your mouse. For that, you just have to add, at the most appropriate place for you, the following code in your ./config/openbox/menu.xml In this case, you see the different networks as defined in the config file just above. 3. Automatically identify your available connection and connect to it in one go But the most interesting part, is coming from a loop through all of your defined networks. This loop is reachable via the -restart option. Basically the idea is to loop from the first network config to the last and test a ping for each of them. Once the ping works, we break the loop and keep this setting. Thus where ever you are, you just have to initiate a nmctl -restart and you will be connected to the network you have defined for this place. There is one small exception, the open-wifis. We do not include them in this loop exercise. Thus the way you define your config file is important. Since the network called "open" is dedicated to "open wifi", it will not be part of this scan exercise. I propose you keep it at the first place. Then, in my case, if my mobile, called lgg4, is open and visible by my laptop, I will connect it immediately. Second, I check if my "home wifi" is visible. Third, if I have a cable connected on my laptop, I'm using this connection and do a dhcp command. Then, I check to see if my laptop is not viewing the "college" wifi. ? and so on until a ping command works. If you do not have a cable in your laptop and if none of your pre-defined wifi connections are visible, the scan will stop. 3.1 examples No cable connected, no pre-defined wifi around me: t420:~$ time doas nmctl -r nwids around you: bbox2-d954 0m02.97s real 0m00.08s user 0m00.11s system t420:~$ t420:~$ I'm at home and my wifi router is running: ``` t420:~$ time doas nmctl -r nwids around you: Linksys19594 bbox2-d954 ifconfig em0 down: 0 default fw done fw 00:22:4d:ac:30:fd done nas link#2 done route flush: 0 ifconfig iwn0 nwid Linksys19594 ...: 0 iwn0: no link ........... sleeping dhclient iwn0: 0 Done. PING www.google.com (216.58.212.164): 56 data bytes 64 bytes from 216.58.212.164: icmp_seq=0 ttl=52 time=12.758 ms --- www.google.com ping statistics --- 1 packets transmitted, 1 packets received, 0.0% packet loss round-trip min/avg/max/std-dev = 12.758/12.758/12.758/0.000 ms ping -c1 -w2 www.google.com: 0 0m22.49s real 0m00.08s user 0m00.11s system t420:~$ ``` I'm at home but tethering is active on my mobile: ``` t420:~$ t420:~$ time doas nmctl -r nwids around you: Linksys19594 bbox2-d954 LGG4s8114 ifconfig em0 down: 0 default fw done fw 00:22:4d:ac:30:fd done nas link#2 done route flush: 0 ifconfig iwn0 nwid LGG4s8114 ...: 0 iwn0: DHCPDISCOVER - interval 1 iwn0: DHCPDISCOVER - interval 2 iwn0: DHCPOFFER from 192.168.43.1 (a0:91:69:be:10:49) iwn0: DHCPREQUEST to 255.255.255.255 iwn0: DHCPACK from 192.168.43.1 (a0:91:69:be:10:49) iwn0: bound to 192.168.43.214 -- renewal in 1800 seconds dhclient iwn0: 0 Done. ping: Warning: www.google.com has multiple addresses; using 173.194.69.99 PING www.google.com (173.194.69.99): 56 data bytes 64 bytes from 173.194.69.99: icmp_seq=0 ttl=43 time=42.863 ms --- www.google.com ping statistics --- 1 packets transmitted, 1 packets received, 0.0% packet loss round-trip min/avg/max/std-dev = 42.863/42.863/42.863/0.000 ms ping -c1 -w2 www.google.com: 0 0m13.78s real 0m00.08s user 0m00.13s system t420:~$ ``` Same situation, but I cut the tethering just after the scan. Thus the dhcp command will not succeed. We see that, after timeouts, nmctl see that the ping is failing (return code 1), thus he pass to the next possible pre-defined network. ``` t420:~$ time doas nmctl -r nwids around you: Linksys19594 bbox2-d954 LGG4s8114 ifconfig em0 down: 0 default 192.168.43.1 done 192.168.43.1 a0:91:69:be:10:49 done route flush: 0 ifconfig iwn0 nwid LGG4s8114 ...: 0 iwn0: no link ........... sleeping dhclient iwn0: 0 Done. ping: no address associated with name ping -c1 -w2 www.google.com: 1 ifconfig em0 down: 0 192.168.43.1 link#2 done route flush: 0 ifconfig iwn0 nwid Linksys19594 ...: 0 iwn0: DHCPREQUEST to 255.255.255.255 iwn0: DHCPACK from 192.168.3.1 (00:22:4d:ac:30:fd) iwn0: bound to 192.168.3.16 -- renewal in 302400 seconds dhclient iwn0: 0 Done. PING www.google.com (216.58.212.164): 56 data bytes 64 bytes from 216.58.212.164: icmp_seq=0 ttl=52 time=12.654 ms --- www.google.com ping statistics --- 1 packets transmitted, 1 packets received, 0.0% packet loss round-trip min/avg/max/std-dev = 12.654/12.654/12.654/0.000 ms ping -c1 -w2 www.google.com: 0 3m34.85s real 0m00.17s user 0m00.20s system t420:~$ ``` OpenVPN Setup Guide for FreeBSD (https://www.c0ffee.net/blog/openvpn-guide) OpenVPN Setup Guide Browse securely from anywhere using a personal VPN with OpenVPN, LDAP, FreeBSD, and PF. A VPN allows you to securely extend a private network over the internet via tunneling protocols and traffic encryption. For most people, a VPN offers two primary features: (1) the ability to access services on your local network over the internet, and (2) secure internet connectivity over an untrusted network. In this guide, I'll describe how to set up a personal VPN using OpenVPN on FreeBSD. The configuration can use both SSL certificates and LDAP credentials for authentication. We'll also be using the PF firewall to NAT traffic from our VPN out to the internet. One important note about running your own VPN: since you are most likely hosting your server using a VPS or hosting provider, with a public IP address allocated specifically to you, your VPN will not give you any extra anonymity on the internet. If anything, you'll be making yourself more of a target, since all your activity can be trivially traced back to your server's IP address. So while your VPN will protect you from a snooping hacker on the free WiFi at Starbucks, it won't protect you from a federal investigation. This guide assumes you are running FreeBSD with the PF firewall. If you're using a different Unix flavor, I'll probably get you most of the way there—but you'll be on your own when configuring your firewall and networking. Finally, I've used example.com and a non-routable public IP address for all the examples in this guide. You'll need to replace them with your own domain name and public IP address. Beastie Bits BSDCan 2017 videos (https://www.youtube.com/channel/UCuQhwHMJ0yK2zlfyRr1XZ_Q/feed) Getting started with OpenBSD device driver development PDF (https://www.openbsd.org/papers/eurobsdcon2017-device-drivers.pdf) AWS CloudWatch Logs agent for FreeBSD (https://macfoo.wordpress.com/2017/10/27/aws-cloudwatch-logs-agent-for-freebsd/) FreeBSD Foundation November 2017 Development Projects Update (https://www.freebsdfoundation.org/blog/november-2017-development-projects-update/) Schedule for the BSD Devroom at FOSDEM 2018 (https://fosdem.org/2018/schedule/track/bsd/) *** Feedback/Questions Matt - The show and Cantrill (http://dpaste.com/35VNXR5#wrap) Paulo - FreeBSD Question (http://dpaste.com/17E9Z2W#wrap) Steven - Virtualization under FreeBSD (http://dpaste.com/1N6F0TC#wrap) ***

Fly on the Wall
Is It You and Me or You and I?

Fly on the Wall

Play Episode Listen Later Oct 10, 2017 40:10


Fly on the Wall officially goes fortnightly! We discuss tools we use for our jobs, It, movies we're anticipating and time investment in video games. Tools We Use Sketch (https://sketchapp.com) Photoshop (http://www.adobe.com/uk/products/photoshop.html) Vossier (http://vossier.com) Xcode (https://developer.apple.com/xcode/) Github (http://github.com) InVision (https://www.invisionapp.com) Visual Studio Code (https://code.visualstudio.com) iTerm 2 (https://www.iterm2.com) ZSH (http://ohmyz.sh) Twitter (http://twitter.com) Ghost (http://ghost.org) Film & TV Mentioned It (2017) (http://www.imdb.com/title/tt1396484/) Stranger Things (http://www.imdb.com/title/tt4574334/) Justice League (http://www.imdb.com/title/tt0974015/) Star Wars: The Last Jedi (http://www.imdb.com/title/tt2527336/) Blade Runner 2049 (http://www.imdb.com/title/tt1856101/) The Snowman (2017) (http://www.imdb.com/title/tt1758810/) Mobile Suit Gundam: Iron-Blooded Orphans (http://www.imdb.com/title/tt5344382/) Attack on Titan (http://www.imdb.com/title/tt2560140/) Naruto (http://www.imdb.com/title/tt0409591/) Blue Exorcist (http://www.imdb.com/title/tt1799631/) Dragon Ball Super (http://www.imdb.com/title/tt4644488/) Demonbane (http://www.imdb.com/title/tt1162658/) Tokyo Ghoul (http://www.imdb.com/title/tt3741634/) Other Things Mentioned: - Steve’s Blog (http://stephenradford.me) - Crunchyroll (http://www.crunchyroll.com) - Persona 5 (http://amzn.to/2yU0Zri) - Horizon Zero Dawn (http://amzn.to/2yUc77Q) Find Us Online @FOTWCast (http://twitter.com/fotwcast) @mckay_1988 (http://twitter.com/mckay_1988) @steve228uk (http://twitter.com/steve228uk)

Laravel News Podcast
Forge updates, Ubuntu DNS issues, and PhpStorm 2017.1

Laravel News Podcast

Play Episode Listen Later Mar 28, 2017 34:55


Jake and Michael discuss the new Laravel announcements publication, Ubuntu DNS issues, using environment variables in your .env file, and PhpStorm 2017.1

Der Übercast
#UC077: Das Terminal A

Der Übercast

Play Episode Listen Later Mar 10, 2017 90:11


Unser hochgeschätztes macOS hat immer noch einen UNIX Unterbau. Der Inbegriff dessen ist wohl die Kommandozeile. Dieser Ort an dem man Herrscher über die Naturgewalten sein kann, wird heute von Andreas und Patrick genauer unter die Lupe genommen. Von häufig genutzten Befehlen hin zu Lieblingsapps geht es im Zick-Zack-Flug voran. Lieber Fluggast, wenn dir das Gehörte gefällt oder dir Sorgenfalten auf die edle Stirn fabriziert, dann haben wir etwas für dich: iTunes Bewertungen. Die heutige Episode von Der Übercast wird unterstützt von: Wire – der sichere Messenger für private und berufliche Kommunikation hatte kürzlich einen Sicherheitsaudit. Dieser bestätigt dem Messenger einen hohen Sicherheitsstandard. Zudem gehören – dank der neuen Textsuche – verlorengegangene Nachrichten ab sofort der Vergangenheit an. Giveaway Um ein T-Shirt zu gewinnen registriert euch einfach bei Wire - vorzugsweise über die Adresse ubercast.wire.com - und befreundet @derubercast. Im Chat dort beantworten wir auch jedwede Frage zur aktuellen Sendung, zur Show im Allgemeinen oder was die Antwort auf die allumfassendste Frage auf der Welt ist. Follow-up Plex’s Bold Plan To Take On The Streaming Goliaths Nützliche Reddit Bookmarklets hier und hier. Auch nicht schlecht: Go to subreddits’ imgur gallery Routen in Google Maps speichern und wieder aufrufen View your My Maps using Google Maps - Computer - Google Maps Help Save directions on My Maps - My Maps Help Laufrouten auf’s Handy mit MapMyRun ili - Wearable Translator VR Desktop for Mac - Use your Mac in Virtual Reality AirJack YouTube: Lickster ForkLift 3 Crates und Crates: Beatport Track Digging, But Way Better Passbolt – Open source password manager for teams #sysPass :: Systems Password Manager Terminal/Shell/Kommandozeile & Dotfiles Bash fish shell Zsh Oh My Zsh Der Unterschied zwischen .profile, .bashrc, .bash_profile, usw.: Stack Overflow Oft benutzt und gerne gesehen ⌃a, ⌃e, ⌃k !! ⌃r !$ => wiederholt das letzte Argument nach dem vorherigen Kommando ^nanp^nano => Rechtschreibekorrektur Lieblingstools, -binaries, -oneliner oder was auch immer iTerm2 - macOS Terminal Replacement iTerm Replacement Icon by Jason Long - Dribbble (Sketch Version) Using Hazel To Replace Application Icons — RocketINK Iterm Themes - Color Schemes and Themes for Iterm2 Patrick sagt auch Solarized den Krieg an. Er hat sich sattgesehen daran und braucht nun öfters Abwechslung. Mit iTerm kann man wunderbar Farbschemas Profilen zuweisen und diese auch der Shortcut aufrufen. Was sind unsere 5 liebsten CLI Tools? Andreas: ffmpeg gifenc.sh pdf2svg pandoc dayone_export Patrick: stow: Managing your dotfiles with GNU Stow wkhtmltopdf ImageMagick (siehe auch bei RocketINK) FileBot - The ultimate TV and Movie Renamer Remind – Roaring Penguin (Linux man page) voices: macOS CLI for changing the default TTS (text-to-speech) youtube-dl alias yt='youtube-dl -o "~/Desktop/%(uploader_id)s - %(title)s.%(ext)s"' alias tyt='torify youtube-dl -o "~/Desktop/%(uploader_id)s - %(title)s.%(ext)s"' alias yta='youtube-dl -f mp3/m4a/aac/wav/bestaudio -o "~/Desktop/%(uploader_id)s - %(title)s.%(ext)s"' alias tyta='torify youtube-dl -f bestaudio -o "~/Desktop/%(uploader_id)s - %(title)s.%(ext)s"' Dotfiles und Kram von anderen: commandlinefu.com BrettTerpstra.com: Shell tricks: the OS X open command herrbischoff/awesome-osx-command-line: Use your OS X terminal shell to do awesome things. sjl / dotfiles / source / — Bitbucket osxdaily.com: Basic Command Line Utilities, Tips, & Commands Lifehacker: Become a Command Line Ninja With These Time-Saving Shortcuts AWK one-liner collection Stackoverflow morgant/tools-osx: A small collection of command line tools for Mac OS X, incl.: clipcat, dict, eject, ql, swuser, trash & with. Package Manager Homebrew — The missing package manager for macOS Homebrew Cask Cakebrew Nix: The Purely Functional Package Manager Fink MacPorts Delight in Your Desktop Duo MacLibre – Open Source Software Distribution for Mac OS X Rudix Unsere Picks Patrick: Star Order Andreas: Fünf Hausmittel ersetzen eine Drogerie In Spenderlaune? Wir haben Flattr und PayPal am Start und würden uns freuen.

PodKit
PodKit #20: Don’t Even @ Me

PodKit

Play Episode Listen Later Apr 6, 2016 72:01


PodKit returns with Ryan, Brian and Brandon discussion Ryan's new work, Puppet and ZSH, Microsoft's surprise BASH at BUILD, iOS colors and more!

Biertaucher Podcast
Biertaucher Folge 229

Biertaucher Podcast

Play Episode Listen Later Nov 7, 2015 145:41


Horst JENS, Gregor PRIDUN, Denis K. und Stefan HASLINGER plaudern über freie Software und andere Nerd-Themen. Shownotes auf http://goo.gl/2sgZA8 oder http://biertaucher.at

software wien korsika stallman zsh nerd themen velomobile uberspace stefan haslinger horst jens
Drupalsnack
Drupalsnack 33: Säkerhet i Drupal och i allmänhet

Drupalsnack

Play Episode Listen Later Jun 12, 2014 66:11


Vi pratar om säkerhet i Drupal och i allmänhet. Adam saknas denna gång men Kristoffer och Fredrik djupdyker i säkerhet, zsh, Ansible m. m. Drupalsnack har nu sommaruppehåll till slutet av augusti eller så. Länkar till moduler, webbplatser och tjänster vi pratade om i detta avsnitt: Kod och Drupal Håll core och moduler uppdaterade. dev-moduler vara eller inte vara Se till så att alla patchar dokumenteras och helst pushas i issue kön Många moduler ger mer kod som kan ha buggar, större ”attackyta”. Modulen Hacked https://drupal.org/writing-secure-code Drupal filtrerar på ”output”. check_plain(), filter_xss(), t() Använd alltid FormAPI och inte egen rå SQL Använd placeholders i databasfrågor. Inloggade sessioner över SSL. Roller och test användare Låt alla användare ha egna konton så det går att se vem som gjort vad. Ha inte databaslösenord etc. i versionshanteringen Lösenordsskydda utvecklingssiter så att google inte indexerar de site:drupalcamp.se -site:spring2014.drupalcamp.se Kör sanitize (drush) för att inte sprida användares lösenord och e-postadresser i onödan. Server och oDrupal saker Hur sparas backup och säkerhetskopior Server/Apache/Drupal versioner php.ini, se till att ni inte kör med developer inställningar. MySQL bind-address = 127.0.0.1 Kontroll av DNS/Mail/3rd part tjänster Övervakning av maskin och tjänster Vilka har tillgång till servern? Kontrollera loggar Långa och unika lösenord Visitors Voice Visitors Voice Eftersnack ZSH, Z shell Zsh https://github.com/myfreeweb/zshuery https://github.com/frjo/dotfiles Ansible Launchpad

Lococast.net
Episode 2: Meet Me at the App Store

Lococast.net

Play Episode Listen Later Jul 7, 2010


Lococast.net Episode 2 - Meet Me at the App Store Intro Thanks for the feedback Shout Out - Leo Loving the ZSH, awesome Events PyOhio July 31st - Aug 1st Ohio Linuxfest Sept 10-12th App stores on desktop OS's Shot of Jaq discuss software center Canonical Joins the Open Invention Network Books Rick Pro Python Daemon Craig Your Brain at Work Feedback: feedback@lococast.net Extro Music for this Episode (available at Magnatune) The Dino Haak Collective: Life Bit Me Crimsonfaced: Video Jive Ass Sleepers: Naughty But Nice Big Bad Sun: The Spirit Music Inside: Stinky Dog

Linux Reality Podcast (MP3 Feed)
Episode 085 - Command Line Fun

Linux Reality Podcast (MP3 Feed)

Play Episode Listen Later Nov 21, 2007


In this episode: a new Linux podcast called Linux Basement; a discussion of various fun command line topics, including how to use a different interactive shell, such as Zsh (more information here and here), a look at the great mail user agent, Mutt, and combining Irssi with Bip for text-based IRC (great article here); a Listener Tip on creating desktop launchers.

Android story
H&S-4: Термінал на стероїдах: Zsh, Neovim та Open Source.

Android story

Play Episode Listen Later Jan 1, 1970


В гостях Денис Довгань, враховуючи тему, залишаю посилання на .config Дениса https://github.com/denysdovhan/dotfiles Telegram https://t.me/androidstory_chat 0:00:00 Вступ та обговорення рейтингів GitHub 0:01:11 Проект Spaceship: промт для терміналу 0:03:54 Проблеми з продуктивністю Spaceship та асинхронний рендеринг 0:06:15 Starship: альтернатива Spaceship на Rust 0:07:11 Переваги різних командних оболонок (Shell) та емуляторів терміналів (iTerm, WezTerm, Ghostty) 0:15:05 Mitchell Hashimoto, HashiCorp та їх інструменти (Vagrant, Terraform) 0:17:20 Чому варто використовувати кастомні емулятори терміналу: GPU, шрифти, лігатури 0:25:10 Віддалена розробка: Neovim через SSH та Docker contexts 0:28:40 Корисні конфігурації та інструменти для Zsh: аліаси, Zoxide, Fzf, гіт-аліаси 0:44:01 Дискусія про Open Source: визначення, ліцензії, VSC як Open Source 0:53:25 Профілі GitHub при наймі та код як відображення навичок Patreon - https://www.patreon.com/androidstory Згадали в випуску https://github.com/ajeetdsouza/zoxide @TheLinuxCast https://github.com/denysdovhan/smart-home https://github.com/denysdovhan/home-assistant-config