Unix shell
POPULARITY
Topics covered in this episode: Architecture Decision Records (ADRs) narwhals: extremely lightweight compatibility layer between dataframes Microsoft wants Three Mile Island to fuel its AI power needs zsh-in-docker Extras Joke Watch on YouTube About the show Sponsored by ScoutAPM: pythonbytes.fm/scout 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 Monday at 10am PT. Older video versions available there too. Finally, if you want an artisanal, hand-crafted digest of every week of the show notes in email form? Add your name and email to our friends of the show list, we'll never share it. Brian #1: Architecture Decision Records (ADRs) Suggested by Christian Gesell Documenting Architecture Decisions Mychael Nygard Original article from 2011 Why you should be using architecture decision records to document your project Red Hat Includes a quick overview and links to some templates Notes so far Writing this out helps me solidify my thinking about a problem. I'm doing this both before starting, and while implementing a first draft GitHub and GitLab render markdown so well that generating a docs site is unnecessary, just throwing these files in something like docs/adr is enough. The lightweight process is enough but not too much. I've already filled out None for lots of sections, like “options considered” I'm still playing with what level of decision should have an ADR. My template that I've been using so far Saved in 000-adr-template.md For easy copy/paste/modify for new records. File name is something like 001-some-change.md Michael #2: narwhals: extremely lightweight compatibility layer between dataframes Recently had Marco on Talk Python to discuss Primarily for library creators who want to support interacting with multiple data frame libraries (.e.g. Pandas & Polars) Just use a subset of the Polars API Brian #3: Microsoft wants Three Mile Island to fuel its AI power needs “Microsoft just signed a deal to revive the shuttered Three Mile Island nuclear power plant. If approved by regulators, the software maker would have exclusive rights to 100 percent of the output for its AI data center needs.” Also ran on CNN and other sources: Three Mile Island is reopening and selling its power to Microsoft Three Mile Island was the site of the worst nuclear disaster in the US, when one of two reactors experienced a partial meltdown, in 1979. It was still operating up until 2019, and now expected to re-open in 2028 Will be renamed “Crane Clean Energy Center” related The Department of Energy Wants You to Know Your Conservation Efforts Are Making a Difference “By switching all the lightbulbs in your house to LED, you saved enough energy for a self-driving car to make an unprotected lefthand turn across three lanes of traffic.” “We know you adopted energy-saving practices to help conserve our planet's resources and bring down our collective carbon footprint, but what you ultimately accomplished is just as important: helping AI do something menial and stupid.” Michael #4: zsh-in-docker Install Zsh, Oh My Zsh and plugins inside a Docker container with one line! Yes docker containers should be light, but also, think of how painful it can be when you run into trouble. With Oh My ZSH, you get a nice experience when you have to result to docker exec -it CONTAINER zsh Just enter a single command in your docker file: RUN sh -c "$(wget -O- https://github.com/deluan/zsh-in-docker/releases/download/v1.2.0/zsh-in-docker.sh)" -- -t robbyrussell Extras Michael: self-hosting mkennedy.codes Loren's journey to developer It's time to stop using Python 3.8 Sonoma → Sequoia → Sonoma (yikes!) Passkeys, maybe they will work out if we don't let them become lock-in (bitwarden's support) Joke: How to Monetize a Blog Don't forget to click on the bottom link: Credits / how this was made
This week we have Robbie Russell, the creator of Oh My ZSH, and CEO of Planet Argon. We talk about the history of Oh My ZSH, the history of Planet Argon, and the future of terminal environments. https://ohmyz.sh/ https://github.com/robbyrussell https://x.com/robbyrussell https://robbyonrails.com/ https://www.planetargon.com/ Episode sponsored By Clerk (https://clerk.com) Become a paid subscriber our patreon, spotify, or apple podcasts for the full episode. https://www.patreon.com/devtoolsfm https://podcasters.spotify.com/pod/show/devtoolsfm/subscribe https://podcasts.apple.com/us/podcast/devtools-fm/id1566647758 https://www.youtube.com/@devtoolsfm/membership
Robby has a chat with Staff Software Engineer at Lightstep from ServiceNow, Jacob Aronoff. Their conversation delves into the vital signs of a thriving open source software project. They unpack the characteristics of well-maintained open source endeavors, emphasizing the importance of a passionate community behind the project, rather than misleading indicators like GitHub stars. They discuss the nuances of evaluating a project's health through performance metrics, suggesting that a more holistic view that includes the scrutiny of open issues can provide better insights into the project's robustness and responsiveness to community needs. Furthermore, their discussion highlights a critical, yet often overlooked, aspect of open source software: the project's own dependencies. Jacob argues that understanding these dependencies is crucial before adopting an open source solution, as it could have far-reaching implications on the stability and security of one's own project. They also take a deep dive into the organizational dynamics of the OpenTelemetry community, examining its structured approach to scaling and sustaining the project over time. Their discussion then transitions into the philosophical debate of balancing between the extremes of premature abstraction and delivering a fully opinionated software project. Jacob shares his penchant for “building in the open”, advocating for transparency and community involvement in the development process. He provides valuable advice for both newcomers looking to contribute to open source projects and maintainers seeking to attract new talent. In a personal touch, he extends his gratitude to Robby for creating Oh My Zsh, sharing his own journey in developing a custom theme for it. Moreover, Jacob expresses his preference for pure functional languages, hinting at the broader discussion around programming paradigms and their influence on open source software development. Stay tuned for that and more!Book Recommendations:Killers of the Flower Moon By David Grann and The Hitchhiker's Guide to the Galaxy By Douglas AdamsHelpful Links:Jacob on LinkedInLightstep from ServiceNowJaronoff97 on GitHubJacob's WebsiteJacob on TwitterSubscribe to Maintainable on:Apple PodcastsOvercastSpotifyOr search "Maintainable" wherever you stream your podcasts.Keep up to date with the Maintainable Podcast by joining the newsletter.Thanks to Our Sponsor!Turn hours of debugging into just minutes! AppSignal is a performance monitoring and error tracking tool designed for Ruby, Elixir, Python, Node.js, Javascript, and soon, other frameworks. It offers six powerful features with one simple interface, providing developers with real-time insights into the performance and health of web applications. Keep your coding cool and error-free, one line at a time! Check them out!
In this live afterparty episode from Rails World 2023, Jason, Chris, and Andrew are joined by Andy Croll, Robby Russell, William Kennedy, and Jason Cheal. Today, they discuss various aspects of the Rails World conference, sharing experiences and loads of humor. With each guest, they have conversations about their conference experiences, Ruby confessions, and the vibrant Ruby community. Also, they explore the behind-the-scenes work of core contributors to Ruby on Rails and discuss the significance of awards and recognition in the Ruby world.[00:00:46] Andy talks about his favorite part of Rails World which is the joy of not having to travel across the Atlantic for a Ruby event and he can simply attend this one.[00:01:40] Chris won an award and he's trying to figure out how he's going to take the giant check home, and he jokes about having a wall of giant checks at home. [00:02:24] Andy suggests using Honeybadger and they thank Buzzsprout for their support and comment on the quality of the podcast hosting service. [00:02:49] Andrew mentions the great talks from Chris and Jason, and Chris talks about his experience presenting at the conference and the challenges of staying within the time limit. Jason tells us about his presentation gags and creating presentations with humor. [00:04:46] What was everyone's favorite part of the conference? Chris talks about enjoying talking to people, attending their talks, and Remote Ruby stickers. They all mention the venue was impressive, and how they enjoy Amsterdam, the food, and friendliness of the people. Also, next year it will take place in Toronto. [00:07:34] Jason shares an unconventional life hack involving airport parking. [00:09:52] Robby Russell arrives and describes the conference as inspirational and asks Jason what he learned from the Rails Core team. [00:11:27] Robby discusses the goal of the panel was to show that anyone can contribute to projects like Ruby on Rails without a computer science degree, and he talks about the large number of project contributors and audience interaction. Chris expresses appreciation for core contributors' work behind the scenes.[00:13:51] The panel discusses awards and Ruby Heroes. Robby talks about his contact with Rick Olson (technoweenie) and his contributions to Z shell and “Oh My ZSH!” and he talks about his band “The Mighty Missoula” and recording a new album.[00:19:24] William Kennedy is joining us now and they discuss his famous blog post on Single Page Applications (SPAs). They discuss the satisfaction of coding humor and how frustrating errors can be.[00:23:43] The conversation takes a turn towards sharing Ruby confessions, starting with William's early metaprogramming mistake. Chris recalls a Python experience related to metaprogramming and potential security issues. [00:25:11] William shares how he won the ticket to Rails World 2023, and he shares his appreciation for the banter and personal stories shared on Remote Ruby. [00:26:41] Vladimir Dementyev joins us and gives a signed copy of his book, Layered Design, to Chris. [00:29:18] Chris discusses his role as a luminary and his contributions to the Ruby community. [00:30:39] Julian Cheal, a Rails developer from Bath, joins us and shares his experiences attending Ruby conferences in Romania and Amsterdam. He confesses to writing bad code when using Sonic Pi and DRb to send MIDI data to instruments. Honeybadger Honeybadger is an application health monitoring tool built by developers for developers.BuzzSprout Podcast Hosting Made Easy.Disclaimer: This post contains affiliate links. If you make a purchase, I may receive a commission at no extra cost to you.
Robby Russell is founder and CEO of Planet Argon, one of the oldest Rails development agencies, now in it's 21st year. Robby shares how he got started in Rails and how he grew Planet Argon to the organization it is today. Some listeners might remember him as "Robby on Rails" from the early Rails era; Robby is also the creator of the popular dev tool, Oh My Zsh. In addition to these, Robby hosts the Maintainable Software Podcast, where he speaks with seasoned practitioners and shares valuable insights into navigating legacy code and technical debt. His passion isn't limited to tech, though. He's also the guitarist for The Mighty Missoula, an instrumental art rock band from Portland, Oregon. From coding to music, Robby truly encompasses a diverse spectrum of interests.Relevant LinksPlanet Argon's Ruby on Rails consulting servicesMaintainable Software PodcastRobby on Rails (old Rails blog)@robbyrussell@ruby.social@robbyrussell
Building With People For People: The Unfiltered Build Podcast
The tech landscape is exploding with AI tools to help you automate all sorts of workflows like code completion with Github Copilot or personal assistants like Chat GPT. But what about if you are a content creator with hours of recorded video content, what tools exist for you? “Content is King” so you have to be putting out diverse content continuously. What if you had a tool that automagically creates blogs and tutorials from already recorded video? Well you are in luck because we have just the tool for you…enter Contenda. Today we have the dynamic, inspiring, multi hat wearing founder and CEO of Contenda to tell us all about how it works and ways it can help you automate your content pipeline. Our guest, Lilly Chen, confounded the Colorado College Esports where her team won the first ever NCAA Division 3 championship and she built a retention product for twitch streamers at a hackathon that went viral and helped a Twitch streamer break a Guinness world record for most subscribers to a stream. She was a software engineer at Midgame building voice assistants for gaming which was acquired by Facebook, she has built machine learning infrastructure for Facebook Reality Labs, is a Member on the Board of Trustees at Colorado College and now runs an AI startup. On paper her career trajectory might seem straightforward but she has had her share of adversity. Off paper her story is one of struggle, self reflection, perseverance, triumph and inspirational to all. From dropping out of high school, to becoming a Buddhist monk, to a college graduate, to a startup founder, our guest is trailblazing the AI world so hit play to hear her amazing journey. Connect with Lilly: Email - lilly @contenda.co Twitter LinkedIn Contenda Show notes and helpful resources: Sign up for a Private Contenda Beta @ unfiltered.contenda.co Dota 2 Oh My Zsh bash tool Avatar: The Last Airbender Twitch subathon article related to Lilly's A/B twitch retention product Listicle fun - Transform many blogs into a new blog! Contenda released this feature on the day of this recording (April 28th) Autocode - turn ideas into software Autocode + Contenda video on how to integrate with Contenda Marktprompt + Contenda integration: Confbrew Optical Character Recognition Pipeline Open AI and Chat GPT Autocode template - Get all YouTube Video Ids from a playlist URL Building something cool or solving interesting problems? Want to be on this show? Send me an email at jointhepodcast@unfilteredbuild.com Podcast produced by Unfiltered Build - dream.design.develop.
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 ★
Robby has a chat with Marc Cornellà, the official maintainer and major contributor for the Oh My Zsh project. Marc will start off by sharing his wisdom on the characteristics of well-maintained proprietary software. He will also tell us whether the same characteristics apply when it comes to open-source software. Marc started contributing to open-source projects back in 2011 when he worked on a university project that generated schedules for new students. In 2015, he transitioned to Oh My Zsh, which has been the biggest project he's ever worked on. Oh My Zsh is a framework for Z Shell that allows engineers to install and use different themes that one can personalize according to the look and feel of their terminal. It has 200+ plugins and about 100 themes. It not only allows one to use plugins and themes from other projects, but also offers thousands of helpful functions, helpers, and so much more. The great thing about Oh My Zsh is that an engineer doesn't have to be an advanced hacker to use it. Marc will among many other things share strategies that can be used to help organize and prioritize a popular project that has a consistent 400 to 500 open pull requests from people across the planet, and some future ideas for Oh My Zsh. You won't wanna miss this one. Enjoy!Book Recommendations:Parable of the Sower by Octavia E. Butler - https://www.octaviabutler.com/parableseriesHelpful LinksMarc on Twitter - https://twitter.com/MarcCornellaMarc on GitHub - https://github.com/mcornellaOh My Zsh - https://ohmyz.sh/Oh My Zsh on GitHub - https://github.com/ohmyzsh/ohmyzshSubscribe to Maintainable on:Apple PodcastsOvercastSpotifyOr search "Maintainable" wherever you stream your podcasts.Join the discussion in the Maintainable Discord Community
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
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
Show Synopsis: In Season 05 Episode 03, we discuss . Working from home. What we are drinking: Old Nebercracker The Miyoo Mini Retro Handheld Jo's Switching from Windows to MacOS for work and is very concerned ZSH on Mac with Oh My ZSH and iTerm2 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
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
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
In Episode 263, Ben and Scott dive into their favorite tips and tricks for using Azure Cloud Shell and all the programs and functionality that come with it. Sponsors Intelligink - We focus on the Microsoft Cloud so you can focus on your business Show Notes Using the Azure Cloud Shell window Persist files in Azure Cloud Shell Features & tools for Azure Cloud Shell How to Use Cloud Shell in Visual Studio Code Microsoft Azure Cloud Shell Image How to Use Cloud Shell from the Microsoft Teams Admin Center Azure Cloud Shell now available in Microsoft 365 az find Azure Cloud Shell with Oh My Zsh and Oh My Posh About the sponsors Intelligink utilizes their skill and passion for the Microsoft cloud to empower their customers with the freedom to focus on their core business. They partner with them to implement and administer their cloud technology deployments and solutions. Visit Intelligink.com for more info.
Robby Russell is back on The Changelog after more than 10 years to catch us up on all things Oh My Zsh — a delightful, open source, community-driven framework for managing your Zshell configuration. It comes bundled with plugins, themes, and can be easily customized and contributed to, because hey, that's how open source works. In this episode Robby gives us a glimpse into the passion and the struggle of being an open source software maintainer.
Robby Russell is back on The Changelog after more than 10 years to catch us up on all things Oh My Zsh — a delightful, open source, community-driven framework for managing your Zshell configuration. It comes bundled with plugins, themes, and can be easily customized and contributed to, because hey, that's how open source works. In this episode Robby gives us a glimpse into the passion and the struggle of being an open source software maintainer.
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).
Episode 1 of the Console DevTools Podcast, a devtools discussion with David Mytton (Co-founder, Console) and Jean Yang (CEO, Akita Software).Tools discussed:Waypoint - Build, deploy, and release across platforms.Zellij - Terminal workspace manager (tabs + multiplexing).Find more interesting tools and beta releases for developers at https://console.devOther things mentioned:HCL - Hashicorp Configuration Language.Vagrant.Terraform.Kubernetes.Gitpod.GitHub Codespaces.tmux.vim.Oh My ZSH.Fish.VS Code.Let us know what you think on Twitter:https://twitter.com/jeanqasaurhttps://twitter.com/davidmyttonhttps://twitter.com/consoledotdevOr by email: hello@console.devWe are always on the lookout for interesting tools to feature in the newsletter, so please say hello if you're working on something new or have recently used a tool you think we'd like.We only include things that would be of interest to experienced developers and do not accept payment for product inclusion. Read our selection criteria.Recorded: 2021-06-29.
שלום וברוכים הבאים לפרק מספר 410 של רברס עם פלטפורמה - זהו פרק מספר 73 של באמפרס.אם בעבר יצא לכם לשמוע שוב את פרק 68 [לא זה . . . זה, לפחות אם האזנתם ולא קראתם], אז זו כנראה הייתה טעות, כי זה היה פרק 62 [72 . . . הסתבכנו עוד יותר]. בכל מקרה, הפעם לא טעינו, ככה אני מקווה [אז זהו, ש…].אנחנו מקליטים את באמפרס אחרי הרבה הרבה זמן שלא נפגשנו - באולפן נמצאים אלון, אני [רן] ודותן - אהלן חברים! מה נשמע?האולפן הוא כמובן וירטואלי - אנחנו עובדים מהבתים, ברובנו - והתאריך היום, למען ההיסטוריה, הוא ה-27 באפריל 2021, ואנחנו מתחילים לחזור לנורמל [אז זהו, ש…. לא משנה].באמפרס, למי שלא יצא לו להקשיב בשבע או שמונה השנים האחרונות, זו בעצם סדרה של קצרצרים, שבה אנחנו סוקרים חדשות טכנולוגיות מעניינות שיצא לנו לפגוש בחודש האחרון - אבל כיוון שהרבה זמן לא נפגשנו, אז זה יוצא, ככה, קצת יותר מחודש - זהו, סדרה של קצרצרים, חווים את דעתינו וממליצים על קריאה או ספריות או דברים מעניינים שמצאנו ברחבי האינטרנט[ים]. אז קדימה - בואו נתחיל.רן - אני דווקא אתחיל הפעם במשהו קצת שולי - בזמן האחרון החלטתי להקדיש את עצמי למדע[!]: יוצא לי הרבה פחות לקרוא בלוגים וכאלה, והחלטתי שאני רוצה להתרכז בלקחת קורסים, אז אני יכול לבוא עם המלצות על קורסים, ודברים שיצא לי ללמוד ומאוד אהבתי . . . בעבר גם המלצתי על ספרים [בבאמפרס 68 המקורי . . . מקרי? עוד נחזור לזה], ובזמן האחרון אני עוסק בתחום של Data Science, ורציתי להשלים הרבה דברים, שחלקם הם Basic וחלקם קצת יותר מתקדמים, והחלטתי לבדוק כל מיני קורסים Online, ולראות מה הם שווים והאם אני מתחבר לחווייה הזאת.עשיתי לא מעט קורסים ב-Coursera וב-edX וב-Udemy, ורציתי להמליץ על כמה.אז קודם כל - יש הרבה שאני לא ממליץ עליהם - והם לא ברשימה . . . לקחתי לא מעט קורסים, שבסופו של דבר אמרתי לעצמי “אוקיי, זה לא היה שווה את זה”אבל יש כמה שכן - אם זה מבחינת התוכן עצמו, כשתוכן כמובן זה משהו אינדיבידואלי, זאת אומרת שאם זה רלוונטי לכם תלכו על זה ואם לא אז לאאבל גם בעיקר מבחינת אופן ההגשה של הקורס: קורסים שהם פשוט מאוד מושקעים - חלקם צולמו במיוחד לפלטפורמה, זאת אומרת שלא “סתם” שמו מצלמה בכיתה ואחר כך שידרו את זה אלא צולמו ממש לפלטפורמה ואפשר לראות - משתמשים שם באמצעי המחשה שהם הרבה יותר נוחים ונגישים.וחלקם לא . . . לא צולמו במיוחד, אבל עדיין הם טובים.אז כמה קורסים שרציתי להמליץ עליהם . . .אז קודם כל - יש כמה קורסים של ה- Imperial College London, שחלקם הם מאוד Basics, כמו היזכרות באלגברה לינארית או היזכרות באינפי (באנגלית קוראים לזה Multivariate Calculus), ונושאים כמו סטטיסטיקה - Principal Component Analysis (PCA) . . . יכול להיות שאת חלק מהדברים יצא לכם ללמוד בתואר הראשון, אם עשיתםאני למדתי את חלקם, ובחלקם פשוט רציתי להיזכר [ד”ש לאביב צנזור ולעליזה מלק]והם מוגשים בצורה מאוד יפה - בעצם, כל הקורסים שראיתי עד היום מ-Imperial College London מוגשים בצורה מאוד מאוד יפה, גם מבחינת העריכה של התוכן וגם מבחינת הפרזנטציה, והייתי מאוד ממליץ עליהם.קורסים אחרים שלקחתי, והייתי רוצה להמליץ - קורס בסיסי בהסתברות וסטטיסטיקה מהרווארד, שנקרא Harvard STAT110xבקורס עצמו אין הרבה קטעים מצולמים - הוא ברובו קריאה - אבל לדעתי הוא מוגש בצורה מאוד יפההרבה מאוד דברים מוגשים בצורה… גם מתימטית טובה אבל גם סיפורית טובה, עם לא מעט אנימציות ואמצעי המחשה אחרים שאני מאוד אהבתי, ואני חושב שזה קורס מאוד מושקע.ועכשיו אני עושה קורס שגם הייתי רוצה מאוד להמליץ עליו, של מרצה בשם Professor Daphne Koller, שנקרא Probabilistic Graphical Models 1: Representationהקורס מכסה דברים כמו רשתות בייסיאניות ומודלים מרקוביים ודברים בסגנון הזה, ויש כמה דברים מעניינים על הקורס הזה -(1) הקורס כנראה לא צולם במיוחד ל-Coursera, אבל למעשה Daphne Koller, שכמו שאתם בטח מבינים מהשם שלה היא ישראלית לשעבר שהיום מלמדת בסטנפורד - אז זה קורס שבעצם נלקח מסטנפורד.אתם יכולים הרבה פעמים לבחור קורסים מאוניברסיטאות שביום-יום לא הייתה לכם גישה אליהן, וזה נחמד.חוץ מזה [2] גם קצת קראתי והבנתי שהיא ה-Co-Founder של Coursera, יחד עם Andrew Ng - פרט טריווייה שלא ידעתי ומעניין להגיד.היא בעצם הייתה באיזשהו שלב גם ה-CEO של Coursera, תוך כדי העבודה שלה בסטנפורד.[ויש שיחות סופר מעניינות של Lex Fridman עם שניהם - כאן Daphne Koller: Biomedicine and Machine Learning וכאן Andrew Ng: Deep Learning, Education, and Real-World AI]זהו, אז אלו ככה כמה קורסים שאספתי וחשבתי שאמליץ עליהם . . .(דותן) לכולם יש וידאו? או שרק לסטטיסטיקה אין וידאו, זה מה שאתה אומר?(רן) לכל אלה שרשמתי פה, כל החמישה, שכמובן יהיו ב-Show notes [כמובן . . .], יש בהם וידאובזה עם הסטטיסטיקה יש הרבה פחות וידאו, זאת אומרת - רובו בכתב.כל השאר הם בעיקר וידאו.אבל מה שכן - אחד מהדברים שעוזרים לי ללמוד זה שבסוף כל פרק יש תרגיל, ובהרבה מקרים גם מקבלים את הפידבק - זה תלוי אם אתם משלמים או לא משלמים על המנוי.אני בחרתי שלא לשלם, כי אני לא באמת צריך את ה-Certificate - זה סתם ככה לידע כללי:אם אתם הולכים לעשות קורס באחת מהפלטפורמות האלה, אפשר ללכת בשני מסלולים - מסלול “משולם” ומסלול “לא משולם”.אם אתם משלמים, אז אתם גם מקבלים את כל החבילה - שזה בדרך כלל אומר מבחנים וציוניםאבל אם אתם לא משלמים אז אתם עדיין מקבלים את כל התוכן - ומה שאתם לא מקבלים זה את אותו Certificate, משהו שאתם יכולים להציג ב-LinkedInבטח יצא לכם לראות, יש אנשים שמציגים את זה.אני בחרתי שלא כי אני לא צריך את זה, אני לומד את זה בעיקר בשביל העניין והסקרנות שליברוב המקרים גם התרגילים זמינים למי שלא משלם.בקיצור - בסוף כל פרק יש איזשהו תרגיל, כשחלק מהתרגילים הם בתכנות, זאת אומרת ב-Python, ב-R, ב-Octave . . . יצא לי לכתוב בכל מיני שפות כאלה בזמן האחרון.חלק מהתרגילים הם תיאורטיים לגמרי, זאת אומרת - מתימטיקה וכאלה -אבל זה נחמד ועוזר, ככה, לשים אותך בפוקוס ולהבין מה חסר לך, אם אתה צריך קצת לחזור על החומר.(דותן) תגיד - כמה זמן אתה משקיע בזה? אתה יכול להעריך כמה זה דורש, בשעות?[זה בקורס על effort estimations, לא היה ברשימה . . .](רן) אני בדרך כלל משקיע כמה שעות בשבוע, תלוי בשבוע - לפעמים אני לומד בלילה, לפעמים אני קם מוקדם בבוקר, לפעמים בסופ”ש כשיש זמן . . .זה נורא אישי, זאת אומרת - החל משעתיים בשבוע ועוד 10 שעות בשבוע, תלוי בשבועאבל אני חייב להגיד שיש פה המון סיפוק - עצם זה שזה מובנה, ואתה ככה עובר שלבים ויש מבחנים ואתה מצליח בהם וכל זה . . .זה כאילו קצת נחמד לחזור להיות סטודנט, ובעיקר לקבל את הפידבק של . . . “סיימת שלב!”זה מגניב להחזיק Spreadsheet ולסמן V על הדברים שעברת.זהו, אני יכול גם להגיד שהחווייה היא, מה שנקרא “Mixed” - לא כל הקורסים כל כך טובים, יצא לי לעשות קורסים של מרצים עם מבטא שקשה מאוד להביןזאת אומרת - לא כל האוניברסיטאות הן אמריקאיות או בריטיות, חלק מהאוניברסיטאות מגיעות ממקומות שונים באירופה או במזרח, אז לא תמיד אתה מצליח ממש להבין מה המרצה אומר.וגם מבחינה מבחינה מתודולוגית זה לא תמיד מועבר בצורה הכי מדהימה.פה הוספתי את אלו שכן אהבתי . . .(אלון) !Back to School . . .(דותן) אחד האתגרים זה כל “המבניות" של זה, כי נגיד שמישהו אומר לי “יש לך 6 שעות, וכשאתה מסיים להשקיע אותן אז סיימת רענון של אלגברה לינארית” אז אני מוכן למצוא את הזמן ולהשקיע אותן.אבל אם אני מתחיל איזשהו קורס, ואז עובר שעתיים וזה גרוע, אז אני מחפש את הקורס הבא, ואז אני מנסה עוד שעתיים, וזה גם גרוע . . .ואז בסוף זה די . . .(רן) נכון, אז היו . . . אני חושב שצריך פה חוויות טובות, אז רציתי להמליץ על כמה שהיו לי חוויות טובות איתם.אני כן . . . היו לא מעט קורסים שהתחלתי וזה לא שבסופו של דבר החלטתי שהחומר לא מעניין אותי, אלא שהחלטתי שפשוט המרצה לא מעביר את זה טוב או שהקורס לא מעודכן וכאלה, אז חיפשתי אלטרנטיבה.בחלק מהמקרים מצאתי אלטרנטיבה ובחלק מהמקרים לא, אבל יש מספיק ידע בעולם, ככה שלא חסר מה ללמוד, ולדעתי זה מאוד מספק.זה כיף, זאת אורמת, כשאתה מצליח ללמוד משהו בלי הלחץ הזה של המבחנים ואתה יודע - של סמסטר רגיל והכלאתה פשוט עושה את זה בשביל הכיף, ואני מאוד נהנה מזה.[1+](אלון) בדיוק חשבתי על זה שהם צריכים להפוך את המודל העסקי - מי שלא משלם אז שיהיו לו מבחנים וכל הלחץ, ומי שמשלם יכול לעשות את זה ב-Easy, בכיף[קוראים לזה “לקנות תואר”, זה מודל עסקי ותיק ומוכח . . . ](רן) כן, לגמריאז זהו - ותוך כדי גם התחלתי לפתח אינסטיקטים של איך לזהות מה זה “קורס טוב”, כדי שאם אני ארצה “ליפול מהקורס” [תרגום יפה של Drop . . .] מוקדם אז אני לא אבזבז יותר מדי זמן עליו.אז פיתחתי ככה כל מיני אינטואיציות, אבל זה בהחלט משהו ש . . . זאת אומרת - יש איזשהו ניקוד ופידבק על הקורסים, אבל אני חייב להגיד שזה לא תמיד כל כך עקבי, אני חושב שיש לא . . . יצא לי לבחור לא מעט קורסים עם ניקוד גבוה, שבסופו של דבר, לפחות לטעמי, התוצאה לא הייתה מדהימהאבל מצד שני - זה לא שנרשמת לאוניברסיטה ועכשיו אתה חייב לעשות את המבחן בסוף - מקסימום אתה נושר וזהו, ממשיך לדבר הבא.אז ככה שאין לי המון המון אייטמים כאלה פזורים, כמו שבדרך כלל יש לי, כי את רוב הזמן אני משקיע בדברים האלה - אבל כן יצא לי להיתקל במשהו אחר, בנושא אחר שדי, ככה, קצת שעשע אותו וקצת עשה גלים ויכול להיות שגם לכם יצא לקרוא על זה - סוג של “מיני מלחמה” [ביטוי מעניין במועד שחרור הפרק…] בין חברת Signal לבין חברת Cellebrite שהיא, דרך אגב, חברה ישראלית שמספקת תוכנה שבעיקר משמשת גופים ממשלתיים ובטחוניים, שבאמצעותה אפשר לקרוא נתונים מתוך הטלפון.אם, לצורך העניין, שוטר מקבל צו מבית משפט כדי לקרוא את הנתונים על הטלפון שלך [וכמובן שאך ורק במקרה זה] - אז הם יכולים להשתמש בתוכנה של Cellebrite כדי באמת לקרוא, בלי שיתוף הפעולה שלך.לצורך העניין - לפתוח את הנעילות או מה שצריך . . .באיזשהו שלב הם באו והכריזו שיש להם עכשיו גם תמיכה ב-Signal - הם בכל פעם מוסיפים תמיכה בעוד ועוד אפליקציות, ו-Signal, למי שלא מכיר, זו תוכנה, אפליקציה ל-Instant Messaging, כמו WhatsApp ו-Telegram ואחרים . . .(אלון) רק עם באגים . . . (רן) קודם כל, זו תוכנה יחסית צעירה - אבל הפוקוס שלהם הוא Privacy ו-Security, אוקיי?הם כנראה לא מדהימים בפיצ’רים, לא up to par עם WhatsApp או עם Telegram, אבל הם . . . לפחות ה-Claim-to-fame שלהם, זה Privacy ו-Security.אז כש-Cellebrite באו והכריזו שעכשיו יש להם גם תמיכה ב-Signal, כלומר - אם שוטר תפס את הטלפון שלך ויש לך הודעות ב-Signal שלא היית רוצה שהוא יראה, ועכשיו פתאום הוא כן יכול לראות, אז זה כמובן מדאיג את החברה.אז מה שעשה מנכ”ל החברה - למעשה, הוא פירט בבלוג-פוסט מאוד משעשע, שכולל גם איזשהו סרטון וידאו, קצת היתולי אני חייב להגיד - הרבה מאוד רגישויות או באגים, שקיימים ב-Cellebrite עצמה, בתוכנה של Cellebrite.התוכנה של Cellebrite מתוקנת על Windows, והוא בא וסקר את ה-Vulnerabilities, את הפגיעויות . . . ככה אומרים בעברית? ה-Vulnerabilities השונים של התוכנה, ובגדול - די קטל אותם . . .וכאילו בא ואומר - “חבר’ה, אם אתם מתעסקים ב-Security, בואו קודם כל תאבטחו את עצמכם”.אני לא יודע עד כמה הדברים שהוא אמר מדוייקים או לא, אבל אני חייב שהגישה הזאת . . . אותי לפחות זה קצת הצחיק, אבל אני חושב שזה . . . זה לא עניין מצחיק לכשלעצמו, אבל הבלוג-פוסט הזה נכתב בצורה די משעשעת לדעתי.בכל אופן, אחד הדברים המצחיקים הנוספים שהיו שם זה שהוא בא ואמר “במקרה נפלה ממשאית ערכה של Cellebrite” . . . הוא הראה תצלום של ערכה של Cellebrite והוא אמר ש“במקרה הלכתי ברחוב לתומי ונפלה ממשאית והרמתי” . . . אשכרה ככה, כאילו הוא לא מכיר את הביטוי הזה בעברית.וצילם את הערכה הזו של Cellebrite, ערכת חומרה, שבאמצעותה מתחברים לטלפונים מהסוגים השונים.זהו, אני חשבתי שכל הסיפור הזה הוא קצת משעשע - כמובן שאני מניח שלא Signal ולא Cellebrite באמת לוקחים את זה בקטע הומוריסטי - מבחינתם זה ביזנס אמיתי - אבל אני חייב להגיד שלי, כקורא מהצד, אני מאוד השתעשעתי לקרוא את כל הסיפור הזה.(אלון) מה שמצחיק זה הקטע הזה ש”נפל ממשאית” זה כאילו . . . . כמה הוא שילם למישהו שיפיל את זה מהמשאית, זה הקטע המעניין . . . איך עושים את זה, זה הקטע המעניין, כי לא רגיל שציוד ייפול ממשאית . . . (רן) אני שואל את עצמי האם הוא כתב בתמימות שבמקרה זה נפל ממשאית, או שגם פה יש איזושהי אירוניה . . . אני לא יודע, אבל בכל אופו, כן . . .אני לא יודע האם הביטוי הזה נכון גם באנגלית, “נפל ממשאית” [כן, זה ביטוי מתורגם לעברית], אבל זה אשכרה מה שהוא כתב.(אלון) זה משעשע . . . מה שכן, כדי לשים קצת דברים בפרופורציה, חוץ מזה שזה משעשע וזה, ויש להם חולשות בתוכנה - התוכנה שלהם, למיטב הבנתי, זה רק המכשיר . . . גם אם פרצת, אין נזק אמיתי, אז אין פה כל כך אפקט.(רן) לא, הוא כן מסביר . . . אתה מתכוון האם הוא פרץ ל-Cellebrite? לא - מה שהוא אומר זה שאם אתה יכול, לצורך העניין, אתה יכול לשים קובץ בתוך Signal, או בתוך אחת מהאפליקציות האחרות ש-Cellebrite תומכת בהן, והקובץ הזה למעשה יוכל לשנות את הדאטה ש-Cellebrite קוראתאתה תוכל, לצורך העניין, להסתיר ככה דברים, או אפילו לשנות דאטה ש-Cellebrite קוראת מטלפונים אחרים, ככה שכן יש פה איזשהו נזק.זאת אומרת שזה פוגע באמינות - לטענתו, שוב, אני לא יודע אם זה נכון או לא, אבל הוא טוען, לכאורה כפי שאומרים - הוא טוען שאם אתה יודע מה שאתה עושה, אז אתה יכול למעשה לנטרל את Cellebrite, או לגרום לה לדווח על דברים שהם לא נכונים, למחוק דאטה, לגרום לזה שהיא לא תראה דאטה וכו’.(אלון) כן, אבל להבנתי את צריך קודם כל לעשות את זה על Cellebrite, זאת אומרת שאתה לא יכול להיות מנותק . . . אתה לא יכול להגן על הטלפון שלך בלי המכשיר, להבנתי.(רן) אתה צריך לשתול קובץ על הטלפון שלך, ואז לתת לשוטר לקרוא את הטלפון שלך - ואז השתלטת לו על התוכנה . . . זה ה-Scenario שהוא מתאר.שזה לא . . בוא נגיד שזה אולי לא Attack surface מאוד רחב, זה לא שאתה יכול להתחבר מהאינטרנט ולהתחיל לסרוק והלפגיז את כולם.זה דורש גישה פיזית והכל.אבל - בכל אופן, אני חושב שזה לא כל כך נעים מבחינת PR ל-Cellebrite.אוקיי, נמשיך הלאה . . . אלון?(אלון) זהו? היית קצר היום, אבל לקחת את האייטם הכי מגניב . . .אבל בסדר.[עוד נחזור להערה הזו . . .]אלון - אז משהו שנתקלתי בו, קצר מאוד האמת - Back to basic - how tail call optimization worksקודם כל, Tail Call Optimization זה כשה-Complier הופך רקורסיות ללולאות For, מאחורי הקלעים - יכולים לעשות אופטימיזציה אם זה התנאי האחרון, מדעי המחשב 101 כזה . . .אבל יש פה ממש, למי שרוצה, את הפירוט אסמבלי (Assembly) - איך זה מתקמפל לזה.ממש קצר וממש Back to Basic - למי שאוהב את הדברים האלה אז זה חמוד ונחמד קצת להתרענן.(רן) זה ספציפית לשפה מסויימת או . . . ?(אלון) זה ספציפי ל . . .לא, נראה לי שפה זה ++C בדוגמא, אבל . . .באופן כללי זה אותו הקונספט בהכל, אז זה לא כזה עקרוני, נראה לי, אבל בטח יבוא מישהו ויגיד לי שזה לא בכל השפות ככה . . .בטח גם נכון . . . שפות עם Interpreter למשל, אני לא יודע אם הן יודעות לעשות את זה, או לפחות חלקן.נושא הבא - Go cheat-sheet . . . אז מה שנחמד זה שיש פה דף, עמוד, עם איזה-300 . . . - 261, למען האמת - דברים ש”איך עושים ב-Go”.איך עושים לולאת For? איך עושים Trim? איך בודקים אורך של String? לחשב דברים וכל מיני דברים . . . כמעט כל מה שאתה צריך לעשות בשפת תכנות, שהוא מעבר לדברים מתוחכמים.ממש - שתי שורות על איך עושים את הפונקציה, או בשורה אחת - ממש Stack overflow בעמוד אחד, כנראה ל-99% מהדברים שאנשים מחפשים.ממש נחמד - גם ,ככה, למי שרוצה לחזק את עצמו בשפה או לחזור לשפה אחרי הרבה זמן - פשוט לעבור על זה זה לדעתי לוקח כמה דקות . . .(דותן) אבל אני חושב שבכל שפה זה נחמד . . . כאילו, אני יכול להכניס שפה . . . אני תוהה אם הכיסוי של כל ה-Idioms הוא רחב כמו . . .(רן) כן - אז הURL הוא Programming-Idioms.org, ואז יש לך מתחת כזה [סרגל] לבחור שפות - כמו את Go שאלון הראה, אבל יש גם שפות אחרות.(דותן) יש כאן גם קטע של השוואה שהוא נחמד - אם אני כותב משהו, ואני רואה את כל השפות, ואז . . .(אלון) כן - אפשר להשוות, ולראות כמה זה נורא בשפה מסויימת . . . בקיצור - זה ממש חמוד, אם אתה “בא שנייה” לשפה או נכנס לאיזשהו קטע קוד בשפה אחרת, אתה יכול שנייה להסתכל.ויש פה את Ruby, אהובת ליבי, שמה שנחמד שם ב-Cheat-sheet זה שזה הכל בשורה אחת בערך, אבל. . . זהו, אני חושב שבכל השפות יש את כל הדוגמאות - אלו אותן דוגמאות בכל השפות, אז ממש נחמד.(דותן) הייתי מוסיף לזה קצת סטטיסטיקה - הייתי כותב, נגיד, “כמה חסכונית השפה”, לפי מה שאמרת, ואז . . .(רן) חסכונית במה?(דותן) בכתיבה . . . נגיד, כתבתי פה, סתם - Http, file, הגעתי ל-Load . . . נגיד שמישהו ירצה Http Get, וקורא קובץ . . . עכשיו, אם אני מדפדף בין השפות, זה הופך להיות נחמד, כי אני יכול להסתכל כמה זה רע . . .(רן) אבל פה אני חייב להעיר - זאת אומרת: שפה שהיא over-verbose אז נכון, יש פה טעם לפגםמצד שני - שפה שהיא קצרנית מדי יכולה לפגוע לפעמים בקריאות - ע”ע Perl או אחרים.המדד שאותי באמת יעניין, שהוא אמנם מדד סובייקטיבי, אבל אותי הוא מעניין - זה מדד הקריאות, ה-Readability, של השפה.שוב, זה משהו שהוא סובייקטיבי, אבל אני חושב שזה המדד הנכון, זאת אומרת - מספר ה-Characters, או מספר השורות . . . לדעתי זה קצת פחות חשוב מהיכולת שלך לתקשר את הכוונה שלך למפתח הבא.(דותן) כן, זה באמת מביא אותך לאיזור במפה, ואז אתה צריך להחליט עד כמה זה קריא.(אלון) תראה, יש על זה הרבה דברים, אתה יודע : קוד קצר, באופן כללי - אנשים זוכרים אותו והוא יותר מובן.אם תכתוב קוד בעשר שורות במקום בשורה אחת, אז יש ויכוח על עד כמה השורה הזאת מסובכת, אבל ככלל אצבע, קצר יותר קל לנו לפענח ולהבין בראש, ולא צריך להתחיל לזכור גם מה היה לפני שתי שורות ודברים כאלה.אז בגדול - קצר זה טוב [?]ואז הגיעו Perl, כמקרה קצה של “בסדר, בואו נוסיף תווים” . . . (רן) כן, תראה יש עוד דוגמאות - Perl זו דוגמא אחת ,אבל אתה יכול למצוא את זה ב-Python וב-Clojure ובעוד שפות אחרות.שפות נותנות לך לעשות כל מיני דברים מתחכמים - יש לזה לפעמים איזושהי אלגנטיות, אבל לפעמים זה גם יכול לפגוע בקריאות.אני חושב שזו איזושהי עקומה, שיש לה מקסימום באמצע - זאת אומרת שאם אתה שם על ציר X את מספר השורות ועל ציר Y את רמת הקריאות, אז המקסימום הוא לא בקצה הימיני ולא בקצה השמאלי - לא בהמון שורות ולא במעט שורות, אלא כנראה איפשהו באמצע.יכול להיות שקצת נוטה ימינה, אבל הוא בטח לא בקצה הימיני.ובסופו של דבר - כן, זאת אומרת, אני חושב שהאתגר המשמעותי ביותר בכל זה הוא איך למדוד את זה.אגב, אחת מהמטרות, כשמישהו תכנן את Go, לאנשים שתכננו את Go, הייתה לייצר שפה קריאה ולא בהכרח קצרה.היו כל מיני הצעות לשינויים בשפה, שהיו עושים . . . לצורך העניין For-loops יותר קצרים וקומפקטיים, שזה משהו שבכלל לא קשה לעשות, אבל מתוך בחירה מודעת באו ואמרו “אוקיי, אנחנו רוצים שתיהיה רק דרך אחת לעשות For Loop, אנחנו לא רוצים לייצר עוד דרך, אפילו שהדרך הזאת קצת ארוכה ולא קומפקטית, כי אנחנו חושבים שזה תורם יותר לקריאות של השפה”, ולכן הם נשארו איתה.יש כאלו שטוענים ש-Go היא קצת “וורבוזית” (verbose), ואני מסכים - אבל זה מתוך בחירה.(אלון) ברור שיש כל מיני דעות, אני חושב ש-Scala זה הקיצון השני של איך אפשר לעשות . . . לתת לשלושה מפתחים לכתוב לולאה ויהיו לך שלושים בערך, אז זה הקיצון השני.אבל כן, יש איזשהו מנעד.(רן) אוקי . . . יאללה, Next?(אלון) כן, אז Reverse Engineering, אבל הפעם התחום של ה-Covid [היה פעם כזה דבר] . . . מישהו כתב מאמר על Reverse Engineering the source code of Pfizer SARS-CoV-2 Vaccineבקיצור - מדובר כאן על 4,284 Characters, לכל הקידוד של ה-RNA, וזה מתחיל קצת להיכנס למה שעשו בכל קטע [מקטע], עם קצת נסיון לפענח מה הדברים עושים.לא יותר מדי ארוך, וזה ממש חמוד שהכל ניהיה בעצם תוכנה . . . כל דבר.(דותן) אני מה-זה-לא-מצליח להבין את זה . . . (רן) לא, תקשיבו - יש בלוג-פוסט מדהים בעברית, על אותו נושא בדיוק - בעצם, לקח את הפוסט הזה באנגלית, שהוא סופר-סופר-טכני וגם קצת על ביולוגיה, וכתב אותו בעברית.זה לא מה שמקושר פה, יש פה כל מיני תרגומים - זה לא התרגום הזה לעברית אלא בלוג-פוסט אחר, תיכף אני אחפש אותו, של רועי צזנה [מלך!], אם אני לא טועה.רועי בא ומסביר בדיוק מה הוא עשה פה, בצורה מאוד מובנת ויפה, אז אני ממלית לקרוא אותו - באמת, קריאה טובה.הבלוג-פוסט הזה פה שקישרת, אלון - הוא מעולה אבל הוא סופר-סופר טכני, ודורש גם לא מעט הבנה בביולוגיה.אבל אני מסכים איתך גמרי שזה לתכנת את גוף האדם, וזה קטע מגניב לאללה.(אלון) תראה, אני שמתי פה משהו טכני, כי באת לי עם קורסים אקדמאיים שעשית בהתחלה, ורציתי לראות אם אתה מדבר ויודע או סתם מדבר . . . (רן) קראתי, קראתי, כן . . . קריאה טובה.(אלון) זה קשוח, כן(רן) מתי המבחן? [רגע, שילמת?](אלון) הקיצר, המאמר הזה קשוח, אני מסכים איתך - אבל הוא מגניב, לא צריך להבין הכל בשביל להבין כמה שהוא מגניב, אבל אם יש אחד יותר פשוט להמונים אז זה יהיה . . .(רן) אני ארפרר (Reference) אליו, כן - אני אחפש ואפנה אליו[הנה - שפת התכנות של החיים: מה נכלל בחיסון הרנ"א שמיליון ישראלים כבר קיבלו, ואם כבר ז אולי גם זה, על הכותב - עושים היסטוריה מארחת: מדוע עתידנים כושלים בניבוי העתיד? עם ד"ר רועי צזנה](אלון) דבר הבא - יש איזה קטע כזה שלמי שכותב VS Code ב-Go יש בעיה לעשות evaluation ל-Expressions, ומסתבר שיש לזה תמיכהפשוט צריך לעשות Call לפני ה-Debug . . .חסכתי טיפ של אלופים -שמתי לינק ל-Stack Overflow, סתם . . . נתקלתי בזה והרבה לא הכירו, אז אמרתי “בוא, נשים”.מישהו כתב בלוג-פוסט חמוד - How I cut GTA Online loading times by 70%יש GTA Online, שרץ ב-Browser, ובקיצור - לקח לזה המון-המון דקות להיטען, והבחור הזה התחיל לנסות להבין מה הולך שם.יש לזה את ה-Source Code פתוחבקיצור, הכל התחיל ונגמר באיזה Parser, והוא מסביר פה איך הוא מצא הכל, אבל בסוף זה להחליף איזה json Parser באיזו ספריה אחרת - וחסך איזה 7 דקות, אם אני זוכר נכון . . . משהו כזה.6 דקות לדעתיבקיצור - חמוד לאללה כל מה שהוא עשה פה, וזה מטורף כמה זמן אפשר לחסוך עם Parser.(דותן) GTA Online זה אילו GTA Open Source כזה? או שהוא עשה . . .(אלון) זה רץ ב-Browser, והוא Open Source למיטב זכרוני . . . לא זוכר בעצם.(דותן) אז כאילו כשהוא החליף את הספריה, אז זה פשוט להחליף ספריה . . . (אלון) הם אחרי המאמר הזה לקחו את השינוי שלו ובאמת מימשו את זה גם . . . הם החליפו את זה, וזה חסך לכולם כמה דקות ארוכות של טעינה.לא איזה כמה שניות - אני מדבר פה על משבע לדקות לפחות משתי דקות . . . . משהו כזה.(דותן) אני אהבתי את כל הפירוק לגורמים - זה מאוד ויזואלי וגם הוא נותן הערות על גבי העורך, שנדע למצוא את הקטע הזה.(אלון) ולאייטם הבא - וזה האייטם האחרון שלי בהחלט, כי אחריו אי אפשר לעלות יותר גבוה: אני עושה פהDrop-Mic וזהו - זה הפרק האחרון, לא תראו אותי יותר, זה פרק אחרון - GitHub to VS Code:כל מה שצריך לעשות, זה מטורף - קחו Repoתוסיפו, בסוף הקוד של ה-GitHub, תוסיפו “1s” -שמתי פה לינק לאייטם של דותן - ותלחצו וזה פשוט פסיכי . . . פשוט עובדים על הקוד ב-VS Code וזה מאוד נוח לדפדף, לכתוב קוד, כל מה שאתם רוצים - זה VS Code online לכל Repo, אם Private או Public, של GitHub1. Go to any repo you are interested in on GitHub.2. Replace "github" with "github1s" (one + s) in the browser address bar.3. Enjoy browsing code like you would in VS Code.For exmaple: https://github1s.com/gofiber/fiberזהו, סיימתי, אין מפה יותר לאן לעלות . . .(דותן) תחברו קוד פרטי, תערכו . . . (אלון) לא נסיתי, לא יודע, כי צריך את האותנטיקציה (Authentication) של ה . . . (דותן) יש פה, כן(אלון) אז קוד פרטי זה . . . כל אחד והמלצתו.(דותן) לקח לי הרבה זמן לראות מי מאחורי זה בכלל . . . אתה יודע מי מאחורי זה? איזו יישות?זה Open source, של conwnet/github1s . . . (אלון) בקיצור - זה אחד הדברים הכי מגניבים שיש . . . (רן) אני לא רואה פה תמיכה ב-VI . . . איפה פותחים לו Issues?(דותן) אין פה . . . (אלון) כן, כי זה נורא נוח - יש את ה-Tree בצד וה-Syntax Highlighting וזה כותב ואפשר לעשות עם זה הכל.אפשר להוסיף לזה Extensions אפילו, כי זה ממש VS Code, זה VS Code online . . .(דותן) מה אתה אומר? גם Extensions? זה משוגע . . . עם Extensions זה משוגע(אלון) הם לקחו את כל ה-VS Code online . . . אפילו אפשר להריץ את זה ולדבג (Debug) את זה, תוך כדי . . .(דותן) אז נגיד Extensions הוא מתקין איפה? בשטח של Chrome הוא מתקין את ה-Extensions? לא ברור כי בסוף ה-Extension צריך איזשהו Disk Space כלשהו . . . (אלון) שמע, זה נראה לי Open source, אז אפשר לפתוח את זה עם . . . (רן) כן , התקנתי תמיכה ב-VI . . . סבבה, יש Extensions . . .(דותן) באמת?! וואו . . . (אלון) טוב, חברים - אני חושב שאפשר לסיים את העונה אחרי האייטם הזה [או לכל הפחות להעביר לאילת . . . ] - תודה רבה לכם, אנחנו נחזור בעונה הבאה עם דותן . . . (רן) וזה גם נשמר בין רילואדים (Reload) . . . אם אתה עושה Reload לדף זה נשמר.אני באמת לא יודע איפה הוא מתקין את זה, אבל זה מתקין.(אלון) יכול להיות שהוא רק מסמן שהוא מתקין לך? ואז הוא מביא לך כאילו גרסא עם זה? יוצרים כאילו ב-Cloud מלא גרסאות ואתה רק מקבל . . . לא יודע.בקיצור - זה ממש ממש ממש ממש מגניב, אם לא אמרתי את זה עדיין.(דותן) טוב . . . נשמע כמו מתכון טוב לכל דבר, הדבר הזה . . .(רן) כן . . . דרך אגב, אות’נטיקציה (Authentication) - יש לך בצד שמאל למטה איזשהו אייקון, שאתה יכול ללחוץ עליו, אז אתה יכול לעשות אות’נטיקציה באמת ל-GitHubאם אתה ממש רוצה להשתמש בזה כ-Editor, כ-Frontend ל-GitHub, וגם לשלוח Pull-requests וכו’, אז אתה יכול לעשות את זה.אתה צריך לעשות Log-in, ואז אתה יכול ממש להשתמש בזה.(אלון) כן, ואתה יכול, כאילו, להפוך את זה ל-One-stop-shop שלך להכל כאילו, זה מטורף . . . אני משתמש בזה כדי לראות קוד ב-GitHub, כל פעם שיש איזה Repo, יותר נוח לפתוח אותו ככה.עושה את החיים הרבה יותר טובים, כשאתה רוצה ל-Browse קוד, ולא להוריד אותו ולהתחיל לחפור(רן) בכל ה . . . נגיד Go-to definitions ו-Find וכל זה - עובד?(אלון) כן, הכל עובד - אתה יכול . . . Command B . . . פשוט . . . הקיצר - VS Code, בתוך ה-Browserוזה עובד מהר! זה די, כאילו . . . (דותן) אני עדיין בין “מטריד” לבין “מדהים” . . . .(אלון) למה מטריד? זה רק מדהים . . . למה מטריד?(דותן) ?How it works . . . יש כזה מסמך . . .(אלון) לא ברור, אבל זה עובד.בקיצור - חברים, זה הדבר הכי טוב שנתקלתם בו, באמת, מאז החיסון קורונה . . . . בבקשה.(דותן) ממש . . . להתחסן ולהתקין, אתה אומר? אתה ממליץ?(אלון) כן, זה עובד יותר טוב מה-5G, יש לזה קישוריות . . . (דותן) הסר והתקן . . . (אלון) זהו . . דותן! במעבר חד, נעבור אליך . . .(דותן) קשה להתעלות על זה . . . (אלון) אני אגיד לך - אפשר להחליט שמעכשיו זה פשוט פרק 73 וחצי . . . [כן, כי לא הסתבכנו מספיק עם המספור להפעם . . . ] - ונמשיך, כי אז כאילו תיהיה לך התחלה חלקה.(דותן) נכון, טוב . . . בנעימה עלובה זו אני אמשיך באייטמים הפחות מרגשים . . . .דותן - יש פה ספריה שכתובה ב-Rust ועושה UIקודם הראית (אלון) משהו שעושה UI ועושה הכל, אז אני לא יודע עד כמה זה משתווה . . .בכל אופן - למי שרוצה לשחק ב-UI וגם לקודד ב-Rust, מבלי להתחייב, יכול לעבוד עם ספרייה וה-Framework - זה נקרא icedהחלק הכייפי פה זה שזה מבוסס על ה-Elm Architecture של בניית UI - שזה אומר שאם עבדת עם Redux פעם, או דומיו - אז זה ירגיש לך מוכר.בעצם, ה-Elm זה סבא-רבא של של Redux, וזו גם - באופן שאולי נתון לויכוח - הדרך הנכונה לעשות הכל, כש-Redux הוא “פרשנות” של Elm.למי שרוצה לחוות UI בדרך אחרת, ארכיטקטורה של UI בדרך אחרת, וגם לשחק קצת עם שפה ולראות UI כתוצאה מהמשחקים - מוזמן.בהמשך ישיר לזה - יש ל-Rust כל מיני אתרי “?Are we ______ yet” . . . אז נגיד: לעולם ה-Gaming ב-Rust יש את ?Are We Gaming Yet, לעולם ה-UI יש את ?Are we GUI Yet, ל-Machine Learning אותו הדבר וכו’ . . . בעצם, זה מציג באופן ממש נחמד את “המצב הקהילתי” של השפה.אז הוספתי פה את ?Are we GUI Yet, למי שרוצה לנסות עוד כל מיני חבילות UI ולבנות אפליקציות.אני חושב שרוב, אם לא כל הספריות - רוב הספריות, לא כולן - יתנו לכם לבנות UI שאפשר להריץ אותו בכל מערכת הפעלה בצורה נחמדה.אייטם הבא - זה נקרא Starship[בוא - זה Starship . . .]למי שעובד בטרמינל, אז יש לו כל מיני “קישוטים” על ה-Command Line שלו בטרמינל, כמו האם אתה עובד על Git/Repo ויש לך דברים שלא דחפת, אז . . . אני, למשל, אוהב שמסומן לי כמה דברים, ואם יש משהו ב-Remote אז אני אוהב שמסומן שיש לי משהו ב-Remote.מה שהיינו עושים לרוב זה איזשהו Shell-Script, שמריץ איזשהו “Git-Whatever” וכמה שילובים של דברים, ואני חושב שהיינו “מחליפים ידיים” של הסקריפטים האלה . . . כל הזמן החלפת ידיים עם הסקריפטים האלה.מה שקורה זה שכשאתה פותח טרמינל, או כשאתה רוצה לעבוד הטרמינל, ואתה, נגיד, לוחץ Enter - אז הדבר הזה מריץ את עצמו שוב פעם - וזה איטי . . .אז אני תמיד הייתי במרדף אחרי ה”למצוא את המשהו הזה שעושה את זה מהר”.אז הייתה חבילה ב-Node שמישהו כתב, כבר לא זוכר איך זה נקראואז היה Port של זה ב-Rust, שעד היום עבדתי איתו.ועכשיו יש עוד איזושהי חבילה ב-Rust שנקראית Starship, שהיא ה-Holy Grail של זה . . . עברתי לזה וזה מדהים.סופר מהיר, כמעט קסם - וזה מאוד מודולרי, אפשר להוסיף לזה דברים כמו סטטוס של Git, גרסאות של דברים שאתם עובדים איתן, נגיד Python-ים למינהם, סביבות למינהן וכו’.(רן) אז אתה משתמש, נגיד, ב-Oh-My-Zsh, ואתה פשוט מחבר את Starship? או שאתה . . .(דותן) כן, לא חשוב איזה Shell - מה שנחמד פה זה שגם נותנים לכם סוג-של שורת אינטגרציה, אז . . .נגיד ב-Z Shell, אז בסך הכל “eval "$(starship init zsh)ב-Fish, למי שאוהבים [דייגים?] אז זה starship init fish | source . . . לי זה היה Plug & Play, ונקרא לזה “בול פגיעה”, כי בדרך כלל אני מחבר משהו כזה ואז דברים מוזרים קורים לילפעמים זה עובד - פותח טאב חדש - פתאום זה לא עובד . . .כנראה שזה האופי של לחבר Shell למלא Script-ים, משהו מודרני יותר - זה כמעט אף פעם לא עובד חלק ביחד.(אלון) זה ממש חמוד - אני רק לא מצליח להבין ממה שאמרת עד כמה זה איטי? לא יודע . . . אף פעם לא הרגיש לי שזה איטי . . . מה זה - 100ms? לא יודע . . . Windows ישן?(דותן) Windows?! אני לא קורא לזה Windows, אני קורא לזה Win98, לא יודע מה איתך . . (אלון) סבבה, הבנתי, אני במילניום . . . הבנתי . . . את האיטיות - אני לא הרגשתי אותה באופן שהפריע לי אף פעם, אולי אני מקליד יותר לאט . . .(רן) או חושב יותר . . . (אלון) . . . אבל זה מגניב, כי אפשר להוסיף.(דותן) לי זה ממש מפריע . . . כאילו - אני אוהב שהטרמינל מרגיש לך ריק, בלי כלום - מהיר, זריז ו . . לא יודע. אני רגיש לזה, זה מעצבן אותי.(רן) כל יומיים כשאתה פותח את ה Terminal Z Shell אז הוא רוצה שתעדכן אותו?(דותן) אני לוחץ על זה Cancel יותר מהר ממהירות האור . . .אבל כן - אני תמיד במרדף אחרי טרמינל שהוא מרגיש לך כזה הכי מהיר . . VIM, למשל, מרגיש לך הכי מהיר, אז עשיתי VIM ו-NeoVIM ובלה-בלה-בלה . . עד שבסוף עברתי ל-VS Code בכלל, וקיסטמתי (Custom) אותו להראות כמו VIM, והוא עובד לי הכי מהר שיש, יותר מהיר מה-VIM בטרמינל שלי - וזה בגלל שה Terminal Item עצמו הוא איטי, באופן לא ביזאריאם חושבים על זה, זה אפילו הגיוני - האייטם מתעסק בלצייר . . . הוא לוקח מסך, ומתעסק בלצייר מחדש Characters על המסך - יש לך חישובים כאלה ואופטימיזציות מה אני רוצה להחליף בתוך סט . . . מסך, כשאתה מרחיב אותו על 27 אינץ’ או Whatever, אז זה מלא Characters, אלפי Characters - ועכשיו הוא צריך לתמרן אותם, ובזה הוא עסוק.והדרך לתמרן אותם זו דרך די פרימיטיבית - פשוט תמרון טקסט כמו של טרמינל.אם אתה עובד ל - VS Code, זה בכלל UI, אז אתה מקבל UI שמתמרן את עצמו כמו ש-Browser עושה, ואז זה יכולות של מערכת הפעלה, מה שאתה רוצה . . . הכל הופך להיות יותר מהיר. זהו.(רן) אתה עדיין משתמש ב-iTerm2? בתור טרמינל?(דותן) כן, לגמרי - אני לא עובד עם . . .(אלון) לא יוצאת גרסא 3? אני עם iTerm2 כבר עשר שנים לדעתי . . .(דותן) אני חושב שזה iTerm2, אבל זה 3, בתכל’ס . . . אם אתב עושה ב-”About” . . .(אלון) באמת? . . .(דותן) זהו, וקצת שלא שמתי לב, אבל זה ממש Plug-in לאייטם הבא, יצא טוב . . .יש את VIM וכל העולם של זה . . .VIM, ה-Editor, אכזב את הקהילה באיזשהו שלב . . . מה זה אכזב? היה בו מלא קוד, וקוד מגעיל, וקוד רקוב, והוא לא היה אינטגרטיבי, ו-Plug-ins - כל אחד היה צריך לעשות שמיניות באוויר בשביל לעשות Plug-ins, והוא גם לא היה a-Synced, אז נגיד שהיה לי עכשיו Code Linting, אז לא היית יכול להריץ אותו הצורה Sync-ית ולהקליד ולקבל את ה-Decorators . . . “הצ’ופצ’יקים” האדומים ו-Whatever, תוך כדי העבודה שלך ... לא יכולת, היית מקבל Freeze, ואז הקוד שלך היה Highlighted, כי הוא לא היה Synced - וכל הקהילה זעמה [!] - והולידו את NeoVIMבעצם זה היה VIM, “שכיסחו לו את הצורה”, העיפו מלא קוד “מת”, בהתחלה - ואז התחילו להוסיף לזה מנגנונים מאוד מאוד מתוחכמים, של a-syncחיברו בפנים Lua בתור Scripting Engine, שזו בחירה הרבה יותר טובה ממה שהיה, היסטוריתו-NeoVIM פשוט פרח, ממש.ואז בא Bram, ה-Owner של VIM, ואמר “בסדר, אני אעשה את זה” - הוציא את VIM 8 ודי השווה . . . ואנשים, האמת, חזרו ל-VIM - אבל קהילת ה-NeoVIM המשיכה להתפתח לכל מיני כיוונים.אחד הכיוונים זה היכולת לקחת את VIM כ-Engine, להדביק עליו UI מכל מיני סוגים משוגעים, טיפה כמו שראינו על VS Code.אז יש פה פרויקט שנקרא neovide - כאילו Neo-V-IDE . . .זה מישהו שבנה UI, השתמש ב-NeoVIM, וה-UI בנוי ב-Rust - וה-UI משוגע . . .הוא דומה מאוד במבנה לטכניקות של Gaming Engine, ויש אנימציות משוגעותה-Curser זז לך באנימציות כמו של משחק, החלונות זזים באנימציה . . . ממש ממש מגניב.(רן) מה זה אומר שזה UI? יש מנוע של NeoVIM שרץ ברקע, והוא מחבר אליו, ורק מציג את ה-Frontend?(דותן) כן, מתחבר אליו ב-RPC, מתקשר איתו, אומר “שמע - זה הקובץ, הבנאדם הזיז את ה-Character, תגיד לי מה הייצוג החדש של הקובץ”.נגיד, אם לחצתי על האות T, כי אני מקליד, אז הוא שולח לו “הבנאדם לחץ על האות T”, ואז NeoVIM עונה “הבנתי, הטקסט החדש הוא . . . “ - ומחזיר לו את הטקסט, זה ה-RPC שקורה, בערך, בין השניים.נשמע איטי - אבל זה סופר מהיר, ועובד . . סוג של ארכיטקטורה . . .(רן) אבל אם אתה עושה את זה בתוך iTerm, אז עדיין יש את האיטיות של iTerm . . . או שזה רץ עצמאית, בחלון משלו?(דותן) לא, הוא רץ עצמאית - זו אפליקצית UI מבוססת Vulcan, שזה מנוע גרפי, נקרא לזה “דור חדש” כזה.וכן - כללי המשחק, איך שהבחור הזה פיתח את זה, הם ש”אני הולך להשתמש במנוע שהוא מאוד דומה למנוע של משחקים כדי לבנות IDE”, שזה מגניב . . .(רן) יש לך פה כל מיני אנימציות מצחיקות, למשל - אם אתה מזיז את ה-Curser אז הוא מציג לך כזה שובל, כמו שביל כזה, וכל מיני אנימציות אחרות.(דותן) קוראים לזה Railgun animation . . . (רן) Railgun זה התותח של הנאצים . . . (דותן) נאצים?!(רן) כן, זה תותח שפיתחו ובסוף לא השתמשו בו, שנע על פסי רכבת, בגלל זה קוראים לזה Rail-Gun . . . זה היה איזשהו תותח-קונספט כזה שפיתחו אבל אני לא יוודע האם הוא ירה אי פעם, כי זה היה איזשהו פרוייקט מאוד מאוד שאפתני.הוא היה אמור לירות ל[מרחק של] כמה עשרות או אולי אפילו כמה מאות קילומטרים פגזים . . .(דותן) וואלה . . . אני מכיר את הרפרנס מ-Doom, חשבתי . . . אבל בסדר, אני מבין איך זה יכול בסוף למצוא את עצמו בגרמניה הנאצית . . . מבחינת טכנולוגיה, מלא דברים הם המציאו . . .אז לאייטמים הבאים - אחד נקרא RustScan - וזה Port Scanner שכתוב ב-Rustו-Port Scanner זה כלי שרץ על כל ה-Port-ים שיש - יש מגבלה, למי שמכיר, של 65K פורטים - והוא רץ על כולם.אחד הדברים שתמיד אנשים חיפשו זה Port Scanner שיהיה הרבה יותר מהיר - זה כזה מרדף אינסופי, ופה פיתחו אחד כזה.זה ב-Rust והוא סופר-מהיר, ברמות שמסחררות ראשים, הוא הפך להיות מאוד פופולארי בגלל זה.אז למי שרוצה לסרוק Port-ים, או סתם להעיר את ה-CISO שלו משינה . . . מוזמן לקחת את זה ולהריץ על הרשת הארגונית, זה דבר אחד . . .(רן) לא שמעתם את זה פה . . . דותן מתבדח, כמובן [יש ייעוץ משפטי לתוכנית? טל”ח וכו’.](דותן) מי שרוצה לעשות . . .(אלון) זה תלוי בעד כמה שאתה אוהב את ה-CISO שלך, כאילו . . . (דותן) נכון, זה מאוד תלוי אז זהו . . . הדבר הבא נקרא bettercapאם אתם רוצים לקחת כמה שעות [בממ”ד?] מהשינה של אותו CISO שאתם אוהבים - אז פה יש כלי, את האמת ממש מגניב, ממש ממש מגניב אפילו, שנקרא bettercap, והוא אורז כל מיני סורקים למינהם בכלי אחדוהוא גם כולל UI, שהוא “עני” יחסיתאתם יכולים לסרוק . . . בוא נגיד מי קהל היעד: זה אנשים שסתם רוצים לשחק, אנשים שהם Red-Teamers, שזה גוף תקיפה בתוך הארגון שהמטרה שלו זה לשים כובע של תוקף והתיאוריה היא שאם אותו צוות יתקוף את הארגון כל הזמן, אז אם יבוא תוקף אמיתי אז הארגון יהיה מוגן . . . (אלון) או שארגון יחשוב שהוא יכול לכתוב ב-Slack “טוב, תפסיקו, זה עושה בעיות, תורידו את זה” ולחזור לישון . . . (דותן) בדיוק, כן . . .אני יכול להגיד שגם מצאתי את עצמי משתמש בכלים כאלה כדי לדבג (Debug) דברים - לפעמים הרשת במשרד הייתה לא יציבה, לא טובה, וזה גם כלים טובים כדי לנסות להבין מי נמצא שם בחוץ, מי מנסה להתחבר ומה הוא מנסה לעשות.[אבל להטריל את ה-CISO זה יותר מצחיק, בהחלט]אז זה כלי אחד, שאורז כל מיני תקנים של WiFi, כל מיני תקנים של Bluetooth, וגם TCP/IP רגילגם Reconnaissance, שזה להבין מה קורה בחוץ, וגם כדי לסמלץ (Simulate) התקפות מכל מיני סוגים.אין פה, דרך אגב, בכלים האלה, שוב דבר חדש תחת השמש - זה מיחזור של תקיפות קיימות וידע שכבר קיים, רק שפה ארזו את זה בצורה מאוד נוחה, שכיף להתקין ולהשתמש.אייטם הבא - זה נקרא hyperfine, וזה בעצם כלי ל - Command-line benchmarkingהגעתי אליו דרך Rust, שמשתמשים בו בעצמם כדי לבדוק שהכלי הוא סופר-מהיר.זה כלי גנרי - אם יש לכם איזשהו CLI Tool, אתם יכולים להשתמש בו כדי לעשות benchmarking ל-Command-line ולוודא שאתם תמיד “תחרותיים” מול ה-Performance ,מול איך שה-Command-line שלכם עובד.(אלון) או, חמוד! (רן) זאת אומרת - אתה בודק את הביצועים של ה-CLI שלך . . .נכון, זה CLI Performance?(דותן) כן, זה benchmarking שרמת האבסטרצקיה (Abstraction), ה-Contact שלך מול ה-Command-line הוא ה-Command-line . . . . זו לא ספריה שאתה עכשיו צריך להשתמש ל-Unit Testing שלך או כאלה(רן) כמו Time ,כמו פקודת Time ב-Linux . . . (דותן) האמת שזו אחלה דוגמא - אם היית רוצה להשתמש בפקודת Time בשביל לעשות דבר כזה, מה היית צריך לעשות?היית צריך כנראה להריץ Time כמה פעמים, להגיע לאיזשהו מספר הרצות שנותנות לך Significance סטטיסטי [מובהקות], לעבור על כל הנתונים, להריץ כמה כלים של סטטיסטיקה - ממוצע, Mean וכל מיני שטויות כאלה - ולהציג לך איזשהו כזה Progress Bar וכל מיני דברים כאלה.וזה בסופו של דבר הכלי . . .ואני מניח שמה שהיית רוצה זה שתוציא לי את זה ב-json, כי יש לי CI ואני רוצה להשוות בין Build ל-Build, לעשותכל מיני Diff-ים וכאלה, אני חושב שככה זה עושה את זה יותר מוחשי.(אלון) אפשר להריץ את הכלי על זה על עצמו? זה עובד? להריץ אותו על עצמו ולבדוק כמה מהיר הוא על עצמו? . . . (דותן) האמת שזו אחלה שאלה . . . אני לא יודע אם הם עושים את זה לעצמם . . . . אני חייב להניח שכן, לא בדקתי.(רן) אין סיבה שלא . . .אתה יכול להריץ אותו על עצמו - על עצמו - על עצמו - על עצמו . . . .על הכלי שלך.(דותן) נכון . . .(רן) נשמע כמו רעיון מאוד שימושי, שימוש מאוד טוב לזמן שלך . . . (דותן) פרודוקטיבי, כן . . . (רן) בוא, תנסה . . . (אלון) חבר’ה, אני בעד התחממות כדור הארץ - פשוט אם כולם יעשו, זה יתחמם יותר מהר.(דותן) אפשר גם לשלב - יש את הכלי של ה-Port Scanning:אם אתה מריץ אותו פעם אחת - זה מעיר CISOאם אתה מריץ אותו בתוך ה-hyperfine, שזה מריץ אותו כנראה אלפי פעמים - אז אולי אתה מעיר את כל הצוות . . . [ואת מערך הסייבר](רן) ואז, ברגע שהגעת ל-Port, אתה מתחבר ל-Bitcoin - וכורה . . . [בעסה שכבר אי אפשר לקנות ככה טסלה](דותן) בדיוק(אלון) הפודקאסט עבר נושא, נראה לי . . . [מה אמרנו על טל”ח וייעוץ משפטי?](דותן) אחרי הפרק הזה, כל מיני צוותי Security יתקשרו אלינו ויגידו שהם לא ישנים בלילה[סביר מאוד, רק שזה הוקלט לפני הסבב הנוכחי אז הסיבה כנראה תיהיה שונה מהצפוי . . .]אז האייטם הבא - זה נקרא terraformer וזה נמצא תחת Google Cloud Platform ב-GitHubכלי שעושה “Reverse Terraform”, כלומר - תכוון אותו ל-Infrastructure והוא ייצר קוד.(אלון) *עכשיו* אתה בא עם זה? איפה היית עד היום?!(דותן) זה לא אני, זה הצוות SRE ב-Waze, מסתבר . . . [Created by: Waze SRE](אלון) איזה מגניב!(דותן) ברכות וד”ש . . .(רן) לדעתי ל-AWS יש כזה כבר הרבה זמן . . . אני חושב ש . . . [יש את AWS CloudFormation](דותן) זהו, שגם ל-Terraform . . . לא בטוח של-Terraform…(רן) לדעתי אפילו Terraform הם אלו שייצרו את זה, אבל אני זוכר שראיתי Plug-in כזה ל-AWS גם . . . (דותן) אז פה יש רשימה מטורפת של Providers, אני לא יודע כמה - מן הסתם לא ניסיתי את כל ה-Providers, אז אני לא יודע מה רמת ה . . . אבל מבחינת Cloud-ים אז GCP ו-AWS ו-Azure ו-Alibaba ו-IBM ו-DigitalOcean ועוד ועוד ועוד . . .קצת משוגע אפילו, הייתי אומר, בקטע טוב(רן) מה אתם עושים אצלכם, אלון?אני מבין שאתם משתמשים ב-Terraform, אז איך אתם עושים את זה? מעל GCP, ומה אז?(אלון) יש לנו Terraform, לצערינו עדיין לא על הכלאבל כתבו, כאילו - מאפס, אתה יודע . . . מה זאת אומרת מה עשינו?(רן) כאילו יש לכם, תיאורטית - אתם רוצים להגיע למצב שבו יש לכם את כל סביבת ה-Production, שאפשר להריץ אותה בסקריפט אחד, ומעל זה לפרוש את כל ה-Services והכל - וזה מונע ע”י Terraform, זה הקונספט?(אלון) כן, זה הקונספט - ה-Terraform ב-Infrastructure והכלי CI לאפליקציות, CI/CD, איך שלא . . . (רן) אוקיי . . . (דותן) אני חייב להגיד שיש פה מלא השקעה, מלא . . . בכלי הזה.אם תטיילו ב-Providers, תפתחו Provider אחד לדוגמא - קודם כל להתחבר ל-API, וממש להבין את כל האובייקטים בפנים, ולתרגם אותם ל-Terraformבקיצור - מגניב(אלון) זה אחלה . . . אני אחזור אליך עם כמה זה שימושי - מעניין אם אני אתן לו פרויקט - סביבה - אם הוא יצליח לבנות אותה, כי לא הכל אצלנו ב-Terraform עדיין(דותן) זהו, אז נמשיך לאייטם הבא - יש פה שפה שנקראית GoPlusאני כבר אגיד שאני לא הייתי משתמש בה . . .אבל זו שפה שנכתבה, דומה ל-Go, עבור Data Science.למי שרוצה לשחק, להתנסות - זה תמיד כיף, אבל אני לא יודע אם הייתי משתמש בה באמת בפועללא יודע אם זה בכלל . . . אם יש לזה מטרה ואם זה מייצר משהו פרודוקטיבי.(רן) אני גם לא, דרך אגב . . .(אלון) יש משהו . .. איזה וריאנט על Go, שכבר היה . . . GoPlusPlus אני חושב? . . . [צודק, היה כבר אייטם של רן על goplus, שבצירוף מקרים סטייל ה-Hitchhikers’ Guide הוזכרה בבאמפרס 68 - המקורי, לא זה שהתבלבל בספירה עם הבאמפרס הקודם, שהוזכר בתחילת הפרק הזה . . . Glitch במטריקס?](דותן) כן, יש מלא, האמת . . . יש מלא - אחת הבעיות עם כל השפות ב-Go זה שהן איטיות, באופן מפתיע.יש כאלה שמהירות יותר, נגיד אם מימשו, לא זוכר איזו שפה זו, אבל הייתה שפה שמימשו ב-Go העניין הוא ששפת המטרה הייתה כל כך איטית, שגם אחרי שמימשו את השפה הזו on top of Go, היא הייתה יותר מהירה . . . לא זוכר בדיוק איזו שפה זו.בקיצור - תמיד זה איכזב אותי, זה היה דווקא יכול להיות נחמד, כי למשל - אם אתה לוקח שפה שהיא באופן טיפוסי באה עם חברים, נגיד Clojure שבאה עם כל ה-JVM, ומה שבא לך זה איזשהו Lisp ככה, Light-weight, כייפי, מגניב, שאתה יכול נגיד לארוז כשפת קונפיגורציה או כל מיני שימושים כאלה מעניינים אז אתה יודע שאם זה בנוי ב-Go, אז אתה תקבל Single Binary, ששוקל איזה 9Mb, וסיימת.יש מלא אימפלמנטציות (Implementations) Lisp-like Languages, אבל כולן סופר-איטיות וכאלה . . מגושמות, לצערי.(רן) כן . . . אני גם, דרך אגב, לא חושב שהייתי משתמש בהזאת אומרת - אני אוהב את Go, ואני עושה Data Science - אבל זה לא מתחבר לי, goplus נראית כמו אנקדוטה נחמדה.בסדר - אז אתה יכול להריץ סקריפטים, אבל זה לא באמת . . . לפחות בינתיים, זה לא באמת פרקטיאין לזה את ה-Ecosystem העשיר שיש ל-Python או ב-R או בשפות אחרות, כך שזה באמת יותר צעצוע, לא ממש משהו שימושי, לדעתי.(דותן) כן, זה משהו שטוב להמליץ למתחרים בתור שפה שממש טוב להתעסק איתה . . .(אלון) כן - “תבדוק, ספר לי איך היה” . . .יש את השפה ל-Data Science - ה-Linda? (רן) Julia . . . אחותה . . .(אלון) כן, אחותה, זהו . . . היא אמורה להיות מעניינת, אבל זה . . .(רן) כן, היא מעניינת - אבל יש לה Ecosystem מאוד קטן, אז השפה היא עם Performance גבוה ובאמת מיועדת לחישובים מדעיים, אבל מבחינת ה-Ecosystem זה לא מתקרב למה שיש ב-Ecosystems האחרים של R ושל Python או MATLAB, ככה שרק אם אתה צריך משהו נורא ספציפי שלא מצאתי בשום מקום אחר, ואתה צריך High Performance, אז אתה צריך להחליט האם אתה הולך על Julia או משהו אחר - ++C או Rust או אחריםככה שגם אז - Julia זו לא האופציה היחידה שיש לך שם.(אלון) אגב - גם Fortran . . . לא לשכוח. אישית, אצלנו יש קצת Fortran . . .(דותן) Fortnite . . . (אלון) כן, כמעט . . . (דותן) בינתיים שיניתי קצת את הסדר - יש כאן עוד שפה שנקראית Starlark - בטח רן מכיר . . .זאת שפת קונפיגורציה, שנמצאית מאחורי Bazel, ואפשר להשתמש בה באופן עצמאיאיך נראית השפה הזאת? טיפה Python-י, וטיפה, נקרא לזה פרוגרמבילי (Programmable) - אפשר להריץ שם כל מיני לופים (Loops) ושטויות כאלה, אבל ב-end-state של הדבר הזה זה אמור להיות Configuration Language.עוד פעם - לא יודע . . . אם מישהו צריך Configuration Language אז . . . האמת, יש מצבים כאלה, שאתה רוצה להיות מאוד Express-י, אתה בונה כלי ואתה רוצה להיות מאוד Express-י בקונפיגורציה שלו.נגיד - קונפיגורציה שמרגישה כמו Terraform מבחינת איך שזה מרגיש, או NGINXזה לא ממש Yaml וזה לא ממש תכנות - אז אני תמיד מחפש את אלה.(רן) אז כן, אני יודע את השפה - קודם כל, כשמסתכלים על זה זה נראה כמו Python, בגדולאבל הפרוייקט הזה הוא למעשה ממש ב-Go, אז כנראה Go-interpreter ל-Python, או למשהו שדומה ל-Python.עכשיו, זה לא Python Per se - זו כן שפת קונפיגורציה, אבל זה קצת מזכיר לי קונספט של שפה אחרת שנקראית Jsonnet, אם אני זוכר
Los detalles de un software de código abierto usado por miles de personas.https://www.danielprimo.io/podcast/187Habla con mi bot: https://laselectanewsletter.com/bot Síguenos en:- Mapa de aprendizaje: https://premium.danielprimo.io/mapa- Habla con mi bot: https://laselectanewsletter.com/bot- CocoStack: https://cocostack.com- Twitter: https://twitter.com/webreactiva- Telegram: https://t.me/webreactiva
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
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
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!
Robby is the co-founder and CEO of Planet Argon and the original creator of OH-MY-ZSH. In this part 2 of the two part interview with Robby, we focus on goals of a team and how to identify areas that need some maintainability focus.
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!
Making his first appearance since 2018, Robby Russell is back on the show. Robby is the creator of Oh My Z-Shell, host of the Maintainable Software Podcast, and CEO of Planet Argon, a software consultancy that improves existing Ruby on Rails applications and makes them more maintainable.
Making his first appearance since 2018, Robby Russell is back on the show. Robby is the creator of Oh My Z-Shell, host of the Maintainable Software Podcast, and CEO of Planet Argon, a software consultancy that improves existing Ruby on Rails applications and makes them more maintainable.
Making his first appearance since 2018, Robby Russell is back on the show. Robby is the creator of Oh My Z-Shell, host of the Maintainable Software Podcast, and CEO of Planet Argon, a software consultancy that improves existing Ruby on Rails applications and makes them more maintainable.
Making his first appearance since 2018, Robby Russell is back on the show. Robby is the creator of Oh My Z-Shell, host of the Maintainable Software Podcast, and CEO of Planet Argon, a software consultancy that improves existing Ruby on Rails applications and makes them more maintainable.
Last week, we have fetched the 5th issue from the newsletter where we share articles and resources we find valuable, you can have a look at this issue from here, also you can subscribe to the Newsletter from this link. 00:00:00 -> 00:10:00Ash's Twitter Thread about tooling & productivity.Duck typing.00:10:00 -> 00:20:00Paul Graham Viaweb & Lisp FAQs.Laravel Valet.Episode[5]: Docker Intro & Quick Tips00:20:00 -> 00:30:00Ahmed's plugin for sublime.00:30:00 -> 00:40:00Visual Studio Code Tips and Tricks.Getting Started with Vim: An Interactive Guide.00:40:00 -> 00:50:00ZSH.Oh My ZSH.Fish.Oh My Fish.01:00:00 -> 01:10:00Airbnb js style guide.Picks:Ash: Marketing for developers.Design for data-intensive applications.رواية زغازيغ Alfy: Abdelrahman Awad's World Vue Summit July 2020.Luay: Business Wars Podcast in Arabic.
One of the great things about attending in person coding conferences, such as PyCon, is the hallway track, where you can catch up with people you haven't seen for possibly a year, or maybe even the first time you've met in person. Nina is starting something like the hallway track, online, on twitch, and it's already going, so check out the first episode of Python Tea (https://www.twitch.tv/videos/635831555). Interesting coincidence is that this episode is kind of like a hallway track discussion between Nina and Brian. We've had Nina on the show a couple times before, but it's been a while. In 2018, we talked about Mentoring on episode 44 (https://testandcode.com/44). In 2019, we talked about giving Memorable Tech Talks in episode 71 (https://testandcode.com/71). In this episode, we catch up with Nina, find out what she's doing, and talk about a bunch of stuff, including: Live Coding Online Conferences Microsoft Python team Python Tea, an online hallway track Q&A with Python for VS Code team Python on hardware Adafruit Device Simulator Express CircuitPython Tricking out your command prompt Zsh and Oh My Zsh Emacs vs vi key bindings for shells Working from home Special Guest: Nina Zakharenko.
The Byte - A Byte-sized podcast about Containers, Cloud, and Tech
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
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)
Rambo explores running iOS apps on the Mac with Catalyst, John falls in love will full screen mode all over again, and Apple’s new security measures for Mac apps and batteries cause a bit of a stir in the community. Also, tips for minimizing distractions, our first app crushes, and how come SwiftUI won’t run on iOS 12 and below? Sponsored by Bitrise: a fast, stable and easy to use continuous integration service. Automatically build, test and distribute your app on every single commit that you make. Get started for free at bitrise.io/swift. Hosts: Gui on Twitter: @_inside John on Twitter: @johnsundell Links Oh My Zsh Jason Snell’s tweet about Catalina’s permission dialogs iFixit TextMate The Games Factory SubEthaEdit Swift 5.1 discussion on Swift by Sundell
Escucha el episodio completo en https://premium.danielprimo.io/podcast
267 • https://ohmyz.sh Contacta conmigo en Anchor: https://anchor.fm/gvisoc, en Twitter: https://twitter.com/gvisoc y en Telegram: https://t.me/gvisoc •
Small, Sharp Developer Tools With Brian Hogan TableXI offers training for developers and product teams! For more info, visit http://tablexi.com.workshops or email workshops@tablexi.com. Guest Brian P. Hogan (https://twitter.com/bphogan): Editorial Manager for DigitalOcean (https://digitalocean.com), Author of Small, Sharp, Software Tools: Harness the Combinatoric Power of Command-Line Tools and Utilities (https://pragprog.com/book/bhcldev/small-sharp-software-tools), teacher, student, and musician. More info at bphogan.com (https://bphogan.com/). Summary Developers use a variety of tools other than their programming language to get their jobs done. This week, we talk about those tools with Brian Hogan, an Editorial Manager for DigitalOcean. Brian's a prolific technical educator, writer, and editor and he's currently the author of the book Small, Sharp, Software Tools (https://pragprog.com/book/bhcldev/small-sharp-software-tools) from the Pragmatic Press. We talk about why command line tools in particular are important, what command line tools do well, and why some people including myself often find them opaque and confusing. We talk about our favorite tools and about customizing your workflow to fit your needs. Notes 02:33 - Benefits to being comfortable on the Command Line Interface (CLI) Small, Sharp, Software Tools (https://pragprog.com/book/bhcldev/small-sharp-software-tools) Brad Urani, The Ruby Developer's Command Line Toolkit (http://confreaks.tv/videos/rubyconf2018-the-ruby-developer-s-command-line-toolkit) Noel Rappin, The Developers Toolkit (http://confreaks.tv/videos/rubyconf2018-the-developer-s-toolkit-everything-we-use-but-ruby) Developer's Toolkit Cheat Sheet (https://medium.com/@noelrap/developers-toolkit-cheat-sheet-82d98d34fde7) Create React App (https://github.com/facebook/create-react-app) A command that shows commonly used commands (https://twitter.com/samphippen/status/1017738991012114433) 09:43 - Concepts that people struggle with and don’t internalize 11:13 - ‘awk’ and ‘sed’ defined - awk (https://en.wikipedia.org/wiki/AWK) - sed (https://en.wikipedia.org/wiki/Sed) - Elixir (https://elixir-lang.org) - F# (https://fsharp.org) 14:48 - The Ethos of Cargo Culting Information - Z Shell (https://en.wikipedia.org/wiki/Z_shell) - Oh My Zsh (https://ohmyz.sh) - Makefile (https://en.wikipedia.org/wiki/Makefile) - Deckset (https://www.deckset.com/) - Noel's Deckset Editor (https://github.com/noelrappin/deckset_editor) 20:02 - Reminding Yourself to Use Tools and Shortcuts - Z Shell History Substring Search (https://github.com/robbyrussell/oh-my-zsh/tree/master/plugins/history-substring-search) - TextMate (https://macromates.com) 27:31 - Benefit to Setup/Cost Ratio - Bash prompt generator (http://ezprompt.net) - RB command line (https://github.com/thisredone/rb) 30:28 - Differences in Tools on Different Machines and Operating Systems 32:52 - Tools You Should Know Better - Rubular (http://rubular.com/) - regex101 (https://regex101.com/) - regex-railroad-diagram (https://atom.io/packages/regex-railroad-diagram) - entr (http://eradman.com/entrproject/) 37:29 - Practice as Continuous Improvement - Exercises for Programmers (https://pragprog.com/book/bhwb/exercises-for-programmers) Special Guest: Brian Hogan.
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.
Panel: Dave Kimura Eric Berry Catherine Meyers Special Guests: Dean Nasseri In this episode of Ruby Rogues, the panelists talk to Dean Nasseri about Fir. Fir is the friendly interactive Ruby REPL that Dean created when he was inspired by the REPL Fish. Dean is a software engineer at VTS, which is a commercial real estate software platform that uses Ruby on Rails. They talk about why he created Fir, how he approached creating it, how long it took him to build, and much more! In particular, we dive pretty deep on: Dean intro What is Fir? Inspired by Fish REPL Interactive approach Does that work with multi-lines? Quick lookup What’s your favorite way to use Fir? Use REPLs for everything Pry Pry vs Fir How did you approach creating a REPL? Looked at Pry a lot hen creating Fir Ruby Under a Microscope by Pat Shaughnessy Do you have a lot of users of it? Wants to direct people to Fish Why would someone switch to Fish? Oh My ZSH Auto suggestions are killer How much time did this take you to build? What kind of terminal do you use? Hyper Mert And much, much more! Links: VTS Fir Ruby on Rails Fish Pry Ruby Under a Microscope by Pat Shaughnessy Oh My ZSH Hyper Mert nasseri.io @DeanNasseri Picks: Dave Doorknob Covers Marvel Strike Force Eric Mert Utah Hospitals Chuck Catherine Codeland Conf RubyHack Dean Red Blob Games
Panel: Dave Kimura Eric Berry Catherine Meyers Special Guests: Dean Nasseri In this episode of Ruby Rogues, the panelists talk to Dean Nasseri about Fir. Fir is the friendly interactive Ruby REPL that Dean created when he was inspired by the REPL Fish. Dean is a software engineer at VTS, which is a commercial real estate software platform that uses Ruby on Rails. They talk about why he created Fir, how he approached creating it, how long it took him to build, and much more! In particular, we dive pretty deep on: Dean intro What is Fir? Inspired by Fish REPL Interactive approach Does that work with multi-lines? Quick lookup What’s your favorite way to use Fir? Use REPLs for everything Pry Pry vs Fir How did you approach creating a REPL? Looked at Pry a lot hen creating Fir Ruby Under a Microscope by Pat Shaughnessy Do you have a lot of users of it? Wants to direct people to Fish Why would someone switch to Fish? Oh My ZSH Auto suggestions are killer How much time did this take you to build? What kind of terminal do you use? Hyper Mert And much, much more! Links: VTS Fir Ruby on Rails Fish Pry Ruby Under a Microscope by Pat Shaughnessy Oh My ZSH Hyper Mert nasseri.io @DeanNasseri Picks: Dave Doorknob Covers Marvel Strike Force Eric Mert Utah Hospitals Chuck Catherine Codeland Conf RubyHack Dean Red Blob Games
Panel: Dave Kimura Eric Berry Catherine Meyers Special Guests: Dean Nasseri In this episode of Ruby Rogues, the panelists talk to Dean Nasseri about Fir. Fir is the friendly interactive Ruby REPL that Dean created when he was inspired by the REPL Fish. Dean is a software engineer at VTS, which is a commercial real estate software platform that uses Ruby on Rails. They talk about why he created Fir, how he approached creating it, how long it took him to build, and much more! In particular, we dive pretty deep on: Dean intro What is Fir? Inspired by Fish REPL Interactive approach Does that work with multi-lines? Quick lookup What’s your favorite way to use Fir? Use REPLs for everything Pry Pry vs Fir How did you approach creating a REPL? Looked at Pry a lot hen creating Fir Ruby Under a Microscope by Pat Shaughnessy Do you have a lot of users of it? Wants to direct people to Fish Why would someone switch to Fish? Oh My ZSH Auto suggestions are killer How much time did this take you to build? What kind of terminal do you use? Hyper Mert And much, much more! Links: VTS Fir Ruby on Rails Fish Pry Ruby Under a Microscope by Pat Shaughnessy Oh My ZSH Hyper Mert nasseri.io @DeanNasseri Picks: Dave Doorknob Covers Marvel Strike Force Eric Mert Utah Hospitals Chuck Catherine Codeland Conf RubyHack Dean Red Blob Games
The creator of Oh My Zsh talks about his popular open source project, how a rescinded verbal job offer changed the course of his career and the legacy he wants to leave.
As Rails developers, we frequently use the command line. Here I will show how to switch to Z Shell using Oh My ZSH including how to make your own theme and plugins.
As Rails developers, we frequently use the command line. Here I will show how to switch to Z Shell using Oh My ZSH including how to make your own theme and plugins.
Adam and Kenneth caught up with Robby Russell to talk about his community-driven zsh project.
Adam and Kenneth caught up with Robby Russell to talk about his community-driven zsh project.