This document summarizes Daniel Greenfeld's presentation on Python worst practices and fixed practices. The presentation covers various topics like fundamentals, classes, and presentation styles. For each worst practice, there is a corresponding fixed practice shown side by side. Some examples of worst practices discussed include using single-letter variable names, not using enumerate, and implementing Java-style getters and setters in Python classes. The fixed practices demonstrate more readable Python code that follows PEP 8 style guidelines and leverages Python features like properties.
This Edureka Python Programming tutorial will help you learn python and understand the various basics of Python programming with examples in detail. Below are the topics covered in this tutorial:
1. Python Installation
2. Python Variables
3. Data types in Python
4. Operators in Python
5. Conditional Statements
6. Loops in Python
7. Functions in Python
8. Classes and Objects
Python Tutorial | Python Tutorial for Beginners | Python Training | EdurekaEdureka!
This Edureka Python tutorial will help you in understanding the various fundamentals of Python programming with examples in detail. This Python tutorial helps you to learn following topics:
1. Introduction to Python
2. Who uses Python
3. Features of Python
4. Operators in Python
5. Datatypes in Python
6. Flow Control
7. Functions in Python
8. File Handling in Python
What is Tuple in python? | Python Tuple Tutorial | EdurekaEdureka!
YouTube Link: https://youtu.be/GstQPTWpt88
** Python Certification Training: https://www.edureka.co/data-science-python-certification-course **
This Edureka video on 'Tuple In Python' will help you understand how we can use Tuple in Python with various examples for better understanding. Following are the topics discussed:
What Is Tuple In Python?
Accessing Elements In A Tuple
Changing A Tuple
Concatenating Two Tuples
Deleting A Tuple
Tuple Methods
List vs Tuple
Tuple Constructor
Other Examples
Follow us to never miss an update in the future.
YouTube: https://www.youtube.com/user/edurekaIN
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
Castbox: https://castbox.fm/networks/505?country=in
This Edureka Python Programming tutorial will help you learn python and understand the various basics of Python programming with examples in detail. Below are the topics covered in this tutorial:
1. Python Installation
2. Python Variables
3. Data types in Python
4. Operators in Python
5. Conditional Statements
6. Loops in Python
7. Functions in Python
8. Classes and Objects
Python Tutorial | Python Tutorial for Beginners | Python Training | EdurekaEdureka!
This Edureka Python tutorial will help you in understanding the various fundamentals of Python programming with examples in detail. This Python tutorial helps you to learn following topics:
1. Introduction to Python
2. Who uses Python
3. Features of Python
4. Operators in Python
5. Datatypes in Python
6. Flow Control
7. Functions in Python
8. File Handling in Python
What is Tuple in python? | Python Tuple Tutorial | EdurekaEdureka!
YouTube Link: https://youtu.be/GstQPTWpt88
** Python Certification Training: https://www.edureka.co/data-science-python-certification-course **
This Edureka video on 'Tuple In Python' will help you understand how we can use Tuple in Python with various examples for better understanding. Following are the topics discussed:
What Is Tuple In Python?
Accessing Elements In A Tuple
Changing A Tuple
Concatenating Two Tuples
Deleting A Tuple
Tuple Methods
List vs Tuple
Tuple Constructor
Other Examples
Follow us to never miss an update in the future.
YouTube: https://www.youtube.com/user/edurekaIN
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
Castbox: https://castbox.fm/networks/505?country=in
WHAT IS DICTIONARY IN PYTHON?
HOW TO CREATE A DICTIONARY
INITIALIZE THE DICTIONARY
ACCESSING KEYS AND VALUES FROM A DICTIONARY
LOOPS TO DISPLAY KEYS AND VALUES IN A DICTIONARY
METHODS IN A DICTIONARY
TO WATCH VIDEO OR PDF:
https://computerassignmentsforu.blogspot.com/p/dictinpyxii.html
This presentation provides the information on python including the topics Python features, applications, variables and operators in python, control statements, numbers, strings, print formatting, list and list comprehension, dictionaries, tuples, files, sets, boolean, mehtods and functions, lambda expressions and a sample project using Python.
Variables & Data Types In Python | EdurekaEdureka!
YouTube Link: https://youtu.be/6yrsX752CWk
(** Python Certification Training: https://www.edureka.co/python **)
This Edureka PPT on 'Variables and Data Types in Python' will help you establish a foothold on Python by helping you learn basic concepts like variables and data types. Below are the topics covered in this PPT:
Introduction To Python
Applications Of Python
Variable Declaration
Variable Data Types
Type Conversion
Python Tutorial Playlist: https://goo.gl/WsBpKe
Blog Series: http://bit.ly/2sqmP4s
Follow us to never miss an update in the future.
YouTube: https://www.youtube.com/user/edurekaIN
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
Vectorized UDF: Scalable Analysis with Python and PySpark with Li JinDatabricks
Over the past few years, Python has become the default language for data scientists. Packages such as pandas, numpy, statsmodel, and scikit-learn have gained great adoption and become the mainstream toolkits. At the same time, Apache Spark has become the de facto standard in processing big data. Spark ships with a Python interface, aka PySpark, however, because Spark’s runtime is implemented on top of JVM, using PySpark with native Python library sometimes results in poor performance and usability.
In this talk, we introduce a new type of PySpark UDF designed to solve this problem – Vectorized UDF. Vectorized UDF is built on top of Apache Arrow and bring you the best of both worlds – the ability to define easy to use, high performance UDFs and scale up your analysis with Spark.
Kotlin Tutorial for Beginners | Kotlin Android Tutorial | EdurekaEdureka!
YouTube Link: https://youtu.be/y1ikxe24zjs
** Edureka Online Courses: https://www.edureka.co **
This Edureka PPT on "Kotlin Tutorial for Beginners" video will introduce you to a popular and trending programming language which is Kotlin Programming. In this Kotlin tutorial, you will learn Kotlin programming from scratch. Below are the topics discussed in this Kotlin Android tutorial:
History of Kotlin
Kotlin Features
Kotlin Architecture
How to run a Kotlin program
IDE to work on
Demo
Follow us to never miss an update in the future.
YouTube: https://www.youtube.com/user/edurekaIN
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
Castbox: https://castbox.fm/networks/505?country=in
Youtube Link: https://youtu.be/woVJ4N5nl_s
** Python Certification Training: https://www.edureka.co/data-science-python-certification-course **
This Edureka PPT on 'Python Basics' will help you understand what exactly makes Python special and covers all the basics of Python programming along with examples.
Follow us to never miss an update in the future.
YouTube: https://www.youtube.com/user/edurekaIN
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
Castbox: https://castbox.fm/networks/505?country=in
Python Interview Questions And Answers 2019 | EdurekaEdureka!
( ** Python Training : https://www.edureka.co/python ** )
This PPT on Python Interview Questions and Answers will help you prepare for Python job interviews. Start your preparation by going through the most frequently asked questions on Python.
Check out our Python Training Playlist: https://goo.gl/Na1p9G
Follow us to never miss an update in the future:
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
This presentation educates you about Python and the reason for learning python, Key advantages of learning Python, Characteristics of Python, Hello World using Python syntax and Applications of Python.
For more topics stay tuned with Learnbay.
YouTube Link: https://youtu.be/QswQA1lRIQY
** Python Certification Training: https://www.edureka.co/python **
This Edureka PPT on 'Collections In Python' will cover the concepts of Collection data type in python along with the collections module and specialized collection data structures like counter, chainmap, deque etc. Following are the topics discussed:
What Are Collections In Python?
What Is A Collection Module In Python?
Specialized Collection Data Structures
Follow us to never miss an update in the future.
YouTube: https://www.youtube.com/user/edurekaIN
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
Castbox: https://castbox.fm/networks/505?country=in
Presentation covers core lucene/solr stuff which is used in numeric range queries. There are several examples, algorithm discovered by Uwe is briefly explained.
Slides of the talk held at JEEConf, Kiev and jPrime, Sofia. A personal view on the classic topics from the Uncle Bob's Clean Code bible, with some personal additions and tips&tricks. This topic actually represents the core of the training sessions that I provide as an independent trainer (www.victorrentea.ro)
My keynote speech from EuroPython, this talk explores what it is like being a developer in a community filled with experts from around the world. The goal of the talk is to provide useful content for beginners and topics of discussion for more advanced developers, while also focusing on Python’s strengths. Video of this talk is at http://www.youtube.com/watch?v=7TImWbnUDeI
The basics of Python are rather straightforward. In a few minutes you can learn most of the syntax. There are some gotchas along the way that might appear tricky. This talk is meant to bring programmers up to speed with Python. They should be able to read and write Python.
WHAT IS DICTIONARY IN PYTHON?
HOW TO CREATE A DICTIONARY
INITIALIZE THE DICTIONARY
ACCESSING KEYS AND VALUES FROM A DICTIONARY
LOOPS TO DISPLAY KEYS AND VALUES IN A DICTIONARY
METHODS IN A DICTIONARY
TO WATCH VIDEO OR PDF:
https://computerassignmentsforu.blogspot.com/p/dictinpyxii.html
This presentation provides the information on python including the topics Python features, applications, variables and operators in python, control statements, numbers, strings, print formatting, list and list comprehension, dictionaries, tuples, files, sets, boolean, mehtods and functions, lambda expressions and a sample project using Python.
Variables & Data Types In Python | EdurekaEdureka!
YouTube Link: https://youtu.be/6yrsX752CWk
(** Python Certification Training: https://www.edureka.co/python **)
This Edureka PPT on 'Variables and Data Types in Python' will help you establish a foothold on Python by helping you learn basic concepts like variables and data types. Below are the topics covered in this PPT:
Introduction To Python
Applications Of Python
Variable Declaration
Variable Data Types
Type Conversion
Python Tutorial Playlist: https://goo.gl/WsBpKe
Blog Series: http://bit.ly/2sqmP4s
Follow us to never miss an update in the future.
YouTube: https://www.youtube.com/user/edurekaIN
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
Vectorized UDF: Scalable Analysis with Python and PySpark with Li JinDatabricks
Over the past few years, Python has become the default language for data scientists. Packages such as pandas, numpy, statsmodel, and scikit-learn have gained great adoption and become the mainstream toolkits. At the same time, Apache Spark has become the de facto standard in processing big data. Spark ships with a Python interface, aka PySpark, however, because Spark’s runtime is implemented on top of JVM, using PySpark with native Python library sometimes results in poor performance and usability.
In this talk, we introduce a new type of PySpark UDF designed to solve this problem – Vectorized UDF. Vectorized UDF is built on top of Apache Arrow and bring you the best of both worlds – the ability to define easy to use, high performance UDFs and scale up your analysis with Spark.
Kotlin Tutorial for Beginners | Kotlin Android Tutorial | EdurekaEdureka!
YouTube Link: https://youtu.be/y1ikxe24zjs
** Edureka Online Courses: https://www.edureka.co **
This Edureka PPT on "Kotlin Tutorial for Beginners" video will introduce you to a popular and trending programming language which is Kotlin Programming. In this Kotlin tutorial, you will learn Kotlin programming from scratch. Below are the topics discussed in this Kotlin Android tutorial:
History of Kotlin
Kotlin Features
Kotlin Architecture
How to run a Kotlin program
IDE to work on
Demo
Follow us to never miss an update in the future.
YouTube: https://www.youtube.com/user/edurekaIN
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
Castbox: https://castbox.fm/networks/505?country=in
Youtube Link: https://youtu.be/woVJ4N5nl_s
** Python Certification Training: https://www.edureka.co/data-science-python-certification-course **
This Edureka PPT on 'Python Basics' will help you understand what exactly makes Python special and covers all the basics of Python programming along with examples.
Follow us to never miss an update in the future.
YouTube: https://www.youtube.com/user/edurekaIN
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
Castbox: https://castbox.fm/networks/505?country=in
Python Interview Questions And Answers 2019 | EdurekaEdureka!
( ** Python Training : https://www.edureka.co/python ** )
This PPT on Python Interview Questions and Answers will help you prepare for Python job interviews. Start your preparation by going through the most frequently asked questions on Python.
Check out our Python Training Playlist: https://goo.gl/Na1p9G
Follow us to never miss an update in the future:
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
This presentation educates you about Python and the reason for learning python, Key advantages of learning Python, Characteristics of Python, Hello World using Python syntax and Applications of Python.
For more topics stay tuned with Learnbay.
YouTube Link: https://youtu.be/QswQA1lRIQY
** Python Certification Training: https://www.edureka.co/python **
This Edureka PPT on 'Collections In Python' will cover the concepts of Collection data type in python along with the collections module and specialized collection data structures like counter, chainmap, deque etc. Following are the topics discussed:
What Are Collections In Python?
What Is A Collection Module In Python?
Specialized Collection Data Structures
Follow us to never miss an update in the future.
YouTube: https://www.youtube.com/user/edurekaIN
Instagram: https://www.instagram.com/edureka_learning/
Facebook: https://www.facebook.com/edurekaIN/
Twitter: https://twitter.com/edurekain
LinkedIn: https://www.linkedin.com/company/edureka
Castbox: https://castbox.fm/networks/505?country=in
Presentation covers core lucene/solr stuff which is used in numeric range queries. There are several examples, algorithm discovered by Uwe is briefly explained.
Slides of the talk held at JEEConf, Kiev and jPrime, Sofia. A personal view on the classic topics from the Uncle Bob's Clean Code bible, with some personal additions and tips&tricks. This topic actually represents the core of the training sessions that I provide as an independent trainer (www.victorrentea.ro)
My keynote speech from EuroPython, this talk explores what it is like being a developer in a community filled with experts from around the world. The goal of the talk is to provide useful content for beginners and topics of discussion for more advanced developers, while also focusing on Python’s strengths. Video of this talk is at http://www.youtube.com/watch?v=7TImWbnUDeI
The basics of Python are rather straightforward. In a few minutes you can learn most of the syntax. There are some gotchas along the way that might appear tricky. This talk is meant to bring programmers up to speed with Python. They should be able to read and write Python.
Python 101: Python for Absolute Beginners (PyTexas 2014)Paige Bailey
If you're absolutely new to Python, and to programming in general, this is the place to start!
Here's the breakdown: by the end of this workshop, you'll have Python downloaded onto your personal machine; have a general idea of what Python can help you do; be pointed in the direction of some excellent practice materials; and have a basic understanding of the syntax of the language.
Please don't forget to bring your laptop!
Audience: "Python 101" is geared toward individuals who are new to programming. If you've had some programming experience (shell scripting, MATLAB, Ruby, etc.), then you'll probably want to check out the more intermediate workshop, "Python 101++".
An advanced forms presentation given with Miguel Araujo (marajop) at DjangoCon 2011. The transcript and slides is aimed at getting into Django Core, and Jacob Kaplan-Moss has stated this is his plan.
The Agenda for the Webinar:
1. Introduction to Python.
2. Python and Big Data.
3. Python and Data Science.
4. Key features of Python and their usage in Business Analytics.
5. Business Analytics with Python – Real world Use Cases.
Django Package Thunderdome by Audrey Roy & Daniel GreenfeldAudrey Roy
What makes a package useful? What is it about certain packages that makes them must-haves for any project?
We’ll go over topics like: purpose, structure, docs, tests, availability on PyPI and Github/Bitbucket, activity, and more.
We will visit some of the most useful grid categories on djangopackages.com and highlight our top package picks, showing examples of what makes the top packages so great and what could use improvement.
Admitting my flaws and turning them into virtues! This is a full length talk given it at DjangoCon US 2011, PyCon Australia 2011, and LA Django. The earliest version was a lightning talk given at the 2011 Hollywood hackathon.
Semi-motivational talk about why today is a great time to learn Python. Slides include a brief overview of the current state of the language, its application areas, and Python's future.
Python Advanced – Building on the foundationKevlin Henney
This is a two-day course in Python programming aimed at professional programmers. The course material provided here is intended to be used by teachers of the language, but individual learners might find some of this useful as well.
The course assume the students already know Python, to the level taught in the Python Foundation course: http://www.slideshare.net/Kevlin/python-foundation-a-programmers-introduction-to-python-concepts-style)
The course is released under Creative Commons Attribution 4.0. Its primary location (along with the original PowerPoint) is at https://github.com/JonJagger/two-day-courses/tree/master/pa
How to Write a Popular Python Library by AccidentDaniel Greenfeld
We gave this talk as the opening keynote speech at PyCon Singapore. The theme of the talk is that most complex projects begin from humble origins. That you should create your own projects, sharing your knowledge and expertise.
10 more things you can do with the Python programming language. Python is used in science, engineer, and forward thinking entrepreneurial projects like Instagram and Pinterest.
In the Python community we are taught from the outset of learning the language that the Zen of Python serves as a guide for how we should construct our codebases and projects. Rather than go into the zen-like meanings of each statement, this talk will explore how individual koans are implemented via detailed displays of sophisticated code examples.
Just to be clear, all of these things suck. Please DO NOT use these techniques! It was a joke, and if you attempt any of these things you are making a big mistake.
The slides printed for attendees of the Pycon 2010 Long Pinax Tutorial. James Tauber was the co-author and deserves tons of credit for his work. So does Brian Rosner and the rest of the Pinax team.
Why Django is created and maintained by myself, James Tauber, and others. Its purpose is to help individuals sell Django as a working platform. It is a work in progress, and will be updated periodically.
State of ICS and IoT Cyber Threat Landscape Report 2024 previewPrayukth K V
The IoT and OT threat landscape report has been prepared by the Threat Research Team at Sectrio using data from Sectrio, cyber threat intelligence farming facilities spread across over 85 cities around the world. In addition, Sectrio also runs AI-based advanced threat and payload engagement facilities that serve as sinks to attract and engage sophisticated threat actors, and newer malware including new variants and latent threats that are at an earlier stage of development.
The latest edition of the OT/ICS and IoT security Threat Landscape Report 2024 also covers:
State of global ICS asset and network exposure
Sectoral targets and attacks as well as the cost of ransom
Global APT activity, AI usage, actor and tactic profiles, and implications
Rise in volumes of AI-powered cyberattacks
Major cyber events in 2024
Malware and malicious payload trends
Cyberattack types and targets
Vulnerability exploit attempts on CVEs
Attacks on counties – USA
Expansion of bot farms – how, where, and why
In-depth analysis of the cyber threat landscape across North America, South America, Europe, APAC, and the Middle East
Why are attacks on smart factories rising?
Cyber risk predictions
Axis of attacks – Europe
Systemic attacks in the Middle East
Download the full report from here:
https://sectrio.com/resources/ot-threat-landscape-reports/sectrio-releases-ot-ics-and-iot-security-threat-landscape-report-2024/
Builder.ai Founder Sachin Dev Duggal's Strategic Approach to Create an Innova...Ramesh Iyer
In today's fast-changing business world, Companies that adapt and embrace new ideas often need help to keep up with the competition. However, fostering a culture of innovation takes much work. It takes vision, leadership and willingness to take risks in the right proportion. Sachin Dev Duggal, co-founder of Builder.ai, has perfected the art of this balance, creating a company culture where creativity and growth are nurtured at each stage.
Key Trends Shaping the Future of Infrastructure.pdfCheryl Hung
Keynote at DIGIT West Expo, Glasgow on 29 May 2024.
Cheryl Hung, ochery.com
Sr Director, Infrastructure Ecosystem, Arm.
The key trends across hardware, cloud and open-source; exploring how these areas are likely to mature and develop over the short and long-term, and then considering how organisations can position themselves to adapt and thrive.
Connector Corner: Automate dynamic content and events by pushing a buttonDianaGray10
Here is something new! In our next Connector Corner webinar, we will demonstrate how you can use a single workflow to:
Create a campaign using Mailchimp with merge tags/fields
Send an interactive Slack channel message (using buttons)
Have the message received by managers and peers along with a test email for review
But there’s more:
In a second workflow supporting the same use case, you’ll see:
Your campaign sent to target colleagues for approval
If the “Approve” button is clicked, a Jira/Zendesk ticket is created for the marketing design team
But—if the “Reject” button is pushed, colleagues will be alerted via Slack message
Join us to learn more about this new, human-in-the-loop capability, brought to you by Integration Service connectors.
And...
Speakers:
Akshay Agnihotri, Product Manager
Charlie Greenberg, Host
Encryption in Microsoft 365 - ExpertsLive Netherlands 2024Albert Hoitingh
In this session I delve into the encryption technology used in Microsoft 365 and Microsoft Purview. Including the concepts of Customer Key and Double Key Encryption.
GraphRAG is All You need? LLM & Knowledge GraphGuy Korland
Guy Korland, CEO and Co-founder of FalkorDB, will review two articles on the integration of language models with knowledge graphs.
1. Unifying Large Language Models and Knowledge Graphs: A Roadmap.
https://arxiv.org/abs/2306.08302
2. Microsoft Research's GraphRAG paper and a review paper on various uses of knowledge graphs:
https://www.microsoft.com/en-us/research/blog/graphrag-unlocking-llm-discovery-on-narrative-private-data/
Kubernetes & AI - Beauty and the Beast !?! @KCD Istanbul 2024Tobias Schneck
As AI technology is pushing into IT I was wondering myself, as an “infrastructure container kubernetes guy”, how get this fancy AI technology get managed from an infrastructure operational view? Is it possible to apply our lovely cloud native principals as well? What benefit’s both technologies could bring to each other?
Let me take this questions and provide you a short journey through existing deployment models and use cases for AI software. On practical examples, we discuss what cloud/on-premise strategy we may need for applying it to our own infrastructure to get it to work from an enterprise perspective. I want to give an overview about infrastructure requirements and technologies, what could be beneficial or limiting your AI use cases in an enterprise environment. An interactive Demo will give you some insides, what approaches I got already working for real.
Neuro-symbolic is not enough, we need neuro-*semantic*Frank van Harmelen
Neuro-symbolic (NeSy) AI is on the rise. However, simply machine learning on just any symbolic structure is not sufficient to really harvest the gains of NeSy. These will only be gained when the symbolic structures have an actual semantics. I give an operational definition of semantics as “predictable inference”.
All of this illustrated with link prediction over knowledge graphs, but the argument is general.
Smart TV Buyer Insights Survey 2024 by 91mobiles.pdf91mobiles
91mobiles recently conducted a Smart TV Buyer Insights Survey in which we asked over 3,000 respondents about the TV they own, aspects they look at on a new TV, and their TV buying preferences.
Securing your Kubernetes cluster_ a step-by-step guide to success !KatiaHIMEUR1
Today, after several years of existence, an extremely active community and an ultra-dynamic ecosystem, Kubernetes has established itself as the de facto standard in container orchestration. Thanks to a wide range of managed services, it has never been so easy to set up a ready-to-use Kubernetes cluster.
However, this ease of use means that the subject of security in Kubernetes is often left for later, or even neglected. This exposes companies to significant risks.
In this talk, I'll show you step-by-step how to secure your Kubernetes cluster for greater peace of mind and reliability.
Software Delivery At the Speed of AI: Inflectra Invests In AI-Powered QualityInflectra
In this insightful webinar, Inflectra explores how artificial intelligence (AI) is transforming software development and testing. Discover how AI-powered tools are revolutionizing every stage of the software development lifecycle (SDLC), from design and prototyping to testing, deployment, and monitoring.
Learn about:
• The Future of Testing: How AI is shifting testing towards verification, analysis, and higher-level skills, while reducing repetitive tasks.
• Test Automation: How AI-powered test case generation, optimization, and self-healing tests are making testing more efficient and effective.
• Visual Testing: Explore the emerging capabilities of AI in visual testing and how it's set to revolutionize UI verification.
• Inflectra's AI Solutions: See demonstrations of Inflectra's cutting-edge AI tools like the ChatGPT plugin and Azure Open AI platform, designed to streamline your testing process.
Whether you're a developer, tester, or QA professional, this webinar will give you valuable insights into how AI is shaping the future of software delivery.
Transcript: Selling digital books in 2024: Insights from industry leaders - T...BookNet Canada
The publishing industry has been selling digital audiobooks and ebooks for over a decade and has found its groove. What’s changed? What has stayed the same? Where do we go from here? Join a group of leading sales peers from across the industry for a conversation about the lessons learned since the popularization of digital books, best practices, digital book supply chain management, and more.
Link to video recording: https://bnctechforum.ca/sessions/selling-digital-books-in-2024-insights-from-industry-leaders/
Presented by BookNet Canada on May 28, 2024, with support from the Department of Canadian Heritage.
Dev Dives: Train smarter, not harder – active learning and UiPath LLMs for do...UiPathCommunity
💥 Speed, accuracy, and scaling – discover the superpowers of GenAI in action with UiPath Document Understanding and Communications Mining™:
See how to accelerate model training and optimize model performance with active learning
Learn about the latest enhancements to out-of-the-box document processing – with little to no training required
Get an exclusive demo of the new family of UiPath LLMs – GenAI models specialized for processing different types of documents and messages
This is a hands-on session specifically designed for automation developers and AI enthusiasts seeking to enhance their knowledge in leveraging the latest intelligent document processing capabilities offered by UiPath.
Speakers:
👨🏫 Andras Palfi, Senior Product Manager, UiPath
👩🏫 Lenka Dulovicova, Product Program Manager, UiPath
The Art of the Pitch: WordPress Relationships and SalesLaura Byrne
Clients don’t know what they don’t know. What web solutions are right for them? How does WordPress come into the picture? How do you make sure you understand scope and timeline? What do you do if sometime changes?
All these questions and more will be explored as we talk about matching clients’ needs with what your agency offers without pulling teeth or pulling your hair out. Practical tips, and strategies for successful relationship building that leads to closing the deal.
LF Energy Webinar: Electrical Grid Modelling and Simulation Through PowSyBl -...DanBrown980551
Do you want to learn how to model and simulate an electrical network from scratch in under an hour?
Then welcome to this PowSyBl workshop, hosted by Rte, the French Transmission System Operator (TSO)!
During the webinar, you will discover the PowSyBl ecosystem as well as handle and study an electrical network through an interactive Python notebook.
PowSyBl is an open source project hosted by LF Energy, which offers a comprehensive set of features for electrical grid modelling and simulation. Among other advanced features, PowSyBl provides:
- A fully editable and extendable library for grid component modelling;
- Visualization tools to display your network;
- Grid simulation tools, such as power flows, security analyses (with or without remedial actions) and sensitivity analyses;
The framework is mostly written in Java, with a Python binding so that Python developers can access PowSyBl functionalities as well.
What you will learn during the webinar:
- For beginners: discover PowSyBl's functionalities through a quick general presentation and the notebook, without needing any expert coding skills;
- For advanced developers: master the skills to efficiently apply PowSyBl functionalities to your real-world scenarios.
2. Daniel Greenfeld
@pydanny
I do cartwheels
Daniel Greenfeld (@pydanny)
Pythonista at Cartwheel
Djangonaut at Revsys
Co-lead of Django Packages &
Open Comparison
Learned Python at NASA
Fiancé of Audrey Roy
3. Daniel Greenfeld
@pydanny
Talk Format
Each section will have three components:
• At least one ‘Python Worst Practice’ slide
• At least one ‘Fixed Python Practice’ slide
• A side-by-side comparison slide
These slides are already online!
4. Daniel Greenfeld
@pydanny
Warning!
Don’t use the
‘Python Worst Practices’
examples in your code*
You may be hunted down and killed
*Sometimes these are caught by
various code checking tools
5. Daniel Greenfeld
@pydanny
Advice!
Do consider using the
‘Fixed Python Practices’
examples in your code
You may get complimented
7. Daniel Greenfeld
@pydanny
Python Worst Practice
object = MyObject()
map = Map()
zip = 90213 # common US developer mistake
id = 34 # I still fight this one
I’m guilty
• I still use ‘id’ when I shouldn’t
• I admit I have a problem
• That gives me license to pick on others
8. Daniel Greenfeld
@pydanny
Fixed Python Practice
obj = MyObject() # necessary abbreviation
object_ = MyObject() # Underscore so we don't overwrite
map_obj = Map() # combine name w/necessary abbreviation
map_ = Map()
zip_code = 90213 # Explicit name with US focus
postal_code = 90213 # i18n explicit name
zip_ = 90213
pk = 34 # pk is often synonymous with id
id_ = 34
9. Daniel Greenfeld
@pydanny
Side-by-side comparison
Worst Practice Fixed Practice
object = MyObject() obj = MyObject() # Use a necessary abbreviation
map = Map() object_ = MyObject() # Use underscore so we don't overwrite
zip = 90213 # common US developer mistake
id = 34 # I still fight this one map_obj = Map() # combine name with necessary abbreviation
map_ = Map()
zip_code = 90213 # Explicit name with US focus
postal_code = 90213 # International explicit name
zip_ = 90213
pk = 34 # pk is often synonymous with id
id_ = 34
10. Daniel Greenfeld
@pydanny
Python Worst Practice
Flipping the booleans
true = 0
false = 1
True = False
Usually done to support an API
11. Daniel Greenfeld
@pydanny
This sort of API
def crazy_posting_api(value):
""" If a value is supplied
successfully return ‘0’.
Otherwise return ‘1’
"""
if value:
return 0
return 1
12. Daniel Greenfeld
@pydanny
Fixed Python Practice
class CrazyApiConsumer(object):
def __init__(self, value):
self.value = value
def post(self):
# fix booleans in/around the return statement
response = crazy_posting_api(self.value)
return not bool(response)
cac1 = CrazyApiConsumer("hello")
print(cac1.post())
cac2 = CrazyApiConsumer("")
print(cac2.post())
13. Daniel Greenfeld
@pydanny
Side-by-side comparison
Worst Practice Fixed Practice
true = 0 class CrazyApiConsumer(object):
false = 1
True = False def __init__(self, value):
self.value = value
def post(self):
# fix booleans in/around the return statement
response = crazy_posting_api(self.value)
return not bool(response)
cac1 = CrazyApiConsumer("hello")
print(cac1.post())
cac2 = CrazyApiConsumer("")
print(cac2.post())
14. Daniel Greenfeld
@pydanny
Python Worst Practice
Identifying variable types with prefixes
strColor = "green"
boolActive = False
intPythonYears = 20
dtPythonFirstUsed = "04/20/2011"
Mixing case doesn’t help either
15. Daniel Greenfeld
@pydanny
Python Worst Practice
Conserving pixels by removing the vowels
clr = "green"
ctv = False
pythnYrs = 20
pthnFrstSd = "04/20/2011"
16. Daniel Greenfeld
@pydanny
Python Worst Practice
c = "green"
a = False
p = 20
t = "04/20/2011"
17. Daniel Greenfeld
@pydanny
Fixed Python Practice
color = "green"
active = False
python_years = 20
python_first_used = "04/20/2011"
Python assumes we are all consenting adults
• Infer from naming schemes the type/purpose
• Don’t be constrained by type
18. Daniel Greenfeld
@pydanny
Fixed Python Practice
color = "green"
active = False
python_years = 20
python_first_used = "04/20/2011"
The pixel shortage is over.
Use reasonably long variable names.
19. Daniel Greenfeld
@pydanny
Side-by-side comparison
Worst Practice Fixed Practice
c = "green"
a = False color = "green"
p = 20
t = "04/20/2011"
active = False
python_years = 20
python_first_used = "04/20/2011"
clr = "green"
ctv = False
pythnYrs = 20
pthnFrstSd = "04/20/2011"
strColor = "green"
boolActive = False
intPythonYears = 20
dtPythonFirstUsed = "04/20/2011"
20. Daniel Greenfeld
@pydanny
Python Worst Practice
Don’t use enumerate
foo = [1, 2, 3]
for i, item in zip(range(len(foo)), foo):
print i, item
21. Daniel Greenfeld
@pydanny
Fixed Python Practice
Use enumerate
foo = [1, 2, 3]
for i, item in enumerate(foo):
print i, item
• Memorize the Python built-ins
• Makes your code easier to read
• Proven code
22. Daniel Greenfeld
@pydanny
Side-by-side comparison
Worst Practice Fixed Practice
foo = [1, 2, 3] foo = [1, 2, 3]
zip(range(len(foo)), foo): for i, item in enumerate(foo):
print i, item print i, item
24. Daniel Greenfeld
@pydanny
Python Worst Practice
Present using
High Contrast
Easy-to-read fonts
All devices off
All programs off
25. Daniel Greenfeld
@pydanny
Side-by-side comparison
Worst Practice Fixed Practice
Present using
Present using
Different Fonts
High Contrast
Dark Text
Easy-to-read fonts
Dire Backgr#nds All devices off
All programs off
27. Daniel Greenfeld
@pydanny
Python Worst Practice
Implementing Java-style getters and setters
import logging
log = logging.getLogger()
class JavaStyle:
""" Quiz: what else am I doing wrong here? """
def __init__(self):
self.name = ""
def get_name(self):
return self.name
def set_name(self, name):
log.debug("Setting the name to %s" % name)
if isinstance(name, str):
self.name = name
else:
raise TypeError()
if __name__ == "__main__":
j = JavaStyle()
j.set_name("pydanny did this back in 2006!")
print(j.get_name())
28. Daniel Greenfeld
@pydanny
Fixed Python Practice
Python properties!
import logging
log = logging.getLogger()
class PythonStyle(object):
def __init__(self):
self._name = "" Accessor
@property
def name(self):
return self._name
Mutator
@name.setter
def name(self, value):
""" Because name is probably a string we'll assume that we can
infer the type from the variable name"""
log.debug("Setting the name to %s" % value)
self._name = value
if __name__ == "__main__":
p = PythonStyle()
p.name = "pydanny doing it the right way"
print(p.name)
29. Daniel Greenfeld
@pydanny
Side-by-side comparison
Worst Practice Fixed Practice
import logging import logging
log = logging.getLogger() log = logging.getLogger()
class JavaStyle: class PythonStyle(object):
""" Quiz: what else am I doing wrong here? """
def __init__(self):
def __init__(self): self._name = ""
self.name = ""
@property
def get_name(self): def name(self):
return self.name return self._name
def set_name(self, name): @name.setter
log.debug("Setting the name to %s" % name)
def name(self, value):
if isinstance(name, str): """ Because name is probably a string we'll assume that we can
self.name = name infer the type from the variable name"""
else: log.debug("Setting the name to %s" % value)
raise TypeError() self._name = value
if __name__ == "__main__": if __name__ == "__main__":
j = JavaStyle() p = PythonStyle()
j.set_name("pydanny did thisp.namein 2006!") doing it the right way"
back = "pydanny
print(j.get_name()) print(p.name)
30. Daniel Greenfeld
@pydanny
Python Worst Practice
Using property setters as action methods!
class WebService(object):
@property
def connect(self):
self.proxy = xmlrpc.Server("http://service.xml")
if __name__ == '__main__':
ws = WebService()
ws.connect
A.K.A.Trying to make your Python code look like Ruby
31. Daniel Greenfeld
@pydanny
Fixed Python Practice
Methods please!
class WebService(object):
def connect(self):
self.proxy = xmlrpc.Server("http://service.xml")
if __name__ == '__main__':
ws = WebService()
ws.connect()
32. Daniel Greenfeld
@pydanny
Side-by-side comparison
Worst Practice Fixed Practice
class WebService(object): class WebService(object):
@property
def connect(self): def connect(self):
self.proxy = xmlrpc.Server("http://service.xml")
self.proxy = xmlrpc.Server("http://service.xml")
if __name__ == '__main__':
if __name__ == '__main__':
ws = WebService()
ws.connect
ws = WebService()
ws.connect()
34. Daniel Greenfeld
@pydanny
Python Worst Practice
Passing Generic Exceptions silently
try:
do_akshun(value)
except:
pass
• Ignorance is not bliss
• You have no idea what your system is doing
• Arguably better to not have this in your code
35. Daniel Greenfeld
@pydanny
Fixed Python Practice
Use specific exceptions and/or logging
class AkshunDoesNotDo(Exception):
""" Custom exceptions makes for maintainable code """
pass
try:
do_akshun(value)
except AttributeError as e:
log.info("Can I get attribution for these slides?")
do_bakup_akshun(vlue)
except Exception as e:
log.debug(str(e))
raise AkshunDoesNotDo(e)
36. Daniel Greenfeld
@pydanny
Side-by-side comparison
Worst Practice Fixed Practice
try: class AkshunDoesNotDo(Exception):
do_akshun(value) """ Custom exceptions makes for maintainable code """
except: pass
pass
try:
do_akshun(value)
except AttributeError as e:
log.info("Can I get attribution for these slides?")
do_bakup_akshun(vlue)
except Exception as e:
log.debug(str(e))
raise AkshunDoesNotDo(e)
38. Daniel Greenfeld
@pydanny
Python Worst Practice
Using exec for dynamic imports
imports = "from {0} import {1}".format("random", "randrange")
exec(imports)
print(randrange(10))
• Hard to debug
• Security risk
• Sets bad precedents
39. Daniel Greenfeld
@pydanny
Fixed Python Practice
Using importlib for dynamic imports
import importlib
funstuff = importlib.import_module('random')
print(funstuff.randrange(10))
• importlib is in the standard library
• Really explicit
• Direct tie into the Python machinery
40. Daniel Greenfeld
@pydanny
Side-by-side comparison
Worst Practice Fixed Practice
imports = "from {0} import {1}".format("random", "randrange")
import importlib
exec(imports) funstuff = importlib.import_module('random')
print(randrange(10)) print(funstuff.randrange(10))
41. Daniel Greenfeld
@pydanny
Python Worst Practice
Generally using lambdas
swap = lambda a, x, y: lambda f = a.__setitem__: (f(x, (a[x], a[y])), f(y, a[x][0]), f(x, a[x][1]))()
• Too many characters on one line
• Lambdas by design does not have docstrings
• Does not necessarily mean less characters
• I can’t get this sample to work!
42. Daniel Greenfeld
@pydanny
Fixed Python Practice
def swap(a, x, y):
""" Swap two position values in a list """
a[x],a[y] = a[y],a[x]
• Doc strings that show up nicely in help/Sphinx
• Easier to read
• In Python, functions are first class objects
• Whenever possible avoid using lambdas
43. Daniel Greenfeld
@pydanny
Side-by-side comparison
Worst Practice Fixed Practice
swap = lambda a, x, y: def swap(a, x, y):
lambda f = a.__setitem__: """ Swap two position values in a list """
(f(x, (a[x], a[y])), a[x],a[y] = a[y],a[x]
f(y, a[x][0]), f(x, a[x][1]))()
44. Daniel Greenfeld
@pydanny
Python Worst Practice
Configuring your project with XML
<pydanny-ml>
<do action="call_view">com.pydanny.nextSlide</do>
<global name="spam" value="eggs" />
</pydanny-ml>
• You can’t convince me that XML is the better way
• You are forcing me to learn a new language
45. Daniel Greenfeld
@pydanny
Fixed Python Practice ?
Use Python for configuration!
spam = "eggs"
actions = [
('call_view', 'com.pydanny.nextSlide')
]
• Is this the right way?
• This allows conditional logic
• Iterators
• i.e. “Magic Configuration”
46. Daniel Greenfeld
@pydanny
Python Worst Practice
‘Magical configuration code’
INSTALLED_APPS += [p for p in os.listdir(BASE) if os.path.isdir(p)]
MIDDLEWARE_CLASSES = [...]
def callback(arg, dirname, fnames):
if 'middleware.py' in fnames:
m = '%s.middleware' % os.path.split(dirname)[-1]
MIDDLEWARE_CLASSES.append(m)
urlpatterns = patterns('', ...)
for app in settings.INSTALLED_APPS:
if not app.startswith('django'):
p = url('^%s/' % app, include('%s.urls') % app)
urlpatterns += patterns('', p)
Ugh.
http://www.slideshare.net/jacobian/the-best-and-worst-of-django
47. Daniel Greenfeld
@pydanny
Fixed Python Practice
urlpatterns = patterns("",
PREREQ_APPS = [
# Django url(r"^$", homepage, name="home"),
"django.contrib.admin", url(r"^accounts/", include("accounts.urls")),
"django.contrib.auth", url(r"^admin/", include(admin.site.urls)),
"django.contrib.contenttypes", url(r"^about/", include("about.urls")),
"django.contrib.sessions", url(r"^profiles/", include("profiles.urls")),
"django.contrib.sites", url(r"^notices/", include("notification.urls")),
"django.contrib.messages", ...
"django.contrib.humanize", MIDDLEWARE_CLASSES = [
)
"django.contrib.flatpages", "django.middleware.common.CommonMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
# external "django.middleware.csrf.CsrfViewMiddleware",
"notification", # must be first "django.contrib.auth.middleware.AuthenticationMiddleware",
"staticfiles", "reversion.middleware.RevisionMiddleware",
"uni_form", "django.contrib.messages.middleware.MessageMiddleware",
... ...
] ]
Explicit is better
This isn’t that much typing, is it?
then Implicit
48. Daniel Greenfeld
@pydanny
Fixed Python Practice
urlpatterns = patterns("",
PREREQ_APPS = [
# Django url(r"^$", homepage, name="home"),
"django.contrib.admin", url(r"^accounts/", include("accounts.urls")),
"django.contrib.auth", url(r"^admin/", include(admin.site.urls)),
"django.contrib.contenttypes", url(r"^about/", include("about.urls")),
"django.contrib.sessions", url(r"^profiles/", include("profiles.urls")),
"django.contrib.sites", url(r"^notices/", include("notification.urls")),
"django.contrib.messages", ...
"django.contrib.humanize", MIDDLEWARE_CLASSES = [
)
"django.contrib.flatpages", "django.middleware.common.CommonMiddleware",
"django.contrib.sessions.middleware.SessionMiddleware",
# external "django.middleware.csrf.CsrfViewMiddleware",
"notification", # must be first "django.contrib.auth.middleware.AuthenticationMiddleware",
"staticfiles", "reversion.middleware.RevisionMiddleware",
"uni_form", "django.contrib.messages.middleware.MessageMiddleware",
... ...
] ]
Python’s design is predicated on the proposition that
code is more often read than written.
http://www.slideshare.net/jacobian/the-best-and-worst-of-django/44
49. Daniel Greenfeld
@pydanny
Fixed Python Practice
Use a config file
spam = "eggs"
[actions]
call_view = com.pydanny.nextSlide
Read up on config parser
http://docs.python.org/library/configparser.html
50. Daniel Greenfeld
@pydanny
Side-by-side comparison
Worst Practice Fixed Practice
XML simple python files
logic heavy python config (.cfg) files
52. Daniel Greenfeld
@pydanny
Python Worst Practice
Bad docstrings
class Pythonista(): # Old style class!
""" This class represents a Python programmer """
def code(self):
"""Write some code """
code, inspiration = Code(), Inspiration()
for hour in Effort():
try:
code += hour + inspiraion
except CurseWorthyBug:
...
• Do really obvious objects require doc strings?
• Complex methods require more than docstrings!
53. Daniel Greenfeld
@pydanny
Fixed Python Practice
class Pythonista(object):
def code(self):
""" Writes code following these steps
1. Create a space for coding
2. Get some inspiration
3. Loop through some hours of effort
Spend a 4. Write some code
few minutes 5. Pull out hair cause of bugs
"""
documenting code = Code()
the critical inspiration = Inspiration()
for hour in Effort():
stuff, okay? try:
code += hour + inspiraion
except CurseWorthyBug:
...
54. Daniel Greenfeld
@pydanny
Side-by-side comparison
Worst Practice Fixed Practice
class Pythonista(): # Old style class! class Pythonista(object):
""" This class represents a Python programmer """
def code(self):
def code(self): """ Writes code following these steps
"""Write some code """ 1. Create a space for coding
code, inspiration = Code(), Inspiration() 2. Get some inspiration
for hour in Effort(): 3. Loop through some hours of effort
try: 4. Write some code
code += hour + inspiraion 5. Pull out hair cause of bugs
except CurseWorthyBug: """
... code = Code()
inspiration = Inspiration()
for hour in Effort():
try:
code += hour + inspiraion
except CurseWorthyBug:
...
55. Daniel Greenfeld
@pydanny
Python Worst Practice
Using a wiki for project documentation
“Wikis are where project documentation goes to die”
Jacob Kaplan-Moss
• Generally not version controlled
• Backups? Mirrors?
• Editing via the web? Ugh.
• No pull requests - smaller group of contributors
56. Daniel Greenfeld
@pydanny
Fixed Python Practice
• Use Restructured Text
• Use Sphinx
• Host on http://readthedocs.org
57. Daniel Greenfeld
@pydanny
Side-by-side comparison
Worst Practice Fixed Practice
58. Daniel Greenfeld
@pydanny
Python Worst Practice
>>> import that
The Anti-Zen of Python, by Daniel Greenfeld
Ugly is better than beautiful.
Implicit is better than explicit.
Complicated is better than complex.
Complex is better than simple.
Nested is better than flat.
Dense is better than sparse.
Line code counts.
Special cases are special enough to break the rules.
Although purity beats practicality.
Errors should always pass silently.
Spelchek iz fur loosers.
In the face of explicity, succumb to the temptation to guess.
There should be many ways to do it.
Because only a tiny minority of us are Dutch.
Later is the best time to fix something.
If the implementation is hard to explain, it's a good sell.
If the implementation is easy to explain, it won't take enough time to do.
Namespaces are too hard, just use import *!
http://pypi.python.org/pypi/that
59. Daniel Greenfeld
@pydanny
Fixed Python Practice
>>> import this
The Zen of Python, by Tim Peters
Beautiful is better than ugly.
Explicit is better than implicit.
Simple is better than complex.
Complex is better than complicated.
Flat is better than nested.
Sparse is better than dense.
Readability counts.
Special cases aren't special enough to break the rules.
Although practicality beats purity.
Errors should never pass silently.
Unless explicitly silenced.
In the face of ambiguity, refuse the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
Although that way may not be obvious at first unless you're Dutch.
Now is better than never.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it may be a good idea.
Namespaces are one honking great idea -- let's do more of those!
Core Python
60. Daniel Greenfeld
@pydanny
Side-by-side comparison
Worst Practice Fixed Practice
>>> import this
>>> import that
The Zen of Python, by Tim Peters
The Anti-Zen of Python, by Daniel Greenfeld
Beautiful is better than ugly.
Ugly is better than beautiful.
Explicit is better than implicit.
Implicit is better than explicit.
Simple is better than complex.
Complicated is better than complex.
Complex is better than complicated.
Complex is better than simple.
Flat is better than nested.
Nested is better than flat.
Sparse is better than dense.
Dense is better than sparse.
Readability counts.
Line code counts.
Special cases aren't special enough to break the rules.
Special cases are special enough to break the rules.
Although practicality beats purity.
Although purity beats practicality.
Errors should never pass silently.
Errors should always pass silently.
Unless explicitly silenced.
Spelchek iz fur loosers.
In the face of ambiguity, refuse the temptation to guess.
In the face of explicity, succumb to the temptation to guess.
There should be one-- and preferably only one --obvious way to do it.
There should be many ways to do it.
Although that way may not be obvious at first unless you're Dutch.
Because only a tiny minority of us are Dutch.
Now is better than never.
Later is the best time to fix something.
Although never is often better than *right* now.
If the implementation is hard to explain, it's a good sell.
If the implementation is hard to explain, it's a bad idea.
If the implementation is easy to explain, it won't take enough time to do.
If the implementation is easy to explain, it may be a good idea.
Namespaces are too hard, just use import *!
Namespaces are one honking great idea -- let's do more of those!