POPULARITY
How do you master Python? One bite at a time. On today's show we talk with Bob Belderbos, co-founder of PyBites, a community and learning platform for Python. Bob shares his philosophy for learning Python in small bites with practical exercises, hands-on learning, and daily coding for improvement. We discuss the importance of small wins,... Read more »
How do you master Python? One bite at a time. On today's show we talk with Bob Belderbos, co-founder of PyBites, a community and learning platform for Python. Bob shares his philosophy for learning Python in small bites with practical exercises, hands-on learning, and daily coding for improvement. We discuss the importance of small wins,... Read more »
In this episode of the Pybites Podcast, hosts Bob Belderbos dives into the essential components you need for a successful public Python project on GitHub. From organizing your code and creating a standout README.md to setting up automated tests and ensuring your project is contribution-friendly, he covers everything to help you build a robust and collaborative Python project. Whether you're a seasoned developer or just starting out, these tips will enhance your project's usability, maintainability, and community engagement. Join the discussion and learn how to set a solid foundation for your open-source projects ...Mentioned / related links:- Starting a Python project - poetry, pip-tools, git + GitHub, package or not?- Using pip-tools to manage Python dependencies- Increase Python code quality with pre-commit- How to handle environment variables in Python- How to test a Python project against multiple versions using tox- What are Makefiles and why + how to use them in your Python projects
How do you get yourself unstuck when facing a programming problem? How do you develop a positive developer mindset while learning Python? This week on the show, Bob Belderbos from Pybites is here to talk about learning Python and building healthy developer habits.
Bob Belderbos is a Software Developer, Python Coach, Mentor, Trainer, & Entrepreneur! In this Developer Career Coaching interview we talk about what developers should be learning when they are at the beginner, intermediate, and advanced levels. We also get into how to use AI to become a better programmer at all levels!! Chapters: 00:00 - Intro 02:00 - Who is Bob? 05:20 - Chris triggers Shala with C++ comments :-D 06:40 - Why did Bob get into coaching? 10:00 - What kind/type of students? 16:30 - Tutorial Paralysis & the real world is messy 20:30 - Beginner Advice 23:00 - What other skills does a beginner need to pick up? 27:00 - Intermediate Advice 35:00 - Keep a "Wins" file & overcoming Impostor Syndrome 37:00 - Advanced Advice 41:15 - How to best leverage AI 43:45 - Why soft skills are (still) so important 47:30 - Python book recommendations 50:30 - When do you know you've leveled up? Resources: https://pybites.circle.so/ https://codechalleng.es/ PDI Program: https://pybit.es/pybites-developer-init/ PDM Program: https://pybit.es/catalogue/the-pdm-program/ https://pybit.es/ https://form.jotform.com/233191638982062 https://github.com/PyBites-Open-Source https://www.beekeeperstudio.io/ What would you want to ask a Developer Career Coach? #developer #coaching #projects Intro music attribution: Artist - MaxKoMusic
Join our Livestream as we talk to Bob Belderbos - Co-Founder of PyBites, Software Developer | Python Coach | Mentor | Trainer & Entrepreneur! In this episode we talk about how do level up your career regardless if you are just getting into coding or have been in it for years! Bob also has fantastic advice for how each level can use AI to help them without hurting them in the long run! Intro music attribution: Artist - MaxKoMusic
This week Hugh Tipping interviews Bob Belderbos about how he manages to get so much content produced on a weekly basis.They discuss daily routines, the content planning process, tools, content quality assurance, how to avoid burnout and more general tips.Enjoy and hopefully it helps you put more content out there yourself and be more productive overall!Chapters:00:00 Intro music00:21 Intro of our host Hugh and topic01:30 Typical Pybites day03:30 Taking breaks04:10 Setting boundaries04:45 Content planning process05:53 Pybites Organic content tool + reviewing process07:00 GitHub issues, Kanban, and feedback as input09:34 Tools for creating content11:20 IronScribe for transcriptions and video clippings13:40 Ad segment: Pybites Productivity Course14:46 JIT (just in time) learning15:58 How to ensure the quality of the content17:05 Shift in code clinics / making mistakes live coding18:50 Dropping perfectionism20:00 More confidence == more fluency20:35 How to avoid burnout - take breaks (diffused mind)22:35 Learn to say no / shiny new object syndrome23:40 Read and embrace deep work24:00 Always be learning / stay curious, capture ideas25:10 Reduce friction / automations25:40 Talk with other people / get feedback26:30 Always keep coding27:50 Set realistic goals, don't be too hard on yourself29:15 Wrap up, ask us further questions ...30:32 Outro musicResources:- Deep Work by Cal Newport- Maker's Schedule, Manager's Schedule by Paul GrahamHosted by Hugh Tipping.Check out our Pybites Productivity Course here.
Topics covered in this episode: Make Each Line Count, Keeping Things Simple in Python Parsel A Comprehensive Guide to Python Logging with Structlog Stamina Extras Joke Watch on YouTube About the show Sponsored by Sentry: pythonbytes.fm/sentry Connect with the hosts Michael: @mkennedy@fosstodon.org Brian: @brianokken@fosstodon.org Show: @pythonbytes@fosstodon.org Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesdays at 11am PT. Older video versions available there too. Brian #1: Make Each Line Count, Keeping Things Simple in Python Bob Belderbos Some great tips to help you simplify your Python code to make it more understandable and maintainable. Michael #2: Parsel Parsel is a BSD-licensed Python library to extract data from HTML, JSON, and XML documents. Parsel lets you extract data from XML/HTML documents using XPath or CSS selectors. It supports: CSS and XPath expressions for HTML and XML documents JMESPath expressions for JSON documents Regular expressions # Want a RSS feed detail from a website standard HTML? selector = parsel.Selector(text=html_text) for link in selector.css('head > link'): rel = link.xpath('.//@rel').get() rel_type = link.xpath('.//@type').get() href = link.xpath('.//@href').get() Brian #3: A Comprehensive Guide to Python Logging with Structlog Stanley Ulili structlog is an awesome logging tool, and already has great documentation. However, this article is a great starting point, highlighting: how easy it is to get started using structlog configuring the default log level changing the formatting customizing the time stamp adding custom fields adding contextual data filtering async … Michael #4: Stamina via Matthias Bach, by Hynek Production-grade Retries Made Easy stamina is an opinionated wrapper around the great-but-unopinionated Tenacity package. Its goal is to be as ergonomic as possible, while doing the right thing by default, while minimizing potential for misuse. General additions on top of Tenacity Retry only on certain exceptions. Exponential backoff with jitter between retries. Limit the number of retries and total time. Automatic async support. Preserve type hints of the decorated callable. Count (Prometheus) and log (structlog) retries with basic metadata, if they're installed. Easy global deactivation for testing. Extras Brian: The “pytest fixtures” chapter of the pytest course is available now. Also, the PYTHONBYTES 20% discount still active for bundle through the end of August. Michael: Python 3.12.0 release candidate 1 released PyCon UK: The conference takes place from the 22nd to the 25th of September in Cardiff, Wales. The schedule is available at 2023.pyconuk.org/schedule/ and tickets are available at 2023.pyconuk.org/tickets/. PyData Eindhoven 2023, Nov 30 CFP open PyData Seattle Language Creators Charity Fundraiser: Adele Goldberg - Smalltalk, Guido Van Rossum, Anders Hejlsberg, C#, and James Gosling - Java. September 19, 2023: 12:00 - 4:00 PM, in person only. Joke: Librarian chatgpt-failures
Bob Belderbos built Pybites with Julian Sequeira. Pybites started with code challenges to help people learn Python, and has grown into a learning platform and community, and now includes coaching.We talk about:The history of PybitesCode challengesCoaching and now even growing the team of coachesSpainBooksLinks:PyBitesCode Challenges platform ★ Support this podcast on Patreon ★ and you can hear your name on the show. How cool is that? The Complete pytest CourseLevel up your testing skills and save time during coding and maintenance.Check out courses.pythontest.com
Watch on YouTube About the show Sponsored by us! Support our work through: Our courses at Talk Python Training Python People Podcast Patreon Supporters Connect with the hosts Michael: @mkennedy@fosstodon.org Brian: @brianokken@fosstodon.org Show: @pythonbytes@fosstodon.org Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesdays at 11am PT. Older video versions available there too. Michael #1: async-timeout An asyncio-compatible timeout context manager. The context manager is useful in cases when you want to apply timeout logic around block of code or in cases when asyncio.wait_for() is not suitable. Not finished yet timeout can be rescheduled by shift_by() or shift_to() methods Brian #2: PyPI Project URLs Cheatsheet Daniel Roy Greenfield There's some cool icons available under “Project Links” on pypi.org project pages. How do you get those? And which ones are available. Daniel has found out where to look, and built us a cheat sheet. Nice. Michael #3: httpx-sse Consume Server-Sent Event (SSE) messages with HTTPX. SSE are super lightweight, server → client only subscriptions. Like websockets but less overhead (especially for iot and mobile devices) httpx-sse provides the connect_sse and aconnect_sse helpers for connecting to an SSE endpoint. The resulting EventSource object exposes the .iter_sse() and .aiter_sse() methods to iterate over the server-sent events. Brian #4: Creating a context manager in Python Trey Hunner Context managers are those things you use in a with block. There's a bunch of cool built in ones. Building your own is a handy skill to have to clean up your code, and they're pretty easy, with Trey's tutorial. Shown is a great example of temporarily modifying an environmental variable. Then he gets into what you need to know about as, __enter__, and __exit__. Extras Brian: I think I'll nix the intro music to Python People. I didn't know what music to use, so I re-used the music from Test & Code. And I got some very honest feedback that it just doesn't fit and was better without it. So I'll rip it out soon. BTW, next episode to be released is with Bob Belderbos from PyBites. Should be later this week. Michael: Facebook and Instagram start blocking news in Canada Joke: day 1 and I hate it
Watch on YouTube About the show Sponsored by us! Support our work through: Our courses at Talk Python Training Test & Code Podcast Patreon Supporters Connect with the hosts Michael: @mkennedy@fosstodon.org Brian: @brianokken@fosstodon.org Show: @pythonbytes@fosstodon.org Join us on YouTube at pythonbytes.fm/live to be part of the audience. Usually Tuesdays at 11am PT. Older video versions available there too. Brian #1: rye - Python workflow tool Armin Ronacher Rust built tool, currently only for Linux and MacOS Project workflow commands, like init - new project add - add a dependency (including optional) remove - remove a dependency build - build wheel lock - update lock file virtualenv commands add —dev - install in environment sync - install/update dependencies in env based on pyprojec.toml run - run command within environment Install Python fetch - Fetches a Python interpreter for the local machine Register existing Python toolchain Helper utility to manage Python toolchains Kinda like pipx install - Installs a package as global tool uninstall - Uninstalls a global tool I didn't see that it added anything to my PATH, so this addition made it work: Bonus Everything lives under ~/.rye So it's easy to stop using, and doesn't muck up see also Simon Willison's A few notes on Rye Python Bytes #332, where we talked about huak Michael #2: PyPI Organizations The first step in our plan to build financial support and long-term sustainability of the Python Packaging Index (PyPI) Small fee for organizations rather than individual users Like Github orgs Brian #3: 5 tips to learn any new Python library faster Bob Belderbos The tiips RTFM - at lest the getting started docs Install it Explore the library - play. Bob recommends Jupyter notebook for this. Apply it to a real world problem - deliberate practice Build something with it (bonus) Teach it - blog, TIL, video tutorial, etc. Michael #4: Python gets down to (the) Metal Extras Brian: frogmouth - Markdown viewer / browser for your terminal, built with Textual. Michael: Was going to talk about Serenade, but seems to have gone silent. Packaging follow up discussion. Joke: It's the progress that counts
Talk Python To Me - Python conversations for passionate developers
Clean code is one of those aspects of your programming career that's easy to put on the back burner (sometimes by management more than yourself). But it's important in the short term for writing more debuggable and readable code. And important in the long run for avoiding having your program take on the dreaded "legacy code" moniker. We're fortunate to have Bob Belderbos back on the show. He's been thinking and writing about clean code and Python a lot lately and we'll dive into a bunch of tips you can use right away to make your code cleaner. Links from the show Bob on Mastodon: @bbelderbos@fosstodon.org PyBites: pybit.es Tips for clean code in Python article: pybit.es Refactoring book: pybitesbooks.com Final type: docs.python.org Sentinels pattern: python-patterns.guide Black formater: pypi.org Guarding clauses: medium.com ChatGPT: chat.openai.com Git Precommit: pre-commit.com #100DaysOfCode in Python course: training.talkpython.fm #100DaysOfWeb in Python course: training.talkpython.fm Watch this episode on YouTube: youtube.com Episode transcripts: talkpython.fm --- Stay in touch with us --- Subscribe to us on YouTube: youtube.com Follow Talk Python on Mastodon: talkpython Follow Michael on Mastodon: mkennedy Sponsors Taipy Brilliant 2023 Talk Python Training
Watch on YouTube About the show Sponsored by Microsoft for Startups Founders Hub. Connect with the hosts Michael: @mkennedy@fosstodon.org Brian: @brianokken@fosstodon.org Michael #1: Jupyter Server 2.0 is released! Jupyter Server provides the core web server that powers JupyterLab and Jupyter Notebook. New Identity API: As Jupyter continues to innovate its real-time collaboration experience, identity is an important component. New Authorization API: Enabling collaboration on a notebook shouldn't mean “allow everyone with access to my Jupyter Server to edit my notebooks”. What if I want to share my notebook with e.g. a subset of my teammates? New Event System API: jupyter_events—a package that provides a JSON-schema-based event-driven system to Jupyter Server and server extensions. Terminals Service is now a Server Extension: Jupyter Server now ships the “Terminals Service” as an extension (installed and enabled by default) rather than a core Jupyter Service. pytest-jupyter: A pytest plugin for Jupyter Brian #2: Converting to pyproject.toml Last week, episode 314, we talked about “Tools for rewriting Python code” and I mentioned a desire to convert setup.py/setup.cfg to pyproject.toml Several of you, including Christian Clauss and Brian Skinn, let me know about a few tools to help in that area. Thank you. ini2toml - Automatically translates .ini/.cfg files into TOML “… can also be used to convert any compatible .ini/.cfg file to TOML.” “ini2toml comes in two flavours: “lite” and “full”. The “lite” flavour will create a TOML document that does not contain any of the comments from the original .ini/.cfg file. On the other hand, the “full” flavour will make an extra effort to translate these comments into a TOML-equivalent (please notice sometimes this translation is not perfect, so it is always good to check the TOML document afterwards).” pyproject-fmt - Apply a consistent format to pyproject.toml files Having a consistent ordering and such is actually quite nice. I agreed with most changes when I tried it, except one change. The faulty change: it modified the name of my project. Not cool. pytest plugins are traditionally named pytest-something. the tool replaced the - with _. Wrong. So, be careful with adding this to your tool chain if you have intentional dashes in the name. Otherwise, and still, cool project. validate-pyproject - Automated checks on pyproject.toml powered by JSON Schema definitions It's a bit terse with errors, but still useful. $ validate-pyproject pyproject.toml Invalid file: pyproject.toml [ERROR] `project.authors[{data__authors_x}]` must be object $ validate-pyproject pyproject.toml Invalid file: pyproject.toml [ERROR] Invalid value (at line 3, column 12) I'd probably add tox Don't forget to build and test your project after making changes to pyproject.toml You'll catch things like missing dependencies that the other tools will miss. Michael #3: aws-lambda-powertools-python Via Mark Pender A suite of utilities for AWS Lambda Functions that makes distributed tracing, structured logging, custom metrics, idempotency, and many leading practices easier Looks kinda cool if you prefer to work almost entirely in python and avoid using any 3rd party tools like Terraform etc to manage the support functions of deploying, monitoring, debugging lambda functions - Tracing: Decorators and utilities to trace Lambda function handlers, and both synchronous and asynchronous functions Logging - Structured logging made easier, and decorator to enrich structured logging with key Lambda context details Metrics - Custom Metrics created asynchronously via CloudWatch Embedded Metric Format (EMF) Event handler: AppSync - AWS AppSync event handler for Lambda Direct Resolver and Amplify GraphQL Transformer function Event handler: API Gateway and ALB - Amazon API Gateway REST/HTTP API and ALB event handler for Lambda functions invoked using Proxy integration Bring your own middleware - Decorator factory to create your own middleware to run logic before, and after each Lambda invocation Parameters utility - Retrieve and cache parameter values from Parameter Store, Secrets Manager, or DynamoDB Batch processing - Handle partial failures for AWS SQS batch processing Typing - Static typing classes to speedup development in your IDE Validation - JSON Schema validator for inbound events and responses Event source data classes - Data classes describing the schema of common Lambda event triggers Parser - Data parsing and deep validation using Pydantic Idempotency - Convert your Lambda functions into idempotent operations which are safe to retry Feature Flags - A simple rule engine to evaluate when one or multiple features should be enabled depending on the input Streaming - Streams datasets larger than the available memory as streaming data. Brian #4: How to create a self updating GitHub Readme Bob Belderbos Bob's GitHub profile is nice Includes latest Pybites articles, latest Python tips, and even latest Fosstodon toots And he includes a link to an article on how he did this. A Python script that pulls together all of the content, build-readme.py and fills in a TEMPLATE.md markdown file. It gets called through a GitHub action workflow, update.yml and automatically commits changes, currently daily at 8:45 This happens every day, and it looks like there are only commits if Note: We covered Simon Willison's notes on self updating README on episode 192 in 2020 Extras Brian: GitHub can check your repos for leaked secrets. Julia Evans has released a new zine, The Pocket Guide to Debugging Python Easter Eggs Includes this fun one from 2009 from Barry Warsaw and Brett Cannon >>> from __future__ import barry_as_FLUFL >>> 1 2 True >>> 1 != 2 File "[HTML_REMOVED]", line 1 1 != 2 ^ SyntaxError: invalid syntax Crontab Guru Michael: Canary Email AI 3.11 delivers First chance to try “iPad as the sole travel device.” Here's a report. Follow up from 306 and 309 discussions. Maps be free New laptop design Joke: What are clouds made of?
Watch on YouTube About the show Sponsored by Microsoft for Startups Founders Hub. Special guest: Adam Hopkins Python Web Development with Sanic Brian #1: Tips for clean code in Python Bob Belderbos Generally some great tips to think about to keep code maintainable: Smaller units. Break things up into single responsibility. SRP: Single Responsibility Principle Move magic numbers into constants or parameters. Avoid global scope. (even though it's not really global) Use linters and auto-formatters. Use very narrow try/except blocks. Idiomatic Python. (Although I agree, this is a weird one as it's hard for new people to follow). Pay attention to data structure choice and learn to utilize standard structures and those in collections. Use the standard libary. Use mappings Flat is better than nested. But I'm gonna focus on the “smaller units” because it applies to modules as well. Try to keep modules organized such that you can keep relevant and related code concepts in your head. Michael #2: Mastodon is picking up speed @pythonbytes@fosstodon.org @mkennedy@fosstodon.org @brianokken@fosstodon.org @admhpkns@fosstodon.org I'm calling this a “Mastodon First” strategy rather than “Let's burn down Twitter and scatter” Just did a Talk Python about it Money in mouth: I became a patreon of Fosstodon and Mastodon's company Mastodon is open source, find it here Twitter's potential collapse could wipe out vast records of recent human history Python's API for Mastodon: toot Download a proper Twitter archive with this Python script Integrated the API into stream deck You can install it as a PWA: Adam #3: Correction to Sanic Worker Manager in v22.9 Episode #308 covered a recent article published on a new feature in Sanic v22.9 Blog article: Pushing work to the background of your Sanic app The segment focused on the celery-like job queue in Sanic Clarification: Goal of the feature is to bring a consistent development experience from dev thru prod Enables usage of multiprocessing-safe shared objects Simple pattern for managing multiple long-running processes Release notes for Sanic v22.9 Sanic documentation on the Worker Manager Brian #4: Some FastAPI news, and some great READMEs. FastAPI 0.87.0 has some interesting notes Upgraded Starlette, which includes TestClient based on HTTPX instead of Requests Since that might break some peoples use of TestClient, someone named Kludex built bump-testclient to help automatically convert test code to the new interface. That's so cool! Use Ruff for linting Add a Help Maintain FastAPI section to the docs that emphasizes that it's super helpful to: Help others with issues Review PRs Both of those sections have other expanded sections to describe what that means. The FastAPI commitment to great documentation is amazing and worth emulating. It also has a really good README. Interesting sponsors section. Cool way for a popular project to get maintenance funding. Testimonials. It's like a sales landing page, which really, a README kinda is. Other common good practices and cool items Images Some use of collapsable sections. Other notable READMEs pytest short example right away to show how simple it can be to use. textual and rich great use of images and short examples highlighting often missed features, such as pretty and inspect Utilizing expandable/collapsable sections for longer examples httpx like pytest, shows a small example quickly, redirects many other sections to more thorough docs. Michael #5: Closevember An annual event focused on sustainable open source development practices and maintainer well-being. Let's support open source maintainers by helping them close issues and pull requests throughout November. Over at closember.org Contributing to a project carries a number of responsibilities, in order to make it as easy as possible for a project to receive that contribution. For Maintainers: How to Get Ready (see site) If you only want assistance with closing some issues and PRs, then tag your repo with closember and you're all set. One thing that we often find helpful is to declutter our physical and digital environment: tidying our desks a bit, decluttering our computers' desktops, unsubscribing from some email lists ... that sort of thing. I did this this month actually. Spent 6 hours completely rebuilding my desk to have zero wires and look tidy and clean (hint: 3m of industrial velcro and things stuck upside down) and formatted my computer to a fresh OS after two years. For the Community: How to Participate (see site) If you've never used GitHub before, your first step is going to be signing up for a free account. Also, if you're super new to git: talkpython.fm/git If you've opened issues or PRs on projects in the past, you can start by taking a look at your own GitHub issues and your own PRs to see if any of them are outdated or have already been fixed—if so, close them! After that, start browsing projects: take a look at your favorite projects and see if they've been tagged with closember, or browse the list of closember projects. Check out the close boards (on the site) Adam #6: Super simple “Cache with async power” using Cashews Recently popped up in my GitHub Explore Cashews: Async cache framework with simple API to build fast and reliable applications Super simple out-of-the-box API supports in memory, Redis, DiskCache (local sqlite) one-line setup then implemented as a decorator Human-friendly TTL values: example “3h” Client-side caching - For example, if you are using Redis backend you do not need to make a network call on every cache request Strategies for common cache issues cache hits, early recalculation, soft TTL, resource locking, rate limiting!, circuit breaker Has its own interface for middleware Extras Michael: Take the PSF survey Adam: Voting season is upon us: Python Steering Council nominations are open Joke: JavaScript has been Banned from Twitter
Watch the live stream: Watch on YouTube About the show Sponsored by Microsoft for Startups Founders Hub. Special guest: Seth Larson Brian #1: Test your packages and wheels I've been building some wheels the last couple of weeks with various tools: flit, flit-core, and flit build hatch, hatchling, and hatch build setuptools, build_meta, and python -m build There are a few projects I've used to make sure my projects are in good shape wheel-inspect - you can inspect within Python code through inspect_wheel() function that converts to json. Or use on the command line with wheel2json check-wheel-contents - a linter for wheels tox - easily test the building, installation, and running of a package locally I actually start here, then utilize the other two tools Should have been obvious, but it wasn't to me Projects saved on git (such as gitHub) don't keep wheels in git. (this was obvious) When installing from git using pip install git+https://path/to/git/repo.git Your local pip will run the packaging backend to build the wheel before installing. Yet another way to test packaging. Michael #2: The Jupyter+git problem is now solved Jupyter notebooks don't work with git by default (they inherently have meaningless conflicts). With nbdev2, the Jupyter+git problem has been totally solved. Uses a set of hooks which provide clean git diffs, solve most git conflicts automatically, and ensure that any remaining conflicts can be resolved entirely within the standard Jupyter notebook environment. The techniques used to make the merge driver work are quite fascinating Seth #3: Help us test system trust stores in Python Package aiming to replace certifi called “truststore”, use system trust stores for HTTPS instead of a static list of certificates. Problem truststore is solving usually manifests in corporate networks: “unable to get local issuer certificate”. Experimental support added to pip to prove the implementation Users can try out the functionality and report issues. Brian #4: Making plots in your terminal with plotext Bob Belderbos Tutorial on using plotext - that's one t in the middle With the rise of CLI usage, plots are a nice addition. Bob's plot is great, but check out the options in the plotext docs lots-o-plots streaming data images subplots so fun Michael #5: jinja2-fragments Carson from HTMX (see podcast and course) wrote about template fragments. My jinja_partials project sorta fulfills this, but not really. I had a nice discussion with Sergi Pons Freixes who uses jinja_partials about this. He created Jinja2 fragments Seth #6: SLSA 3 Generic Builder for GitHub Actions GA Supply chain Levels for Software Artifacts, or SLSA (“salsa”) Tools to attest to and verify “provenance” of artifacts, ie “where it came from” Prove cryptographically that artifacts are built from a specific GitHub repository, commit, tag. Another future defense against stolen PyPI credentials/accounts. Generic builder means you can sign anything, like wheels/sdists Extras Brian: Bring your pytest books to PyBay, if you want them signed. I'm only bringing a small amount. I'll be presenting "Sharing is Caring - pytest fixture edition” at 3:05 “Experts Panel on Testing in Python” at 7:00 And be a zombie on my 8 am flight back unless I can change my reservation. That's this weekend, Sat Sept 10, in SF Michael: Heroku announces plans to eliminate free plans Banned paywalls PyPI phisher identified: Actor Phishing PyPI Users Identified and Actors behind PyPI supply chain attack have been active since late 2021 Major Python CVE: CVE-2020-10735: Prevent DoS by large int[HTML_REMOVED]str conversions Seth: Pyxel, retro game engine for Python, v1.8.0 added experimental web support with WASM Joke: Dev just after work
Watch the live stream: Watch on YouTube About the show Sponsored by us: Check out the courses over at Talk Python And Brian's book too! Special guest: Matt Kramer (@__matt_kramer__) Michael #1: Survey results Question 1: Question 2: In terms of too long, the “extras” section has started at these times in the last 4 episodes: 39m, 32m, 35m, and 33m ~= 34m on average Brian #2: Modern attrs API attrs overview now focus on using @define History of attrs article: import attrs, by Hynek predecessor was called characteristic. A discussion between Glyph and Hynek in 2015 about where to take the idea. attrs popularity takes off in 2016 after a post by Glyph: The One Python Library Everyone Needs In 2017 people started wanting something like attrs in std library. Thus PEP 557 and dataclasses. Hynek, Eric Smith, and Guido discuss it at PyCon US 2017. dataclasses, with a subset of attrs functionality, was introduced in Python 3.7. Types take off. attrs starts supporting type hints as well, even before Python 3.7 Post 3.7, some people start wondering if they still need attrs, since they have dataclasses. @define, field() and other API improvements came with attrs 20.1.0 in 2020. attrs 21.3.0 released in December, with what Hynek calls “Modern attrs”. OG attrs: import attr @attr.s class Point: x = attr.ib() y = attr.ib() modern attrs: from attr import define @define class Point: x: int y: int Many reasons to use attrs listed in Why not…, which is an excellent read. why not dataclasses? less powerful than attrs, intentionally attrs has validators, converters, equality customization, … attrs doesn't force type annotation if you don't like them slots on by default, dataclasses only support slots in Python 3.10 and are off by default attrs can and will move faster See also comparisons with pydantic, named tuples, tuples, dicts, hand-written classes Matt #3: Crafting Interpreters Wanting to learn more about how Python works “under the hood”, I first read Anthony Shaw's CPython internals book A fantastic, detailed overview of how CPython is implemented Since I don't have a formal CS background, I found myself wanting to learn a bit more about the fundamentals Parsing, Tokenization, Bytecode, data structures, etc. Crafting Interpreters is an incredible book by Bob Nystrom (on Dart team at Google) Although not Python, you walk through the implementation of a dynamic, interpreted language from scratch Implement same language (called lox) in two interpreters First a direct evaluation of Abstract Syntax Tree, written in Java Second is a bytecode interpreter, written from the ground up in C, including a compiler Every line of code is in the book, it is incredibly well-written and beautifully rendered I highly recommend to anyone wanting to learn more about language design & implementation Michael #4: Yamele - A schema and validator for YAML via Andrew Simon A basic schema: name: str() age: int(max=200) height: num() awesome: bool() And some YAML that validates: name: Bill age: 26 height: 6.2 awesome: True Take a look at the Examples section for more complex schema ideas. ⚠️ Ensure that your schema definitions come from internal or trusted sources. Yamale does not protect against intentionally malicious schemas. Brian #5: pympler Inspired by something Bob Belderbos wrote about sizes of objects, I think. “Pympler is a development tool to measure, monitor and analyze the memory behavior of Python objects in a running Python application. By pympling a Python application, detailed insight in the size and the lifetime of Python objects can be obtained. Undesirable or unexpected runtime behavior like memory bloat and other “pymples” can easily be identified.” 3 separate modules for profiling asizeof module provides basic size information for one or several Python objects muppy is used for on-line monitoring of a Python application Class Tracker provides off-line analysis of the lifetime of selected Python objects. asizeof is what I looked at recently In contrast to sys.getsizeof, asizeof sizes objects recursively. You can use one of the asizeof functions to get the size of these objects and all associated referents: >>> from pympler import asizeof >>> obj = [1, 2, (3, 4), 'text'] >>> asizeof.asizeof(obj) 176 >>> print(asizeof.asized(obj, detail=1).format()) [1, 2, (3, 4), 'text'] size=176 flat=48 (3, 4) size=64 flat=32 'text' size=32 flat=32 1 size=16 flat=16 2 size=16 flat=16 “Function flatsize returns the flat size of a Python object in bytes defined as the basic size plus the item size times the length of the given object.” Matt #6: hvPlot Interactive hvPlot is a high-level plotting API that is part of the PyData ecosystem, built on HoloViews My colleague Phillip Rudiger recently gave a talk at PyData Global on a new .interactive feature Here's an announcement in the HoloViz forum Allows integration of widgets directly into pandas analysis pipeline (method-chain), so you can add interactivity to your notebook for exploratory data analysis, or serve it as a Panel app Gist & video by Marc Skov Madsen Extras Michael: Typora app, recommended! Congrats Will Got a chance to solve a race condition with Tenacity New project management at GitHub Matt: Check out new Anaconda Nucleus Community forums! We're hiring, and remote-first. Check out anaconda.com/careers Pre-compiled packages now available for Pyston We have an upcoming webinar from Martin Durant: When Your Big Problem is I/O Bound Joke:
Kelly and Sean team up with Bob Belderbos and Julian Sequeira from @PyBites to answer questions about how our students learn Python using the PyBites platform with small code challenges. In this special crossover episode, we cover everything from how students learn to the way they learn Pytest reporting output to the mindset and chemistry of learning something new. Special Guests: Bob Belderbos and Julian Sequeira.
¿Cómo crecer en la industria de la tecnología? ¿Leyendo todos los tutoriales que encuentres? Eso puede ser demasiado a veces. Bob Belderbos (@bbelderbos) es co-creador de pybit.es y codechalleng.es un blog y una plataforma donde puedes aprender a ser mejor pythonista poco a poco. ¡La clave es consistencia! En este episodio Bob nos cuenta lo que es llevar tu pequeño proyecto de un blog que haces con tu amigo a un trabajo de tiempo completo. También nos cuenta de su nuevo libro PyBites Python Tips un libro con 100 tips de python para que practiques y sus planes para el futuro de él. Aprende más de @PyBites pybit.es pybit.es/community pybit.es/friends pybit.es/consejos codechalleng.es ag aka Silver Searcher Envíanos una nota de voz a través de Anchor o por WhatsApp +1 510 328-3828 Suscribeté a tacosdedatos, la publiqueishon en medium.com/tacosdedatos --- This episode is sponsored by · Anchor: The easiest way to make a podcast. https://anchor.fm/app · Anchor: The easiest way to make a podcast. https://anchor.fm/app --- Send in a voice message: https://anchor.fm/tacosdedatos/message Support this podcast: https://anchor.fm/tacosdedatos/support
Phil’s guest on today’s show is Julian Sequeira, a Python coach and co-founder of PyBites, a platform that he and friend Bob Belderbos created to help others to learn Python. Julian currently works for Amazon Web Services where his responsibilities include running the AWS Data Centre Operations Trainee Program, although he can usually be found in the depths of a Data Centre learning and sharing everything he knows about Enterprise Hardware. Julian joins Phil to discuss the importance of leaving your comfort zone and building your communication skills by involving yourself in as many things as possible without becoming overwhelmed. He also talks about why we should never be intimidated by job titles, and to remember that even those in positions of authority are people, too. Full show notes and links to related resources are available on the IT Career Energizer website - https://itcareerenergizer.com
Ep.15: Discovering the potential and applying the values for mutual growth is not just a key-value for sustainable community development, Into the core, Bob, shared his personal, professional exploits with all the hustles on building a learning community in technology. Revealing the early days of PyBites made this conversation more powerful for everyone wishing to build and grow a community in Technology and for everyone wishing to kickstart their career in programming. Visit: https://codechalleng.es/via/exploiting Sponsors: Talk Python Training Register for “Women In Tech” Live conference by Manning at exploit.chat/wit
Talk Python To Me - Python conversations for passionate developers
We recently covered 10 tips that every Flask developer should know. But we left out a pretty big group in the Python web space: Django developers! And this one is for you. I invited Bob Belderbos, who's been running his SaaS business on Python and Django for several years now, to share his tips and tricks. The 10 tips Django AdminORM magicModelsDebugging/Performance ToolbarExtending the User modelClass based views (CBVs)manage.pyWrite your own middlewareConfig variable management with python-decouple and dj-database-urlBuilt-in template tags and filters Links from the show Bob on Twitter: @bbelderbos Code Challenges Platform: codechalleng.es PyBites: pybit.es Django admin: docs.djangoproject.com Django admin cookbook: books.agiliq.com Use some Django ORM magic to get the most common first names: twitter.com/pybites Django custom manager: riptutorial.com Debug toolbar: django-debug-toolbar.readthedocs.io select_related: docs.djangoproject.com Extending the user model / working with signals / @receiver: simpleisbetterthancomplex.com Class-based views: docs.djangoproject.com Comparing class and function-based views: github.com/talkpython/100daysofweb Example of class-based views: github.com/talkpython/100daysofweb Django command template: gist.github.com Django middleware example: gist.github.com Config settings management: python-decouple: pypi.org dj-database-url: pypi.org Useful template tags and filters: docs.djangoproject.com for-empty: gist.github.com is_new filter example: gist.github.com Asynchronous Tasks with Django and Celery: testdriven.io Celery debugging - CELERY_ALWAYS_EAGER: twitter.com/pybites secure.py: github.com/TypeError/secure.py django-tinymce: github.com/aljosa Extra tools Michael mentioned BeeKeeper Studio: beekeeperstudio.io SimpleMDE: simplemde.com Human time to Python parse string site (the one I forgot): pystrftime.com Sponsors Linode Talk Python Training
Phil’s guest on this episode of the IT Career Energizer podcast is Bob Belderbos. He is a software developer at Oracle, co-author of the 100 Days of Code in Python course and co-founder of PyBites, a community for those wanting to improve their Python skills. To date, Pybites has hosted 50 code challenges, published more than 100 articles and built a Python exercise platform. In this episode, Phil and Bob Belderbos discuss owning your career and how to choose the right skills to acquire. They also talk about how to turn a mistake into a positive situation. Bob also covers how the CoVid crisis, AI and automation are going to change the industry. He and Phil talk about why you need to push yourself and learn how to market yourself effectively and share what you are doing. KEY TAKEAWAYS: (2.30) TOP CAREER TIP You have to own your career. It is a mistake to rely on your manager or superior to be in charge of your development. Choose the skills you learn strategically. It is not enough to just focus on things that you feel passionate about. (3.35) WORST CAREER MOMENT In his first role, Bob made an error that caused invoicing issues. It was a serious mistake. Fortunately, he was able to quickly solve the issue. Taking ownership of his mistake and quickly finding a solution enabled Bob to turn a bad situation into a positive one. In the podcast, he explains how that can be done. (5.46) CAREER HIGHLIGHT Bob´s career highlight has been developing his blog, which led to him and his business partner, launching courses, developing a coding platform, and building a huge community. It has opened a lot of doors for him. In the podcast, Bob explains how he gained traction and shared everything with the world. (7.54) THE FUTURE OF CAREERS IN I.T The CoVid situation has demonstrated that working from home is viable. So, there is likely to be much more of that in the future. Bob also talks about automation and how that is likely to change the industry. As well as the role AI is going to play. (9.25) THE REVEAL What first attracted you to a career in I.T.? – When Bob saw how things could be automated his interest in programming was sparked. What’s the best career advice you received? – Success leaves a clue. At this point in the podcast, Bob explains what that means and how it helped him. What’s the worst career advice you received? – When you find a job you are comfortable in, stay put. What would you do if you started your career now? – Bob would study marketing as well as coding. If you cannot market your skills, you will not get the most out of your work. What are your current career objectives? – Becoming an even better developer and doing more Python coaching. What’s your number one non-technical skill? – Being a good communicator especially when working with people in virtual spaces. How do you keep your own career energized? – Bob makes sure that he sets career goals that stretch him. Doing that pushes him to learn and keeps him interested. What do you do away from technology? – Bob enjoys reading, in particular, mindset, business, and marketing books. He also loves spending time with his family. (20.19) FINAL CAREER TIP The best way to grow is to write out your goals and plan out what you need to do to achieve them. This keeps you focused. But it is important to look to the long-term rather than only having short-term goals. In the podcast, Bob explains how to be consistent so that you can make big changes. BEST MOMENTS (2.33) – Bob - “Own your career and choose the skills you learn strategically.” (3.53) – Bob - “If you make a mistake, don´t become a victim. Instead, step up and solve the issue quickly.” (11.33) – Bob - “When you want to achieve something, look at the people that have done it before and model what they did.” (12.34) – Bob - “Use mentors, pay somebody to show you how to save a ton of time and money by avoiding common mistakes.” (13.39) – Bob - “To grow, you need to step outside of your comfort zone. It´s scary but essential.” (17.55) – Bob - “Learn to network. Plant lots of seeds, later many of them will result in new opportunities for you.” ABOUT THE HOST – PHIL BURGESS Phil Burgess is an independent IT consultant who has spent the last 20 years helping organizations to design, develop and implement software solutions. Phil has always had an interest in helping others to develop and advance their careers. And in 2017 Phil started the I.T. Career Energizer podcast to try to help as many people as possible to learn from the career advice and experiences of those that have been, and still are, on that same career journey. CONTACT THE HOST – PHIL BURGESS Phil can be contacted through the following Social Media platforms: Twitter: https://twitter.com/philtechcareer LinkedIn: https://uk.linkedin.com/in/philburgess Facebook: https://facebook.com/philtechcareer Instagram: https://instagram.com/philtechcareer Website: https://itcareerenergizer.com/contact Phil is also reachable by email at phil@itcareerenergizer.com and via the podcast’s website, https://itcareerenergizer.com Join the I.T. Career Energizer Community on Facebook - https://www.facebook.com/groups/ITCareerEnergizer ABOUT THE GUEST – BOB BELDERBOS Bob Belderbos is a software developer at Oracle, co-author of the 100 Days of Code in Python course and co-founder of PyBites, a community for those wanting to improve their Python skills. To date, Pybites has hosted 50 code challenges, published more than 100 articles and built a Python exercise platform. CONTACT THE GUEST – BOB BELDERBOS Bob Belderbos can be contacted through the following Social Media platforms: Twitter: https://twitter.com/bbelderbos LinkedIn: https://www.linkedin.com/in/bbelderbos/ Website: https://bobbelderbos.com
Bob Belderbos and Julian Sequeira started PyBites (https://pybit.es/) a few years ago. They started doing code challanges along with people around the world and writing about it. Then came the codechalleng.es (https://codechalleng.es/) platform, where you can do code challenges in the browser and have your answer checked by pytest tests. But how does it all work? Bob joins me today to go behind the scenes and share the tech stack running the PyBites Code Challenges platform. We talk about the technology, the testing, and how it went from a cool idea to a working platform. Special Guest: Bob Belderbos.