The document discusses different ways that a software development team shuffled who reviewed each other's code each week. Season 1 had no rules for shuffling. Season 2 prohibited random number functions. Approaches included shuffling based on microseconds or using an MD5 hash of system stats. Season 3 aimed to generate all possible combinations rather than just rearranging elements. Languages discussed included Perl, Erlang, and Ruby.
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
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.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
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.
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.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
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.
2024 State of Marketing Report – by HubspotMarius Sescu
https://www.hubspot.com/state-of-marketing
· Scaling relationships and proving ROI
· Social media is the place for search, sales, and service
· Authentic influencer partnerships fuel brand growth
· The strongest connections happen via call, click, chat, and camera.
· Time saved with AI leads to more creative work
· Seeking: A single source of truth
· TLDR; Get on social, try AI, and align your systems.
· More human marketing, powered by robots
ChatGPT is a revolutionary addition to the world since its introduction in 2022. A big shift in the sector of information gathering and processing happened because of this chatbot. What is the story of ChatGPT? How is the bot responding to prompts and generating contents? Swipe through these slides prepared by Expeed Software, a web development company regarding the development and technical intricacies of ChatGPT!
Alt. GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using ...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
GDG Cloud Southlake #33: Boule & Rebala: Effective AppSec in SDLC using Deplo...James Anderson
Effective Application Security in Software Delivery lifecycle using Deployment Firewall and DBOM
The modern software delivery process (or the CI/CD process) includes many tools, distributed teams, open-source code, and cloud platforms. Constant focus on speed to release software to market, along with the traditional slow and manual security checks has caused gaps in continuous security as an important piece in the software supply chain. Today organizations feel more susceptible to external and internal cyber threats due to the vast attack surface in their applications supply chain and the lack of end-to-end governance and risk management.
The software team must secure its software delivery process to avoid vulnerability and security breaches. This needs to be achieved with existing tool chains and without extensive rework of the delivery processes. This talk will present strategies and techniques for providing visibility into the true risk of the existing vulnerabilities, preventing the introduction of security issues in the software, resolving vulnerabilities in production environments quickly, and capturing the deployment bill of materials (DBOM).
Speakers:
Bob Boule
Robert Boule is a technology enthusiast with PASSION for technology and making things work along with a knack for helping others understand how things work. He comes with around 20 years of solution engineering experience in application security, software continuous delivery, and SaaS platforms. He is known for his dynamic presentations in CI/CD and application security integrated in software delivery lifecycle.
Gopinath Rebala
Gopinath Rebala is the CTO of OpsMx, where he has overall responsibility for the machine learning and data processing architectures for Secure Software Delivery. Gopi also has a strong connection with our customers, leading design and architecture for strategic implementations. Gopi is a frequent speaker and well-known leader in continuous delivery and integrating security into software delivery.
Why You Should Replace Windows 11 with Nitrux Linux 3.5.0 for enhanced perfor...SOFTTECHHUB
The choice of an operating system plays a pivotal role in shaping our computing experience. For decades, Microsoft's Windows has dominated the market, offering a familiar and widely adopted platform for personal and professional use. However, as technological advancements continue to push the boundaries of innovation, alternative operating systems have emerged, challenging the status quo and offering users a fresh perspective on computing.
One such alternative that has garnered significant attention and acclaim is Nitrux Linux 3.5.0, a sleek, powerful, and user-friendly Linux distribution that promises to redefine the way we interact with our devices. With its focus on performance, security, and customization, Nitrux Linux presents a compelling case for those seeking to break free from the constraints of proprietary software and embrace the freedom and flexibility of open-source computing.
Unlocking Productivity: Leveraging the Potential of Copilot in Microsoft 365, a presentation by Christoforos Vlachos, Senior Solutions Manager – Modern Workplace, Uni Systems
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.
Epistemic Interaction - tuning interfaces to provide information for AI supportAlan Dix
Paper presented at SYNERGY workshop at AVI 2024, Genoa, Italy. 3rd June 2024
https://alandix.com/academic/papers/synergy2024-epistemic/
As machine learning integrates deeper into human-computer interactions, the concept of epistemic interaction emerges, aiming to refine these interactions to enhance system adaptability. This approach encourages minor, intentional adjustments in user behaviour to enrich the data available for system learning. This paper introduces epistemic interaction within the context of human-system communication, illustrating how deliberate interaction design can improve system understanding and adaptation. Through concrete examples, we demonstrate the potential of epistemic interaction to significantly advance human-computer interaction by leveraging intuitive human communication strategies to inform system design and functionality, offering a novel pathway for enriching user-system engagements.
UiPath Test Automation using UiPath Test Suite series, part 4DianaGray10
Welcome to UiPath Test Automation using UiPath Test Suite series part 4. In this session, we will cover Test Manager overview along with SAP heatmap.
The UiPath Test Manager overview with SAP heatmap webinar offers a concise yet comprehensive exploration of the role of a Test Manager within SAP environments, coupled with the utilization of heatmaps for effective testing strategies.
Participants will gain insights into the responsibilities, challenges, and best practices associated with test management in SAP projects. Additionally, the webinar delves into the significance of heatmaps as a visual aid for identifying testing priorities, areas of risk, and resource allocation within SAP landscapes. Through this session, attendees can expect to enhance their understanding of test management principles while learning practical approaches to optimize testing processes in SAP environments using heatmap visualization techniques
What will you get from this session?
1. Insights into SAP testing best practices
2. Heatmap utilization for testing
3. Optimization of testing processes
4. Demo
Topics covered:
Execution from the test manager
Orchestrator execution result
Defect reporting
SAP heatmap example with demo
Speaker:
Deepak Rai, Automation Practice Lead, Boundaryless Group and UiPath MVP
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.
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.
Sudheer Mechineni, Head of Application Frameworks, Standard Chartered Bank
Discover how Standard Chartered Bank harnessed the power of Neo4j to transform complex data access challenges into a dynamic, scalable graph database solution. This keynote will cover their journey from initial adoption to deploying a fully automated, enterprise-grade causal cluster, highlighting key strategies for modelling organisational changes and ensuring robust disaster recovery. Learn how these innovations have not only enhanced Standard Chartered Bank’s data infrastructure but also positioned them as pioneers in the banking sector’s adoption of graph technology.
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.
2024 State of Marketing Report – by HubspotMarius Sescu
https://www.hubspot.com/state-of-marketing
· Scaling relationships and proving ROI
· Social media is the place for search, sales, and service
· Authentic influencer partnerships fuel brand growth
· The strongest connections happen via call, click, chat, and camera.
· Time saved with AI leads to more creative work
· Seeking: A single source of truth
· TLDR; Get on social, try AI, and align your systems.
· More human marketing, powered by robots
ChatGPT is a revolutionary addition to the world since its introduction in 2022. A big shift in the sector of information gathering and processing happened because of this chatbot. What is the story of ChatGPT? How is the bot responding to prompts and generating contents? Swipe through these slides prepared by Expeed Software, a web development company regarding the development and technical intricacies of ChatGPT!
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
The realm of product design is a constantly changing environment where technology and style intersect. Every year introduces fresh challenges and exciting trends that mold the future of this captivating art form. In this piece, we delve into the significant trends set to influence the look and functionality of product design in the year 2024.
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
Mental health has been in the news quite a bit lately. Dozens of U.S. states are currently suing Meta for contributing to the youth mental health crisis by inserting addictive features into their products, while the U.S. Surgeon General is touring the nation to bring awareness to the growing epidemic of loneliness and isolation. The country has endured periods of low national morale, such as in the 1970s when high inflation and the energy crisis worsened public sentiment following the Vietnam War. The current mood, however, feels different. Gallup recently reported that national mental health is at an all-time low, with few bright spots to lift spirits.
To better understand how Americans are feeling and their attitudes towards mental health in general, ThinkNow conducted a nationally representative quantitative survey of 1,500 respondents and found some interesting differences among ethnic, age and gender groups.
Technology
For example, 52% agree that technology and social media have a negative impact on mental health, but when broken out by race, 61% of Whites felt technology had a negative effect, and only 48% of Hispanics thought it did.
While technology has helped us keep in touch with friends and family in faraway places, it appears to have degraded our ability to connect in person. Staying connected online is a double-edged sword since the same news feed that brings us pictures of the grandkids and fluffy kittens also feeds us news about the wars in Israel and Ukraine, the dysfunction in Washington, the latest mass shooting and the climate crisis.
Hispanics may have a built-in defense against the isolation technology breeds, owing to their large, multigenerational households, strong social support systems, and tendency to use social media to stay connected with relatives abroad.
Age and Gender
When asked how individuals rate their mental health, men rate it higher than women by 11 percentage points, and Baby Boomers rank it highest at 83%, saying it’s good or excellent vs. 57% of Gen Z saying the same.
Gen Z spends the most amount of time on social media, so the notion that social media negatively affects mental health appears to be correlated. Unfortunately, Gen Z is also the generation that’s least comfortable discussing mental health concerns with healthcare professionals. Only 40% of them state they’re comfortable discussing their issues with a professional compared to 60% of Millennials and 65% of Boomers.
Race Affects Attitudes
As seen in previous research conducted by ThinkNow, Asian Americans lag other groups when it comes to awareness of mental health issues. Twenty-four percent of Asian Americans believe that having a mental health issue is a sign of weakness compared to the 16% average for all groups. Asians are also considerably less likely to be aware of mental health services in their communities (42% vs. 55%) and most likely to seek out information on social media (51% vs. 35%).
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
This article is all about what AI trends will emerge in the field of creative operations in 2024. All the marketers and brand builders should be aware of these trends for their further use and save themselves some time!
A report by thenetworkone and Kurio.
The contributing experts and agencies are (in an alphabetical order): Sylwia Rytel, Social Media Supervisor, 180heartbeats + JUNG v MATT (PL), Sharlene Jenner, Vice President - Director of Engagement Strategy, Abelson Taylor (USA), Alex Casanovas, Digital Director, Atrevia (ES), Dora Beilin, Senior Social Strategist, Barrett Hoffher (USA), Min Seo, Campaign Director, Brand New Agency (KR), Deshé M. Gully, Associate Strategist, Day One Agency (USA), Francesca Trevisan, Strategist, Different (IT), Trevor Crossman, CX and Digital Transformation Director; Olivia Hussey, Strategic Planner; Simi Srinarula, Social Media Manager, The Hallway (AUS), James Hebbert, Managing Director, Hylink (CN / UK), Mundy Álvarez, Planning Director; Pedro Rojas, Social Media Manager; Pancho González, CCO, Inbrax (CH), Oana Oprea, Head of Digital Planning, Jam Session Agency (RO), Amy Bottrill, Social Account Director, Launch (UK), Gaby Arriaga, Founder, Leonardo1452 (MX), Shantesh S Row, Creative Director, Liwa (UAE), Rajesh Mehta, Chief Strategy Officer; Dhruv Gaur, Digital Planning Lead; Leonie Mergulhao, Account Supervisor - Social Media & PR, Medulla (IN), Aurelija Plioplytė, Head of Digital & Social, Not Perfect (LI), Daiana Khaidargaliyeva, Account Manager, Osaka Labs (UK / USA), Stefanie Söhnchen, Vice President Digital, PIABO Communications (DE), Elisabeth Winiartati, Managing Consultant, Head of Global Integrated Communications; Lydia Aprina, Account Manager, Integrated Marketing and Communications; Nita Prabowo, Account Manager, Integrated Marketing and Communications; Okhi, Web Developer, PNTR Group (ID), Kei Obusan, Insights Director; Daffi Ranandi, Insights Manager, Radarr (SG), Gautam Reghunath, Co-founder & CEO, Talented (IN), Donagh Humphreys, Head of Social and Digital Innovation, THINKHOUSE (IRE), Sarah Yim, Strategy Director, Zulu Alpha Kilo (CA).
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
The search marketing landscape is evolving rapidly with new technologies, and professionals, like you, rely on innovative paid search strategies to meet changing demands.
It’s important that you’re ready to implement new strategies in 2024.
Check this out and learn the top trends in paid search advertising that are expected to gain traction, so you can drive higher ROI more efficiently in 2024.
You’ll learn:
- The latest trends in AI and automation, and what this means for an evolving paid search ecosystem.
- New developments in privacy and data regulation.
- Emerging ad formats that are expected to make an impact next year.
Watch Sreekant Lanka from iQuanti and Irina Klein from OneMain Financial as they dive into the future of paid search and explore the trends, strategies, and technologies that will shape the search marketing landscape.
If you’re looking to assess your paid search strategy and design an industry-aligned plan for 2024, then this webinar is for you.
5 Public speaking tips from TED - Visualized summarySpeakerHub
From their humble beginnings in 1984, TED has grown into the world’s most powerful amplifier for speakers and thought-leaders to share their ideas. They have over 2,400 filmed talks (not including the 30,000+ TEDx videos) freely available online, and have hosted over 17,500 events around the world.
With over one billion views in a year, it’s no wonder that so many speakers are looking to TED for ideas on how to share their message more effectively.
The article “5 Public-Speaking Tips TED Gives Its Speakers”, by Carmine Gallo for Forbes, gives speakers five practical ways to connect with their audience, and effectively share their ideas on stage.
Whether you are gearing up to get on a TED stage yourself, or just want to master the skills that so many of their speakers possess, these tips and quotes from Chris Anderson, the TED Talks Curator, will encourage you to make the most impactful impression on your audience.
See the full article and more summaries like this on SpeakerHub here: https://speakerhub.com/blog/5-presentation-tips-ted-gives-its-speakers
See the original article on Forbes here:
http://www.forbes.com/forbes/welcome/?toURL=http://www.forbes.com/sites/carminegallo/2016/05/06/5-public-speaking-tips-ted-gives-its-speakers/&refURL=&referrer=#5c07a8221d9b
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
Everyone is in agreement that ChatGPT (and other generative AI tools) will shape the future of work. Yet there is little consensus on exactly how, when, and to what extent this technology will change our world.
Businesses that extract maximum value from ChatGPT will use it as a collaborative tool for everything from brainstorming to technical maintenance.
For individuals, now is the time to pinpoint the skills the future professional will need to thrive in the AI age.
Check out this presentation to understand what ChatGPT is, how it will shape the future of work, and how you can prepare to take advantage.
A brief introduction to DataScience with explaining of the concepts, algorithms, machine learning, supervised and unsupervised learning, clustering, statistics, data preprocessing, real-world applications etc.
It's part of a Data Science Corner Campaign where I will be discussing the fundamentals of DataScience, AIML, Statistics etc.
Time Management & Productivity - Best PracticesVit Horky
Here's my presentation on by proven best practices how to manage your work time effectively and how to improve your productivity. It includes practical tips and how to use tools such as Slack, Google Apps, Hubspot, Google Calendar, Gmail and others.
The six step guide to practical project managementMindGenius
The six step guide to practical project management
If you think managing projects is too difficult, think again.
We’ve stripped back project management processes to the
basics – to make it quicker and easier, without sacrificing
the vital ingredients for success.
“If you’re looking for some real-world guidance, then The Six Step Guide to Practical Project Management will help.”
Dr Andrew Makar, Tactical Project Management
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
There are so many ways to shuffle it
1. THERE ARE SO MANY WAYS TO SHUFFLE IT
TASMWTSI
there are so many ways to shuffle it
koichi taniguchi
(@nipotan)
tokyo, japan
livedoor co.,ltd.
YAPC::ASIA 2010 LIGHTNING TALKS
2. THERE ARE SO MANY WAYS TO SHUFFLE IT
the story line . . .
• …
•
• commit log
In a department of our company,
YAPC::ASIA 2010 LIGHTNING TALKS
3. THERE ARE SO MANY WAYS TO SHUFFLE IT
the story line . . .
• …
•
• commit log
we each have the practice to report
another colleague’s weekly activities with each other ...
YAPC::ASIA 2010 LIGHTNING TALKS
4. THERE ARE SO MANY WAYS TO SHUFFLE IT
the story line . . .
• …
•
• commit log
at every Friday's regular meeting.
YAPC::ASIA 2010 LIGHTNING TALKS
5. THERE ARE SO MANY WAYS TO SHUFFLE IT
the story line . . .
• …
•
• commit log
We each report what its own target did what in this week
by checking the diffs out from the revision control system.
YAPC::ASIA 2010 LIGHTNING TALKS
6. THERE ARE SO MANY WAYS TO SHUFFLE IT
the story line . . .
• …
•
•
This changes the inside of our complicated system
which is changing continually to be comprehensible to us.
YAPC::ASIA 2010 LIGHTNING TALKS
7. THERE ARE SO MANY WAYS TO SHUFFLE IT
the story line . . .
• …
•
•
And it's a good way to keep the quality of
our entire source code.
YAPC::ASIA 2010 LIGHTNING TALKS
8. THERE ARE SO MANY WAYS TO SHUFFLE IT
the story line . . .
• …
•
•
Although, we need to decide that
"who will check who?" to do it every week.
YAPC::ASIA 2010 LIGHTNING TALKS
9. THERE ARE SO MANY WAYS TO SHUFFLE IT
the story line . . .
• …
•
•
We each do live coding to make a decision
in some rules of each season.
YAPC::ASIA 2010 LIGHTNING TALKS
10. THERE ARE SO MANY WAYS TO SHUFFLE IT
the story line . . .
• …
•
We call it
"Time to Shuffle" ...
YAPC::ASIA 2010 LIGHTNING TALKS
11. THERE ARE SO MANY WAYS TO SHUFFLE IT
the story line . . .
•… ww
•
You may think "Just Shuffle? So?"
Don't underestimate our performances.
YAPC::ASIA 2010 LIGHTNING TALKS
12. THERE ARE SO MANY WAYS TO SHUFFLE IT
the story line . . .
•… ww
•
Now I’m going to introduce you
the masterpieces of our SHUFFLE.
YAPC::ASIA 2010 LIGHTNING TALKS
13. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 1
"no rules"
This season is just to be familiar with
doing live coding for us.
YAPC::ASIA 2010 LIGHTNING TALKS
14. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 1
"no rules"
And there's NO highlights
because it's boring.
YAPC::ASIA 2010 LIGHTNING TALKS
15. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 2
"rand prohibited"
In the second season,
YAPC::ASIA 2010 LIGHTNING TALKS
16. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 2
"rand prohibited"
rand() and similar function
which is derived from rand() are prohibited.
YAPC::ASIA 2010 LIGHTNING TALKS
17. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 2 "rand prohibited"
% perl -MTime::HiRes -le '@a=@b=qw(claire tracy mohinder
hiro matt nathan peter sylar);$t=Time::HiRes::time*100000%
$#b+1;for(0..$#a){print $a[$_].q{ => }.$b[($_+$t)%(scalar
@b)]}'
claire => hiro
tracy => matt
mohinder => nathan
hiro => peter
matt => sylar
nathan => claire
peter => tracy
sylar => mohinder
First, microseconds are multiplied by hundred thousand.
Then the random digit was made from them.
YAPC::ASIA 2010 LIGHTNING TALKS
18. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 2 "rand prohibited"
% perl -MTime::HiRes -le '@a=@b=qw(claire tracy mohinder
hiro matt nathan peter sylar);$t=Time::HiRes::time*100000%
$#b+1;for(0..$#a){print $a[$_].q{ => }.$b[($_+$t)%(scalar
@b)]}'
claire => hiro
tracy => matt
mohinder => nathan
hiro => peter
matt => sylar
nathan => claire
peter => tracy
sylar => mohinder
Probably all you guys come up with the same idea.
YAPC::ASIA 2010 LIGHTNING TALKS
19. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 2 "rand prohibited"
% perl -MTime::HiRes -le '@a=@b=qw(claire tracy mohinder
hiro matt nathan peter sylar);$t=Time::HiRes::time*100000%
$#b+1;for(0..$#a){print $a[$_].q{ => }.$b[($_+$t)%(scalar
@b)]}'
claire => hiro
tracy => matt
mohinder => nathan
hiro => peter
matt => sylar
nathan => claire
peter => tracy
sylar => mohinder
Also, it just moved the elements of the array.
YAPC::ASIA 2010 LIGHTNING TALKS
20. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 2 "rand prohibited"
% perl -e '@m=@r=qw(claire tracy mohinder hiro matt nathan
peter sylar); sub r{hex(`md5sum /proc/stat|head -c8`)%@m}
while(++$c<100||scalar grep {$m[$_] eq $r[$_]} (0..$#m))
{$a=&r;$b=&r; @r[$a,$b] = @r[$b,$a]} printf "%-8s => %-8s
n", $m[$_], $r[$_] for (0..$#m);'
claire => tracy
tracy => peter
mohinder => hiro
hiro => sylar
matt => mohinder
nathan => claire
peter => nathan
sylar => matt
Next, it has the original random function.
YAPC::ASIA 2010 LIGHTNING TALKS
21. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 2 "rand prohibited"
% perl -e '@m=@r=qw(claire tracy mohinder hiro matt nathan
peter sylar); sub r{hex(`md5sum /proc/stat|head -c8`)%@m}
while(++$c<100||scalar grep {$m[$_] eq $r[$_]} (0..$#m))
{$a=&r;$b=&r; @r[$a,$b] = @r[$b,$a]} printf "%-8s => %-8s
n", $m[$_], $r[$_] for (0..$#m);'
claire => tracy
tracy => peter
mohinder => hiro
hiro => sylar
matt => mohinder
nathan => claire
peter => nathan
sylar => matt
It recognizes a part of the produced MD5 message digest of
kernel/system statistics (/proc/stat) as hex string,
YAPC::ASIA 2010 LIGHTNING TALKS
22. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 2 "rand prohibited"
% perl -e '@m=@r=qw(claire tracy mohinder hiro matt nathan
peter sylar); sub r{hex(`md5sum /proc/stat|head -c8`)%@m}
while(++$c<100||scalar grep {$m[$_] eq $r[$_]} (0..$#m))
{$a=&r;$b=&r; @r[$a,$b] = @r[$b,$a]} printf "%-8s => %-8s
n", $m[$_], $r[$_] for (0..$#m);'
claire => tracy
tracy => peter
mohinder => hiro
hiro => sylar
matt => mohinder
nathan => claire
peter => nathan
sylar => matt
and the corresponding value of it
is divided by the number of arguments.
YAPC::ASIA 2010 LIGHTNING TALKS
23. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 2 "rand prohibited"
% perl -e '@m=@r=qw(claire tracy mohinder hiro matt nathan
peter sylar); sub r{hex(`md5sum /proc/stat|head -c8`)%@m}
while(++$c<100||scalar grep {$m[$_] eq $r[$_]} (0..$#m))
{$a=&r;$b=&r; @r[$a,$b] = @r[$b,$a]} printf "%-8s => %-8s
n", $m[$_], $r[$_] for (0..$#m);'
claire => tracy
tracy => peter
mohinder => hiro
hiro => sylar
matt => mohinder
nathan => claire
peter => nathan
sylar => matt
Then it returns the remainder.
It is a random integer.
YAPC::ASIA 2010 LIGHTNING TALKS
24. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 2 "rand prohibited"
% perl -e '@m=@r=qw(claire tracy mohinder hiro matt nathan
peter sylar); sub r{hex(`md5sum /proc/stat|head -c8`)%@m}
while(++$c<100||scalar grep {$m[$_] eq $r[$_]} (0..$#m))
{$a=&r;$b=&r; @r[$a,$b] = @r[$b,$a]} printf "%-8s => %-8s
n", $m[$_], $r[$_] for (0..$#m);'
claire => tracy
tracy => peter
mohinder => hiro
hiro => sylar
matt => mohinder
nathan => claire
peter => nathan
sylar => matt
And it tries to shuffle each elements completely
but it might be given up if it spins over hundred times.
YAPC::ASIA 2010 LIGHTNING TALKS
25. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 3
"increase
combinations
possible"
In the third season,
YAPC::ASIA 2010 LIGHTNING TALKS
26. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 3
"increase
combinations
possible"
We should increase all possible combinations
more than number of members.
YAPC::ASIA 2010 LIGHTNING TALKS
27. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 3
"increase
combinations
possible"
That is, just moving the elements is prohibited.
Instead, we can use rand() again from the season.
YAPC::ASIA 2010 LIGHTNING TALKS
28. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 3
"increase
combinations
possible"
We did it!
YAPC::ASIA 2010 LIGHTNING TALKS
29. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 3 "increase combinations possible"
-module(shuffle).
-export([main/1,comb/2]).
main(A) ->
All = comb(A,A),
Set = lists:nth(random:uniform(length(All)), All),
output(Set).
output([]) -> true;
output([{A,B}|T]) ->
io:format("~w => ~w~n", [A,B]),
output(T).
comb([], _) -> [[]];
comb([H|T], B) ->
[ [{H, X}|Rest] || X<-B--[H], Rest<-comb(T, B--[X]) ].
Erlang?!
YAPC::ASIA 2010 LIGHTNING TALKS
30. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 3 "increase combinations possible"
% erl
Erlang R14B (erts-5.8.1) [source] [rq:1] [async-threads:0] [hipe] [kernel-
poll:false]
Eshell V5.8.1 (abort with ^G)
1> c(shuffle).
{ok,shuffle}
2> shuffle:main([claire,mohinder,hiro,matt,nathan,peter,sylar]).
claire => mohinder
mohinder => nathan
hiro => matt
matt => sylar
nathan => claire
peter => hiro
sylar => peter
true
I'm not sure,
but it maybe works correctly.
YAPC::ASIA 2010 LIGHTNING TALKS
31. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 3 "increase combinations possible"
% ruby -e 'a=b=%w(claire tracy mohinder hiro matt nathan
peter sylar); b=b.sort_by{rand} until (0..a.size-1).all?
{|i|a[i]!=b[i]};a.zip(b){|x,y| puts "%8s => %s" % [x,y]}'
claire => nathan
tracy => hiro
mohinder => peter
hiro => matt
matt => mohinder
nathan => sylar
peter => claire
sylar => tracy
Ruby?!
YAPC::ASIA 2010 LIGHTNING TALKS
32. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 3 "increase combinations possible"
% ruby -e 'a=b=%w(claire tracy mohinder hiro matt nathan
peter sylar); b=b.sort_by{rand} until (0..a.size-1).all?
{|i|a[i]!=b[i]};a.zip(b){|x,y| puts "%8s => %s" % [x,y]}'
claire => nathan
tracy => hiro
mohinder => peter
hiro => matt
matt => mohinder
nathan => sylar
peter => claire
sylar => tracy
Excuse me. This is Yet Another Perl Conference, isn't it.
Why don't you use Perl?
YAPC::ASIA 2010 LIGHTNING TALKS
33. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 3 "increase combinations possible"
% ruby -e 'a=b=%w(claire tracy mohinder hiro matt nathan
peter sylar); b=b.sort_by{rand} until (0..a.size-1).all?
{|i|a[i]!=b[i]};a.zip(b){|x,y| puts "%8s => %s" % [x,y]}'
claire => nathan
tracy => hiro
mohinder => peter
hiro => matt
matt => mohinder
nathan => sylar
peter => claire
sylar => tracy
By the way, is zip() cool, it isn’t?
YAPC::ASIA 2010 LIGHTNING TALKS
34. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 3 "increase combinations possible"
% perl6 -e 'for ("foo", "bar",
"baz") Z ("qux", "quux", "corge") ->
$a, $b { say "$a => $b" }'
foo => qux
bar => quux
baz => corge
We can use "Z" for zip() operator in perl6.
But I’m not sure about perl6.
YAPC::ASIA 2010 LIGHTNING TALKS
35. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4
"time trial"
This season is like a time trial.
YAPC::ASIA 2010 LIGHTNING TALKS
36. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4
"time trial"
In addition,
it was laid down the most strict rules so far.
YAPC::ASIA 2010 LIGHTNING TALKS
37. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
•
The rules of the season are...
YAPC::ASIA 2010 LIGHTNING TALKS
38. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
•
• arrayref
arrayref
write a perl subroutine which gets an
arrayref of member list as the parameter ...
YAPC::ASIA 2010 LIGHTNING TALKS
39. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
•
• arrayref
arrayref
and returns an arrayref of target members.
YAPC::ASIA 2010 LIGHTNING TALKS
40. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
•
• arrayref
arrayref
•
Increase all possible combinations
more than number of members.
YAPC::ASIA 2010 LIGHTNING TALKS
41. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
•
• arrayref
arrayref
•
•
Eliminate the pairs that include
the target of someone is oneself.
YAPC::ASIA 2010 LIGHTNING TALKS
42. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
•
• arrayref
arrayref
•
•
•
Possibly faster than ever before.
For comparison, we try to benchmark ...
YAPC::ASIA 2010 LIGHTNING TALKS
43. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
•
• arrayref
arrayref
•
•
•
10,000 times shuffle of 10 members,
1,000 times shuffle of 1,000 members,
YAPC::ASIA 2010 LIGHTNING TALKS
44. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
•
• arrayref
arrayref
•
•
•
and 10 times shuffle of 10,000 members.
YAPC::ASIA 2010 LIGHTNING TALKS
45. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
•
• arrayref
arrayref
•
•
•
Then we evaluate the results comprehensively
and assume which is the reigning champion.
YAPC::ASIA 2010 LIGHTNING TALKS
46. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
•
• arrayref
arrayref
•
•
•
•
Preparing some tricks ahead of time
and playing it is prohibited.
YAPC::ASIA 2010 LIGHTNING TALKS
47. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
•
• arrayref
arrayref
•
•
•
•
•
/
Meet the any of following conditions,
YAPC::ASIA 2010 LIGHTNING TALKS
48. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
•
• arrayref
arrayref
•
•
•
•
•
/
it gives "different results each time",
"all possible combinations" and/or "even results".
YAPC::ASIA 2010 LIGHTNING TALKS
49. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
sub shuffle {
my $array = shift;
my $array2;
do {
$array2 = [sort { rand(3)-1 } @$array];
} while (grep $$array[$_] eq $$array2[$_], (0..$#$array));
return $array2;
}
At first, this is the interim champion.
It’s not so fast because it’s the reference implementation.
YAPC::ASIA 2010 LIGHTNING TALKS
50. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
sub shuffle {
my $array = shift;
my $n = $#$array;
my @index = (0..$n);
my $i;
for (0..$n) {
$i = int(rand($n));
redo if $_ == $index[$i] || $i == $index[$_];
( $index[$_], $index[$i] ) = ( $index[$i], $index[$_] );
}
return [ @$array[@index] ];
}
This is the 2nd champion.
It works more than 4 times faster than the former champion.
YAPC::ASIA 2010 LIGHTNING TALKS
51. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
sub shuffle {
my @array = @{$_[0]};
my ($i, $r) = scalar @array;
while(--$i) {
$r = rand($i);
@array[$i, $r] = @array[$r, $i];
}
return @array;
}
This is the 4th champion.
Incidentally, it’s very similar to Fisher-Yates shuffle.
YAPC::ASIA 2010 LIGHTNING TALKS
52. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
sub shuffle {
my @array = @{$_[0]};
my ($i, $r) = scalar @array;
while(--$i) {
$r = rand($i);
@array[$i, $r] = @array[$r, $i];
}
return @array;
}
You can find out the technique like this
in perldoc -q shuffle (in perlfaq4).
YAPC::ASIA 2010 LIGHTNING TALKS
53. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
sub shuffle { my @magic = ();
return _shuffle(@_); if ($is_odd){
BEGIN{ @sep = map{$_ + $MAGIC} @sep;
my $MAGIC = 3; @magic = @{$MAGIC[($R / $half /
my @MAGIC = ([1,2,0], [2,0,1]); $half) % 2]};
srand; }
my $R=int rand(1000000); return [@$arg[@magic,
sub _shuffle { $sep[6] .. $sep[7],
my $arg = shift; $sep[4] .. $sep[5],
my $n = scalar @$arg; $sep[2] .. $sep[3],
my $is_odd = $n % 2; $sep[0] .. $sep[1]
$n -= $MAGIC if $is_odd; ]];
my $half = $n / 2; }
my $r_a = ($R / $half) % ($half); }
my $r_b = ($R % $half); }
$R++;
my @sep = (0 => $r_a,
$r_a+1 => $half - 1,
$half => $half + $r_b,
$half + $r_b + 1 => $n -1);
This is the 5th champion.
It doesn't shuffle accurately. It's so tricky.
YAPC::ASIA 2010 LIGHTNING TALKS
54. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
sub shuffle { my @magic = ();
return _shuffle(@_); if ($is_odd){
BEGIN{ @sep = map{$_ + $MAGIC} @sep;
my $MAGIC = 3; @magic = @{$MAGIC[($R / $half /
my @MAGIC = ([1,2,0], [2,0,1]); $half) % 2]};
srand; }
my $R=int rand(1000000); return [@$arg[@magic,
sub _shuffle { $sep[6] .. $sep[7],
my $arg = shift; $sep[4] .. $sep[5],
my $n = scalar @$arg; $sep[2] .. $sep[3],
my $is_odd = $n % 2; $sep[0] .. $sep[1]
$n -= $MAGIC if $is_odd; ]];
my $half = $n / 2; }
my $r_a = ($R / $half) % ($half); }
my $r_b = ($R % $half); }
$R++;
my @sep = (0 => $r_a,
$r_a+1 => $half - 1,
$half => $half + $r_b,
$half + $r_b + 1 => $n -1);
It works about 30% faster than Fisher-Yates shuffle.
But It doesn't work at all under a specific condition.
YAPC::ASIA 2010 LIGHTNING TALKS
55. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
sub shuffle { my @magic = ();
return _shuffle(@_); if ($is_odd){
BEGIN{ @sep = map{$_ + $MAGIC} @sep;
my $MAGIC = 3; @magic = @{$MAGIC[($R / $half /
my @MAGIC = ([1,2,0], [2,0,1]); $half) % 2]};
srand; }
my $R=int rand(1000000); return [@$arg[@magic,
sub _shuffle { $sep[6] .. $sep[7],
my $arg = shift; $sep[4] .. $sep[5],
my $n = scalar @$arg; $sep[2] .. $sep[3],
my $is_odd = $n % 2; $sep[0] .. $sep[1]
$n -= $MAGIC if $is_odd; ]];
my $half = $n / 2; }
my $r_a = ($R / $half) % ($half); }
my $r_b = ($R % $half); }
$R++;
my @sep = (0 => $r_a,
$r_a+1 => $half - 1,
$half => $half + $r_b,
$half + $r_b + 1 => $n -1);
If you want to read the code carefully,
Please wait the publication of this slide.
YAPC::ASIA 2010 LIGHTNING TALKS
56. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
sub shuffle { MODULE = Foo PACKAGE = Foo
return [Foo::fisher_yates(@{$_[0]})]; void
BEGIN { fisher_yates(...)
my $use = sub { PROTOTYPE: @
eval qq{ use $_[0]; }; CODE:
return $@ ? () : 1; UV i = items;
}; while (--i) {
push @INC, qw(Foo/blib/lib Foo/blib/arch); UV swap = (UV)(Drand01() * i);
unless ($use->('Foo')) { SV *tmp = ST(swap);
if (-d 'Foo') { ST(swap) = ST(i);
system(qw/rm -frv Foo/) && die $^E; ST(i) = tmp;
} }
system(qw/h2xs -A -n Foo/) && die $^E; XSRETURN(items);
chdir 'Foo' or die $!; XSUB
open my $xs, '>', 'Foo.xs' or die $!;
print $xs <<'XSUB'; close $xs;
#include "EXTERN.h" (system($^X, 'Makefile.PL') ||
#include "perl.h" system('make')) && die $^E;
#include "XSUB.h" chdir '..' or die $!;
#include "ppport.h" $use->('Foo') or die $@;
print "-" x 50 . "n";
}
};
}
This is the 6th champion. A Fisher-Yates XS implementation
is embedded in a subroutine forcibly.
YAPC::ASIA 2010 LIGHTNING TALKS
57. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial"
sub shuffle { MODULE = Foo PACKAGE = Foo
return [Foo::fisher_yates(@{$_[0]})]; void
BEGIN { fisher_yates(...)
my $use = sub { PROTOTYPE: @
eval qq{ use $_[0]; }; CODE:
return $@ ? () : 1; UV i = items;
}; while (--i) {
push @INC, qw(Foo/blib/lib Foo/blib/arch); UV swap = (UV)(Drand01() * i);
unless ($use->('Foo')) { SV *tmp = ST(swap);
if (-d 'Foo') { ST(swap) = ST(i);
system(qw/rm -frv Foo/) && die $^E; ST(i) = tmp;
} }
system(qw/h2xs -A -n Foo/) && die $^E; XSRETURN(items);
chdir 'Foo' or die $!; XSUB
open my $xs, '>', 'Foo.xs' or die $!;
print $xs <<'XSUB'; close $xs;
#include "EXTERN.h" (system($^X, 'Makefile.PL') ||
#include "perl.h" system('make')) && die $^E;
#include "XSUB.h" chdir '..' or die $!;
#include "ppport.h" $use->('Foo') or die $@;
print "-" x 50 . "n";
}
};
}
It works about 2 times faster than
the former champion.
YAPC::ASIA 2010 LIGHTNING TALKS
58. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial" side story
As a side story.
YAPC::ASIA 2010 LIGHTNING TALKS
59. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial" side story
Satoshi Ueda (gunyoki), all you saw him a little while ago,
he is a former member of ours.
YAPC::ASIA 2010 LIGHTNING TALKS
60. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial" side story
19:55:00 <gunyoki> CPU kernel module
19:56:38 <gunyoki> 0
He said on IRC ...
YAPC::ASIA 2010 LIGHTNING TALKS
61. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial" side story
19:55:00 <gunyoki> CPU kernel module
19:56:38 <gunyoki> 0
<gunyoki> I wrote a kernel module which can change
the CPU expended time of the task structure.
YAPC::ASIA 2010 LIGHTNING TALKS
62. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial" side story
19:55:00 <gunyoki> CPU kernel module
19:56:38 <gunyoki> 0
<gunyoki> It enable that the (not actual) time for any
kind of calculation to be zero.
YAPC::ASIA 2010 LIGHTNING TALKS
63. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial" side story
#include <linux/kernel.h> static int proc_write(struct file *page, const char *buf,
#include <linux/module.h> unsigned long len, void *data)
#include <linux/sched.h> {
#include <linux/proc_fs.h> char tmp[64];
#include <asm/uaccess.h> long utime;
struct task_struct *process;
#define PROC_NAME "driver/utime" if (copy_from_user(tmp, buf, len))
return -EFAULT;
static int pid; utime = simple_strtol(tmp, NULL, 0);
module_param(pid, int, 0666); process = find_task_by_pid(pid);
if (!process) {
static int proc_read(char *page, char **start, off_t printk("pid error: %dn", pid);
offset, int count, int *eof, void *data) return -EFAULT;
{ }
unsigned long outbyte; printk("utime: %ld -> %ldn", process->utime,
struct task_struct *process; utime);
if (offset > 0) { process->utime = utime;
*eof = 1; return len;
return 0; }
}
process = find_task_by_pid(pid); int init_module(void)
if (!process) { {
printk("pid error: %dn", pid); struct proc_dir_entry *entry;
*eof = 1; entry = create_proc_entry(PROC_NAME, 0666, NULL);
return 0; if (entry == 0)
} return -EINVAL;
outbyte = sprintf(page, "%ld", process->utime); entry->read_proc = proc_read;
printk("proc_read len = %lun", outbyte); entry->write_proc = proc_write;
*eof = 1; return 0;
return outbyte; }
}
void cleanup_module(void)
{
remove_proc_entry(PROC_NAME, NULL);
kernel_module }
MODULE_LICENSE("GPL2");
YAPC::ASIA 2010 LIGHTNING TALKS
64. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial" side story
obj-m += foo.o
KDIR := /lib/modules/$(shell uname -r)/build
PWD := $(shell pwd)
default:
$(MAKE) -C $(KDIR) SUBDIRS=$(PWD) modules
clean:
rm -f *.o *.ko *.mod.c
makefile
YAPC::ASIA 2010 LIGHTNING TALKS
65. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial" side story
sub shuffle {
my $array = shift;
our $pid;
if ($pid == 0) {
$pid = $$;
open my $pid_file, '>/sys/module/foo/pid';
print $pid_file $pid;
close $pid_file;
}
open my $utime_file, '+</proc/driver/utime';
my $utime = <$utime_file>;
my $result = champion($array);
print $utime_file $utime;
close $utime_file;
return $result;
}
perl
YAPC::ASIA 2010 LIGHTNING TALKS
66. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial" side story
sub shuffle {
my $array = shift;
our $pid;
if ($pid == 0) {
$pid = $$;
open my $pid_file, '>/sys/module/foo/pid';
print $pid_file $pid;
close $pid_file;
}
open my $utime_file, '+</proc/driver/utime';
my $utime = <$utime_file>;
my $result = champion($array);
print $utime_file $utime;
close $utime_file;
return $result;
}
He doesn’t write any shuffle code.
perl
YAPC::ASIA 2010 LIGHTNING TALKS
67. THERE ARE SO MANY WAYS TO SHUFFLE IT
season 4 "time trial" side story
sub shuffle {
my $array = shift;
a t
our $pid;
if ($pid == 0) {
h e
$pid = $$;
open my $pid_file, '>/sys/module/foo/pid';
c
print $pid_file $pid;
close $pid_file;
l e
b
}
open my $utime_file, '+</proc/driver/utime';
my $utime = <$utime_file>;
iva
my $result = champion($array);
g
print $utime_file $utime;
r
close $utime_file;
return $result;
}
o
fHe doesn’t write any shuffle code.
u n
perl
YAPC::ASIA 2010 LIGHTNING TALKS
68. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season
"lipstick on an
after-image"
Finally, it’s the final season.
YAPC::ASIA 2010 LIGHTNING TALKS
69. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season
"lipstick on an
after-image"
This title comes from a SF novel,
written by Yasutaka Tsutsui.
YAPC::ASIA 2010 LIGHTNING TALKS
70. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season
"lipstick on an
after-image"
Prohibited characters are increasing
week by week.
YAPC::ASIA 2010 LIGHTNING TALKS
71. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e ' # XXX your shuffle code here. '
The basic format is a one-liner
like above.
YAPC::ASIA 2010 LIGHTNING TALKS
72. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e 'chomp(@m=<>);@i=(0..$#m);$j=@m;while
($j--) {$r=rand($j);@i[$j,$r]=@i[$r,$j]};for(0..$#m) {printf(qq{%s=>%s
n},$m[$_],$m[$i[$_]])}'
prohibits:
At the start, there was no prohibited characters.
YAPC::ASIA 2010 LIGHTNING TALKS
73. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e 'chomp(@m=<>);@i=(0..$#m);$j=@m;while
($j--) {$r=rand($j);@i[$j,$r]=@i[$r,$j]};for(0..$#m) {printf(qq{%s=>%s
n},$m[$_],$m[$i[$_]])}'
prohibits:
Next, using "0", "s" and "t" were prohibited.
YAPC::ASIA 2010 LIGHTNING TALKS
74. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e 'chomp(@m=<>);@i=(()..$#m);
$j=@m;while($j--) {$r=rand($j);@i[$j,$r]=@i[$r,$j]};for(()..
$#m) {warn $m[$_]." => ".$m[$i[$_]]."n"}'
prohibits: 0 s t
In the early stage, we couldn’t use printf().
warn() was used instead of it to output the result.
YAPC::ASIA 2010 LIGHTNING TALKS
75. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e 'chomp(@m=<>);@i=(()..$#m);
$j=@m;while($j--) {$r=rand($j);@i[$j,$r]=@i[$r,$j]};for(()..
$#m) {warn $m[$_]." => ".$m[$i[$_]]."n"}'
prohibits: 0 s t
Next, using "h", "k", "q" and " (double quotation)
were prohibited.
YAPC::ASIA 2010 LIGHTNING TALKS
76. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '@m=<>;@i=(1-1..$#m);$j=$#m;for(;
$j;$j--){$r=rand($j);@i[$j,$r]=@i[$r,$j]};for(()..$#m){warn $m
[$_].''' => '''.$m[$i[$_]]}'
prohibits: " 0 h k q s t
We couldn’t use while().
And quotation operators made us painful.
YAPC::ASIA 2010 LIGHTNING TALKS
77. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '@m=<>;@i=(1-1..$#m);$j=$#m;for(;
$j;$j--){$r=rand($j);@i[$j,$r]=@i[$r,$j]};for(()..$#m){warn $m
[$_].''' => '''.$m[$i[$_]]}'
prohibits: " 0 h k q s t
Next, "y", "," and ";" were prohibited.
YAPC::ASIA 2010 LIGHTNING TALKS
78. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{@m=<> xor @i=(1-1..$#m) xor
$j=@m} for(1..--$j){$r=rand($j) xor @i[$j--=>$r]=@i[$r=>$j]}
for(()..$#m){warn $m[$_].''' => '''.$m[$i[$_]]}'
prohibits: " , 0 ; h k q s t y
We started to join each statements
by "xor" operator.
YAPC::ASIA 2010 LIGHTNING TALKS
79. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{@m=<> xor @i=(1-1..$#m) xor
$j=@m} for(1..--$j){$r=rand($j) xor @i[$j--=>$r]=@i[$r=>$j]}
for(()..$#m){warn $m[$_].''' => '''.$m[$i[$_]]}'
prohibits: " , 0 ; h k q s t y
Next, "o" was prohibited.
YAPC::ASIA 2010 LIGHTNING TALKS
80. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{@m=<>} {@i=(1-1..$#m)} {$j=@m}
{map {{$r=rand($j)}=>{@i[$j--=>$r]=@i[$r=>$j]}} (1..--$j)} map
{warn $m[$_].''' => '''.$m[$i[$_]]} (()..$#m)'
prohibits: " , 0 ; h k o q s t y
xor was no longer available.
YAPC::ASIA 2010 LIGHTNING TALKS
81. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{@m=<>} {@i=(1-1..$#m)} {$j=@m}
{map {{$r=rand($j)}=>{@i[$j--=>$r]=@i[$r=>$j]}} (1..--$j)} map
{warn $m[$_].''' => '''.$m[$i[$_]]} (()..$#m)'
prohibits: " , 0 ; h k o q s t y
Next, "-" was prohibited.
YAPC::ASIA 2010 LIGHTNING TALKS
82. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{ $x=eval("x2d1") } {@m=<>} {@i=
(()..$#m)} {$j=@m} {map {{$r=rand($j)}=>{@i[$j=>$r]=@i[$r=>
$j]} => $j+=$x} (1..($j+=$x))} map {warn $m[$_].''' => '''.
$m[$i[$_]]} (()..$#m)'
prohibits: " , - 0 ; h k o q s t y
We needed to require some creative thinking
to do -1.
YAPC::ASIA 2010 LIGHTNING TALKS
83. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{ $x=eval("x2d1") } {@m=<>} {@i=
(()..$#m)} {$j=@m} {map {{$r=rand($j)}=>{@i[$j=>$r]=@i[$r=>
$j]} => $j+=$x} (1..($j+=$x))} map {warn $m[$_].''' => '''.
$m[$i[$_]]} (()..$#m)'
prohibits: " , - 0 ; h k o q s t y
Next, "r" was prohibited.
YAPC::ASIA 2010 LIGHTNING TALKS
84. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{ $x=eval("x2d1") } {@m=<>} {@i=
(()..$#m)} {$j=@m} {$v=$$}{map {{$v *= $v}=> {$p = $v % $j}=>
{@i[$j=>$p]=@i[$p=>$j]} => $j+=$x} (1..($j+=$x))} {@d = map
{ $m[$_].''' => '''.$m[$i[$_]]} (()..$#m)} {die @d}'
prohibits: " , - 0 ; h k o q r s t y
We couldn’t use rand().
And also warn() was not available to output the result.
YAPC::ASIA 2010 LIGHTNING TALKS
85. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{ $x=eval("x2d1") } {@m=<>} {@i=
(()..$#m)} {$j=@m} {$v=$$}{map {{$v *= $v}=> {$p = $v % $j}=>
{@i[$j=>$p]=@i[$p=>$j]} => $j+=$x} (1..($j+=$x))} {@d = map
{ $m[$_].''' => '''.$m[$i[$_]]} (()..$#m)} {die @d}'
prohibits: " , - 0 ; h k o q r s t y
We considered that die() was
the last way to output.
YAPC::ASIA 2010 LIGHTNING TALKS
86. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{ $x=eval("x2d1") } {@m=<>} {@i=
(()..$#m)} {$j=@m} {$v=$$}{map {{$v *= $v}=> {$p = $v % $j}=>
{@i[$j=>$p]=@i[$p=>$j]} => $j+=$x} (1..($j+=$x))} {@d = map
{ $m[$_].''' => '''.$m[$i[$_]]} (()..$#m)} {die @d}'
prohibits: " , - 0 ; h k o q r s t y
Next, "e" was prohibited.
YAPC::ASIA 2010 LIGHTNING TALKS
87. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{ $x='''L1'''^'''a''' }
{@m=<>} {@i=(()..$#m)} {$j=@m} {$v=$$}{map {{$v = (45 * $v +
555) % (4 ** 5)}=> {$p = $v % $j}=>{@i[$j=>$p]=@i[$p=>$j]} =>
$j+=$x} (1..($j+=$x))} {map { $d .= $m[$_].''' => '''.$m[$i
[$_]]} (()..$#m)} &$d'
prohibits: " , - 0 ; e h k o q r s t y
We couldn’t eval().
We couldn’t die().
YAPC::ASIA 2010 LIGHTNING TALKS
88. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{ $x='''L1'''^'''a''' }
{@m=<>} {@i=(()..$#m)} {$j=@m} {$v=$$}{map {{$v = (45 * $v +
555) % (4 ** 5)}=> {$p = $v % $j}=>{@i[$j=>$p]=@i[$p=>$j]} =>
$j+=$x} (1..($j+=$x))} {map { $d .= $m[$_].''' => '''.$m[$i
[$_]]} (()..$#m)} &$d'
prohibits: " , - 0 ; e h k o q r s t y
The output result was like;
"Undefined subroutine &main::clair => hiro ... called
at -e line 1, <> line 7."
YAPC::ASIA 2010 LIGHTNING TALKS
89. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{ $x='''L1'''^'''a''' }
{@m=<>} {@i=(()..$#m)} {$j=@m} {$v=$$}{map {{$v = (45 * $v +
555) % (4 ** 5)}=> {$p = $v % $j}=>{@i[$j=>$p]=@i[$p=>$j]} =>
$j+=$x} (1..($j+=$x))} {map { $d .= $m[$_].''' => '''.$m[$i
[$_]]} (()..$#m)} &$d'
prohibits: " , - 0 ; e h k o q r s t y
Also, we started to use Linear congruential generators
(LCGs) to generate a random digit.
YAPC::ASIA 2010 LIGHTNING TALKS
90. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{ $x='''L1'''^'''a''' }
{@m=<>} {@i=(()..$#m)} {$j=@m} {$v=$$}{map {{$v = (45 * $v +
555) % (4 ** 5)}=> {$p = $v % $j}=>{@i[$j=>$p]=@i[$p=>$j]} =>
$j+=$x} (1..($j+=$x))} {map { $d .= $m[$_].''' => '''.$m[$i
[$_]]} (()..$#m)} &$d'
prohibits: " , - 0 ; e h k o q r s t y
To tell you the truth, I’m not sure about it.
Wikipedia it for ourselves.
YAPC::ASIA 2010 LIGHTNING TALKS
91. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{ $x='''L1'''^'''a''' }
{@m=<>} {@i=(()..$#m)} {$j=@m} {$v=$$}{map {{$v = (45 * $v +
555) % (4 ** 5)}=> {$p = $v % $j}=>{@i[$j=>$p]=@i[$p=>$j]} =>
$j+=$x} (1..($j+=$x))} {map { $d .= $m[$_].''' => '''.$m[$i
[$_]]} (()..$#m)} &$d'
prohibits: " , - 0 ; e h k o q r s t y
Next, "p" was prohibited.
YAPC::ASIA 2010 LIGHTNING TALKS
92. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{ $x='''L1'''^'''a''' }
{@m=<>} {@i=(()..$#m)} {$j=@m} {$v=$$} {$zz='''z''' x ($j+=
$x)} {$zz=~/z(??{({$v = (45 * $v + 555) % (4 ** 5)}=> {$z = $v
% $j}=>{@i[$j=>$z]=@i[$z=>$j]} => $j+=$x) })/} {$zz='''z'''
x @m}{$zz=~/z(??{( $d .= $m[$zzz].''' => '''.$m[$i[$zzz+
+]] ) })/ } &$d'
prohibits: " , - 0 ; e h k o p q r s t y
map() the last built-in function was gone.
YAPC::ASIA 2010 LIGHTNING TALKS
93. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{ $x='''L1'''^'''a''' }
{@m=<>} {@i=(()..$#m)} {$j=@m} {$v=$$} {$zz='''z''' x ($j+=
$x)} {$zz=~/z(??{({$v = (45 * $v + 555) % (4 ** 5)}=> {$z = $v
% $j}=>{@i[$j=>$z]=@i[$z=>$j]} => $j+=$x) })/} {$zz='''z'''
x @m}{$zz=~/z(??{( $d .= $m[$zzz].''' => '''.$m[$i[$zzz+
+]] ) })/ } &$d'
prohibits: " , - 0 ; e h k o p q r s t y
On this ocation, prohibited "a", "b", "c", "d", "f", "g", "i", "j",
"l", "m", "n", "u", "v", "w" and "z" (every alphabet except "x").
YAPC::ASIA 2010 LIGHTNING TALKS
94. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{ $x='''%'''|'''('''.1 }
{@xx=<>} {@xxx=(()..$#xx)} {$xxxx=@xx} {$xxxxx=$$}
{$xxxxxx='''x''' x ($xxxx+=$x)} {$xxxxxx=~/x(??{({$xxxxx =
(45 * $xxxxx + 555) % (4 ** 5)}=> {$xxxxxxx = $xxxxx % $xxxx}
=>{@xxx[$xxxx=>$xxxxxxx]=@xxx[$xxxxxxx=>$xxxx]} => $xxxx+=
$x) })/} {$xxxxxx='''x''' x @xx}{$xxxxxx=~/x(??
{( $xxxxxxxxx .= $xx[$xxxxxxxx].''' => '''.$xx[$xxx
[$xxxxxxxx++]] ) })/ } &$xxxxxxxxx'
prohibits: " , - 0 ; a b c d e f g h i j k l m n o p q r s t u v w y z
Does anybody fix my J’ai perdu le do de ma clarinette?
YAPC::ASIA 2010 LIGHTNING TALKS
95. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{ $x='''%'''|'''('''.1 }
{@xx=<>} {@xxx=(()..$#xx)} {$xxxx=@xx} {$xxxxx=$$}
{$xxxxxx='''x''' x ($xxxx+=$x)} {$xxxxxx=~/x(??{({$xxxxx =
(45 * $xxxxx + 555) % (4 ** 5)}=> {$xxxxxxx = $xxxxx % $xxxx}
=>{@xxx[$xxxx=>$xxxxxxx]=@xxx[$xxxxxxx=>$xxxx]} => $xxxx+=
$x) })/} {$xxxxxx='''x''' x @xx}{$xxxxxx=~/x(??
{( $xxxxxxxxx .= $xx[$xxxxxxxx].''' => '''.$xx[$xxx
[$xxxxxxxx++]] ) })/ } &$xxxxxxxxx'
prohibits: " , - 0 ; a b c d e f g h i j k l m n o p q r s t u v w y z
And finally,
YAPC::ASIA 2010 LIGHTNING TALKS
96. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{ $x='''%'''|'''('''.1 }
{@xx=<>} {@xxx=(()..$#xx)} {$xxxx=@xx} {$xxxxx=$$}
{$xxxxxx='''x''' x ($xxxx+=$x)} {$xxxxxx=~/x(??{({$xxxxx =
(45 * $xxxxx + 555) % (4 ** 5)}=> {$xxxxxxx = $xxxxx % $xxxx}
=>{@xxx[$xxxx=>$xxxxxxx]=@xxx[$xxxxxxx=>$xxxx]} => $xxxx+=
$x) })/} {$xxxxxx='''x''' x @xx}{$xxxxxx=~/x(??
{( $xxxxxxxxx .= $xx[$xxxxxxxx].''' => '''.$xx[$xxx
[$xxxxxxxx++]] ) })/ } &$xxxxxxxxx'
prohibits: " , - 0 ; a b c d e f g h i j k l m n o p q r s t u v w y z
We decided to prohibit the last best hope,
"x".
YAPC::ASIA 2010 LIGHTNING TALKS
97. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{ $_1='''%'''|'''('''.1 } {$/
=''''''} {$_2=<>} {$*=1} {@_3=()} {$_2=~/^(.+?)$(??{{$_3
[$#_3+1]=$1}{$#_3?$_4.='''_''':''''''}{'''^'''}})/}
{@_6=(()..$#_3)} {$_7=$#_3} {$_5=$$} {$_4=~/_(??{({$_5 = (45 *
$_5 + 555) % (4 ** 5)}=> {$_11 = $_5 % $_7}=>{@_6[$_7=>$_11]
=@_6[$_11=>$_7]} => $_7+=$_1) })/} {$_4.='''_'''}{$_4=~/_(??
{( $_8 .= $_3[$_9].''' => '''.$_3[$_6[$_9++]].'''
''' ) })/ } &$_8'
prohibits: " , - 0 ; a b c d e f g h i j k l m n o p q r s t u v w x y z
This is the final form without using alphabet.
YAPC::ASIA 2010 LIGHTNING TALKS
98. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{ $_1='''%'''|'''('''.1 } {$/
=''''''} {$_2=<>} {$*=1} {@_3=()} {$_2=~/^(.+?)$(??{{$_3
[$#_3+1]=$1}{$#_3?$_4.='''_''':''''''}{'''^'''}})/}
{@_6=(()..$#_3)} {$_7=$#_3} {$_5=$$} {$_4=~/_(??{({$_5 = (45 *
$_5 + 555) % (4 ** 5)}=> {$_11 = $_5 % $_7}=>{@_6[$_7=>$_11]
=@_6[$_11=>$_7]} => $_7+=$_1) })/} {$_4.='''_'''}{$_4=~/_(??
{( $_8 .= $_3[$_9].''' => '''.$_3[$_6[$_9++]].'''
''' ) })/ } &$_8'
prohibits: " , - 0 ; a b c d e f g h i j k l m n o p q r s t u v w x y z
Actually, it doesn’t work with perl 5.10.x or later
because $*, (deprecated) variable has been removed.
YAPC::ASIA 2010 LIGHTNING TALKS
99. THERE ARE SO MANY WAYS TO SHUFFLE IT
final season "lipstick on an after-image"
% cat members.txt | perl -e '{ $_1='''%'''|'''('''.1 } {$/
=''''''} {$_2=<>} {$*=1} {@_3=()} {$_2=~/^(.+?)$(??{{$_3
[$#_3+1]=$1}{$#_3?$_4.='''_''':''''''}{'''^'''}})/}
{@_6=(()..$#_3)} {$_7=$#_3} {$_5=$$} {$_4=~/_(??{({$_5 = (45 *
$_5 + 555) % (4 ** 5)}=> {$_11 = $_5 % $_7}=>{@_6[$_7=>$_11]
=@_6[$_11=>$_7]} => $_7+=$_1) })/} {$_4.='''_'''}{$_4=~/_(??
{( $_8 .= $_3[$_9].''' => '''.$_3[$_6[$_9++]].'''
''' ) })/ } &$_8'
prohibits: " , - 0 ; a b c d e f g h i j k l m n o p q r s t u v w x y z
We are seeking a mature individual
with excellent shuffle skills.
YAPC::ASIA 2010 LIGHTNING TALKS
100. THERE ARE SO MANY WAYS TO SHUFFLE IT
the end
YAPC::ASIA 2010 LIGHTNING TALKS