#pycon
Explore tagged Tumblr posts
Text
Py in the Bunny Suit 😌
#pycon#py con#oc#suggestive#suggestive art#robot girl#robotgirl#oml why did i make her so big#controller girl#ccu#comicoal#thecomicoalman
57 notes
·
View notes
Note
how did you get into game writing and VNs and such?? i did one freelance job a while back and loved it but since then its been so hard to get into the industry…. i keep getting rejected despite having writing experience/publication in other areas 😭
(omg I didn't realize I have a bunch of messages in my inbox oops) Unfortunately, my game industry work that pays the bills is mostly as QA director, for which we are contracted by other studios. I do writing for our own studio, but I tend to not pursue contract work for writing because I don't want the creative pressure. (Though I was spontaneously offered work on that by another studio recently, so who knows, maybe I'll cave XD) But I will tell you what I tell people who ask me how to get into the games industry. Sorry if you already know some of this, I can't tell from your profile how much experience you already have in the industry! >.< 1. Build a portfolio of game work. You can do this by participating in game jams, itch.io has tons of them running all the time. If you can find in-person game jams (such as the Global Game Jam), even better! They'll help you build connections. If you can show you have strong skills in branching narrative, that's a massive plus. (yeeeeah, this involves basically doing a lot of unpaid work in your free time. but hey, nobody else is getting paid for it either! game dev notoriously pays like shit anyway. XDDD as the joke goes, if we wanted to make money, we'd work in software dev.) 2. Go to where the game developers are. In person. I can't stress this enough. If you want work in the games industry, the best/easiest/quickest way to do it is to meet devs in person. Some people may argue this is not necessary and that you can find work online--in my opinion, those people are either very lucky or very hopeful. You can maybe find some work by hanging out in game dev spaces online, but from personal experience, every client our studio has EVER HAD was either someone we met in person or someone we were introduced to through someone we met in person. Every single one. Here's a list of ideas of places to meet developers: - IGDA meetups, see if there's a chapter in your area. (Or if there isn't and you have the time and ambition, maybe you could start one!) - Local non-IGDA dev groups, you can sometimes find these through Meetup or Facebook - If there are colleges in your area that offer game dev degrees, you could try asking their professors if they know of any local events - See if there are any local game studios in your area that would be able to point you toward the community. Game dev studios aren't just in big cities!! It's not necessarily comprehensive, but you can check out https://gamecompanies.com/map - Game conventions/expos such as PAX - Game developer conferences/events, such as GDC or language/engine-specific conferences such as PyCon (GDC is WAY more worth it than PAX, but extremely expensive. I don't advise going to either until you have a solid game plan of what you're looking for there. There are also organizations that are willing to sponsor people with less means and underrepresented perspectives to attend GDC, so make sure to investigate that!) (And if you do go to a major event like PAX or GDC, make sure to google the afterparties list) And final protip for attending any sort of in-person event: We don't use the word 'networking'. It is a cursed word. We are not networking. We're meeting new friends and like-minded creators. <3
#indie games#game development#writing advice#writing#writeblr#writers on tumblr#writerscommunity#I have to add the networking thing because I have SEEN PEOPLE DO THIS and it causes psychic damage to everyone in the vicinity
13 notes
·
View notes
Text
How do I learn Python in depth?
Improving Your Python Skills
Writing Python Programs Basics: Practice the basics solidly.
Syntax and Semantics: Make sure you are very strong in variables, data types, control flow, functions, and object-oriented programming.
Data Structures: Be able to work with lists, tuples, dictionaries, and sets, and know when to use which.
Modules and Packages: Study how to import and use built-in and third-party modules.
Advanced Concepts
Generators and Iterators: Know how to develop efficient iterators and generators for memory-efficient code.
Decorators: Learn how to dynamically alter functions using decorators.
Metaclasses: Understand how classes are created and can be customized.
Context Managers: Understand how contexts work with statements.
Project Practice
Personal Projects: You will work on projects that you want to, whether building a web application, data analysis tool, or a game.
Contributing to Open Source: Contribute to open-source projects in order to learn from senior developers. Get exposed to real-life code.
Online Challenges: Take part in coding challenges on HackerRank, LeetCode, or Project Euler.
Learn Various Libraries and Frameworks
Scientific Computing: NumPy, SciPy, Pandas
Data Visualization: Matplotlib, Seaborn
Machine Learning: Scikit-learn, TensorFlow, PyTorch
Web Development: Django, Flask
Data Analysis: Dask, Airflow
Read Pythonic Code
Open Source Projects: Study the source code of a few popular Python projects. Go through their best practices and idiomatic Python.
Books and Tutorials: Read all the code examples in books and tutorials on Python.
Conferences and Workshops
Attend conferences and workshops that will help you further your skills in Python. PyCon is an annual Python conference that includes talks, workshops, and even networking opportunities. Local meetups will let you connect with other Python developers in your area.
Learn Continuously
Follow Blogs and Podcasts: Keep reading blogs and listening to podcasts that will keep you updated with the latest trends and developments taking place within the Python community.
Online Courses: Advanced understanding in Python can be acquired by taking online courses on the subject.
Try It Yourself: Trying new techniques and libraries expands one's knowledge.
Other Recommendations
Readable-Clean Code: For code writing, it's essential to follow the style guide in Python, PEP
Naming your variables and functions as close to their utilization as possible is also recommended.
Test Your Code: Unit tests will help in establishing the correctness of your code.
Coding with Others: Doing pair programming and code reviews would provide you with experience from other coders.
You are not Afraid to Ask for Help: Never hesitate to ask for help when things are beyond your hand-on areas, be it online communities or mentors.
These steps, along with consistent practice, will help you become proficient in Python development and open a wide range of possibilities in your career.
2 notes
·
View notes
Text
Where to Find the Best Django Developers for Your Startup

Django is a powerful and versatile web framework for startups and SaaS companies that are considering building scalable, secure, and high-performing applications. Whether it’s the development of MVP or a full-stack product, the right Django developers for hire are essential in ensuring smooth backend functionality.
To hire top talent you must know the right places to look for as it can make a substantial difference. As a SaaS company where agile development cycle and seamless integration are pertinent, Django offers the flexibility needed to scale your project.
Let’s look at the top platforms that you can consider to hire backend developers with Django expertise.
Top Platforms and Strategies to Hire Skilled Django Developers for Your Startup
Uplers - A Trusted Hiring platform
Uplers is the largest hiring platform that connects SaaS businesses with top 3.5% talent from India. By using AI and human evaluation this platform shortlists talent profiles from its 1.5M+ network and sends them in your inbox within 48 hours.
By leveraging Uplers you can streamline your hiring process:
With access to highly skilled professionals from India.
Lifetime free talent replacement policy.
Up to 40% cost-savings with hassle-free hiring.
Reliable solution for hiring within your budget with uncompromised talent quality.
Freelance platforms
For startups that want temporary or project-based Django knowledge, freelance websites are a great choice. The following are some of the best places to hire Django developers:
An extensive network of qualified developers may be found on Upwork, a reliable marketplace.
Toptal gives you access to elite, pre-screened developers.
Fiverr is a fantastic choice for small projects and fast solutions.
If you need to hire backend developers for specific features or bug fixes without long-term commitments, freelancers are especially helpful.
Tech job boards
If you are searching for full-time developers, job boards offer you access to applicants who are actively looking for work. Here are a few of the top platforms that you can consider:
LinkedIn Jobs is a fantastic resource for networking and locating seasoned Django experts.
One of the biggest employment boards for Django developer jobs is Indeed.
Developer communities and forums
Numerous seasoned Django developers participate in developer groups and contribute to open-source projects. As a startup you can find and hire top Django developers by exploring:
GitHub where developers display their work and coding abilities.
Stack Overflow is a site where developers show off their knowledge by resolving technical problems.
Reddit is a forum where Django experts discuss projects, trends, and job openings.
Employing developers from these networks guarantees that SaaS organizations remain current with emerging technology.
Django development agencies
Hiring through a development business that specializes in Django can be a fantastic choice if you like working with an organized team. Among the top agencies are:
BairesDev that gives SaaS businesses and startups access to scalable development teams.
Turing is an expert if you want to hire web developers remotely for tech roles.
Networking events and hackathons
Hackathons, tech meetups, and Django conferences are great venues to network with seasoned developers. Businesses can locate enthusiastic experts who are actively involved in the development community at events like DjangoCon and PyCon.
Closing Thoughts
Therefore, as SaaS businesses and startups there are numerous trustworthy choices available to hire Django developers. Selecting the appropriate platform guarantees you get top-notch talent, whether you need developers for temporary projects or as a full-time team member. Employing qualified Django specialists is crucial for your SaaS business to create safe, effective, and scalable apps.
0 notes
Video
youtube
Data Science Best Practices with pandas (PyCon 2019)
0 notes
Text
Why Python's the Best Choice for Beginners
Python has quickly become one of the most popular programming languages in the world, and for good reason. Whether you’re just starting out in coding or looking to expand your programming skills, Python offers a friendly and accessible learning curve. In this article, we will explore why Python Coures is often considered the best choice for beginners, and we will back up this claim with facts and real-world applications.

Brief Overview of Python
Python is an open-source, high-level programming language that was created by Guido van Rossum and first released in 1991. Known for its simple syntax and readability, Python was designed with the goal of making programming easier for developers. Its versatility and ease of use have made it a top choice for both novice and experienced programmers.
Why Learning Python is Important for Beginners
For anyone new to programming, Python presents a gentle introduction to the world of coding. Its simplicity allows beginners to focus on learning programming concepts without getting bogged down by complex syntax rules, making it ideal for those just starting their coding journey.
2. Simple and Readable Syntax
Python's Clean and Intuitive Code
One of Python's standout features is its readable and clean syntax. Unlike many programming languages, Python uses English-like statements and does not require complex punctuation or braces to define blocks of code. This makes Python far easier to read and write, especially for beginners who may feel overwhelmed by more verbose languages like C++ or Java.
Easier to Learn Than Other Programming Languages
Python's straightforward syntax reduces the cognitive load on beginners, enabling them to write and understand code more quickly. A study by the TIOBE Index of Programming Languages shows that Python is one of the fastest-growing languages, primarily due to its beginner-friendly nature.
Programming Language
Syntax Difficulty (1 = Easy, 5 = Hard)
Python 1
Java 3
C++ 4
JavaScript 2
3. Huge Community and Support
Access to Extensive Learning Resources
One of the major advantages of learning Python is the vast support network available. Python has an enormous global community of developers, educators, and enthusiasts who continuously contribute tutorials, forums, and libraries. Websites like Stack Overflow, Reddit, and Python's official documentation provide invaluable help to beginners at any stage of their learning journey.
Thriving Python Community for Beginners
The Python Software Foundation (PSF) supports this community through conferences like PyCon and countless online meetups and webinars. Beginner-friendly events and discussions ensure that newcomers to the language never feel isolated, and they can always find guidance when needed.
4. Versatility Across Different Domains
Python in Web Development
Python is widely used in web development, thanks to powerful frameworks like Django and Flask. These frameworks allow developers to build complex websites and web applications quickly and efficiently. Django, for example, comes with many built-in features that simplify security, database management, and URL routing, all while being easy for beginners to understand.
Python in Data Science and Machine Learning
Python is also the go-to language for data science and machine learning, two of the fastest-growing fields in technology. Libraries like NumPy, pandas, and TensorFlow make it easier to manipulate data, create predictive models, and analyze large datasets. Python's simplicity makes it particularly appealing for those looking to break into these fields without first mastering complicated programming languages.
Python in Automation and Scripting
Python’s ease of use makes it an excellent choice for automation and scripting tasks. From automating simple repetitive tasks to writing complex scripts for data scraping, Python has many built-in tools and libraries that allow beginners to automate a variety of workflows with minimal code.
5. Strong Standard Library and Frameworks
Pre-built Tools to Speed Up Development
Python comes with a powerful standard library that includes modules for handling everything from file input/output to working with regular expressions. These modules allow developers to accomplish a wide range of tasks without needing to write code from scratch. This not only saves time but also enhances learning by giving beginners a chance to explore practical coding solutions.
Popular Libraries Like NumPy, Pandas, Flask, and Django
In addition to the standard library, Python has a rich ecosystem of third-party libraries that extend its capabilities. For example, NumPy and pandas are widely used in data analysis, while Flask and Django are popular choices for web development. Using these libraries, beginners can learn and build real-world applications without getting overwhelmed by complex implementation details.
6. Cross-Platform Compatibility
Writing Code Once, Running It Anywhere
Python is a cross-platform language, meaning that Python code can be written on one operating system (e.g., Windows) and run on another (e.g., macOS or Linux) without modification. This feature makes Python an attractive choice for developers who need to deploy their applications across different platforms.
Python’s Compatibility with Windows, macOS, and Linux
Whether you’re using Windows, macOS, or Linux, Python provides excellent compatibility. Beginners don’t need to worry about complex setup processes or compatibility issues when writing Python code, making it easier to focus on learning rather than troubleshooting.
7. Beginner-Friendly IDEs and Tools
Easy-to-Use Integrated Development Environments (IDEs)
Python has a range of beginner-friendly integrated development environments (IDEs) that simplify the process of writing, debugging, and running code. IDEs like PyCharm, Visual Studio Code, and Thonny provide intuitive interfaces and helpful features like syntax highlighting and autocompletion, making coding less daunting for beginners.
Tools That Make Python Development Efficient for Beginners
In addition to IDEs, Python comes with useful tools like Jupyter Notebooks, which allow beginners to interactively write and test code. Jupyter Notebooks are widely used in data science for their ability to combine code and explanatory text in one document, making it easy for beginners to experiment and learn.
8. Growing Job Market and Career Opportunities
Demand for Python Developers in Various Industries
Python is one of the most in-demand programming languages in the job market. According to the 2023 Stack Overflow Developer Survey, Python is among the top languages most used by developers and also ranks highly in terms of job demand. Its applicability across multiple domains—such as web development, data science, automation, and AI—means that Python developers have access to a broad range of career opportunities.
Python’s Role in Emerging Technologies
As fields like artificial intelligence, machine learning, and data science continue to grow, Python's role in driving these technologies forward is more crucial than ever. This growing importance translates into a high demand for Python-skilled professionals. Beginners who master Python today will be well-positioned for future career prospects in cutting-edge fields.
9. Conclusion
Recap: Why Python is Perfect for New Programmers
Python’s simple syntax, strong community support, versatility across domains, and cross-platform compatibility make it the ideal language for beginners. It allows new programmers to dive into coding quickly without feeling overwhelmed, offering a path to real-world applications and career opportunities.
Encouragement to Get Started with Python
If you’re just starting your coding journey, there’s no better time to begin learning Python. With its beginner-friendly nature and broad applicability in various industries, Python will not only set you up for success but also provide a foundation for more advanced programming concepts down the line. So, take the first step today—your future self will thank you!
0 notes
Quote
@python_bokume2PyCon JPの技術に対する不正の告発、及びに技術者と大衆に対しての警鐘PythonPyConJP技術者倫理科学論Last updated at 2024-09-22Posted at 2024-09-22 概要 本文章は、一般社団法人PyCon JP Associationが主催したPyCon APAC 2023の開催に際し、そのプロポーザル選考過程において行われていた不正行為の告発を目的とするものです。 本文章が対象とする読者は技術者、及び、公衆です。技術者は技術『愛好家』との付き合い方について一考をするべきであり、公衆は「専門家ではないにも関わらず技術の専門家のフリをする不正な愛好家」に対して無自覚であるべきではない、という警鐘を鳴らすため、及びに、一般社団法人PyCon JP Associationの公衆に対する不正を告発するため、本文章を公開します。 本文章は、Qiitaが目指す、学びのある情報を技術者に共有することで、よりよい技術者コミュニティの形成を目指す内容であるため、Qiitaのガイドラインに沿った形式でQiita.com上で公開します。 告発する内容 PyCon APAC 2023の準備活動中に発生した一連の事案 公益性を標榜する当該団体の活動における公益性の欠如の指摘 「技術愛好家」を名乗る人物らによる不正行為の実態 用語解説 PyCon APAC 2023について PyCon APACとは、一般社団法人PyCon JP Associationが2011年以降、毎年開催しているPyCon JPを、2023年度にアジア規模の国際カンファレンスとして発展させたイベント。実質的には、例年開催されてきたPyCon JPと同じものである。 PyCon について 「PyCon」は、2000年代に米国でPythonの開発者が言語仕様などの解説を行うイベントとして始まりました。Pythonの世界的な普及に伴い、各国でローカル版が開催されるようになり、日本では一般社団法人PyCon JP Associationが主催し、日本ローカル版のPyCon JPが2011年から毎年開催されている。 PyCon JPについて 主催団体の説明は以下の通りである。 『Python ユーザが集まり、Python や Python を使ったソフトウェアについて情報交換、交流をするためのカンファレンスです。PyCon JP の開催を通じて、Python の使い手が一堂に集まり、Python にまつわる様々な分野の知識や情報を交換し、新たな友達やコミュニティとのつながり、仕事やビジネスチャンスを増やせる場所とすることが目標です。』 PyCon JPのイベント自体は登壇発表が中心である。登壇内容は事前に応募された「プロポーザル」(登壇企画案)の中から、審査基準に基づいた選考が行われ、採択が決定すると主催団体より発表されている。イベント当日は、運営団体が会場をレンタルし、選考を通過した登壇者が発表を行う。一般参加者は12,000円から18,000円の参加費を���払い、それを聴講する。 一般社団法人PyCon JP Associationの関係者は、PyCon JPやその参加者を「Python愛好家の集まり」と表現している。(参考: https://x.com/pyconjapan/status/1802658699044892805) 「カンファレンス」の呼称について 一般社団法人PyCon JP Associationは、PyCon JPを「カンファレンス」と呼称している。一般的に、カンファレンスは専門家が集まり情報交換を行う公共の場を指し、技術カンファレンスや学術カンファレンスなどの種類がある。ただし、PyCon JP自体は「技術カンファレンス」とは明言してない。(B社の関連企業などはPyCon JPを「Pythonの技術カンファレンス」と形容しているが、これはPyCon JP自身の声明なのかは不明) 審査について 2023年のPyCon APACでは、プロポーザルに232件の応募があり、採択の競争率は約5倍となった。そのため、査読プロセスによる厳格な審査が行われた。査読は2023年5月31日から7月3日にかけて実施され、7月9日に採択会議が開催された。ここで仮採択が決まり、その後、一般社団法人PyCon JP Associationの関係者による調整を経て、本採択されるプロポーザルが決定した。 査読基準は以下で確認することができます。 https://web.archive.org/web/20240919180342/https://pyconjp.blogspot.com/2023/05/pyconapac2023-review-points-ja.html 審査項目として、7つの評価指標が主催団体のメンバーから提示されていた。7つの内容は重複しており、4項目が「初心者向けであること」と同義で、残りの3項目が「予稿の内容を査読者が読みやすいこと」(タイムスケジュール記載の有無)と解釈されていました。 略称について 以降、本文章では以下の略称を用います。 一般社団法人PyCon JP Association を PyConJPとし PyCon APAC 2023 を APAC とし PyCon JPの代表理事 を A氏 とし A氏が取締役を務める企業 を B社 とし PyCon JPの運営メンバー、APACの副座長、並びにプロポーザル審査の責任者を C氏 とする PyCon JPの主催団体は登壇企画案を「プロポーザル」と呼称してるが、これは技術者にとって誤解を招く表現であるため、本文章では実際の発言を除き、「プロポーザル」を「予稿」と表記する。 一連の不正の概要と時系列 私は、プロポーザルの査読者としてPyCon APAC 2023の予稿の査読と予稿の採択会議とに参加しました。その過程で発生した一連の不正行為の事案を時系列順に以下の3つに分類する ①. 2023年6月9日:査読審査の責任者による機密情報の漏洩 査読者が適切な審査の継続のため査読審査の責任者に送付した、秘匿性の高い相談内容が、本来共有されるべきではないにも関わらず、団体全体に共有された事案が発生した。 ②. 2023年6月9日~7月3日:不適切な評価基準と異議申立ての拒否 査読期間中、不適切な評価基準や、特定の予稿に対する0点評価の連投が行わた。これに対し、査読者から異議が申し立てられたが、責任者は拒否した。 ③. 2023年7月9日:審査プロセスの不履行と恣意的な採択 採択会議において、適切な審査プロセスが履行されず、恣意的な予稿採択が公然と��われた。 ①. 査読審査の責任者による機密情報の漏洩 時系列順の概要 予稿の募集:B社の関係者から、B社の本とサービスの販促を目的とした予稿が提出される 2023年5月31日:予稿の査読開始 2023年6月6日:査読者によるC氏への相談 査読者が評価を開始し、同日、査読審査の責任者であるC氏に対して「B社の予稿に、内容を批判するコメントを書くべきか迷っている」という趣旨の質問をSlackのダイレクトメッセージ機能で行う 2023年6月9日:個人宛相談内容の団体全体への共有 C氏への相談内容が、事前に通知されることなく、B社の取締役であるA氏を含むPyCon JPの関係者全体に、質問者である査読者の名前を含めて共有される 2023年6月9日:査読者が考える不採択に値する理由をコメントとして記載する C氏による秘密の暴露によって、穏当な解決への道が閉ざされたため、やむを得ず、B社の予稿に対しネガティブな意見をコメントする 2023年7月9日:採択会議にてA氏の前でB社の予稿が不採択となる 2023年7月9日:採択会議で口頭恐喝が行われる B社からの予稿に対してネガティブな意見を書いた査読者が、採択会議にてB社の取締役であるA氏から口頭で恫喝を受ける 詳細 1. 予稿査読における不審な採択評価 予稿の査読は5月31日から7月4日までの期間で開始され、私は6月6日に着手しました。査読システム上では、予稿に通し番号が割り振られ、若い番号順に自動表示されるようになっていました。私が最初に評価した最も若い番号の予稿には、既に3人の査読者が評価を付けていました。 この予稿はB社の関係者から提出されたもので、その内容は次の通りでした。 APACの初日の他の登壇をキャンセルさせ、イベント会場を丸一日B社が占有する B社の社員が講師として、B社が出版している本の解説、本の争奪じゃんけん大会、サイン会、書籍販売を行う B社が連携しているウェブサービスと資格試験の宣伝を行う 私は「これは明らかに販促目的であり、コミュニティに貢献するものではない」とコメントを書き「不採択」の評価を下しました。PyConJPは、Pythonに関する投稿者の知見を共有する場であり、企業の宣伝の場ではないと考えたからです。 他の査読者も同様に不採択に票を入れているだろうと考えていましたが、実際には他の査読者は「採択」に票を入れていました。彼らの採択理由のコメントは以下の通りでした。 「書籍をベースに教えられるので内容としてはまとまっていそう 私は関係者なので採択にする」(A氏) 「内容が非常に具体的でよい」 「よく書けたプロポーザルで評価できる」 これらのコメントと、明らかに販促目的である予稿が採択されている事実は、査読過程における公正性と透明性に疑問を抱きました。 2. 予稿審査の責任者への問い合わせ 他の査読者が本予稿の不採択理由を十分に理解していない可能性があるため、不採択理由と採択した場合の影響について詳細な説明を追加すべきか検討いたしました。しかし、かかる行為が他の査読者やPyCon JP関係者との間に���和を生じさせる可能性も懸念されました。 そこで予稿審査担当者C氏に対し、以下の内容をダイレクトメッセージにて問い合わせいたしました。 他の査読者が閲覧可能な状態で、強い主張を含むコメント(例:「これは明らかに販促目的のプレゼンであり、コミュニティに寄与するものではないためStrong Rejectとすべき」)を記載しておりましたが、かかるコメントは他の査読者の意見に影響を与える可能性があるため、今後は控えめな表現に留めるべきでしょうか。 この問い合わせは、事前の認識合わせと価値観の確認を目的として行ったものでした。また、すでに後述する予稿審査プロセスにおける違和感を感じていたため、APACの予稿審査の責任者であるC氏の価値観を把握することも目的の一つでした。 3. 機密性のあるメッセージの漏洩 C氏は、上記ダイレクトメッセージの内容を、私の事前の承諾を得ることなくPyCon JPの全体チャットに転載し、返信を行いました。この行為により、私が特定の予稿に対して抱いた懸念が、他の査読者。及びB社の取締役のA氏を含むPyCon JP関係者全員に共有される結果となりました。 4. 漏洩による影響 後日開催された採択会議の最中、A氏から「人のプロポーザルにふざけた難癖をつけやがって。『採択するべきでない』とは何だ」と口頭で恫喝を受ける事態となりました。 5. ネガティブなコメントを書くに至った経緯と審査に与えた影響 C氏によるダイレクトメッセージの公開を受け、私は後戻りできない状況に追い込まれ、コメント欄でB社の予稿を不採択とすべき理由を詳細に説明するアジテーションを行いました。その結果、A氏を除く他の査読者の採択に対する積極的な意見が消極的なものへと変化していきました。 採択会議当日、B社の予稿審査の際、A氏は「これは自分が企画した内容だ」と繰り返し主張しましたが、他の査読者は反応せず、評価が覆ることはありませんでした。結果としてB社の予稿は不採択となり、初日のイベントはB社単独の宣伝活動にはならず、通常の登壇予稿が採択されました。なお、B社の社員によるサイン会、物販などの企画は会場の一部で行われました。 ②. 不適切な評価基準と異議申立ての拒否 概要 不適切な審査、事前のルールに反する不正な行為、そしてそれらに対する改善提案に対し、PyCon JPのメンバーおよび責任者は対応を放棄した。結果として、歪な審査結果を放置したまま採択会議が実施された。 前提情報 採点基準は0から5で、0は不採択を意味し、採択プロセスから除外される 査読者は0(不採択)をつけた場合は、理由を説明するコメントを記載する必要があった 査読者は他の査読者の採点評価とコメントを閲覧可能だった 以下の画像、予稿審査に際して、査読者が確認を求められた文章の本文になります。 詳細 1. 審査開始と最初の査読審査の改善要求 私は6月9日に審査を始め、約17時間をかけて9割の予稿を審査しました。その後、専門外の分野の予稿は後日個別に精査し、6月前半までに全ての投稿を評価しました。 その際、他の査読者の評価点のつけ方、および、コメントの大半に違和感を覚えたため、①での経験から、明確な主張が必要だと判断し、Slackに以下の改善要求を投稿しました。 この投稿に対し、A氏からは「見ない���うにすればいい」などの返信がありましたが、具体的な対策や該当査読者からの対応はありませんでした。 2. 不正な査読者の登場と二度目の改善要求と改善策の否決に関する対話 日を追うごとにレビュワーは増加しましたが、最終的に日本語で書かれた予稿の大部分を審査したのは、私、A氏、そして私が名前を挙げずに上記の投稿で言及した2名の合計4名で、全体の73%の査読を行いました。 他は後述するPSFメンバーを除くと、数名の査読者が数枚の予稿に「よくわかりませんでした。2(weak reject)です」のようなコメントを残して離脱した程度で、そこに専門的なコメントをする査読者は存在しませんでした。(10~100程度の予稿を評価した査読者も若干名いました) 英語で書かれた予稿には、コメントなしに0と5の評価のみを繰り返す査読者が複数いました。これらの査読者は世界中のPyConに参加し続けている人物であり、その経歴からPSF(Python Software Foundation)のボードメンバーに選出された方々でした。ボードメンバー達は、自分達を含む世界のPyConイベントの常連には5を、そうでない人物の予稿には0を無言で連投していました。 一つの予稿に3人以上が査読を行うことを目標としていましたが、上述の状況の影響で、評価点は内容よりも担当した査読者によって左右される傾向が強くありました。 この状況下での採択方法を確認したところ、査読者の評価の平均点のみを参考にしてPyCon JPの運営メンバーが決定するとのことでした。A氏以外の運営メンバーは予稿審査に一切参加していなかったため、なぜ予稿を読まない審査の部外者に最終決定権があるのかC氏に質問しました。以下はその後のやり取りと回答です。 その後、私はPyCon JPから下記の内容を回答として受け取りました。 この回答により、予稿の内容を読まずに評価の平均点のみで採択を決定することが明確になったため、そのことへの懸念を以下のように表明しました。 続いて、その問題の解決策として、私は少数の予稿にのみ評価をしている査読者と0を連投しているPSFの査読者を除外して平均評価を算出することを提案しました。 その理由として、少数の査読のみによる評価は安定せず、専門性のあるコメントがない場合は除外した方が審査の公平性が高まると主張しました。また、「よくわからなかった」という評価や評価理由のない不当な「0(不採択)」の投票によって採択結果が決まることは許容できないと訴えました。 それに対するA氏とC氏の返答は以下のものでした。 それに対する私の回答は以下のものでした。(その後、実際の歪な状況を示すスクリーンショットを複数投稿しました) 少数の評価のみを行った査読者の取り扱いは、価値観の相違と解釈される余地があるかもしれません。しかし、少なくとも0点評価の連投は、査読プロセスの規定に明確に違反しており、C氏、そしてC氏を監督する立場にあるA氏には、公正な審査を確保するための対策を講じる責任がありました。しかしながら、そのような対策は実施されず、私の提案は却下されました。 3. 歪な査読審査が放置されたまま行われた平均評価点の算出 その結果、応募された232件全ての予稿に対し、概ね4名��評価が付与されましたが、そのうち2名以上の評価に審査基準から逸脱している疑いのあるコメントや評価が含まれているケースが多数見受けられました。にもかかわらず、これらの問題が未解決のまま、採択会議が行われ、平均評価点によって予稿の採択が決まりました。 ③. 審査プロセスの不履行と恣意的な採択 概要 予稿の採択は、内容の評価ではなく、担当者が起案者の所属企業を認識しているか否かで決定された。 A氏は、C氏の予稿を「仲間だから」という理由で、その有害性を認識しながらも強行採決した。 PyCon JP関係者が集まる場で、A氏は公然と恣意的な採択を行った 審査プロセスの説明 2023年7月9日に、採用する登壇企画の仮決定を行う審査会が開催されました。 https://pyconjp-staff.connpass.com/event/288671/ https://x.com/pyconjapan/status/1677977645034930176 審査員は参加し意見を述べる権利があるとされていたため、私も参加しました。 採択会議では、スプレッドシート上に査読者による評価の平均点順に並べられた予稿について、高評価のものから順に仮採択を進めていく形式で進行いたしました。仮採択数が予定数に達した時点で会議は終了となる運びでした。スプレッドシート上には、以下の情報が表示されておりました。 評価点の平均値 評価点の中央値 0点評価の数 5点評価の数 企画名 ジャンル 投稿者名 以下は実際のスプレッドシートの内容です。 同じ体裁のシートがPyCon JP 2024の採択作業の作業写真に写っているのが主催団体の公式ブログの写真から確認できます。 詳細 採択会議では、基本的に評価平均点の高い順に仮採択が行われましたが、以下の例外的手続きがありました。 私の意見表明による採択判断の変更 採択すべきと考える予稿と、採択すべきでないと考える予稿に対し意見を表明しました 投稿者名による採択 投稿者名によって採択を決定する行為が複数回ありました 1. 採択すべき予稿に対する私の意見表明 私が最も強く推したのは、『ハイパーパラメータ最適化フレームワークOptunaの最新機能紹介』でした。この予稿は、私の意見表明によって下位評価から逆転採択に至った唯一のものであり、その詳細な議論を以下に示します。 当該の予稿について私が抱いていた感想 不備や減点要素なし: 内容に不備はなく、減点対象となる要素もありませんでした。 Optuna開発者による解説: Pythonライブラリの開発者自身が、新機能と幅広い活用方法を解説し、Python開発者の作業効率化を促す内容でした。 間口の広さと技術レベルの高さ: 発表される機能はプログラマーの能力を拡張するツールであり、間口が広く、技術レベルも高く、革新性もありました。 幅広いユーザー層への訴求: 技術的な詳細だけでなく、幅広いユーザー層の獲得も目指した内容でした。 以上の点から、私は当該予稿を高く評価しました。技術的な示唆に富む予稿に対して、他の審査員は「初心者向けではない」というコメントとともに低い評価を付与する傾向にありましたが、私はこの予稿に対するそのような評価は不適切であると考え、採択に値するだろうと判断していました。 不採用に至った経緯の確認と不採用の撤回の請求 しかし、スプレッドシート上で確認した��ころ、当該予稿は他の査読者からの評価が極めて低く、自動的に落選する順位にあり、このままでは採択会議において審議される可能性すら低いと考えられました。 採択会議の途上、私はこの予稿を取り上げ、「なぜこの予稿がこれほど低評価で落選予定となっているのでしょうか。私には減点する要素が思い当たりません」と、確認と再評価を要請いたしました。これに対し、予稿の題名と登壇者名のみを確認した、他の査読者およびPyCon JPメンバーからは、以下のような口頭での意見が表明されました。 「この登壇者が所属する(社名)など聞いたこともない。よって、採択するべきではない」 「調べたらこの会社は社員が過去にPyConJPに登壇したことがある。だから二度も採択する必要はない」 「当該ツールはPythonではないため、採択しない」 「この会社名は、SNSで聞いたことがあるかもしれない。採択にする?」(C氏) 結果として、選考責任者であるC氏が起案者の所属する会社の名前を認知していた(あるいは、認知していた可能性があった)という理由により、当該予稿は採択に至りました。 以下のリンク先にイベント当日の登壇内容の動画があります。 https://youtu.be/ttMJCG1ivcE?si=SfObO2wP6MkYFdNw 当該予稿は機械学習関連の予稿として、一般枠での唯一の採択となりました。仮に私が声を上げなかった場合、機械学習関連の応募が一般枠で採択されることはなかったと考えられます。(Optunaは数理最適化計算を行うライブラリであり、厳密には機械学習に分類されないかもしれませんが、PyCon JPではWeb系以外のものは機械学習とみなす傾向がありました) 2. 採択するべきではない予稿に対する私の意見表明 一方、技術者として私が阻止を試みたにもかかわらず、採択に至った予稿も存在します。それは、C氏によって投稿された『Pythonパッケージ管理ツール比較 2023』と『Comparison of Packaging Tools in 2023』です。 C氏の予稿内容の概要 これらの予稿は、主張の内容が完全に同一であり、日本語版の本文は「次のうち、どれが一番いい選択でしょうか? poetry, pipenv, pdm, hatch pip-tools, それとも pip (+ venv) だけ?」という問いかけから始まります。A氏が各ツールでDjangoをインストールした経験に基づき、各ツールの長所と短所を「本音をポロリ」しながら3分で説明し、最後の一番優れたツールを決定する、という内容でした。 他の査読者の評価点は、PSFメンバーからのものを含め非常に高いものでしたが、私は技術者としてこの内容に賛同できず、採択すべきでないと強く主張しました。その主張に対し異議が出されたため、私は以下の点を順に主張し、反対の立場を明確にしました。 C氏の予稿に対する私の意見 技術に関連するトークではない: 「これは技術に関連する内容ではない。技術に関連する私的な経験の比較であって、カテゴリーは技術に関わるものではなく、知見や認識を深めることには繋がらない」 根拠のない主観的評価: 「『○○がお勧め』といった個人的な意見ではなく、アルゴリズム、実装、理論に基づいた客観的な説明が必要だが、それは3分では不可能であり、登壇者にもその知見があるとは��えない」 パッケージマネージャーの役割の誤解: 「パッケージマネージャーの役割は、Djangoの高速インストールではなく、パッケージ管理全般に渡る。この比較は、パッケージのインストールという限定的な側面にのみ焦点を当てており不適切。またパッケージマネージャーのインストールの手続きはダウンロードだけではなく複雑な側面もあるが投稿者はまだそれに気づいていない」 技術コミュニティへの悪影響: 「このような無意味な比較は、Pythonコミュニティにとって無益どこ���か有害である。特定個人の貢献度が高いPythonのパッケージマネージャー開発において、技術的な誤解や偏見に基づく誹謗中傷が、開発者の離脱や開発停滞を招いた歴史的経緯がある。『このパッケージマネージャーにはこんな欠点がある』ではなく、技術に対する誤った認識に基づく情報の拡散、開発者に対する誹謗行為がパッケージマネージャーの欠点を本当に生じさせる原因となってきた、が真実である」 より適切な技術関連予稿の提案: 「パッケージマネージャーの実装に関する他のプロポーザルはすべて「マニアックな内容だから0(Reject)」と評価され不採択となっている。技術に精通しているこれらの投稿者からの予稿を採択するべきだ」 私の主張に対する反応 私の主張に対する反応は以下の通りでした。 「話が長い。もう黙れ。お前のせいで終わるのが遅くなる」 「PythonはDjangoだから、Djangoのインストールでパッケージマネージャーを比較するのは正しい」 「全くこの内容に悪いところがあるようには思えない」 「英語版なら日本語版と違って表現に強い癖がないから採択できる」 「人のプロポーザルにふざけた難癖をつけやがって。何が採択するべきでないだ」(A氏) 「PyConに提出されるプロポーザルは有害ではありません。何故ならPyConは技術者を大事にしていて、催要項にもそう書いてあります」(C氏) 「悪いところがない」という意見に対しては、私は強く反対し、有害な内容であることを詳細に説明し続けました。結果として、他の参加者の一部も有害であることに同意しました。 A氏による強制採択 しかし、主催団体のトップであるA氏から「C氏は私たちの仲間で『良い人』であるため採択する」という声明が出て、採択に至りました。私の役割は、技術的な観点から予稿の有害性を運営メンバーに伝えることでしたので、PyCon JPが保留の決定をしたことに対して反論はしませんでしたし、する立場でもありませんでした。 当日のC氏の発表内容はこちらから確認できます。 https://2023-apac.pycon.jp/timetable?id=XEGZUD 3. 投稿者名による採択 次に明確に恣意的な採択が行われたのは、投稿者名によるものでした。 平均評価が低かったことから不採択リストに入っていたにも関わらず、PyCon JP運営メンバーにとって「良い人」とされる人物の予稿が、選考過程で複数回選抜され、採択される事例が確認されました。 「良い人」とは、運営メンバー、関係者、運営メンバーの友人、世界のPyConコミュニティにおける著名人、スポンサー関係者などを指すようでした。 A氏は「良い人」を落選者の名簿から見つける度に「危ない危ない。この人は『良い人』だから採択しないと。でも、複数投稿してるけど、どれを採択しようか」と言い、私は査読者として「この人のプロポーザルは根幹の部分で主張内容が間違えているものばかりですが、あえて一つ選ぶとしたらこのプロポーザルなら炎上せずに済むと思います」と���寧に協力する、そのような場面が何度もありました。 恣意的な採択の証拠として、平均評価点が著しく低いにも関わらず、関係者のみが仮採択となった審査会当日のデータの開示が可能です。ただし、下位からの仮採択となったのは、それを行ったPyCon JP運営メンバーに限らないため、ここではデータの提示は控えさせていただきます。 A氏の弁明 A氏は弁明のつもりなのか、その手続きの最中「これはどこもやっていることだから」と口頭で何度も繰り返していました。不正だと認識せずに行っているようではなさそうでしたので、ただの査読者として参加していた私は特に反応しませんでした。 包括 ①②③が選考プロセスに査読者として立ち合い、目撃した査読プロセスにおける一連の不正です。 事例① 事例①において、PyCon JPは内部通報者保護の措置を適切に講じず、権力者による不適切な予稿に対し技術者として正当な懸念を表明した行為が秘匿されませんでした。査読プロセスの責任者により、外部参加者である私の不利な情報や主張が他の関係者全体に共有された結果、私は穏当な手段での意思表示を断念せざるを得なくなりました。自身の安全確保と穏当な手段による解決を諦め、強硬な手段を用いてB社の予稿を不採択に導くという選択に至ったことは、通常のプロセスでは不正を含む予稿を排除できない組織構造であったことを示唆しています。それが原因で、私は権力者であるA氏から恫喝を受ける事態に発展しました。 これらの事実に鑑み、PyCon JPという組織は、技術者が正当な活動を遂行することが極めて困難な環境であると判断せざるを得ません。 事例② 事例②を通じて、PyCon JPの査読プロセスが深刻な欠陥を抱えており、組織として改善する意思がないと判断できます。事前の査読ルールに違反する「無言での0点評価の連投」が横行しているにも関わらず、何ら改善措置が講じられていません。この結果、著しく歪められた査読結果に基づいて平均評価が算出され、最終審査が強行されました。 技術者が技術を正当に評価することは、専門家としての倫理的責務です。技術者としての能力を有しながら、正当な技術的成果を不当に貶める行為は、公衆に対する背信行為であり、断じて許されるものではありません。同様に、技術者が下した正当な評価を不当に無視することも、技術者倫理に反する行為です。 しかしながら、PyCon JPでは、技術に関する予稿が技術的価値とは全く無関係な恣意的な基準で評価され、技術者からの反対意見は黙殺されました。 PyCon JPの技術者ではなく「愛好家」の集団によって行われるものですが、このような組織運営は、技術に対する誠実さや倫理を著しく欠くものであり、PyCon JPは技術者が関与すべき団体ではないと断言せざるを得ません。 事例③ 事例③では、実際の採択審査プロセスに問題があることを関係者自身が認識していながらも、A氏による恣意的な採択が公然と行われました。A氏の行為を制止できる立場にありながら、抗議することなく容認する関係者の姿勢も見られました。 これらの行為は倫理的な問題があるだけでなく、PyCon JPに関わった予稿の査読者、予稿の応募者、参加者、そして技術者、公衆に対する背信行為と言えます。また公益を掲げる非営利団体の代表が、特定個人の利益のために公正な審査を歪め、団体の存在意義を自ら否定する行動を取ったことは極めて深刻な事態であり強い非難に値します。 遺憾の意 なお、本告発に至る前、2024年度の予稿審査開始前に、PyCon JP運営団体に対して事前の警告と改善要求を出しました。しかしながらPyConJP運営者は2024年度のイベント開催に際し、事実を歪曲する行為を継続し、審査プロセスにも抜本的な改善が見られませんでした。そのため、やむを得ずこれらの事実を公表するに至りました。PyCon JP関係者に自浄作用がなかったことは誠に遺憾と言わざるを得ません。
PyCon JPの技術に対する不正の告発、及びに技術者と大衆に対しての警鐘 #Python - Qiita
1 note
·
View note
Text
Blog
ABOUT PYTHON
Python is a high-level, interpreted programming language that has become one of the most popular languages in the world. Created by Guido van Rossum and first released in 1991, Python was designed with an emphasis on code readability and simplicity, making it accessible to beginners while being powerful enough for advanced programmers. Its versatility allows it to be used in a wide array of applications, from web development to data science, machine learning, and automation.
Design Philosophy
Python’s design philosophy emphasizes code readability and simplicity, which is evident in its clean syntax. This approach allows developers to express their ideas clearly and concisely, reducing the cognitive load often associated with more complex programming languages. For instance, Python uses indentation to define code blocks instead of braces or keywords, promoting a uniform coding style. This focus on readability makes Python an ideal language for beginners, as it allows them to grasp programming concepts without getting overwhelmed by syntactical complexity.
Extensive Libraries and Frameworks
In the realm of web development, Python boasts powerful frameworks such as Django and Flask. Django follows the "batteries included" philosophy, offering a comprehensive set of features for building robust web applications. Flask, known for its lightweight and modular design, provides developers with flexibility, allowing them to choose the components they need for their projects. These frameworks facilitate rapid development and help streamline the creation of secure and scalable applications.
Community Support
Another vital aspect of Python’s success is its strong and active community. The Python community is diverse, comprising developers, educators, and enthusiasts who contribute to the language’s growth and development. This supportive environment has led to the creation of a wealth of resources, including tutorials, documentation, and forums. Platforms like Stack Overflow and GitHub allow developers to seek help and share their projects, fostering collaboration and innovation.
Moreover, the community is responsible for organizing numerous conferences, such as PyCon, where enthusiasts gather to share knowledge, discuss new developments, and network. These events contribute to Python’s ongoing evolution, ensuring that it remains relevant in a rapidly changing technological landscape.
Applications Across Domains
In web development, Python is widely used to create dynamic websites and applications. Its integration with front-end technologies like HTML, CSS, and JavaScript allows developers to build full-stack applications efficiently. Furthermore, Python is commonly used for automation tasks, enabling developers to write scripts that automate repetitive tasks, thus improving productivity.
Education and Future Prospects
Python's simplicity has made it a favorite in educational institutions, where it is often the first programming language taught to students. Its clear syntax and readability help students grasp fundamental programming concepts without getting bogged down by complexities. As more schools and universities adopt Python in their curricula, the language's popularity is expected to grow.
Looking to the future, Python's role in emerging fields such as artificial intelligence, data science, and the Internet of Things (IoT) positions it as a crucial skill for the next generation of programmers. Its adaptability and extensive libraries ensure that it will remain relevant as technology continues to evolve.
Conclusion
In summary, Python is a powerful and versatile programming language that has earned its place as one of the leading languages in the tech industry. Its emphasis on readability, extensive libraries, supportive community, and wide-ranging applications make it an excellent choice for developers of all levels. As Python continues to evolve, it is poised to play a significant role in shaping the future of technology and programming.
0 notes
Text
PyCon JP 2023年のやらかしを記録に残しておく
(他のコミュニティやカンファレンスでの再発防止を願って、去年(2023年)のPyCon JPのやらかしを記録に残しておきます。) (なお長い文章が読める人が対象です。長い文章が読めない人は対象読者ではありません。)
2024年9月現在、PyCon JPが不正な審査プロセスをしていたという内部告発がありました。
『PyCon JPの技術に対する不正の告発、並びに技術者と大衆に対しての警鐘』
たいへん話題になったので、この件を知っている方も多いと思います。 PyCon JP、やらかし���したね。
■やらかしは去年もあった
しかしPyCon JPのやらかしは、去年(2023年)もありました。 「PyCon APAC 2023」というイベントで、一般ユーザによるDNSクエリの内容(名前解決したドメイン名)がリアルタイムで公開(可視化)されていたというのです。 もっとわかりやすくいうと、どのWebサイトにアクセスしたかがみんなに見えるようになっていたというのです。 (ただし、「どこに」アクセスしたかは分かっても「誰が」アクセスしたかは分からない。また正確なことをいうと、DNSクエリだけではそこにアクセスしたかどうかまでは断定できないけど、アクセスした可能性はとても高い。)
この件はスラドで記事になってました。概要がわかるので、知らない人は読むといいでしょう。
では、どんな形で公開されていたのでしょうか。 当日ネットワーク作業をした人が書いた記事(の魚拓)があり、そこにスクショが載ってありました。 https://megalodon.jp/2023-1102-1237-05/https://qiita.com:443/engishoma/items/ef8eb2bd52e7910381cc
分かりにくいかもしれませんが、イベント会場に大きなモニターがあり、そこにこんなふうに表示されていたようです。 クエリされたドメイン名が日付や時刻とともに表示されていますね。
(注���この画像自体はイベント当日のものではなく準備中でのスクショだと思われる。一般ユーザのDNSクエリ結果は載ってないはず。雰囲気だけ味わってください。)
なぜ、わざわざこんなことをしたのでしょうか。 先ほどの、当日ネットワーク作業をした人が書いた記事によると、運用上の必要性があってやったわけではなく、「魅せ」や「すげえ感」のためにやったそうです。 記事から引用します。
・DNSのクエリログの可視化 運用の為に用いる監視ではなく、魅せの為の可視化システム。なんかすげえ感を出す。
いわゆる「映え」というやつですね。 インスタ映えを狙ってデザートやドリンクの写真をアップする人たちと同じ思考です。
さて、この件の問題点は5つあります。
通信の秘密を侵している
目的が「魅せ」や「すげえ感」のため
事前にあった外部からの忠告を無視
事務局からの声明文に重要な点が抜けている
問題点を指摘した人をPython関係者が執拗に攻撃
順番に見ていきますが、その前に用語を整理しておきましょう。
PyCon ・・・ Python Conferenceの略称。Python開発本家(Python Software Foundation)が関わっている正式なイベント。毎年アメリカで開催。またEuroPyConやPyCon APACのような地域ごとのイベントもある(主催は別)。
PyCon APAC ・・・ 本家PyConとは別に開催される、アジアパシフィック版のPyCon。アジア各国で持ち回りで開催されており、去年(2023年)は日本で開催された。なお本家からの許可がないと「PyCon」の名を冠したイベントは行えないはず。なので「PyConはPython好きが集まっただけのイベントだし騒ぐようなことではない」といって矛先をずらそうとする意見は無視しよう。
PyCon JP ・・・ 本家PyConともPyCon APACとも別に開催される、日本版PyCon。去年はPyCon APACが日本開催だったのでPyCon JPは開催されず。今年(2024年)はPyCon APACが日本開催ではないので、PyCon JPが開催される。本来はイベント名だけど、PyCon JP関係者のことも含めて「PyCon JP」と呼ぶことがある。
一般社団法人PyCon JP Association ・・・ PyCon JPの主催者(法人)。日本におけるPython界の重鎮が中心メンバー。勘違いしないでほしいが、決して悪徳団体ではない。問題への対応能力が低く悪手ばかり打っているだけ。
それでは用語を整理したところで、問題点を順番に見ていきましょう。
■問題点その1。通信の秘密を侵している
問題点の1つ目は、通信の秘密を侵していることです。 具体的には、「有線電気通信法」という法律(の第9条)の違反だそうです。
法律って言われても、よく分からないですよね。 このへんが参考になりそうです。 https://x.com/ymotongpoo/status/1718813714881925299
このポストのリプライに、説明があります。



法律の条文についてはこちら。 https://x.com/osabori_jp/status/1720392392686416255
また、電気通信事業者以外の者が提供する公衆無線LANサービスについては、有線電気通信部分における通信の秘密は、有線電気通信法(昭和 28 年法律第 96 号)第 9 条及び第 14 条により、無線通信部分における通信の秘密は、電波法(昭和 25 年法律第 131 号)第 59 条、第 109 条及び第 109 条の 2 により保護される。
「無線」LANサービスなのに、「有線電気通信部分における通信の秘密は、有線電気通信法」により保護される、というのが面白いところ(そして分かりにくいところ)です。
(高木浩光先生が解説してるかなと期待したけど、見つかりませんでした。誰か教えて。)
そもそも「通信の秘密を侵す」というのはどういうことでしょうか。 https://x.com/shinyaohnishi/status/1719128837953671606 画像の文字部分。
「秘密を侵す」とは? ・一般に、秘密の「知得」「漏えい」「窃用」のそれぞれが該当。 ・なお、「人手」であろうが、「機械の自動処理」だろうが、「知得」に相当。 ・極論すると、「ルーティングのためにdst IPをルーターがチェックする」ことも通信の秘密の侵害に相当。
DNSクエリを「誰が」行ったかは分からないから個人情報の漏えいではないけど、DNSクエリ結果の内容(と日付と時刻)を公開するのは通信の秘密を侵していることになります。
PyCon JPのネットワーク担当チームはボランティアですが、素人の集団ではありません。 本職がネットワークエンジニアやインフラエンジニアである人たちが何人も参加してますからね。 それでもこのような公開が「通信の秘密を侵すことになるぞ」と事前に気付いた人がいなさそうなんですよ。 ネットワークエンジニアこそ「通信の秘密」に敏感なのかなと思ってましたが、全然違うようです。
参考。

IIJ、言われてるぞ。
■問題点その2。目的が「魅せ」や「すげえ感」のため
問題点の2つ目は、運用上の必要性があって行ったわけではなく、「魅せ」や「すげえ感」のためにやっていたことです。 先ほどの、当日のネットワーク作業を行った人が書いた記事から、再度引用します。
・DNSのクエリログの可視化 運用の為に用いる監視ではなく、魅せの為の可視化システム。なんかすげえ感を出す。
きっと、みんなから「すげえ!」と言われたかったのでしょう。 通信の秘密よりも承認欲求のほうが勝ってしまった感じでしょうか。 ネットワークエンジニアやインフラエンジニアは、普段は表に出ることが少ないため、派手なことをして目立ちたい人には向かない、という重要な教訓が得られます。
(ITエンジニア以外の人向けに説明すると、通信販売やECサイトのカスタマーサポート担当者が、芸能人や有名人のショッピング内容や住所をたまたま知ることができたとして、それを他人にべらべらと得意げに話している様子を想像してみてください。やばさが伝わるといいのですが、業務上知り得た秘密を自らの虚栄心のためにべらべら喋る人をカスタマーサポートにいれるべきではないと思いませんか?)
SNSでは「ネットワーク担当者たちはボランティアでやってるんだから批判するな!」と擁護する人が何人もいます。 しかし、運用上必要なことをしてやらかしたならともかく、「魅せ」や「すげえ感」のために、あるいは承認欲求のためにやらかしたなら、たとえボランティアといえど批判されて当然でしょう。
■問題点その3。事前にあった外部からの忠告を無視
問題点の3つ目は、イベント開催よりも前に「こんなことは止めたほうがよい」という外部からの忠告があったにも関わらず、忠告を無視してDNSクエリ内容が公開(可視化)されたことです。 詳しい経緯はこちら。 https://x.com/mipsparc/status/1763467254925328574
該当箇所を引用します。
改めて経緯を説明させていただきます。最初に情報があったのが、ネットワークチーム(NOC)ボランティアの元友人でした。ダッシュボードで通信を可視化するという話を聞いたので、通信の秘密を犯すから、やめたほうがよいとアドバイスし、元友人もNOC MTGに持ち帰って議題にすると確約してくれました。(ですから、「初手でSNSに晒し上げた」といった批判は的外れです) そして開催日当日にWebで見たのは、現地参加者が繋いでいるフリーWiFiのサブドメイン含むDNSクエリがそのままリアルタイムで表示されている様子でした。そのため、事前指摘が反映されなかったことを残念に思うと同時に、注意喚起を行いました(添付1)PFNのプライベートなSlackのアドレスなど、多数の機微情報が表示されている状態にありまし���。サンプルとして出したPFNの方からは、それは本物で秘密なので消してほしいと連絡を受け削除しました。
つまり、こういうことのようです。
【イベント前】
イベントのネットワーク担当の一人が、「ダッシュボードで通信を可視化する」ことを外部の人に話す。
→ その外部の人が、「通信の秘密を犯すからやめたほうがよい」とネットワーク担当者にアドバイス。
→→ そのネットワーク担当者が、イベント関係者のミーティングに持ち帰って議題にすると確約。
【イベント当日】
DNSクエリ内容が堂々と公開(可視化)される。
→ アドバイスをした外部の人が、注意喚起目的で晒す。
もしかしたら、ネットワーク担当者がミーティングで議題にしなかった可能性がなくはないです。 しかしイベント初日に指摘を受けたにも関わらず、公開が停止されたのはイベント2日目の午後だったので、結局は同じことなのだろうと思います(つまりDNSクエリ結果の公開が問題だとは思ってなかった)。
なお公開が停止されたときは「機材の故障により」という説明がされていました。 しかしこれは虚偽の説明だったことが分かっています。 https://x.com/miyahancom/status/1718178001207382339
■問題点その4。事務局からの声明文に重要な点が抜けている
この件がSNSで騒ぎになった後、一般社団法人PyCon JP Association(長いので以下「PyCon JP事務局」)が声明文を出しています。
一見するとよくできた声明文のように見えますが、実は大事な点が抜けています。 それは「通信の秘密を犯すからやめたほうがよいと、事前にアドバイスを受けていた」ことと、公開停止を「機材の故障である」と虚偽の説明をしていた点です。 先ほどの声明文には、そのことに一切触れていません。
特に最初の点は、「そのネットワーク担当者がイベント関係者のミーティングに持ち帰って議題にすると確約」したのですから、ミーティングの議題になってる可能性が高い。 ミーティングの議事録を見れば、誰がどんな意見を出して、結果としてどんな扱いを受けたのか、分かるはずです。 もし議事録がなくても、担当者に���アリングすれば分かることです。 でも、声明文には記載がないし、触れられていません。
声明文にはこうあります。
当法人は本件を厳粛かつ真摯に受け止めるとともに、本件の発生事実・問題点を公表し、再発防止に努めてまいります。
本当に「厳粛かつ真摯に受け止める」つもりがあるなら、「発生事実」を記録しているはずの議事録とヒアリング結果を「公表」すべきでしょう。
実はこの声明文には、この点を指摘するコメントがついています。
問題提起者によれば、イベント開催前にNOCミーティングに話を持ち込んだが問題ないとされたためSNSに投稿したとのことですが、今回の経緯説明に含まれていないことが気になりました。 PyCon側の視点では、実際にそのような出来事はあったのでしょうか?
しかしPyCon JP事務局は、この質問コメントに返信をしていません。 おそらく、事前に指摘があったかどうかについて、事務局は回答したくないのでしょう。 事実はきっと事務局にとって都合の悪い事実・・・
また声明文では、問題をなるべく軽く見せようとしている姿勢が気になります。 声明文から引用します。
DNSクエリ情報を収集し、その一部の情報をインターネット上に公開したコンテンツがありました。
DNSクエリ結果のドメイン名は、たしかに「一部」の情報かもしれないけど、DNSクエリにとっては「核心」部分ですよね。 これを「一部の情報」と表現するのは、なんとか問題を小さく見せようとする意図が透けて見えます。 (事情を知らない人が読んだときに「一部だけか、じゃあ大した事なさそう」と思うことを期待した書き方ですよね。)
「NOCコンテンツに関するご指摘について」という声明文のタイトルも、事情を知らない人にとっては何のことかわからないように計算されていることが伺えます。 不祥事を起こした企業による声明文でもこういう小賢しいテクがちりばめられているので、たぶん、こういった声明文を作成するのが得意なコンサルかなんかに頼んだのでしょう。 PyCon JP事務局は企業じゃないのだから、「本件を厳粛かつ真摯に受け止める」気があるなら、他人に頼まず自分たちの言葉で声明文を出してもよかったのでは。
再度、声明文から引用します。
当法人は本件を厳粛かつ真摯に受け止めるとともに、本件の発生事実・問題点を公表し、再発防止に努めてまいります。
厳粛かつ真摯に受け止めてるなら、発生事実に「事前の指摘を受けていたこと」と「機材の故障だという虚偽の説明をしたこと」を入れてほしかったと感じます。 じゃないと、口先だけなんだなという印象のほうが強い。
■問題点その5。問題点を指摘した人をPython関係者が執拗に攻撃
この件における最大の問題点は、「問題点を指摘した人をPython関係者がよってたかって攻撃」、これです。 なんとスラップ訴訟さえ行われていました。
(長くなったので、次回へ続く)
(ブログタイトルで期待した人はごめん。強く要望してくれたら次回は画像でも載せる。)
0 notes
Text
Python: Powering Innovation and Versatility in Coding
Python, revered for its simplicity and readability, has evolved into a powerhouse programming language that fuels innovation across various domains. Here’s why Python stands out in the realm of coding:
1. Beginner-Friendly and Readable Syntax
Python’s syntax is intuitive and easy to learn, making it an ideal choice for beginners and experienced developers alike. Its clear and concise syntax emphasises readability and reduces the time spent on debugging, fostering efficient coding practices.
2. Versatility Across Applications
Python’s versatility extends across diverse applications. From web development (Django, Flask) and data science (NumPy, Pandas) to artificial intelligence (TensorFlow, PyTorch) and automation (Selenium, Robotics), Python adapts seamlessly to various domains. Its robust libraries and frameworks empower developers to build scalable solutions efficiently.
3. Rapid Prototyping and Development
Python’s dynamic typing and interpreted nature accelerate development cycles. Developers can quickly prototype ideas and iterate solutions without sacrificing performance. This agility is invaluable in agile development environments w: Python boasts a vibrant community of developers, educators, and enthusiasts where speed and flexibility are paramount.
4. Strong Community and Support Worldwide
The Python community actively contributes to open-source projects, shares knowledge through forums and conferences (PyCon), and provides extensive documentation and tutorials. This collaborative spirit fosters continuous learning and innovation within the Python ecosystem.
5. Scalability and Performance
Contrary to misconceptions, Python offers robust scalability and performance optimization techniques. By leveraging techniques like multiprocessing, asynchronous programming (analysing), and optimising critical sections with Cython or Numba, Python applications can achieve competitive performance benchmarks.
6. Leading Choice in Education
Python’s accessibility and educational resources make it a preferred language for teaching programming concepts. Its gentle learning curve and real-world applicability introduce students to coding principles while preparing them for careers in technology and beyond.
In conclusion, Python’s versatility, readability, and supportive ecosystem position it as a cornerstone of modern programming. Whether you’re a novice programmer exploring the basics or a seasoned developer building complex applications, Python empowers you to innovate, solve challenges, and contribute to technological advancements across industries. As Python continues to evolve, its impact on shaping the future of coding remains profound and promising.
0 notes
Text
Py-Con all dressed up for an award show!!
#oc#ccu#robot girl#suggestive#my oc#py con#pyra fangirl#pycon#controllergirl#controller girl#dress#hot dress#her grip on me#robotgirl#comicoal#thecomicoalman
81 notes
·
View notes
Text
The Ultimate Guide to Becoming a Python Full Stack Developer: From Front-End to Back-End Development
In today's dynamic tech landscape, the role of a Python Full Stack Developer is increasingly in demand. Mastering both front-end and back-end development not only makes you more versatile but also opens up a myriad of career opportunities. This guide will take you through the essential skills and steps needed to become a proficient Python Full Stack Developer.
Understanding Full Stack Development
Full stack development involves working on both the front-end and back-end of a web application. The front-end is what users interact with, while the back-end handles the server, database, and application logic.
Front-End Development
As a Python Full Stack Developer, you need a solid grasp of front-end technologies. Here are the key areas to focus on:
HTML/CSS: The backbone of any web page. HTML structures the content, and CSS styles it. Understanding these is crucial for building responsive and aesthetically pleasing interfaces.
JavaScript: The scripting language of the web. It adds interactivity and dynamism to your web pages. Frameworks like React, Angular, or Vue.js are also worth learning.
Front-End Frameworks: These include Bootstrap, Tailwind CSS, and others that help in quickly designing and customizing web interfaces.
Back-End Development
The back-end is where Python shines. Here’s what you need to know:
Python Programming: Mastering Python is essential. Focus on its syntax, data structures, and libraries.
Django/Flask: These are the most popular Python frameworks for web development. Django is known for its robustness and includes a lot of built-in features, whereas Flask is more lightweight and flexible.
Database Management: Understanding databases is crucial. Learn SQL and how to interact with databases using ORM (Object-Relational Mapping) tools like SQLAlchemy.
APIs: Knowing how to create and consume APIs (Application Programming Interfaces) is fundamental. RESTful APIs are commonly used in web development.
Essential Tools and Technologies
Version Control
Git is the industry standard for version control. Learn how to use Git for tracking changes in your codebase and collaborating with other developers.
Development Environments
Familiarize yourself with Integrated Development Environments (IDEs) like PyCharm, VSCode, or Sublime Text. These tools enhance productivity and ease debugging.
Testing and Debugging
Writing tests ensures your code works as expected. Learn about unit testing, integration testing, and tools like pytest. Also, become proficient in debugging tools to quickly resolve issues.
Building Projects
Practical experience is invaluable. Start by building small projects and gradually increase their complexity. Here are some ideas:
To-Do App: A simple project that helps you understand the full stack workflow.
Blog Platform: Incorporate user authentication, CRUD operations, and front-end frameworks.
E-commerce Site: Integrate payment gateways, product listings, and user management.
Continuous Learning and Improvement
The tech industry evolves rapidly. Stay updated with the latest trends and technologies by:
Joining Developer Communities: Engage with communities like Stack Overflow, GitHub, and Python forums.
Attending Workshops and Conferences: Participate in events like PyCon to network and learn from experts.
Following Influential Developers: Keep up with blogs, YouTube channels, and social media profiles of renowned Python developers.
Career Path and Opportunities
As a Python Full Stack Developer, you have various career paths to choose from:
Web Developer: Build and maintain websites and web applications.
Software Engineer: Develop complex software solutions across various domains.
DevOps Engineer: Focus on automating and streamlining the development process.
The demand for Python Full Stack Developers is high across industries such as tech, finance, healthcare, and more. Companies value developers who can handle both front-end and back-end tasks, making you a valuable asset in any team.
Conclusion
Becoming a Python Full Stack Developer is a rewarding journey that requires dedication, continuous learning, and practical experience. By mastering both front-end and back-end technologies, you'll be well-equipped to build comprehensive and efficient web applications. Embrace the challenge, stay curious, and keep coding!
0 notes
Link
0 notes
Text
PyCon US 2024 Recap
https://katherinemichel.github.io/portfolio/pycon-us-2024-recap.html
0 notes
Link
Sto iniziando a sospettare che una delle idee sbagliate più comuni sugli LLM come ChatGPT riguardi il modo in cui funziona la "formazione".
Una lamentela comune che vedo su questi strumenti è che le persone non vogliono nemmeno provarli perché non vogliono contribuire ai loro dati di formazione.
Questa non è affatto una posizione irrazionale da assumere, ma spesso corrisponde a un modello mentale errato su come funzionano questi strumenti.
Versione breve: ChatGPT e altri strumenti simili non imparano direttamente da e memorizzano tutto ciò che dici loro.
Questo può essere abbastanza poco intuitivo: questi strumenti imitano un partner di conversazione umano e gli umani aggiornano costantemente le loro conoscenze in base a ciò che dici loro. I computer hanno una memoria molto migliore degli umani, quindi sicuramente ChatGPT ricorderebbe ogni dettaglio di tutto ciò che gli dici. Non è questo che significa "allenamento"?
Non è così che funzionano questi strumenti.
Gli LLM sono funzioni senza stato
Dal punto di vista dell'informatica, è meglio pensare agli LLM come alle chiamate di funzione senza stato. Dato questo testo di input, cosa dovrebbe venire dopo?
Nel caso di una "conversazione" con un chatbot come ChatGPT o Claude o Google Gemini, quell'input della funzione consiste nella conversazione corrente (tutto ciò che è stato detto sia dall'umano che dal bot) fino a quel punto, oltre al nuovo prompt dell'utente.
Ogni volta che inizi una nuova conversazione in chat, sgomberi la lavagna. Ogni conversazione è una sequenza completamente nuova, effettuata indipendentemente dalle conversazioni precedenti sia da te che da altri utenti.
Capire questo è la chiave per lavorare efficacemente con questi modelli. Ogni volta che colpisci "nuova chat" stai effettivamente cancellando la memoria a breve termine del modello, ricominciando da zero.
Questo ha una serie di importanti conseguenze:
Non ha alcun senso "dire" a un modello qualcosa per migliorare la sua conoscenza per le conversazioni future. Ho sentito da persone che hanno investito settimane di sforzi incollando nuove informazioni nelle sessioni ChatGPT per cercare di "addestrare" un bot migliore. È una perdita di tempo!
Capire questo aiuta a spiegare perché la "lunghezza del contesto" di un modello è così importante. Diversi LLM hanno diverse lunghezze di contesto, espresse in termini di "token" - un token è di circa 3/4 di una parola. Questo è il numero che ti dice quanto di una conversazione il bot può considerare in qualsiasi momento. Se la tua conversazione va oltre questo punto, il modello "dimenticherà" i dettagli che si sono verificati all'inizio della conversazione.
A volte è una buona idea iniziare una nuova conversazione per resettare deliberatamente il modello. Se un modello inizia a commettere errori evidenti o si rifiuta di rispondere a una domanda valida per qualche strano motivo, il reset potrebbe riportarlo sulla strada giusta.
Trucchi come la generazione aumentata di recupero e la "memoria" di ChatGPT hanno senso solo una volta compresa questa limitazione fondamentale di come funzionano questi modelli.
Se sei entusiasta dei modelli locali perché puoi essere certo che non c'è modo che possano allenarsi sui tuoi dati, hai per lo più ragione: puoi eseguirli offline e controllare il traffico di rete per essere assolutamente sicuro che i tuoi dati non vengano caricati su un server da qualche parte. Ma...
... se sei entusiasta dei modelli locali perché vuoi qualcosa sul tuo computer con cui chattare e imparerà da te e poi risponderà meglio alle tue richieste future, probabilmente non funzionerà.
Allora, cos'è la "formazione"?
Quando parliamo di formazione dei modelli, stiamo parlando del processo che è stato utilizzato per costruire questi modelli in primo luogo.
Come grande semplificazione, ci sono due fasi in questo. Il primo è quello di accumulare diversi TB di testo - pensa a tutta Wikipedia, un graffio di gran parte del web, libri, giornali, documenti accademici e altro ancora - e spendere mesi di tempo e potenzialmente milioni di dollari in elettricità attraverso quei dati "pre-formazione" che identificano i modelli nel modo in cui le parole si relazionano tra loro.
Questo ti dà un modello che può completare le frasi, ma non necessariamente in un modo che delizierà e impressionerà un partner di conversazione umano. La seconda fase mira a risolvere questo problema - questo può incorporare la messa a punto delle istruzioni o l'apprendimento di rinforzo dal feedback umano (RLHF) che ha l'obiettivo di insegnare al modello a scegliere le migliori sequenze possibili di parole per avere conversazioni produttive.
Il risultato finale di queste fasi è il modello stesso - un enorme (molti GB) blob di numeri in virgola mobile che catturano sia le relazioni statistiche tra le parole che qualche versione di "gusto" in termini di come assemblare al meglio nuove parole per rispondere alle richieste di un utente.
Una volta addestrato, il modello rimane statico e invariato - a volte per mesi o addirittura anni.
Ecco una nota di Jason D. Clinton, un ingegnere che lavora su Claude 3 all'Anthropic:
Il modello è memorizzato in un file statico e caricato, continuamente, su 10 migliaia di server identici, ognuno dei quali serve ogni istanza del modello Claude. Il file del modello non cambia mai ed è immutabile una volta caricato; ogni shard sta caricando lo stesso file di modello che esegue esattamente lo stesso software.
Questi modelli non cambiano molto spesso!
Motivi per preoccuparsi comunque
Una cosa frustrante di questo problema è che in realtà non è possibile affermare con sicurezza "non preoccuparti, ChatGPT non si allena sul tuo input".
Molti fornitori LLM hanno termini e condizioni che consentono loro di migliorare i loro modelli in base al modo in cui li stai utilizzando. Anche quando hanno meccanismi di opt-out, questi sono spesso opt-in per impostazione predefinita.
Quando OpenAI dice "Possiamo utilizzare i Contenuti per fornire, mantenere, sviluppare e migliorare i nostri Servizi" non è affatto chiaro cosa intendano con questo!
Stanno immagazzinando tutto ciò che qualcuno dice ai loro modelli e lo stanno scaricando nella corsa di formazione per le loro prossime versioni di modelli ogni pochi mesi?
Non credo che sia così semplice: i fornitori di LLM non vogliono che il testo casuale di bassa qualità o dettagli che invadono la privacy entrino nei loro dati di formazione. Ma sono notoriamente segreti, quindi chi lo sa per certo?
Anche i meccanismi di opt-out sono piuttosto confusi. OpenAI cerca di rendere il più chiaro possibile che non si alleneranno su alcun contenuto inviato attraverso la loro API (quindi avresti capito meglio cos'è un'"API"), ma molte persone non ci credono! Ho scritto della crisi di fiducia dell'IA l'anno scorso: il modello in cui molte persone non credono attivamente ai fornitori di modelli e agli sviluppatori di applicazioni (come Dropbox e Slack) che affermano di non addestrare i modelli sui dati privati.
La gente teme anche che quei termini possano cambiare in futuro. Ci sono opzioni per proteggerti da questo: se stai spendendo abbastanza soldi puoi firmare contratti con OpenAI e altri fornitori che congelano i termini e le condizioni.
Se il tuo modello mentale è che gli LLM ricordano e si allenano su tutti gli input, è molto più facile supporre che gli sviluppatori che affermano di aver disabilitato quella capacità potrebbero non dire la verità. Se dici al tuo amico umano di ignorare un succoso pezzo di pettegolezzo che gli hai erroneamente trasmesso, sai bene che non lo dimenticheranno!
L'altra preoccupazione principale è la stessa di qualsiasi servizio cloud: è ragionevole presumere che i tuoi prompt siano ancora registrati per un periodo di tempo, per motivi di conformità e abuso, e se tali dati vengono registrati c'è sempre una possibilità di esposizione grazie a una violazione accidentale della sicurezza.
E le caratteristiche di "memoria"?
Per rendere le cose ancora più confuse, alcuni strumenti LLM stanno introducendo funzionalità che tentano di aggirare questa limitazione.
ChatGPT ha recentemente aggiunto una funzione di memoria in cui può "ricordare" piccoli dettagli e usarli nelle conversazioni di follow-up.
Come per tante funzionalità LLM, questo è un trucco di sollecitazione relativamente semplice: durante una conversazione il bot può chiamare un meccanismo per registrare una breve nota - il tuo nome, è una preferenza che hai espresso - che sarà quindi invisibilmente incluso nel contesto di chat passato nelle conversazioni future.
Puoi rivedere (e modificare) l'elenco dei frammenti ricordati in qualsiasi momento e ChatGPT mostra un elemento dell'interfaccia utente visibile ogni volta che si aggiunge alla sua memoria.
Cattiva politica basata su cattivi modelli mentali
Uno dei risultati più preoccupanti di questo comune equivoco riguarda le persone che prendono decisioni politiche su come dovrebbero essere utilizzati gli strumenti LLM.
La tua azienda vieta tutto l'uso di LLM perché non vuole che i loro dati privati vengano trapelati ai fornitori di modelli?
Non si sbagliano al 100% - vedi comunque i motivi per preoccuparsi - ma se agiscono sulla base dell'idea che tutto ciò che viene detto a un modello è immediatamente memorizzato e potrebbe essere utilizzato in risposta ad altri utenti, stanno agendo su informazioni errate.
Ancora più preoccupante è quello che succede ai legislatori. Quanti politici in tutto il mondo stanno discutendo e votando una legislazione che coinvolge questi modelli basati su un'idea di fantascienza di cosa sono e come funzionano?
Se le persone credono che ChatGPT sia una macchina che memorizza e impara istantaneamente da tutto ciò che qualcuno dice, c'è un rischio molto reale che sosterranno misure che affrontano l'invenzione rispetto ai rischi reali che coinvolgono questa tecnologia.
0 notes