Podcasts about nltk

  • 18PODCASTS
  • 21EPISODES
  • 52mAVG DURATION
  • ?INFREQUENT EPISODES
  • Apr 30, 2024LATEST

POPULARITY

20172018201920202021202220232024


Best podcasts about nltk

Latest podcast episodes about nltk

AI Unchained
Ai_022 - Applying Ai

AI Unchained

Play Episode Listen Later Apr 30, 2024 70:02


How can AI be harnessed to manage and enhance personal and professional digital interactions more effectively? In this episode of "AI Unchained," explore the essential tools and concepts needed to apply AI in self-hosted environments, navigate the intricacies of vector embeddings, and integrate AI seamlessly into your digital workspace. What modular approaches and AI skills are essential as coding becomes more automated? Dive into these questions and more with host Guy Swan. Links to check out ⁠Devs Who Can't Code #1 - Build a To Do App (Link: https://tinyurl.com/29taj247) ⁠Devs Who Can't Code #2 - Build a Bitcoin Price Tracker (Link: https://tinyurl.com/38bw54sy) ⁠Unleashed.chat⁠ (Link: https://unleashed.chat/) ⁠NLTK, SKlearn, RE⁠ (Link: https://tinyurl.com/537h53m8) ⁠LM Studio⁠ (Link: https://lmstudio.ai/) Guest Links ⁠[Guest Name] on X⁠ (Link: https://twitter.com/guest) ⁠[Guest Name] on Nostr⁠ (Link: https://tinyurl.com/XXX) ⁠[Guest/Company Website]⁠ (Link: https://example.com/) Host Links ⁠Guy on Nostr ⁠(Link: http://tinyurl.com/2xc96ney) ⁠Guy on X ⁠(Link: https://twitter.com/theguyswann) ⁠Guy on Instagram⁠ (Link: https://www.instagram.com/theguyswann/) ⁠Guy on TikTok⁠ (Link: https://www.tiktok.com/@theguyswann) ⁠Guy on YouTube⁠ (Link: https://www.youtube.com/@theguyswann) ⁠⁠Bitcoin Audible on X⁠⁠ (Link: https://twitter.com/BitcoinAudible) Check out our awesome sponsors! Get ⁠10% off the COLDCARD⁠ with code BITCOINAUDIBLE ⁠⁠⁠⁠⁠⁠(Link: bitcoinaudible.com/coldcard⁠⁠⁠⁠⁠⁠) ⁠Swan⁠: The best way to buy, learn, and earn #Bitcoin (Link: https://swanbitcoin.com)

Bitcoin Audible
Ai_022 - Applying Ai

Bitcoin Audible

Play Episode Listen Later Apr 30, 2024 70:02


How can AI be harnessed to manage and enhance personal and professional digital interactions more effectively? In this episode of "AI Unchained," explore the essential tools and concepts needed to apply AI in self-hosted environments, navigate the intricacies of vector embeddings, and integrate AI seamlessly into your digital workspace. What modular approaches and AI skills are essential as coding becomes more automated? Dive into these questions and more with host Guy Swann.   Links to check out ⁠Devs Who Can't Code #1 - Build a To Do App (Link: https://tinyurl.com/29taj247) ⁠Devs Who Can't Code #2 - Build a Bitcoin Price Tracker (Link: https://tinyurl.com/38bw54sy) ⁠Unleashed.chat⁠ (Link: https://unleashed.chat/) ⁠NLTK, SKlearn, RE⁠ (Link: https://tinyurl.com/537h53m8) ⁠LM Studio⁠ (Link: https://lmstudio.ai/) Host Links ⁠Guy on Nostr ⁠(Link: http://tinyurl.com/2xc96ney) ⁠Guy on X ⁠(Link: https://twitter.com/theguyswann) Guy on Instagram (Link: https://www.instagram.com/theguyswann) Guy on TikTok (Link: https://www.tiktok.com/@theguyswann) Guy on YouTube (Link: https://www.youtube.com/@theguyswann) ⁠Bitcoin Audible on X⁠ (Link: https://twitter.com/BitcoinAudible) The Guy Swann Network Broadcast Room on Keet (Link: https://tinyurl.com/3na6v839) Check out our awesome sponsors! Fold: The best way to buy, use, and earn #Bitcoin on everything you do! Sats back on your debit card, gift cards, auto-buys, round-ups, you name it. Fold is the true bitcoiner's banking. Get 20K sats for FREE using referral code bitcoinaudible.com/fold Ready for best-in-class self custody? Get the Jade here and use discount code 'GUY' to get 10% off (Link: bitcoinaudible.com/jade) Trying to BUY BITCOIN? River, secure, trusted, bitcoin only, lightning enabled, simple. (Link: https://bitcoinaudible.com/river) Bitcoin Games! Get 10% off the best Bitcoin board game in the world, HODLUP! Or any of the other great games from the Free Market Kids! Use code GUY10 at checkout for 10% off your cart! (Link: https://www.freemarketkids.com/collections/games-1) Bitcoin Custodial Multisig Want to get into Bitcoin but not ready for self custody? Use custodial multisig for the best way to distribute trust across multiple institutions and even jurisdictions! Check out OnRamp. (Link: BitcoinAudible.com/onramp) Education & HomeSchooling Get the lesson in real economics that you never got in school, and teach your kids the truth, not the statist insanity that is Keynesianism. Liberty Classroom is the invaluable resource you are looking for! (...

The Nonlinear Library
AF - Understanding SAE Features with the Logit Lens by Joseph Isaac Bloom

The Nonlinear Library

Play Episode Listen Later Mar 11, 2024 26:35


Welcome to The Nonlinear Library, where we use Text-to-Speech software to convert the best writing from the Rationalist and EA communities into audio. This is: Understanding SAE Features with the Logit Lens, published by Joseph Isaac Bloom on March 11, 2024 on The AI Alignment Forum. This work was produced as part of the ML Alignment & Theory Scholars Program - Winter 2023-24 Cohort, with support from Neel Nanda and Arthur Conmy. Joseph Bloom is funded by the LTFF, Manifund Regranting Program, donors and LightSpeed Grants. This post makes extensive use of Neuronpedia, a platform for interpretability focusing on accelerating interpretability researchers working with SAEs. Links: SAEs on HuggingFace, Analysis Code Executive Summary This is an informal post sharing statistical methods which can be used to quickly / cheaply better understand Sparse Autoencoder (SAE) features. Firstly, we use statistics (standard deviation, skewness and kurtosis) of the logit weight distributions of features (WuWdec[feature]) to characterize classes of features, showing that many features can be understood as promoting / suppressing interpretable classes of tokens. We propose 3 different kinds of features, analogous to previously characterized " universal neurons": Partition Features, which (somewhat) promote half the tokens and suppress the other half according to capitalization and spaces (example pictured below) Suppression Features, which act like partition features but are more asymmetric. Prediction Features which promote tokens in classes of varying sizes, ranging from promoting tokens that have a close bracket to promoting all present tense verbs. Secondly, we propose a statistical test for whether a feature's output direction is trying to distinguish tokens in some set (eg: "all caps tokens") from the rest. We borrowed this technique from systems biology where it is used at scale frequently. The key limitation here is that we need to know in advance which sets of tokens are promoted / inhibited. Lastly, we demonstrate the utility of the set-based technique by using it to locate features which enrich token categories of interest (defined by regex formulas, NLTK toolkit parts of speech tagger and common baby names for boys/girls). Feature 4467. Above: Feature Dashboard Screenshot from Neuronpedia. It is not immediately obvious from the dashboard what this feature does. Below: Logit Weight distribution classified by whether the token starts with a space, clearly indicating that this feature promotes tokens which lack an initial space character. Introduction In previous work, we trained and open-sourced a set of sparse autoencoders (SAEs) on the residual stream of GPT2 small. In collaboration with Neuronpedia, we've produced feature dashboards, auto-interpretability explanations and interfaces for browsing for ~300k+ features. The analysis in this post is performed on features from the layer 8 residual stream of GPT2 small (for no particular reason). SAEs might enable us to decompose model internals into interpretable components. Currently, we don't have a good way to measure interpretability at scale, but we can generate feature dashboards which show things like how often the feature fires, its direct effect on tokens being sampled (the logit weight distribution) and when it fires (see examples of feature dashboards below). Interpreting the logit weight distribution in feature dashboards for multi-layer models is implicitly using Logit Lens, a very popular technique in mechanistic interpretability. Applying the logit lens to features means that we compute the product of a feature direction and the unembed (WuWdec[feature]), referred to as the "logit weight distribution". Since SAEs haven't been around for very long, we don't yet know what the logit weight distributions typically look like for SAE features. Moreover, we find that the form of logit weight distribution can vary greatly. In most cases we see a vaguely normal distribution and s...

AI Unraveled: Latest AI News & Trends, Master GPT, Gemini, Generative AI, LLMs, Prompting, GPT Store
Free Platforms and Libraries for Quantum Machine Learning; Open AI introduces "SuperAlignment"; NLTK vs spaCy; Ai deals with Climate Research; Google releases "Help Me Write" AI for your Gmail;

AI Unraveled: Latest AI News & Trends, Master GPT, Gemini, Generative AI, LLMs, Prompting, GPT Store

Play Episode Listen Later Jul 6, 2023 24:17


Free Platforms and Libraries for Quantum Machine LearningOpen AI introduces "SuperAlignment"Sam Altman says the worst-case scenario for artificial intelligence is 'lights out for all of us'Ai deals with Climate ResearchGrammy to Establish a Nomination for Songs Created by AIGoogle releases "Help Me Write" AI for your GmailGenerative AI in games will create a copyright crisisAs AI cheating booms, so does the industry detecting it: ‘We couldn't keep up with demand'Urtopia unveils an e-bike with ChatGPT integrationJapan emphasizing the importance of students understanding AiThis podcast is generated using the Wondercraft AI platform, a tool that makes it super easy to start your own podcast, by enabling you to use hyper-realistic AI voices as your host. Like mine!Attention AI Unraveled podcast listeners!Are you eager to expand your understanding of artificial intelligence? Look no further than the essential book "AI Unraveled: Demystifying Frequently Asked Questions on Artificial Intelligence," by Etienne Noumen, now available at Apple, Google, or Amazon today!Amplify Your Brand's Exposure with the AI Unraveled Podcast - Elevate Your Sales Today at: https://djamgatech.com/product/ai-unraveled-podcast-per-episode-integration/

The Secret To Success
No More Small Businesses With Ai

The Secret To Success

Play Episode Listen Later May 11, 2023 188:54


No More Small Businesses With Ai5/11/23IBM Reportedly Prepares to Halt Hiring for Jobs That Could Soon Be Replaced by AIhttps://www.youtube.com/watch?v=Yfn01Z1ZUbcIBM CEO Arvind Krishna Says A.I. Will Make More Jobs Than it Will Replacehttps://www.youtube.com/watch?v=EUX7DkQrVyYRhinoLeg 50 Job Titles with Descriptionshttps://s3.us-central-1.wasabisys.com/rhinoleg-backoffice/Docs/RhinoLeg50.docxIn the next 36 months, about 8,000 jobs will be replacedCEOs want 2 things:MoneyMore moneyPrompt 1Antonio T Smith Jr is teaching a class right now. He asked me to tell you to give him 50 jobs that artificial intelligence will replace in the next 5 years. I need a list of 50 and you don't have to give me a description, just job, title, or industry is good enough. ChatGPT ResponseData Entry ClerkTelemarketerBookkeeping ClerkCompensation and Benefits ManagerReceptionistCourierProofreaderRetail SalespersonMarket Research AnalystAdvertising Sales AgentTaxi DriverFast Food CookInsurance UnderwriterTravel AgentReal Estate BrokerToll Booth OperatorInventory ManagerParalegalBank TellerAgricultural WorkerCustomer Service RepresentativeCredit AnalystLoan OfficerCashierAssembly Line WorkerTextile WorkerHotel Desk ClerkLibrarianPostal Service WorkerNewspaper DeliverySports RefereeTrain OperatorMeter ReaderMail SorterWarehouse LaborerTranscriptionistPhoto ProcessorParking Enforcement WorkerConstruction LaborerSurveyorAircraft Cargo Handling SupervisorSecurity GuardFarm Labor ContractorFilm and Video EditorInsurance Claims ClerkOrder ClerkPayroll and Timekeeping ClerkProcurement ClerkShipping and Receiving ClerkSwitchboard OperatorPrompt 2Antonio T Smith Jr told me the 8,000 jobs will be replaced in the next 5 years by Ai. Please analyze this list and give me another 50 regardless of industry that do not repeat this list.ChatGPT ResponseMedical TranscriptionistSewing Machine OperatorGaming DealerPharmacy TechnicianHousekeeping CleanerBaristaLegal SecretaryReservation AgentFast Food ServerBartenderTaxi DispatcherCasino DealerPrint Binding and Finishing WorkerWatch RepairerInsurance Policy Processing ClerkMail CarrierLibrary TechnicianData AnalystReport WriterOffice ClerkTelemarketing Sales AgentBudget AnalystAccountantBank Loan OfficerDesktop PublisherIT Support SpecialistTechnical WriterStock ClerkHR AssistantSales RepresentativeLogisticianPurchasing AgentCost EstimatorReal Estate AppraiserFinancial AnalystTax PreparerBill and Account CollectorSewers, HandPhotographic Process WorkerNew Accounts ClerkBrokerage ClerkOrder FillerFile ClerkInsurance AppraiserFreight AgentRadio OperatorAvionics TechnicianClinical Laboratory TechnicianNuclear Power Reactor OperatorOccupational Therapy AidePrompt 3I am a CEO of a small business, and I am looking to replace 500 jobs in my industry with Ai within the next year. My industry is [your industry], and I am giving you a list of 10 job titles. Please analyze this list of 10 and tell me how these job titles can be maximized to increase my bottom line by $100,000 a year. With each job title and each analysis, give me a short description of how you would use this job title in my industry, which is [your industry]. It is important that you use my industry. ChatGPT ResponseData Entry Clerk: In an AI-powered CRM industry, this role could be replaced or enhanced by automated data entry systems. This could save time, reduce human error, and allow for real-time data updates. The cost savings from minimizing errors and accelerating the data entry process could significantly contribute to your bottom line.Telemarketer: AI can automate certain tasks of a telemarketer, such as scheduling calls and following up with leads. Automated voice systems or chatbots can handle initial customer interactions, filtering out uninterested leads and saving human agents for more promising or complex cases. This increases efficiency and reduces costs.Bookkeeping Clerk: AI systems can handle a lot of the routine tasks of a bookkeeping clerk, such as invoicing, payroll, and financial reporting. This reduces the likelihood of errors and frees up time for your financial team to focus on more strategic tasks, like financial planning and analysis, which could improve your bottom line.Compensation and Benefits Manager: AI can automate and streamline many aspects of compensation and benefits management, such as tracking employee performance, determining appropriate compensation, and managing benefits enrollment. This allows for more accurate and efficient management of employee compensation, which can help retain top talent and improve overall productivity.Receptionist: AI can replace or assist receptionists through automated scheduling systems, call forwarding, and visitor registration. An AI virtual assistant can handle inquiries 24/7, improving customer service and freeing up human staff for higher value tasks.Courier: In an AI-powered CRM business, physical courier roles may be limited. However, if documents or hardware need to be moved, drones or automated delivery systems could be used to reduce costs and speed up delivery times.Proofreader: AI can automate many aspects of proofreading, such as grammar, spelling, and punctuation checks. This could improve the quality of your content and communication, enhancing your brand image and customer satisfaction.Retail Salesperson: In the context of AI-powered CRM, an AI sales assistant could replace or enhance the role of a retail salesperson. It can provide customers with personalized product recommendations, manage inventory, and process orders. This can lead to increased sales and customer satisfaction.Market Research Analyst: AI can automate and enhance many aspects of market research. It can analyze large data sets to identify trends, segment customers, and predict future behavior. This can provide more accurate and timely insights, leading to better decision-making and strategy development.Advertising Sales Agent: AI can automate many aspects of advertising sales, such as identifying potential clients, personalized outreach, and tracking campaign performance. This can increase advertising sales efficiency and effectiveness, leading to increased revenue and profits.Taxi Driver: In the context of your industry, this might relate to the delivery of services or products. Automated scheduling and routing could optimize the efficiency of these deliveries, reducing costs. Moreover, your CRM could potentially offer solutions to taxi companies, providing AI-powered dispatching and routing, leading to increased sales and profits.Fast Food Cook: This could relate to the execution of routine tasks in your business. AI can automate repetitive tasks, improving efficiency and reducing errors. In terms of your CRM, if it's catering to fast food chains, an AI-powered system could predict order volumes and optimize food preparation times, enhancing customer satisfaction and sales.Insurance Underwriter: AI can automate the risk assessment and policy pricing, improving efficiency, accuracy, and consistency. This would save time and reduce costs in similar risk evaluation tasks in your business. For the CRM aspect, AI could offer predictive analytics and automated risk assessment features to insurance firms, enhancing your product offering.Travel Agent: An AI system can automate and personalize recommendations, bookings, and customer service, improving customer satisfaction and sales. Within your CRM, this could translate to providing intelligent recommendations and automating follow-ups with leads and customers.Real Estate Broker: AI can automate property matching, price estimation, and lead generation, improving efficiency and effectiveness. Similarly, your CRM could potentially offer features tailored to the real estate industry, such as automated property matching and personalized client follow-ups.Toll Booth Operator: This might relate to payment collection within your business. AI can automate payment processing and fraud detection, reducing costs and improving cash flow. As for your CRM, you could offer automated payment processing and fraud detection features to clients in industries that collect tolls or fees.Inventory Manager: AI can automate and optimize inventory management, reducing costs and improving service levels. This could translate into your CRM offering AI-powered inventory management solutions, potentially increasing sales and customer satisfaction.Paralegal: AI can automate legal research and document review, improving efficiency and accuracy. Within your CRM, this could mean providing intelligent search and document analysis features, making it more attractive to legal firms.Bank Teller: AI can automate transactions, customer service, and fraud detection, improving efficiency and security. Your CRM could potentially offer tailored solutions to banks, such as AI-powered customer service and fraud detection features.Agricultural Worker: AI can automate crop monitoring, irrigation, and harvesting, improving efficiency and yields. This might mean that your CRM could offer features like predictive analytics and automated task management to clients in the agricultural industry.Customer Service Representative: AI chatbots could handle common inquiries, freeing up human agents to handle more complex queries. This reduces costs and potentially improves customer satisfaction. You could also offer an AI chatbot feature in your CRM, enhancing your product offering.Credit Analyst: AI algorithms can automate credit risk assessment, reducing errors and bias. This could translate to cost savings in any financial risk evaluation within your company. For your CRM, you might offer AI-powered credit risk assessment features to clients in the financial sector.Loan Officer: AI can automate the loan application and approval process, improving efficiency and reducing bias. Similarly, you could offer AI-powered loan processing features in your CRM, making it more attractive to banking and finance clients.Cashier: In a CRM company, this could relate to payment processing. AI can automate payment collection and fraud detection, reducing costs and improving cash flow. You could also offer these features in your CRM to clients in retail and other sectors.Assembly Line Worker: This might relate to the execution of repetitive tasks in your company. AI can automate such tasks, improving efficiency and reducing errors. Your CRM could potentially offer workflow automation features to clients in manufacturing and other sectors.Textile Worker: This could relate to quality control in your company. AI can automate quality checks, improving consistency and reducing costs. Similarly, your CRM could offer AI-powered quality control features to clients in the textile and other industries.Hotel Desk Clerk: AI can automate booking and customer service tasks, improving efficiency and customer satisfaction. Within your CRM, you might offer AI-powered booking and customer service features to clients in the hospitality sector.Librarian: In a CRM context, this could relate to data management. AI can automate data categorization and retrieval, reducing errors and saving time. Your CRM could also offer AI-powered data management features, enhancing its appeal to various sectors.Postal Service Worker: This could relate to the delivery of services or products in your company. AI can automate scheduling and routing, improving efficiency. Similarly, your CRM could offer AI-powered delivery scheduling features to clients in logistics and other sectors.Newspaper Delivery: In a digital context, this could relate to the distribution of content or information. AI can automate content distribution based on customer preferences and behavior, improving engagement. Your CRM could offer AI-powered content distribution features, enhancing its appeal to media and other sectors.Sports Referee: This could relate to quality assurance within your company. AI can automate checks and balances, reducing errors and maintaining high quality. In terms of your CRM product, you could offer AI-based quality assurance features for clients that need to enforce rules or standards.Train Operator: In a metaphorical sense, this could relate to running operations smoothly. AI can automate and optimize various operational tasks, improving efficiency and reducing costs. Moreover, your CRM could offer AI-based operations management features for industries that have complex scheduling or routing needs.Meter Reader: This could relate to the measurement and analysis of business metrics in your company. AI can automate data collection, analysis, and reporting, improving accuracy and speed. Your CRM could offer similar features to clients who need to regularly track and analyze data.Mail Sorter: This could relate to sorting and managing incoming customer inquiries or requests. AI can automate this process, ensuring inquiries are promptly and appropriately addressed. This feature could also be included in your CRM for clients that receive high volumes of customer communication.Warehouse Laborer: This might relate to the management of digital resources in your company. AI can automate the organization and retrieval of these resources, improving efficiency. This kind of resource management feature could be valuable in your CRM for clients that manage large amounts of digital assets.Transcriptionist: AI can automate transcription, saving time and improving accuracy. This could be useful within your company for transcribing meetings or customer calls. Similarly, a transcription feature in your CRM could be valuable to clients that record customer calls or meetings.Photo Processor: In the context of your business, this might relate to processing and analyzing visual data. AI can automate this, providing insights more quickly and accurately. This feature could also be included in your CRM for clients that use visual data in their business.Parking Enforcement Worker: This could relate to enforcing rules and standards in your company. AI can automate monitoring and enforcement, reducing errors and improving compliance. A rule enforcement feature in your CRM could be valuable to clients that need to monitor compliance with certain standards or regulations.Construction Laborer: This could relate to building and maintaining your CRM platform. AI can automate many aspects of software development and maintenance, improving efficiency and reducing errors. This could result in cost savings and more rapid product updates.Surveyor: This might relate to understanding customer needs and preferences. AI can automate survey distribution, response collection, and data analysis, providing insights more quickly and accurately. An AI-powered survey feature in your CRM could be valuable to clients that want to better understand their customers.Aircraft Cargo Handling Supervisor: This role can be analogous to managing the flow of data or services in your business. AI can automate and optimize the handling of data or services, improving efficiency and reducing costs. Your CRM could also offer AI-powered data management and optimization features to clients in industries that handle large amounts of data or services.Security Guard: This could relate to security measures within your digital systems. AI can enhance security by automating threat detection and response, reducing the risk of data breaches and improving trust. Your CRM could offer similar AI-powered security features to clients, enhancing its appeal.Farm Labor Contractor: In a metaphorical sense, this could relate to managing resources in your company. AI can automate resource allocation and optimization, improving efficiency. Your CRM could offer similar AI-powered resource management features to clients, particularly in industries that require resource optimization.Film and Video Editor: This could be related to the editing and customization of user interfaces or customer experiences. AI can automate the customization of interfaces or experiences based on user preferences and behavior, improving customer satisfaction. Your CRM could offer similar AI-powered customization features, enhancing its appeal.Insurance Claims Clerk: AI can automate the processing and evaluation of claims (or in your company's context, complaints or requests), improving efficiency and accuracy. Your CRM could offer similar AI-powered features to clients in the insurance sector, making it more attractive to them.Order Clerk: This could relate to the management of customer orders or requests in your company. AI can automate the processing and tracking of orders or requests, improving efficiency and customer satisfaction. Your CRM could offer similar AI-powered order management features to clients.Payroll and Timekeeping Clerk: AI can automate payroll and timekeeping tasks, reducing errors and saving time. This could result in cost savings for your company and could also be a feature in your CRM for clients who need to manage payroll and timekeeping.Procurement Clerk: This could be related to the procurement of services or digital resources in your company. AI can automate and optimize procurement processes, reducing costs and improving efficiency. Your CRM could offer similar AI-powered procurement features to clients, especially those in industries that involve complex procurement processes.Shipping and Receiving Clerk: In a digital context, this might relate to the sending and receiving of data or services. AI can automate and optimize these processes, improving efficiency and reducing errors. Your CRM could offer similar AI-powered features to clients in industries that involve the exchange of large amounts of data or services.Switchboard Operator: This could relate to the routing of customer inquiries or requests in your company. AI can automate the routing of inquiries or requests, ensuring they are promptly and appropriately addressed. Your CRM could offer similar AI-powered routing features to clients who receive a high volume of customer communication.Prompt 4Antonio wants me to build the payroll department, but he doesn't want any employees. He wants it to be completely Ai driven. With that being said, I want you to give a 25-step process to build an Ai driven payroll and timekeeping department for the Ai driven CRM company. It is vital that these 25 steps are not general steps as Antonio and the company has the resources such as machine learning, deep learning, and Ai skills to pull this off. Your task is two-fold. First, give me the first 25 steps. Second is to teach me and give me the tools at your disposal to accomplish these 25 steps.ChatGPT Response1. Define Your Objectives: Clearly outline the tasks you want the AI to perform, such as calculating wages, making payments, tracking working hours, handling tax deductions, and generating reports.2. Understand Regulatory Requirements: Research and understand the legal and regulatory requirements for payroll and timekeeping in the jurisdictions where your employees are located.3. Gather Data: Collect historical payroll and timekeeping data. This data will be used to train your AI models.4. Clean the Data: Preprocess the data to handle missing values, outliers, and inconsistencies.5. Data Analysis: Perform exploratory data analysis to understand patterns and relationships in your data.6. Feature Engineering: Identify relevant features in your data that the AI models can use to make accurate predictions.7. Define AI Model Metrics: Define the metrics you'll use to evaluate your AI models, such as accuracy, precision, and recall.8. Split the Data: Split your data into training, validation, and testing sets.9. Choose Model Architectures: Select appropriate machine learning or deep learning architectures for your models. For example, you might use a combination of regression models for wage calculations and classification models for regulatory compliance.10. Train Models: Use your training data to train your models.11. Validate Models: Use your validation data to tune your models and select the best performing ones.12. Test Models: Use your testing data to evaluate your models' performance. Make sure they meet the metrics you defined earlier.13. Interpret Models: Use techniques like SHAP or LIME to understand how your models are making decisions. This is especially important for compliance with regulations that require explainability in AI.14. Set up an AI Infrastructure: Set up the hardware and software infrastructure needed to run your AI models in production.15. Automate Data Pipelines: Build automated data pipelines to preprocess new payroll data and feed it into your AI models.16. Integrate Models into Infrastructure: Integrate your AI models into your infrastructure.17. Develop User Interfaces: Develop user interfaces that allow users to input data and retrieve outputs from your AI system.18. Implement Security Measures: Implement measures to protect sensitive payroll data, such as encryption and access controls.19. Build a Monitoring System: Build a system to monitor your AI models' performance over time.20. Test the Entire System: Conduct end-to-end testing of your entire AI system.21. Plan for Maintenance: Plan for ongoing maintenance of your AI system, including regular updates to your models and infrastructure.22. Train Employees: Train any remaining employees who will interact with the AI system on how to use it.23. Deploy the AI System: Deploy your AI system in production.24. Monitor and Update the System: Regularly monitor your AI system's performance and make updates as needed.25. Continual Learning: Implement a system for your AI models to continually learn from new data and improve over time.These steps may require a variety of tools and skills, including knowledge of machine learning and deep learning, proficiency in programming languages like Python or R, experience with AI frameworks like TensorFlow or PyTorch, and understanding of data management tools like SQL. You may also need to use cloud platforms like AWS, Google Cloud, or Azure for your AI infrastructure, and data visualization tools like Tableau or PowerBI for data analysis and model interpretation. Prompt 5I am ready to build this: Define Your Objectives: Clearly outline the tasks you want the AI to perform, such as calculating wages, making payments, tracking working hours, handling tax deductions, and generating reports. Please analyze my list below and build out my logic and basic implementation to have Ai accomplish all I have listed. Please make any improvements as needed.ChatGPT ResponseTo build an AI solution that can handle the tasks you outlined, we need to break down each task into sub-tasks and identify where AI can be most beneficial. Here's an AI-based implementation plan based on your list:1. Monitor Staff Attendance DailyUse facial recognition or biometrics for attendance tracking. AI can process this data in real-time.Anomaly detection algorithms can identify any unusual patterns in attendance, such as frequent late arrivals or absences.2. Collect, Review, and Verify Timesheets and Work ChartsNatural Language Processing (NLP) can be used to interpret unstructured timesheet data.Machine Learning (ML) algorithms can cross-verify timesheet data for accuracy, comparing it against project timelines, expected work hours, etc.3. Prepare Monthly Salary SheetsML algorithms can automatically calculate monthly salaries based on the data collected, including adjustments for PTO, overtime, bonuses, etc.4. Process Payroll Paperwork for New EmployeesOptical Character Recognition (OCR) and NLP can process and digitize paperwork, extracting relevant information to be added to the payroll system.5. Update HRIS and Payroll DataAutomate updates to HRIS using AI. Any changes in employee status trigger automatic updates in the payroll system.6. Stay Updated on Payroll-related LawsAI can be used to constantly scan and analyze legal databases and websites for updates to laws and regulations, alerting you when relevant changes occur.7. Provide Information on Payroll Policies and BenefitsAn AI chatbot can be programmed to answer common employee queries related to payroll and benefits.8. Investigate and Resolve Payroll and Timekeeping ComplaintsAI can assist in initial complaint triage, identifying the nature of the issue and routing it to the appropriate department or person for resolution.9. Prepare Month-end and Year-end ReportsAI can automate the generation of financial reports by pulling data from the payroll system and applying the necessary calculations and formatting.10. Maintain and Update Employee Information in Payroll RecordsAI can automatically update employee records whenever a change is detected (e.g., address change, bank account change, etc.).To accomplish this, you'll need a diverse set of tools and technologies, including machine learning and deep learning libraries (like scikit-learn, TensorFlow, PyTorch), NLP libraries (like NLTK, spaCy), OCR tools (like Tesseract), AI platforms (like IBM Watson, Google AI), and more. Programming languages like Python and R will also be essential.Remember, while AI can automate many tasks, it's crucial to have a human in the loop for supervision, especially for tasks involving sensitive personal data.Prompt 6What else can we add to this to improve our Ai capabilities?Closing ThoughtsWhen doing all of this, don't look at the progress for a year; just keep showing upVertical leadership/ownership takes timeYou are the greatest thing that happened to this planetThere is nothing more sacred to this world than youThere is nothing on this planet that God loves more than youIf you're not living your dreams, you must learn to lean in and give into the presentFall in love with losing as fast as possibleSupport this podcast at — https://redcircle.com/the-secret-to-success/exclusive-contentAdvertising Inquiries: https://redcircle.com/brandsPrivacy & Opt-Out: https://redcircle.com/privacy

The Machine Learning Podcast
Building A Business Powered By Machine Learning At Assembly AI

The Machine Learning Podcast

Play Episode Listen Later Sep 9, 2022 58:42


Summary The increasing sophistication of machine learning has enabled dramatic transformations of businesses and introduced new product categories. At Assembly AI they are offering advanced speech recognition and natural language models as an API service. In this episode founder Dylan Fox discusses the unique challenges of building a business with machine learning as the core product. Announcements Hello and welcome to the Machine Learning Podcast, the podcast about machine learning and how to bring it from idea to delivery. Predibase is a low-code ML platform without low-code limits. Built on top of our open source foundations of Ludwig and Horovod, our platform allows you to train state-of-the-art ML and deep learning models on your datasets at scale. Our platform works on text, images, tabular, audio and multi-modal data using our novel compositional model architecture. We allow users to operationalize models on top of the modern data stack, through REST and PQL – an extension of SQL that puts predictive power in the hands of data practitioners. Go to themachinelearningpodcast.com/predibase today to learn more and try it out! Your host is Tobias Macey and today I’m interviewing Dylan Fox about building and growing a business with ML as its core offering Interview Introduction How did you get involved in machine learning? Can you describe what Assembly is and the story behind it? For anyone who isn’t familiar with your platform, can you describe the role that ML/AI plays in your product? What was your process for going from idea to prototype for an AI powered business? Can you offer parallels between your own experience and that of your peers who are building businesses oriented more toward pure software applications? How are you structuring your teams? On the path to your current scale and capabilities how have you managed scoping of your model capabilities and operational scale to avoid getting bogged down or burnt out? How do you think about scoping of model functionality to balance composability and system complexity? What is your process for identifying and understanding which problems are suited to ML and when to rely on pure software? You are constantly iterating on model performance and introducing new capabilities. How do you manage prototyping and experimentation cycles? What are the metrics that you track to identify whether and when to move from an experimental to an operational state with a model? What is your process for understanding what’s possible and what can feasibly operate at scale? Can you describe your overall operational patterns delivery process for ML? What are some of the most useful investments in tooling that you have made to manage development experience for your teams? Once you have a model in operation, how do you manage performance tuning? (from both a model and an operational scalability perspective) What are the most interesting, innovative, or unexpected aspects of ML development and maintenance that you have encountered while building and growing the Assembly platform? What are the most interesting, unexpected, or challenging lessons that you have learned while working on Assembly? When is ML the wrong choice? What do you have planned for the future of Assembly? Contact Info @YouveGotFox on Twitter LinkedIn Parting Question From your perspective, what is the biggest barrier to adoption of machine learning today? Closing Announcements Thank you for listening! Don’t forget to check out our other shows. The Data Engineering Podcast covers the latest on modern data management. Podcast.__init__ covers the Python language, its community, and the innovative ways it is being used. Visit the site to subscribe to the show, sign up for the mailing list, and read the show notes. If you’ve learned something or tried out a project from the show then tell us about it! Email hosts@themachinelearningpodcast.com) with your story. To help other people find the show please leave a review on iTunes and tell your friends and co-workers Links Assembly AI Podcast.__init__ Episode Learn Python the Hard Way NLTK NLP == Natural Language Processing NLU == Natural Language Understanding Speech Recognition Tensorflow r/machinelearning SciPy PyTorch Jax HuggingFace RNN == Recurrent Neural Network CNN == Convolutional Neural Network LSTM == Long Short Term Memory Hidden Markov Models Baidu DeepSpeech CTC (Connectionist Temporal Classification) Loss Model Twilio Grid Search K80 GPU A100 GPU TPU == Tensor Processing Unit Foundation Models BLOOM Language Model DALL-E 2 The intro and outro music is from Hitman’s Lovesong feat. Paola Graziano by The Freak Fandango Orchestra/CC BY-SA 3.0

Streaming Audio: a Confluent podcast about Apache Kafka
Reddit Sentiment Analysis with Apache Kafka-Based Microservices

Streaming Audio: a Confluent podcast about Apache Kafka

Play Episode Listen Later Sep 8, 2022 35:23 Transcription Available


How do you analyze Reddit sentiment with Apache Kafka® and microservices? Bringing the fresh perspective of someone who is both new to Kafka and the industry, Shufan Liu, nascent Developer Advocate at Confluent, discusses projects he has worked on during his summer internship—a Cluster Linking extension to a conceptual data pipeline project, and a microservice-based Reddit sentiment-analysis project. Shufan demonstrates that it's possible to quickly get up to speed with the tools in the Kafka ecosystem and to start building something productive early on in your journey.Shufan's Cluster Linking project extends a demo by Danica Fine (Senior Developer Advocate, Confluent) that uses a Kafka-based data pipeline to address the challenge of automatic houseplant watering. He discusses his contribution to the project and shares details in his blog—Data Enrichment in Existing Data Pipelines Using Confluent Cloud.The second project Shufan presents is a sentiment analysis system that gathers data from a given subreddit, then assigns the data a sentiment score. He points out that its results would be hard to duplicate manually by simply reading through a subreddit—you really need the assistance of AI. The project consists of four microservices:A user input service that collects requests in a Kafka topic, which consist of the desired subreddit, along with the dates between which data should be collectedAn API polling service that fetches the requests from the user input service, collects the relevant data from the Reddit API, then appends it to a new topicA sentiment analysis service that analyzes the appended topic from the API polling service using the Python library NLTK; it calculates averages with ksqlDBA results-displaying service that consumes from a topic with the calculationsInteresting subreddits that Shufan has analyzed for sentiment include gaming forums before and after key releases; crypto and stock trading forums at various meaningful points in time; and sports-related forums both before the season and several games into it. EPISODE LINKSData Enrichment in Existing Data Pipelines Using Confluent CloudWatch the video version of this podcastKris Jenkins' TwitterStreaming Audio Playlist Join the Confluent CommunityLearn more with Kafka tutorials, resources, and guides at Confluent DeveloperLive demo: Intro to Event-Driven Microservices with ConfluentUse PODCAST100 to get an additional $100 of free Confluent Cloud usage (details) 

VOV - Sự kiện và Bàn luận
Tiêu điểm: Kế hoạch tiết kiệm điện giai đoạn 2022 - 2025: Khách hàng sử dụng điện phải có trách nhiệm trong việc sử dụng điện tiết kiệm

VOV - Sự kiện và Bàn luận

Play Episode Listen Later Aug 10, 2022 6:01


- Tập đoàn Điện lực Việt Nam (EVN) vừa trình Thủ tướng Chính phủ bản Dự thảo Kế hoạch tiết kiệm điện giai đoạn 2022 - 2025. Từ kết quả tiết kiệm điện (TKĐ) toàn quốc năm sau đạt cao hơn năm trước, mức tiết kiệm bình quân/năm tương ứng 2% điện thương phẩm; cả giai đoạn từ năm 2010 - 2021 cả nước tiết kiệm được 37,1 tỷ kWh điện; Kế hoạch tiết kiệm điện trên phạm vi toàn quốc giai đoạn 2022 - 2025 đặt mục tiêu giảm tổn thất điện năng trên toàn hệ thống điện xuống dưới 6% trong giai đoạn này. Đồng thời nhấn mạnh, các tổ chức, cá nhân, khách hàng sử dụng điện phải có trách nhiệm trong việc sử dụng điện tiết kiệm và hiệu quả. Tác giả : Nguyên Long Chủ đề : EVN, Kế hoạch TKĐ giai đoạn 2022-2025, Luật sử dụng NLTK&HQ --- Support this podcast: https://anchor.fm/vov1sukien/support

Python Bytes
#276 Tracking cyber intruders with Jupyter and Python

Python Bytes

Play Episode Listen Later Mar 23, 2022 45:04


Watch the live stream: Watch on YouTube About the show Sponsored by FusionAuth: pythonbytes.fm/fusionauth Special guest: Ian Hellen Brian #1: gensim.parsing.preprocessing Problem I'm working on Turn a blog title into a possible url example: “Twisted and Testing Event Driven / Asynchronous Applications - Glyph” would like, perhaps: “twisted-testing-event-driven-asynchrounous-applications” Sub-problem: remove stop words ← this is the hard part I started with an article called Removing Stop Words from Strings in Python It covered how to do this with NLTK, Gensim, and SpaCy I was most successful with remove_stopwords() from Gensim from gensim.parsing.preprocessing import remove_stopwords It's part of a gensim.parsing.preprocessing package I wonder what's all in there? a treasure trove gensim.parsing.preprocessing.preprocess_string is one this function applies filters to a string, with the defaults almost being just what I want: strip_tags() strip_punctuation() strip_multiple_whitespaces() strip_numeric() remove_stopwords() strip_short() stem_text() ← I think I want everything except this this one turns “Twisted” into “Twist”, not good. There's lots of other text processing goodies in there also. Oh, yeah, and Gensim is also cool. topic modeling for training semantic NLP models So, I think I found a really big hammer for my little problem. But I'm good with that Michael #2: DevDocs via Loic Thomson Gather and search a bunch of technology docs together at once For example: Python + Flask + JavaScript + Vue + CSS Has an offline mode for laptops / tablets Installs as a PWA (sadly not on Firefox) Ian #3: MSTICPy MSTICPy is toolset for CyberSecurity investigations and hunting in Jupyter notebooks. What is CyberSec hunting/investigating? - responding to security alerts and threat intelligence reports, trawling through security logs from cloud services and hosts to determine if it's a real threat or not. Why Jupyter notebooks? SOC (Security Ops Center) tools can be excellent but all have limitations You can get data from anywhere Use custom analysis and visualizations Control the workflow…. workflow is repeatable Open source pkg - created originally to support MS Sentinel Notebooks but now supports lots of providers. When I start this 3+ yrs ago I thought a lot this would be in PyPI - but no

WAKA JOWO 44
PRISONERS ON INSTAGRAM Names Extracted From Missouri's Stay at Home Snitch List in 2021

WAKA JOWO 44

Play Episode Listen Later Jan 9, 2022 7:23


Trahisons, humiliations, violences... Certaines situations font souffrir et semblent impardonnables, même venant de personnes appréciées. Pourtant, nombre de spécialistes vous diront qu'il faut savoir pardonner, pour notre paix intérieure et notre épanouissement personnel. Nos conseils pour y parvenir.Qu'est-ce que le pardon ?Le pardon a deux sens bibliques : lorsque Dieu pardonne à un homme, il écarte le châtiment prévu pour le péché. Et lorsqu'un homme pardonne à un autre, il annule ses mauvais sentiments à l'égard de celui qui l'a offensé.https://lesen.amazon.de/kp/embed?asin=B07DHTHDGG&preview=newtab&linkCode=kpe&ref_=cm_sw_r_kb_dp_9HM6ACQRTCMNYG4324V3&tag=storeup09-20☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆https://linktr.ee/jacksonlibon-------------------------------------------------------------------------------------------------#facebook #instagram #amour #couple #couplegoals #famille #relation #doudou #youtube #twitter #tiktok #love #reeĺs #shorts #instagood #follow #like #ouy #oyu #babyshark #lilnasx #girl #happybirthday #movie #olive #garden #menu #deviance #autotrader #trading #khan #academy #carter #carguru #ancestry #accords #abc #news #bts #cbs #huru bluebook #socialmedia #whatsapp #music #google #photography #memes #marketing #india #followforfollowback #likeforlikes #a #insta #fashion #k #trending #digitalmarketing #covid #o #snapchat #socialmediamarketing #bhfyp

Python en español
Python en español #29: Tertulia 2021-04-20

Python en español

Play Episode Listen Later Jul 12, 2021 120:07


Plataformas centralizadas, GIL, aprendizaje automático, Pydantic y Python 3.10, y hemos renunciado a llevar la cuenta de los gazapos que metemos en cada tertulia https://podcast.jcea.es/python/29 Participantes: Jesús Cea, email: jcea@jcea.es, twitter: @jcea, https://blog.jcea.es/, https://www.jcea.es/. Conectando desde Madrid. Víctor Ramírez, twitter: @virako, programador python y amante de vim, conectando desde Huelva. Felipem, conectando desde Cantabria. Juan José, Nekmo, https://nekmo.com/, https://github.com/Nekmo/. Madrileño conectando desde Málaga. Jesús, conectando desde Ferrol. Eduardo Castro, email: info@ecdesign.es. Conectando desde A Guarda. Audio editado por Pablo Gómez, twitter: @julebek. La música de la entrada y la salida es "Lightning Bugs", de Jason Shaw. Publicada en https://audionautix.com/ con licencia - Creative Commons Attribution 4.0 International License. [00:52] "Vamos a ir cortando" es la entrada de Jesús Cea para que alguien proponga temas durante media hora más. [02:27] ¡Ha salido el primer podcast!: Python en español #7: ¡Metapodcast de relanzamiento! https://podcast.jcea.es/python/7. Plataformas de podcasting. No necesitas ninguna plataforma, puedes usar directamente el feed RSS https://es.wikipedia.org/wiki/Rss. Funkwhale https://funkwhale.audio/. toc2audio https://docs.jcea.es/toc2audio/. Jesús Cea tiene su propia plataforma de podcasting, herramientas, etc. Quiere evitar la centralización a toda costa. [07:37] Mercurial https://es.wikipedia.org/wiki/Mercurial y Git https://es.wikipedia.org/wiki/Git. En Mercurial https://es.wikipedia.org/wiki/Mercurial es imposible modificar la historia. Es imposible hacer nada sofisticado en Git https://es.wikipedia.org/wiki/Git sin recurrir a Google. Mercurial - Filosofía y visión de alto nivel: https://www.jcea.es/artic/mercurial_madrid/. Bitbucket https://bitbucket.org/ ya no soporta Mercurial. Hay alternativas pequeñitas. Por ejemplo, Heptapod https://heptapod.net/. Más referencias en https://www.mercurial-scm.org/wiki/MercurialHosting. ¡Evita la centralización! Al final, el 99.9% de los proyectos de código abierto los mantienen los autores originales en exclusiva. Microsoft to acquire GitHub for $7.5 billion https://news.microsoft.com/2018/06/04/microsoft-to-acquire-github-for-7-5-billion/. ¿Trabajar por visibilidad? Eso se cura con la edad. Mantener infraestructura propia tiene su coste, pero puedes pagar a alguien para que lo haga, promoviendo multitud de plataformas federadas en vez de centralizar internet más y más. En cada campo de internet, hay uno o dos ganadores y nadie más pinta nada. Jesús Cea se queja mucho de eso. [21:54] Herramientas de aprendizaje automático (Machine Learning) https://es.wikipedia.org/wiki/Aprendizaje_autom%C3%A1tico: Diferencia entre aprendizaje automático "de toda la vida" y el aprendizaje con refuerzo https://es.wikipedia.org/wiki/Aprendizaje_por_refuerzo. Redes neuronales: TensorFlow https://es.wikipedia.org/wiki/TensorFlow y Keras https://es.wikipedia.org/wiki/Keras. Procesado de texto: NLTK https://es.wikipedia.org/wiki/NLTK. scikit-learn https://scikit-learn.org/stable/index.html. Algunos libros: Python Machine Learning - Second Edition: Machine Learning and Deep Learning with Python, scikit-learn, and TensorFlow https://www.amazon.es/Python-Machine-Learning-Sebastian-Raschka/dp/1787125939/. Hay versión en castellano. "TensorFlow en un dia" https://www.amazon.es/TensorFlow-Day-Neural-Network-English-ebook/dp/B07H474R7Q/. Hay versión en castellano. Packt publica un libro gratis al día, muchos de aprendizaje automático: https://www.packtpub.com/free-learning. "Towards Data Science" https://towardsdatascience.com/. Medium https://medium.com/. Otra plataforma centralizada de las que tanto molestan a Jesús Cea. Vídeos: Dot CSV: https://www.youtube.com/channel/UCy5znSnfMsDwaLlROnZ7Qbg. La IMPRESIONANTE Cancelación de Ruido de NVIDIA | Data Coffee #13 https://www.youtube.com/watch?v=d0g1EviDyWM. Slack https://slack.com/. ¡Arggg, otra plataforma privada centralizada!: ML-Hispano https://machinelearninghispano.com/. [30:32] PyConES 2021 https://2021.es.pycon.org/. Llamada a ponencias. [31:11] Incompatibilidad entre pydantic https://pypi.org/project/pydantic/ y Python 3.10: IMPORTANT: PEP 563, PEP 649 and the future of pydantic #2678 https://github.com/samuelcolvin/pydantic/issues/2678. PEP 563 -- Postponed Evaluation of Annotations https://www.python.org/dev/peps/pep-0563/. Aún quedan meses para que se publique Python 3.10, se puede dar marcha atrás. Spoiler: Se dio marcha atrás temporalmente. Python 3.10 se publicará sin ese cambio polémico. En principio, Python 3.11 (octubre de 2022) sí incluirá ese cambio. Detalles: PEP 563 and Python 3.10 https://mail.python.org/archives/list/python-dev@python.org/thread/CLVXXPQ2T2LQ5MP2Y53VVQFCXYWQJHKZ/. [37:02] ¿Qué pensais del comportamiento actual, que ejecuta la anotación de tipos al importar un módulo? >>> def pepe(): ... print('hola') ... >>> def perico(x:pepe()): ... pass ... hola [38:47] Más aclaraciones sobre Flit https://pypi.org/project/flit/ y PEP 621 -- Storing project metadata in pyproject.toml https://www.python.org/dev/peps/pep-0621/. [40:14] Muchas erratas en las tertulias. Hay que fiarse más de las notas de los podcasts, que se elaboran con posterioridad. ¡Son charlas de bar! Conversaciones informales, sin investigación detallada. ¿Publicar audios de fé de erratas? [45:07] Truquillo que puede ser útil a alguien, sobre todo al serializar objetos con ciertos protocolos que no soportan True/False: >>> int(True) 1 >>> int(False) 0 >>> bool(0) False >>> bool(1) True [46:15] Extraer parámetros "keyword" de "**keywords", de forma automática. >>> def a(pepe=5, **kwargs): ... print(pepe, kwargs) ... >>> a(5, siete=5) 5 {'siete': 5} Se explican algunos casos de uso. toc2audio https://docs.jcea.es/toc2audio/. [49:42] Dataclasses https://docs.python.org/3/library/dataclasses.html. PEP 557 -- Data Classes https://www.python.org/dev/peps/pep-0557/. Decoradores de clases: PEP 3129 -- Class Decorators https://www.python.org/dev/peps/pep-3129/. attrs https://pypi.org/project/attrs/. pydantic https://pypi.org/project/pydantic/. Validación de tipos en tiempo de ejecución. Esta biblioteca se nombra en casi todas las tertulias. Mypy http://mypy-lang.org/. Validación de tipos en tiempo de "testing" o integración continua. [01:01:12] Truco: "dar por cerrada la sesión" siempre abre temas nuevos: Libro: Python avanzado en un fin de semana https://www.amazon.es/Python-avanzado-fin-semana-Aprende-ebook/dp/B08XLYC38D. Libro de iniciación: Aprende Python en un fin de semana https://www.amazon.es/Aprende-Python-en-fin-semana-ebook/dp/B07GXDXLYC/. [01:03:50] GIL https://en.wikipedia.org/wiki/Global_interpreter_lock. Aunque solo se pueda ejecutar un hilo simultaneamente, es ventajoso cuando hay hilos dominados por la entrada/salida. Multihilo https://es.wikipedia.org/wiki/Hilo_(inform%C3%A1tica). Ha habido muchos intentos de cargarse el GIL de Python, con poco éxito. PEP 554 -- Multiple Interpreters in the Stdlib https://www.python.org/dev/peps/pep-0554/. Ejemplos de beneficios de multihilo y de tener varias CPUs https://es.wikipedia.org/wiki/Unidad_central_de_procesamiento en Python, aún con el GIL actual. Charla de Jesús Cea en la PyConES 2018: GIL: Todo lo que quisiste saber y no te atreviste a preguntar https://www.youtube.com/watch?v=50eOwz9lek4. [01:22:27] Truco: "dar por cerrada la sesión" siempre abre temas nuevos (segunda parte): ¿Ponerse deberes para que todos podamos aportar temas cada semana? [01:24:32] Uso de IDEs https://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado. Vim https://es.wikipedia.org/wiki/Vim. Autocompletado: Languaje Server Protocol https://en.wikipedia.org/wiki/Language_Server_Protocol. Sublime Text https://www.sublimetext.com/. PyCharm https://www.jetbrains.com/pycharm/. Eclipse https://www.eclipse.org/ide/. Automatizar cosas implica que puedes perder la capacidad de hacerlo "a mano", cuando lo necesites. [01:34:42] Eduardo "no tiene casa" :-). Eduardo nos presenta a la "jefa". Se emplaza un futuro debate sobre IDEs https://es.wikipedia.org/wiki/Entorno_de_desarrollo_integrado. Inercia para cambiar. El coste de cambiar el evidente, y lo que puede no ser evidente es el beneficio de cambiar. Hace falta un mentor "al lado". Ver un caso de uso. "Intentar salir de vim". Fuente inagotable de memes https://es.wikipedia.org/wiki/Meme. Módulo Mercurial que interactúa con GIT: hg-git https://pypi.org/project/hg-git/. FTP https://es.wikipedia.org/wiki/Ftp. WebDAV: https://es.wikipedia.org/wiki/WebDAV. Wing Python IDE: https://wingware.com/. El tiempo se va en pensar, no en picar código. También importa el perfil de código o proyecto concreto. Por ejemplo, puede haber mucha plantilla fácil de automatizar. [01:47:42] Truco: "dar por cerrada la sesión" siempre abre temas nuevos (tercera parte). [01:48:00] Cierre: Apuntarnos temas para traer a lo largo de la semana. Canal de Telegram https://t.me/joinchat/y__YXXQM6bg1MTQ0. [01:49:27] Mejorar el sistema de grabación de la tertulia. Jitsi https://es.wikipedia.org/wiki/Jitsi. Jesús Cea explica cómo graba. Algo bizarro y que funciona casi de casualidad. Cuando Jesús Cea grababa podcasts https://es.wikipedia.org/wiki/P%C3%B3dcast con un grupo cerrado de gente, la grabación era local cada uno en su máquina. Cada uno grababa su micrófono local y la suma de todos los demás en dos canales distintos. Eso permite tener separación de canales para editar el sonido y, si alguien se olvida de ponerlo, su voz ha quedado grabada en remoto en todos los demás. ALSA https://en.wikipedia.org/wiki/Advanced_Linux_Sound_Architecture. PulseAudio https://es.wikipedia.org/wiki/PulseAudio. PipeWire https://en.wikipedia.org/wiki/PipeWire. Jesús Cea explica por qué no está usando esa tecnología en las tertulias. Jibri: Jitsi BRoadcast Infraestructure https://github.com/jitsi/jibri. aiortc https://pypi.org/project/aiortc/. ICE (Interactive Connectivity Establishment): https://en.wikipedia.org/wiki/Interactive_Connectivity_Establishment. Hay un montón de plataformas de grabación online, de pago. El problema habitual es el soporte de conexiones desde distintos dispositivos. [01:58:35] Despedida. [01:59:15] Final.

Teaching Python
Episode 60: Shooting the "Stuff"

Teaching Python

Play Episode Listen Later Jan 29, 2021 41:27


A grab bag of topics this week with Kelly and Sean. From using NLTK to summarize speeches by civil rights leader Martin Luther King to plotting Parler data from the Capitol incident on Jan 6 to WiFi-enabled washing machines. Kelly and Sean spend the afternoon discussing the things that we've been watching and learning about this week. No guests, no specific topic. Just hang out with us and talk about all things Python, teaching, and learning.

Machine Learning Guide
MLA 010 NLP packages: transformers, spaCy, Gensim, NLTK

Machine Learning Guide

Play Episode Listen Later Oct 28, 2020 25:33


NLTK: swiss army knife. Gensim: LDA topic modeling, n-grams. spaCy: linguistics. transformers: high-level business NLP tasks.

Machine Learning Guide
031 The Podcasts Return

Machine Learning Guide

Play Episode Listen Later Oct 28, 2020 7:57


The podcasts return with new content, especially about NLP: BERT, transformers, spaCy, Gensim, NLTK. Accompanied by a community project - Gnothi, a journal that uses AI to provide insights and resources. Website https://gnothiai.com, project https://github.com/lefnire/gnothi. Share the website on social media and email me a link/screenshot for free access to Machine Learning Applied for 3 months; contribute to the Github repository for free access for life.

DataCast
Episode 30: Data Science Evangelism with Parul Pandey

DataCast

Play Episode Listen Later Mar 27, 2020 74:49


Show Notes:(2:12) Parul talked about her educational background, studying Electrical Engineering at the National Institute of Technology, Hamirpur.(3:18) Parul worked as a Business Analyst at Tata Power India for 7 years.(4:29) Parul talked about her initial interests in writing about data science and machine learning on Medium.(6:30) Parul discussed her first blog series “A Guide to Machine Learning in R for Beginners” - which covers the Fundamentals of ML, Intro to R, Distributions and EDA in R, Linear Regression, Logistic Regression, and Decision Trees.(8:02) Reference to her articles on data visualization, Parul talked about matplotlib, seaborn, and plotly as the main visualization libraries she practices, in addition to Tableau for building dashboard.(10:11) Parul shared her thoughts on the state of Machine Learning interpretability, in reference to her articles on this topic.(13:54) Parul discussed the advantages of using Jupyter Lab over Jupyter Notebook.(17:30) Parul discussed the common challenges of bringing recommendation systems from prototype into production (Read her two articles about recommendation systems: (1) an overview of different approaches and (2) an overview of the process of designing and building a recommendation system pipeline)(21:00) Parul went in depth into her NLP project called "Building a Simple Chatbot from Scratch in Python (using NLTK).”(23:26) Parul continued this chatbot project with a 2-part series on building a conversational chatbot with Rasa stack and Python and deploying it on Slack.(28:15) Parul went over her Satellite Imagery Analysis with Python piece, which examines the vegetation cover of a region with the help of satellite data.(32:22) Parul talked about the process of Recreating Gapminder in Tableau: A Humble Tribute to Hans Rosling.(35:17) Parul discussed her project Music Genre Classification, which shows how to analyze an audio/music signal in Python.(39:20) Parul went over her tutorials on Computer Vision: (1) Face Detection with Python using OpenCV and (2) Image Segmentation with Python’s scikit-image module.(42:01) Parul unpacked her tutorial "Predicting the Future with Facebook’s Prophet” - a forecasting model to predict the number of views for her Medium articles.(44:58) Parul have been working as a Data Science Evangelist at H2O.AI since July 2019.(47:04) Parul described Flow - H2O's web-based interface (Read her tutorial here).(49:23) Parul described Driverless AI - H2O’s product that automates the challenging and repetitive tasks in applied data science (Read her tutorial here).(52:39) Parul described AutoML - H2O's automation of the end-to-end process of applying ML to real-world problems (Read her tutorial here).(57:07) Parul shared her secret sauce for effective data visualization and storytelling, as illustrated in her analysis of the 2019 Kaggle Survey to figure out women’s representation in machine learning and data science.(01:02:02) Parul described the data science community in Hyderabad, from her lens as an organizer for the Hyderabad Chapter of the Women in Machine Learning and Data Science.(01:05:45) Parul was recognized as a LinkedIn’s Top Voices 2019 in the Software Development category.(01:10:30) Closing segment.Her Contact Info:MediumGitHubTwitterLinkedInWebsiteKaggleHer Recommended Resources:Interpretable Machine Learning post"Interpretable Machine Learning: A Guide for Making Black Box Models Explainable" by Chris Molnar“Towards A Rigorous Science of Interpretable Machine Learning” by Finale Doshi-Velez and Been KimParul’s Compilation of Data Visualization articlesParul’s Programming with Python articlesWomen in Machine Learning and Data ScienceRachel ThomasAndreas MuellerHuggingFace“Factfulness” by Hans Rosling

Datacast
Episode 30: Data Science Evangelism with Parul Pandey

Datacast

Play Episode Listen Later Mar 26, 2020 74:49


Show Notes:(2:12) Parul talked about her educational background, studying Electrical Engineering at the National Institute of Technology, Hamirpur.(3:18) Parul worked as a Business Analyst at Tata Power India for 7 years.(4:29) Parul talked about her initial interests in writing about data science and machine learning on Medium.(6:30) Parul discussed her first blog series “A Guide to Machine Learning in R for Beginners” - which covers the Fundamentals of ML, Intro to R, Distributions and EDA in R, Linear Regression, Logistic Regression, and Decision Trees.(8:02) Reference to her articles on data visualization, Parul talked about matplotlib, seaborn, and plotly as the main visualization libraries she practices, in addition to Tableau for building dashboard.(10:11) Parul shared her thoughts on the state of Machine Learning interpretability, in reference to her articles on this topic.(13:54) Parul discussed the advantages of using Jupyter Lab over Jupyter Notebook.(17:30) Parul discussed the common challenges of bringing recommendation systems from prototype into production (Read her two articles about recommendation systems: (1) an overview of different approaches and (2) an overview of the process of designing and building a recommendation system pipeline)(21:00) Parul went in depth into her NLP project called "Building a Simple Chatbot from Scratch in Python (using NLTK).”(23:26) Parul continued this chatbot project with a 2-part series on building a conversational chatbot with Rasa stack and Python and deploying it on Slack.(28:15) Parul went over her Satellite Imagery Analysis with Python piece, which examines the vegetation cover of a region with the help of satellite data.(32:22) Parul talked about the process of Recreating Gapminder in Tableau: A Humble Tribute to Hans Rosling.(35:17) Parul discussed her project Music Genre Classification, which shows how to analyze an audio/music signal in Python.(39:20) Parul went over her tutorials on Computer Vision: (1) Face Detection with Python using OpenCV and (2) Image Segmentation with Python’s scikit-image module.(42:01) Parul unpacked her tutorial "Predicting the Future with Facebook’s Prophet” - a forecasting model to predict the number of views for her Medium articles.(44:58) Parul have been working as a Data Science Evangelist at H2O.AI since July 2019.(47:04) Parul described Flow - H2O's web-based interface (Read her tutorial here).(49:23) Parul described Driverless AI - H2O’s product that automates the challenging and repetitive tasks in applied data science (Read her tutorial here).(52:39) Parul described AutoML - H2O's automation of the end-to-end process of applying ML to real-world problems (Read her tutorial here).(57:07) Parul shared her secret sauce for effective data visualization and storytelling, as illustrated in her analysis of the 2019 Kaggle Survey to figure out women’s representation in machine learning and data science.(01:02:02) Parul described the data science community in Hyderabad, from her lens as an organizer for the Hyderabad Chapter of the Women in Machine Learning and Data Science.(01:05:45) Parul was recognized as a LinkedIn’s Top Voices 2019 in the Software Development category.(01:10:30) Closing segment.Her Contact Info:MediumGitHubTwitterLinkedInWebsiteKaggleHer Recommended Resources:Interpretable Machine Learning post"Interpretable Machine Learning: A Guide for Making Black Box Models Explainable" by Chris Molnar“Towards A Rigorous Science of Interpretable Machine Learning” by Finale Doshi-Velez and Been KimParul’s Compilation of Data Visualization articlesParul’s Programming with Python articlesWomen in Machine Learning and Data ScienceRachel ThomasAndreas MuellerHuggingFace“Factfulness” by Hans Rosling

Quail data
Quail data 0007 - Stats Wars

Quail data

Play Episode Listen Later Jan 31, 2020 29:38


Quail Data #0007 - Stats Wars Rodolfo #1: MOSP MONARC Objects Sharing Platform (MOSP) es una plataforma para crear, editar y compartir objetos JSON validados de cualquier tipo. MONARC - Method for an Optimised aNAlysis of Risks by CASES (Método para un análisis optimizado de riesgos por CASOS.) Puede usar cualquier esquema JSON disponible para crear nuevos objetos JSON a través de un formulario web generado dinámicamente y basado en el esquema seleccionado. Sergio #2: Scikit Geometry "scikit-geometry también viene con funciones para calcular el diagrama de Voronoi, el casco convexo, cuadros delimitadores, la suma minkowski de dos polígonos, un árbol AABB para consultas vecinas más cercanas y muchas otras utilidades útiles para cálculos geométricos, con planes para agregar muchos más!" Rodolfo #3: pandapy Demos un momento para tomar en cuenta el siguiente meme: https://www.reddit.com/r/mathmemes/comments/ewct2v/euler_moment/ Ahora, ¿recuerdan, por una parte a Pandas? Y por otra parte, ¿a NumPy? Pues bueno, pueden pensar en este paquete como un hijo de ambos. PandaPy tiene la velocidad de NumPy y la usabilidad de Pandas (10x a 50x más rápido). Así como importas pandas como pd y numpy como np, el común es importar a pandapy como pp (ya sabes → pd & np = pp). Sergio #4: Como hacer tu propio blog sin ser un experto en computadoras con fast.ai y fast_template Una guía muy fácil de seguir para crear tu propio blog hosteado en GitHub pages sin tener que usar la linea de comando. Es muy practico y facil de seguir y ahora utiliza GitHub Actions para transformar tus notebooks de jupyter a blog posts Rodolfo #5: Construyendo un Python Data Science Container usando Docker Es un blog post que ilustra cómo crear un contenedor de Docker que incluya paquetería como NumPy, SciPy, Pandas, SciKit-Learn, Matplotlib y NLTK. Todo se realiza a través de la construcción de un Dockerfile basado en Alpine, una versión muuuy ligera de Linux. El post te da todos los comandos para levantar el contenedor. Sergio #6: Blog de Juvenal Campos - Como Visualizar Pirámides de Población en R Un paso a paso de como construir una piramide de poblacion con ggplot2 Juvenal usa blogdown de R para este blog - todxs deberiamos bloguear mas! Extras: Sergio: Lorem Ipsum pero mexicano ? jajaja https://ignaciochavez.com/projects/lorempaisum/ RStudioConf está aquí en San Francisco esta semana y tienen los materiales de sus talleres en GitHub pa quién no pudo asistir: https://github.com/rstudio-conf-2020 Rodo: Para la gente Pythonista que nos escucha, ¡ya hay fecha para el PyCon Latam 2020! 27-29 de agosto, Pto. Vallarta, Jalisco. ¡No se lo pueden perder! (https://twitter.com/PyLatam/status/1221886633210982402) Meme de la semana --- This episode is sponsored by · Anchor: The easiest way to make a podcast. https://anchor.fm/app --- Send in a voice message: https://anchor.fm/quaildata/message Support this podcast: https://anchor.fm/quaildata/support

Datacast
Episode 13: Transition from Academia to Data Science with Martina Pugliese

Datacast

Play Episode Listen Later Apr 30, 2019 72:27


Show Notes: (2:20) Martina recalled her experience getting Bachelor, Master’s, and Ph.D. degrees in Physics from Sapienza Università’ di Roma. (3:35) Martina discussed her Ph.D. thesis, in which she looked at the study of Complex Systems related to Linguistics and studied how natural language evolves in time. (6:04) Martina talked about her experience doing the S2DS bootcamp in London after finishing her Ph.D. (7:10) Martina gave her reasons to move to the Greater UK while looking for a tech job. (8:05) Martina talked about the importance of software engineering from her time working for the education company Twig World. (10:07) Martina discussed her current job as a Data Scientist at Mallzee, also known as “Tinder for Fashion.” (11:46) Martina briefly went over her work in recommendation systems, data analytics, and statistical modeling in the first two years at Mallzee. (13:50) Martina explained the unique features of fashion that make it a fertile field to do data science work. (17:30) Martina emphasized the importance of communication for a data scientist. (22:20) Martina talked about her transition to the Data Science Lead role at Mallzee since 2017. (24:26) Martina gave her opinion about the relationship between the technical side and the scientific side of data science. (“Data Science Down the Line”) (26:54) Martina talked about the importance of learning statistics for people coming from an engineering background who want to get into data science. (30:30) Martina explained the analogy in her post “Don’t make recipes out of them” where she compared doing data science to cooking. (35:00) Martina discussed the fundamental problem in academia which makes it losing appeal to young and talented individuals. (“Scientific publishing”) (38:48) Martina talked about her experience organizing the PyData Edinburgh Meetup. (42:04) Martina advocated for contributing to conversations to raise awareness about women in the scientific field. (“Women amaze”) (46:45) Martina discussed her project using data from the corpora present in the NLTK library and analyzed the growth of types with respect to text size. (“The growth of vocabulary in different languages”) (50:52) Martina mentioned her attempt to learn D3 to visualize data. (“Rallying into D3”) (53:20) Martina moved on to her project analyzing tags on Stackoverflow. (“Stackoverflow Tags”) (59:30) Martina talked about using TensorFlow for her deep learning project (“TensorFlow: Create the training set for the object detection”) (01:03:23) Martina gave her prediction on how Data Science and Machine Learning will evolve in the next couple years. (01:07:08) Closing segments. Her Contact Info: Twitter Website LinkedIn GitHub DataLab Podcast Interview Her Recommended Resources: Natural Language Toolkit NLTK Scott Murray’s “Interactive Data Visualization For The Web” Dashing D3.js Elijah Meeks’s “D3.js In Action” Malcolm Maclean’s “D3 Tips and Tricks” StackOverflow Developer Survey 2019 Trevor Hastie, Robert Tibshirani, Jerome Friedman’s “The Elements of Statistical Learning” Francis Chollet’s “Deep Learning with Python”

DataCast
Episode 13: Transition from Academia to Data Science with Martina Pugliese

DataCast

Play Episode Listen Later Apr 30, 2019 72:27


Show Notes: (2:20) Martina recalled her experience getting Bachelor, Master’s, and Ph.D. degrees in Physics from Sapienza Università’ di Roma. (3:35) Martina discussed her Ph.D. thesis, in which she looked at the study of Complex Systems related to Linguistics and studied how natural language evolves in time. (6:04) Martina talked about her experience doing the S2DS bootcamp in London after finishing her Ph.D. (7:10) Martina gave her reasons to move to the Greater UK while looking for a tech job. (8:05) Martina talked about the importance of software engineering from her time working for the education company Twig World. (10:07) Martina discussed her current job as a Data Scientist at Mallzee, also known as “Tinder for Fashion.” (11:46) Martina briefly went over her work in recommendation systems, data analytics, and statistical modeling in the first two years at Mallzee. (13:50) Martina explained the unique features of fashion that make it a fertile field to do data science work. (17:30) Martina emphasized the importance of communication for a data scientist. (22:20) Martina talked about her transition to the Data Science Lead role at Mallzee since 2017. (24:26) Martina gave her opinion about the relationship between the technical side and the scientific side of data science. (“Data Science Down the Line”) (26:54) Martina talked about the importance of learning statistics for people coming from an engineering background who want to get into data science. (30:30) Martina explained the analogy in her post “Don’t make recipes out of them” where she compared doing data science to cooking. (35:00) Martina discussed the fundamental problem in academia which makes it losing appeal to young and talented individuals. (“Scientific publishing”) (38:48) Martina talked about her experience organizing the PyData Edinburgh Meetup. (42:04) Martina advocated for contributing to conversations to raise awareness about women in the scientific field. (“Women amaze”) (46:45) Martina discussed her project using data from the corpora present in the NLTK library and analyzed the growth of types with respect to text size. (“The growth of vocabulary in different languages”) (50:52) Martina mentioned her attempt to learn D3 to visualize data. (“Rallying into D3”) (53:20) Martina moved on to her project analyzing tags on Stackoverflow. (“Stackoverflow Tags”) (59:30) Martina talked about using TensorFlow for her deep learning project (“TensorFlow: Create the training set for the object detection”) (01:03:23) Martina gave her prediction on how Data Science and Machine Learning will evolve in the next couple years. (01:07:08) Closing segments. Her Contact Info: Twitter Website LinkedIn GitHub DataLab Podcast Interview Her Recommended Resources: Natural Language Toolkit NLTK Scott Murray’s “Interactive Data Visualization For The Web” Dashing D3.js Elijah Meeks’s “D3.js In Action” Malcolm Maclean’s “D3 Tips and Tricks” StackOverflow Developer Survey 2019 Trevor Hastie, Robert Tibshirani, Jerome Friedman’s “The Elements of Statistical Learning” Francis Chollet’s “Deep Learning with Python”

Unos y Ceros (Patxi)
#009 Modulos

Unos y Ceros (Patxi)

Play Episode Listen Later Mar 13, 2019 13:15


En este capítulo presento qué son los Módulos, cómo se usan, los disponibles directamente con el lenguaje de programación Python, y una mención a las más destacables disponibles en la comunidad. . Pagina de información oficial: https://docs.python.org/3/library/index.html . Modulos de Python: TIME, DATETIME, RANDOM, MATH, STATISTICS, OS, OS.PATH, PATHLIB, SYS, SQLITE3, HASHLIB, CSV, GZIP, ZLIB, BZ2, LZMA, ZIPFILE, TARFILE, TKINTER,... . Módulos para Python: NumPy, SciPy, SymPy, BioPython, SQLAlchemi, Colorama, wxPython, PyQT, PyGTK, Kivy, Matplotlib, Seaborn, Bokeh, PyGame, PyGlet, Twisted, Scrapy, NLTK, Request, Pillow, Keras, Pytorch, Scikit-Learn, Pandas, Theano, TensorFlow,... . Aquí tenéis mi página web: https://unosycerospatxi.wordpress.com/ . UN SALUDO!!!!! Espero que os guste!!!

The Frontside Podcast
093: Monoids, Monoids Everywhere! with Julie Moronuki

The Frontside Podcast

Play Episode Listen Later Jan 11, 2018 47:09


Julie Moronuki: @argumatronic | argumatronic.com Show Notes: This episode is a follow-up episode to the one we did with Julie in September: Learn Haskell, Think Less. We talk a whole lot about monoids, and learning programming languages untraditionally. Transcript: CHARLES: Hello everybody and welcome to The Frontside Podcast, Episode 93. My name is Charles Lowell, a developer here at The Frontside and I am your podcast host-in-training. With me today from The Frontside is Elrick also. Hello, Elrick. ELRICK: Hey. CHARLES: How are you doing? ELRICK: I'm doing great. CHARLES: Alright. Are you ready? ELRICK: Oh yeah, I'm excited. CHARLES: You ready to do some podcasting? Alright. Because we actually have a repeat guest on today. It was a very popular episode from last year. We have with us the author of ‘Learning Haskell: From First Principles' and a book that is coming out but is not out yet but one that we're eagerly looking forward to, Julie Moronuki. Welcome. JULIE: Hi. It's great to be back. CHARLES: What was it about, was it last October? JULIE: I think it was right before I went to London to Haskell [inaudible]. CHARLES: Yeah. JULIE: Which was in early October. So yeah… CHARLES: Okay. JULIE: Late or early October, somewhere in there. CHARLES: Okay. You went to Haskell eXchange. You gave a talk on Monoids. What have you been up to since then? JULIE: Oh wow. It's been a really busy time. I moved to Atlanta and so I've had all this stuff going on. And so, I was telling a friend last night “I'm going to be on this podcast tomorrow and I don't think I have anything to talk about.” [Laughter] JULIE: Because I feel like everything has just been like, all my energy has been sucked up with the move and stuff. But I guess… CHARLES: Is it true that everybody calls it ‘Fatlanta' there? JULIE: Yeah. [Laughs] CHARLES: I've heard the term. But do people actually be like “Yes, I'm from Fatlanta.” JULIE: I've heard it a couple of times. CHARLES: Okay. JULIE: Maybe it's mostly outsiders. I'm not sure. CHARLES: [Chuckles] JULIE: But yeah, it's a real cool city and I'm real happy to be here. But yeah, I did go in October. I went to London and I spoke at Haskell eXchange which was really amazing. It was a great experience and I hope to be able to go back. I got to meet Simon Payton Jones which was incredible. Yeah, and I gave a talk on monoids, monoids and semirings. And… CHARLES: Ooh, a semiring. JULIE: Semiring. So, a semiring is a structure where there's two monoids. So, both of them have an identity element. And the identity element of one of them is an annihilator. Isn't that a great word? It's an annihilator… CHARLES: Whoa. JULIE: Of the other. So, if you think of addition and multiplication, the identity element for addition is zero, right? But if you multiply times zero, you're always going to get to zero, so it's the annihilator of multiplication. CHARLES: Whoa. I think my mind is like annihilated. [Laughter] JULIE: So, it's a structure where you're got two monoids and one of them distributes over the other, the distributive property of addition and multiplication. And the identity of one of them is the annihilator of the other. Anyway, but yeah, I gave a history of where monoids come from and that was really fun. CHARLES: Yeah. I would actually like to get a summary of that, because I think since we last talked, I've been getting a little bit deeper and deeper into these formal type classes. I'm still not doing Haskell day-to-day but I've been importing these ideas into just plain vanilla JavaScript. And it turns out, it's actually a pretty straightforward thing to do. There's definitely nothing stopping these things from existing in JavaScript. It's just, I think people find type class programming can be a tough hill to climb or something like that, or find it intimidating. JULIE: Yeah. CHARLES: But I think it's actually quite powerful. And I think one of the things that I'm coming to realize is that these are well-worn pathways for composing things. JULIE: Right. CHARLES: So, what you encounter in the wild is people generating these one-off ways of composing things. And so, for a shop like ours, we did a lot of Ruby on Rails, a lot of Ember, and both of those frameworks have very strong philosophical underpinnings that's like “You shouldn't be reinventing the wheel if you don't have to.” I think that all of these patterns even though they have crazy quixotic esoteric names, they are the wheels, the gold standard of wheel. [Laughs] They're like… JULIE: Right. CHARLES: We should not be reinventing. And so, that's what I'm coming to realize, is I'm into this. And last time you were talking, you were saying “I find monoids so fascinating.” I think it took a little bit while to seep in. But now, I feel like it's like when you look at one of those stereo vision things, like I'm seeing monoids everywhere. It's like sometimes they won't leave me alone. JULIE: In ‘Real World Haskell' there's a line I've always liked. And I'm going to misquote it slightly but paraphrasing at least. “Monoids are ubiquitous in programming. It's just in Haskell we have the ability to just talk about them as monoids.” CHARLES: Yeah, yeah. JULIE: Because we have a name and we have a framework for gathering all these similar things together. CHARLES: Right. And it helps you. I feel like it helps you because if you understand the mechanics of a monoid, you can then when you encounter a new one, you're 90% there. JULIE: Right. CHARLES: Instead of having to learn the whole thing from scratch. JULIE: Right. And as you see them over and over again, you develop a kind of intuition for when something is monoidal or something looks like a semiring. And so, you get a certain intuition where you think, “Oh, this thing is like a… this is a monad.” And so, what do I know about monads? All of a sudden, this new situation like all these things that I know about monads, I can apply to this new situation. And so, you gain some intuition for novel situations just by being able to relate them to things you already do know. CHARLES: Exactly. I want to pause here for people. The other thing that I think I've come in the last three months to embrace is just embrace the terminology. JULIE: Yeah. CHARLES: You got to just get over it. JULIE: [Chuckles] CHARLES: Think about it like learning a foreign language. The example I give is like tasku is the Finnish word for pocket. JULIE: Right. CHARLES: It sounds weird, right? Tasku. But if you say it 10 times and you think “Pocket, pocket, pocket, pocket, pocket.” JULIE: Yes, yeah. [Laughs] CHARLES: Then it's like, this is a very simple, very useful concept. JULIE: Right. CHARLES: And it's two-sided. There on the one hand, the terminology is obtuse. But at the same time, it's not. It's just, it is what it is. And it's just a symbol that's referencing a concept. JULIE: Right, right. CHARLES: It's a simple concept. So, I just want to be… I know for our listeners, I know that there's a general admonition. Don't worry about the terminology. It's… JULIE: Right, right. Like what I just said, I said the word ‘monad'. I just threw that out there at everybody, but [chuckles] it doesn't matter which one of these words we'd be talking about or whatever I call them. We could give monads a different name and it's still this concept that once you understand the concept itself, and then you can apply it in new situations, it doesn't matter then what it's called. But it does take getting used to. The words are… well, I think functor is a pretty good word for what it is. If you know the history of functor and how it came to mean what it means, I think it's a pretty good word. CHARLES: Really? So, I would love to know the history. Because functor is mystifying to me. It sounds like, I think the analogy I use is like if George Clinton and a funk parliament had an empire, the provinces, the governors of the provinces would be functors. ELRICK: [Laughs] JULIE: Yes. CHARLES: But [Laughs] that's the closest thing to an explanation I can come up with. JULIE: I might use that. I'm about to give a talk on functors. I might use that. [Laughter] ELRICK: Isn't that the name of the library? Funkadelic? CHARLES: Well, that's the name of the library that I've been… JULIE: [Could be], yeah. ELRICK: That you'd been… CHARLES: That I'd been [writing] for JavaScript. ELRICK: Yeah. CHARLES: That imports all these concepts. JULIE: [Laughs] ELRICK: Yeah. JULIE: Yeah. ELRICK: So awesome. JULIE: Yeah. Yeah, I have… CHARLES: So, what is the etymology of functor? JULIE: Well, as far as I can tell, Rudolf Carnap, the logician, invented the word. I don't know if he got it from somewhere else. But the first time I can find a reference to it is in, he wrote a book about… he was a logician but this is sort of a linguistics book. It's called ‘The Logical Syntax of Language'. And that's the first reference I know of to the word functor. And he was trying to really make language very logically systematic, which natural language is and isn't, right? [Chuckles] CHARLES: Right. JULIE: But he was only concerned with really logically systematizing everything. And so, he used the word functor to describe some kinds of function words in language that relate one part of a sentence to another part of a sentence. CHARLES: Huh. So, what's an example? JULIE: So, the example that I've used in the past is, as far as I know this is not one that Carnap himself actually uses but it's the clearest one outside of that book… well the ones inside the book I don't really think are very good examples because they're not really how people talk. So, the one that I've used to try to explain it is the word ‘not' in English where ‘not' gets applied to the whole sentence. It doesn't really change the logical structure of the sentence. It doesn't change the meaning of the sentence except for now it negates the whole thing. CHARLES: I see. JULIE: And so, it relates this sentence with this structure to a different context, which is now the whole thing has been negated. CHARLES: I see. So, the meaning changes, but the structure really doesn't. JULIE: Right. And it changes the whole meaning. CHARLES: Right. JULIE: Not just part of the sentence. So, if you imagine ‘not' applying to an entire sentence because of course we can apply it just to a single word or just to a single phrase and change the meaning just of that word or that phrase, but if you imagine a context where you've applied ‘not' to a whole sentence, to an entire proposition, because of course he's a logician. So, if you've applied ‘not' to an entire proposition, then it doesn't change the structure or the meaning of that proposition per se except for it just relates it to the category of negated propositions. CHARLES: Mmhmm. JULIE: So, that's where it comes from. And… CHARLES: But I still don't understand why he called it functor. JULIE: He's sort of making up… well, actually I think the German might be the same word. CHARLES: Ah, okay. JULIE: Because he was writing in German. Because he's looking for something that evokes the idea of ‘function word'. CHARLES: Oh. JULIE: So, if you were to take the ‘func' of ‘function' [Laughs] and the, I don't know, maybe in German there's some better explanation for making this into a particular word. But that's how I think of it. So, it's ‘function word'. And then category theorists took it from Carnap to mean a way to map a function in this category or when we're talking about Haskell, a function of this type, to a function of another type. CHARLES: Okay. JULIE: And so, it takes the entire function, preserves the structure of the function just like negation preserves the structure of the sentence, and maps the whole thing to just a different context. So, if you had a function from A to B, functor can give you a function from maybe A to maybe B. CHARLES: Right. JULIE: So, it takes the function and just maps it into a different context. CHARLES: Right. So, a JavaScript example is if I've got an array of ints and a function of ints to strings, I can take any array of ints and get an array of strings. JULIE: Right. CHARLES: Or if I have a promise that has an int in it, I can take that same function to get a promise of a string. JULIE: Yeah. CHARLES: Yeah. I had no idea that it actually came from linguistics. JULIE: Yeah. [Laughs] CHARLES: So actually, the category theorists even… it digs deeper than category theory. They were actually borrowing concepts. JULIE: They were, yes. CHARLES: We just always are borrowing concepts. ELRICK: I like the borrowing of concepts. JULIE: Yeah. ELRICK: I think where people struggle with certain things, it's tying it back to something that they're familiar with. So, that's where I get… my mind is like [makes exploding sound] “I now get it,” is when someone ties it back to something that I am… CHARLES: Right. ELRICK: Familiar with. Like Charles' work with the JavaScript, tying it with JavaScript. I'm like, “Oh, now I see what they're talking about.” JULIE: Right. CHARLES: because you realize, you're using these concepts. People are using them, just they're using them anonymously. JULIE: Right. ELRICK: True. CHARLES: They don't have names for them. JULIE: Right. ELRICK: True. CHARLES: It's literally like an anonymous function and you're just taking that lambda and assigning it to a symbol. JULIE: Yeah. CHARLES: You're like “Oh wait. I've been using this anonymous function all over the place for years. I didn't realize. Boom. This is actually a formal concept.” ELRICK: True. And I think when people say like “Don't reinvent the wheel” it's a great statement for someone that has seen a wheel already. [Laughter] ELRICK: You know what I'm saying? If you never saw a wheel, then your'e going to reinvent the wheel because you're like “Aw man. This doesn't exist.” [Chuckles] JULIE: Yeah. ELRICK: But if people are exposed to these concepts, then they wouldn't reinvent the wheel. CHARLES: Right. JULIE: Right. Yeah. CHARLES: Instead of calling in some context, calling it a roller. [Chuckles] It's a round thingy. [Laughter] JULIE: Right. Yeah, so that's a little bit what I tried to do in my monoid talk in London. I tried to give some history of monoid, where this idea comes from and why it's worth talking about these things. CHARLES: Yeah. JULIE: Why it's worth talking about the structure. CHARLES: So, why is it worth the… where did it come from and why is it worth talking about? JULIE: Oh, so back when Boole, George Boole, when he decided to start formalizing logic… CHARLES: George Boole also, he was a career-switcher too, right? He was a primary school teacher. JULIE: Right, yeah. CHARLES: If I recall. He actually, he was basically teaching. Primary school is like elementary school in England, right? JULIE: I believe so, yes. CHARLES: Yeah. I think he was like, he was basically the US equivalent of an elementary school teacher who then went on to a second and probably, thankfully a big career that left a big legacy. JULIE: Right. Although no one knew exactly how big the legacy was really, until Claude Shannon picked it up and then just changed the whole world.[Laughs] Anyway, so Boole, when he was trying to come up with a formal algebra of logic so that we could not care so much about the semantic content of arguments (we could just symbolize them and just by manipulating symbols we could determine if an argument was logically valid or not), he was… well, for disjunction and conjunction which is AND and OR – well, disjunction would be the OR and conjunction the AND – he had prior art. He had addition and multiplication to look at. So, addition is like disjunction in some important ways. And multiplication is like conjunction in some important ways. And I think it took me a while to see how addition and disjunction were like each other, but there are some important ways that they're like each other. One of them is that they share their identity values. If you think of, it's sort of like binary addition and binary multiplication because in boolean logic there's only two values: true or false. So, you have a zero and a one. So, if you think of them as being like binary addition and binary multiplication then it's easier to see the connection. Because when we think of addition of just integers in a normal base 10 or whatever, it doesn't seem that much like an OR. [Laughs] CHARLES: Mmhmm. No, it doesn't. JULIE: [Inaudible] like a logical OR. So, it took me a while to see that. But they're also related then to set intersection and union where intersect-… CHARLES: So can… Let's just stop on that for a little bit, because let me parse that. So, for OR I've got two values, like in an ‘if' statement. This OR that. If I've got a true value then I can OR that with anything and I'll get the same anything. JULIE: Right. CHARLES: So, true is the identity value of OR, right? Is that what you're saying? So, one… JULIE: Well, it's false that's the identity of OR. CHARLES: Oh, it is? JULIE: Zero is the identity of addition. CHARLES: Wait, but if I take ‘false OR one' I get… oh, I get one. JULIE: Right. CHARLES: Okay. So, if I get ‘false OR true', I get true. Okay, so false is the identity. JULIE: Yeah. CHARLES: Oh right. You're right. You're right. Because… okay, sorry. JULIE: So, just like in addition, zero is the identity. So, whatever you add to zero, that's the result, right? You're going to get [the same] CHARLES: Right. JULIE: Value back. So, with OR false is the identity and false is equivalent to zero. CHARLES: [Inaudible] ‘False OR anything' and you're getting the anything. JULIE: Right. So, the only time you'll get a false back is if it's ‘false OR false', right? CHARLES: Right. Mmhmm. JULIE: Yeah. So, false is the identity there. And then it's sort of the same for conjunction where one is the identity of multiplication and one is also the… I mean, true is then the identity of logical conjunction. CHARLES: Right. Because one AND… JULIE: ‘True AND false' will get the false back. [Inaudible] CHARLES: Right. ‘True And true' you can get the true back. JULIE: Yeah. CHARLES: Okay. JULIE: And it's also then true, getting back to what we were talking about, semirings, it's also true that false is a kind of annihilator for conjunction. That's sort of trivial, because… CHARLES: Oh, because you annihilate the value. JULIE: Right. When there's only two values it's a little bit trivial. But it is [inaudible]. So… CHARLES: But it's [inaudible]. Yeah. It demonstrates the point. JULIE: Right. CHARLES: So, if I have yeah, ‘false AND anything' is just going to be false. So, I annihilate whatever is in that position. JULIE: Right. CHARLES: And the same thing as zero is the annihilator for multiplication, right? JULIE: Right. CHARLES: Because zero times anything and you annihilate the value. JULIE: Yeah. CHARLES: And now I've got… okay, I'm seeing it. I don't know where you're going with this. [Laughter] ELRICK: Yeah. CHARLES: But I'm there with you. ELRICK: Yup. JULIE: And then it turns out there are some operations from set theory that work really similarly. So, intersection and union are similar but the ones that are closer to conjunction/disjunction are disjoint unions and cartesian products. So we don't need to talk about those a whole lot if you're not into set theory. But anyway… CHARLES: I like set theory although it's so hard to describe without pictures, without Venn diagrams. JULIE: It is. It really is, yeah. So anyway, all of these things are monoids. And they're all binary associative operations with identity elements. So, they're all monoids. And so, we've taken operations on sets, operations on logical propositions, operations on many kinds of numbers (because not all kinds of addition and multiplication I guess are associative), and we can kind of unify all of those into the same framework. And then once we have done that, then we can see that there's all these other ‘sets'. Because most of the kinds of numbers are sets and there are operations on generic sets with set theory. So, now we can say “Oh. We can do these same kinds of operations on many other kinds of sets, many other varieties of sets.” And we can see that same pattern. And then we can get a kind of intuition for “Well, if I have a disjunctive monoid where I'm adding two things or I'm OR-ing two things…” Because even though those are logically very similar, intuitively and in terms of what it means to concatenate lists versus choosing one or the other, those obviously have different practical effects. CHARLES: So, I'm going to try and come up with some concrete examples to maybe… JULIE: Okay, yeah. CHARLES: A part of them will probably be like in JavaScript, right? So, to capture the idea of a disjunctive monoid versus a conjunctive monoid. So, a disjunctive monoid is like, so in JavaScript we're got two objects. You concat them together and it's like two maps or two hashes. So, you mash them together and you get… so, for the disjunctive one you'd have all the keys from both of the hashes inside the resulting object. You take two objects. Basically we call it object assign in JavaScript where you have basically the empty object. You can take the empty object and then take any number of objects. And so, we talked about… JULIE: That would become a disjunctive monoid, right? CHARLES: That would be a disjunctive monoid because you're like basically, you're OR-ing. Yeah. JULIE: You're kind of, [inaudible] CHARLES: Hard to find the terminology. JULIE: Yeah. CHARLES: But like object assign would be a disjunctive monoid because you're like mashing these two objects. And the resulting object has all of the things from both of them. JULIE: Right. So, it's like a sum of the two, right? CHARLES: Right, right. Okay, so then another one would be like min or max where you've got this list of integers and you can basically take any two integers and you can mash them together and if you're using min, you get the one that's smaller. Basically, you're collapsing them into one value but you're actually just choosing one of them. Is that like… JULIE: Yeah. CHARLES: Would that be like a conjunctive monoid? JULIE: No, that's also disjunctive but that's more like an OR than like a sum. CHARLES: Okay. JULIE: Right. So, that's what I said. It's hard to think of disjunctive monoids I think because there's really two varieties. There's some underlying logical similarity, like the similarity in the identity values. But they're also different. Summing two things versus choosing one or the other are also very different things in a lot of ways. CHARLES: Right. Okay. JULIE: And so, I think the conjunctive monoids are all a little bit more similar, I think. [Chuckles] But the disjunctive monoids are two broad categories. And we don't really have a monoid in Haskell of lists where you're choosing one or the other. The basic list monoid is you're concatenating them. So, you're adding two lists or taking the union of them. But for maybe, the maybe type, we do have monoids in Haskell where you're just choosing either the first just value that comes up or the last just value that comes up. So, we do have a monoid of choice over the maybe type. And then we have a type class called alternative which is monoids of choice for… so, they're disjunctive monoids but instead of adding the two things together, they're choosing one or the other. CHARLES: Okay. JULIE: Though we have a type class for that. [Laughs] CHARLES: [Sighs] Oh wow. Yeah. JULIE: Mmhmm, yeah. CHARLES: I'l have to go read up on that one. JULIE: That type class comes up the most when you're parsing, because you can then parse… like if you found this thing, then parse this thing. But if you haven't found this thing, then you can keep going. And if you find this other thing later, then you can take that thing. So, you allow the possibility of choice. The first thing that you come to that matches, take that thing or parse that thing. So, that type class gets mostly used for parsing but it's not only useful for parsing. CHARLES: Okay. JULIE: So yeah. That's the most of the time when I've used it. CHARLES: Is this when you're like parsing JSON? Or is this when you're just searching some stream for some value? Like you just want to run through it until you encounter this value? Or how does that…? JULIE: Right. Say you want to run through it until you find either this value or this value. I've used it when I've been parsing command line arguments. So, let's say I have some flags that can be passed in on my command line command. There are some flags that could be passed in. So, we'll parse until we find this thing or this thing. This flag or this flag. So, if you find this flag, then we're going to go ahead and parse that and do whatever that flag says to do. If you don't find that first flag then we can keep parsing and see if you find this other flag, in which case we'll do something different. CHARLES: Okay. JULIE: It'll take the first match that it finds. Does that make sense? CHARLES: Yeah, yeah, yeah. It does. But I'm not connecting how it's a monoid. [Laughs] JULIE: How is that a monoid? Well, because it's a monoid of OR-ing CHARLES: What's the identity value or the empty value in that case? JULIE: Well, the empty value would be… let's say you have maybes. Let's say you have some kind of maybe thing, so you're parser is going to return maybe this thing, maybe whatever you're parsing. Like maybe string. CHARLES: Yeah, yeah. JULIE: So, it's going to return a maybe string. So well, nothing would be the empty. CHARLES: Okay. JULIE: But nothing is like the zero because it's a disjunction, logical OR. So, only when you have two nothings will you get back a nothing. Otherwise, it will take the first thing that it finds. CHARLES: Okay. I see. JULIE: Yeah. So, the identity then is the nothing, like false is the identity for disjunction. CHARLES: Mmhmm. Okay. JULIE: Yeah. CHARLES: [Inaudible] JULIE: Yeah. If you have nothing or this other thing, then you return this other thing. Then you return the maybe string. If you have two nothings, then you get in fact nothing. Your parsing has failed. CHARLES: Right, because you've got nothing. JULIE: Because you've got nothing. There was nothing to give you back. CHARLES: So, you concatenated all of the things together and you ended up with nothing. JULIE: Right, because there was nothing there. CHARLES: Right. [Laughs] JULIE: You found nothing. So, it's useful when you've got some possibilities that could be present and you just want to keep parsing until you find the first one that matches. And then it'll just return whatever. It'll just parse the first thing that it matches on. CHARLES: Okay, okay. JULIE: Does that make sense? CHARLES: Yeah. No, I think it makes sense. JULIE: I'm not sure. Because I feel like I kind of went down a rabbit hole there. [Laughs] CHARLES: Yeah. [Laughs] No, no. I think it makes sense. And as a quick aside, I think… so, I was, when we were talking about min and max, are min and max also like a semiring? Because negative infinity is the annihilator of min and it's the identity of max. and positive infinity is the annihilator of max but it's the identity of min. JULIE: I guess. I don't really think of min and max as having identities. Is that how [inaudible]? CHARLES: I'm just, I don't know. Well, I think if you have negative infinity and you max it with anything, you're going to get the anything, right? Negative infinity max one is one. Negative infinity/minus a billion is minus a billion. JULIE: Yeah, okay. CHARLES: I don't know. Just off the cuff. I'm just trying to… annihilators sound cool. And so… [Laughter] CHARLES: And so I'm like, I'm trying to find annihilators. JULIE: Yeah, they are cool. CHARLES: [Laughs] JULIE: One of my friends on Twitter was just talking about how he used the intuition at least of a semiring at work because he had this sort of monoid to concatenate schedules. So, he's got all these different schedules and he's got this kind of monoid to concatenate them, to merge the schedules together. But then he's got this one schedule that is special. And whenever something is in this schedule, it needs to hard override every other schedule. CHARLES: Right. JULIE: And so, that was like the annihilator. So, he was thinking of it as a semiring, because that hard override schedule is like the annihilator of all the other schedules. CHARLES: Yeah. JULIE: If anything else exists on this day or whatever, then it'd just get a hard override. So, there's a real world use. [Laughs] CHARLES: Yeah, a real world example. That's the thing that I'm finding, is that all these really very crystalline abstractions, they still play out very well I think in the real world. And they're useful as a took in terms of casting a net over a problem. Because you're like… when I'm faced with something new, I'm like “Well, let's see. Can I make it a functor?” And if I can, then I've unlocked all these goodies. I've unlocked every single composition pattern that works with functor. JULIE: Right, right. CHARLES: And it's like sometimes it fits. It almost feels like when you're working on something at home and you've got some bolt and you're trying on different diameters. So you're like, “Oh, is it 15 millimeter? Is it 8 millimeter?” JULIE: Right. [Laughs] CHARLES: “Like no, okay. Maybe it'll work with this.” But then when it clicks, then you can really ratchet with some serious torque. JULIE: Right, right. Yeah. CHARLES: So, yeah. Definitely trying to look for semirings [Laughs] is definitely beyond my [can] at this point. But I hope to get there where it can be like, if it's a fit, it's a fit. That's awesome. JULIE: Right. Yeah, it's kind of beyond my can too. Semirings are still a little bit new for me and I can't say that I find them in the wild as it were, as often as monoids or something. But I think it just takes seeing some concrete examples. So, now you know this idea exists. If you just have some concrete examples of it, then over time you develop that intuition, right? CHARLES: Right. JULIE: Like “Okay, I've seen this pattern before.” [Chuckles] CHARLES: yeah. Basically, every time now I want to fold a list, or like in JavaScript, any time you want to reduce something I'm like “There's a monoid here that I'm not seeing. Let me look for it.” JULIE: Yeah. Oh, that's cool, yeah. CHARLES: Because like, that's basically, most of the time you're doing a reduce, then like I said that's the terminology for fold in JavaScript, is you start with some reducible thing. Then you have an initial value and a function to actually concatenate two things together. JULIE: Right. CHARLES: And so, usually that initial state, that's your identity. And then that function is just your concat function from your monoid. And so, usually anytime I do a reduce, there's the three pieces. Boom. Identity value, concatenation function, it's usually right there. And so, that's the way I've found of extracting these things, is I'm very suspicious every time I'm tempted to… JULIE: [Laughs] CHARLES: A fold. I'm like “Hmm. Where's the monoid I'm missing? Is it [under the] couch?” Like, where is it? [Laughs] Because it just, it cleans it up and it makes it so much more concise. JULIE: Oh yeah, that's awesome. CHARLES: So anyhow. JULIE: Have we totally lost Elrick? ELRICK: Nope, I'm still here. JULIE: Okay. [Laughs] ELRICK: I'm sitting in and listening to you two break down these complex topics is really good. Because you guys break them down to a level where it's consumable by people that barely understand it. So, I'm just sitting here just soaking everything in like “Oh, that's awesome.” Taking notes. Yes, okay, okay. [Laughter] JULIE: Cool. ELRICK: So, I'm like riding the train in the back just hanging out, feeling the cool breeze while you guys just pull the train ahead in… [Laughter] ELRICK: In the engine department, you know? It's awesome. CHARLES: Yeah. ELRICK: I don't know if they're related. But you were talking about semirings and I heard of semigroups or semigroups. I have no idea if those two things are related. Are they related or [inaudible]? JULIE: They're kind of related. So, a semigroup is like a monoid but doesn't have an identity value. CHARLES: What is an example of a semigroup out there in the wild? Because every time I find a semigroup, I feel like it's actually a monoid. JULIE: Well, you know I feel like that a lot, too. We do have a data type in Haskell that is a non-empty list. So, there is no empty list CHARLES: Ah, right. Okay. JULIE: So then you can concatenate those lists, but there's never an identity value for it. CHARLES: I see. JULIE: Yeah. So, that's a case. There's actually a lot of comparison functions, greater than and less than. I think those are semigroups because they're binary, they're associative, but they don't have an identity value. Like if you're comparing two numbers, there's not really an identity value there. CHARLES: Right. Well, would the negative infinity work there? Let's see. Like, negative infinity greater than anything would be the anything. Well, okay wait. But greater than, that takes numbers and yields a boolean, right? JULIE: Yeah, CHARLES: Right. So, it couldn't be… could it be a semigroup? Don't semigroups have to… Doesn't the [inaudible] function have to yield the same type as the operands? JULIE: Yes. CHARLES: But a non-empty list, that's a good one. Sometimes it's basically not valid for you to have a list that doesn't have any elements, right? Because it's like the null value or the empty value and it could be like a shopping cart on Amazon. You can't have a shopping cart without at least something in it. JULIE: Right. CHARLES: Or, you can't check out without something. So, you might want to say like the shopping cart that I'm going to check out is a non-empty list. And so, you can put two non-empty lists together. But yeah, there's no value you can mash together, you can concat with anything, that isn't empty. JULIE: Right. CHARLES: So, I guess going back to your question Elrick, I don't know if it's related to semiring. But semigroup is just, it's like one-half of monoid. It's the part that concats two values together. JULIE: Right. Well, yeah. And so, it's supposed to be half a group, right? But I don't remember… CHARLES: [Laughs] JULIE: [Inaudible] all of the group stuff is, all the stuff that these types have to have to be a group. And similarly, I forget what the difference between semiring and ring is. [Chuckles] Because a ring and a group I know are not the same thing. But I forget what the difference is, too. So, I kind of got a handle on what semigroups are, and I know all my Haskell friends are going to, when they hear this podcast they're going to tweet all these examples of semigroups at me, especially my coauthor for ‘Joy of Haskell', Chris Martin. He's really into semigroups. And so, I know he's going to be very disappointed in my inability to think… [Laughter] JULIE: To think of any good examples. But it's not something that I find myself using a lot, whereas semirings are something that I have started noticing a little bit more often. So, how a monoid relates to a group is something that I can't remember off the top of my head. And I know how semirings relate to monoids, but how monoids then relate to rings and groups, I can't really remember. And so, these things are sort of all related. But the relation is not something I can spill out off the top of my head. Sorry. [Laughs] CHARLES: No, It's no worries. You know, I feel like… ELRICK: It's all good. CHARLES: What's funny is I feel like having these discussions is exactly like the discussions people have with any framework of using one that we use a lot, which is EmberJS. But if you could do with React or something, it's like, how does the model relate to the controller, relate to the router, relate to the middleware, relate to the services? You just have these things, these moving parts that fit together. And part of… I feel like exploring this space is really, absolutely no different than exploring any other software framework where you just have these things, these cooperating concepts, and they do click together. But you just have to map out the space in your head. JULIE: Yeah. This is going to sound stupid because everybody thinks that because I know Haskell I must know all these other things. But I just had to ask people to recommend me a book that could explain the relationship of HTML and CSS, because that was completely opaque to me. CHARLES: [Laughs] Yeah. JULIE: I've been involved in the making now of several websites because of the books and stuff like that. And I have a blog. It's not WordPress or anything. I did that sort of myself. So, I've done a little bit with that. But CSS is really terrifying. And… CHARLES: Right. Like query selectors, rules, properties. JULIE: Yeah. ELRICK: [Laughs] CHARLES: Again, might as well be groups and semigroups and monoids, right? JULIE: Right, right. ELRICK: Yeah. CHARLES: [Laughs] ELRICK: That is really interesting. [Chuckles] I've never heard anyone make that comparison before. But it's totally true, now that I'm thinking about it. JULIE: Yeah, yeah. CHARLES: Yeah. In the tech world we are so steeped in our own jargon that we could be… we can reject one set of jargon and be totally fine with another set. Or be like, suspicious of one set of concepts working together and be totally fine with these other designations which are somewhat arbitrary but they work. JULIE: Right. CHARLES: So, people use them. JULIE: So, it's like what you've gotten used to and what you're familiar with and that seems normal and natural to you. [Chuckles] So, the Haskell stuff, most of it seems normal and natural to me. And then I don't understand HTML and CSS. So, I bought a book. [Laughter] CHARLES: Learning HTML and CSS from first principles. JULIE: Yes, yeah. I just wanted to understand. I could tell that they do relate to each other, that there is some way that they click together. I can tell that by banging my head against them repeatedly. But I didn't really understand how, and so yeah. So, i've been reading this book to [Laughs] [learn] HTML and CSS and how they relate together. That's so important, just figuring out how things relate to each other, you know? CHARLES: Yeah. ELRICK: Yeah. That is very true. JULIE: Yeah. ELRICK: We can trade. I can teach you HTML and CSS and you can teach me Haskell. JULIE: Absolutely. ELRICK: [Laughs] CHARLES: There you go JULIE: [Laughs] ELRICK: Because I'm like, “Ooh.” I'm like, “Oh, CSS. Great. No problem.” [Laughter] ELRICK: Haskell, I'm like “Oh, I don't know.” JULIE: Yeah. CHARLES: Yeah. ELRICK: [Laughs] CHARLES: No, it's amazing [inaudible] CSS. ELRICK: Yeah. CHARLES: It is, it's a complicated system. And it's actually, it's in many ways, it's actually a pretty… it's a pretty functional system, CSS is at least. The DOM APIs are very much imperative and about mutable state. But CSS is basically yeah, completely declarative. JULIE: Right. CHARLES: Completely immutable. And yeah, the workings of the interpreter are a mystery. [Laughs] ELRICK: Yup. JULIE: YEs. And you know, for the Joy of Haskell website we use Bootstrap. And so, there was just like… there's all this magic, you know? [Laughs] ELRICK: Oh, yeah. CHARLES: Yeah. JULIE: Oh look, if I just change this little thing, suddenly it's perfectly responsive and mobile. Cool. [Laughter] JULIE: I don't know how it's doing this, but this is great. [Laughs] CHARLES: Yeah. Oh, yeah. It's an infinite space. And yeah, people forget what is so easy and intuitive is not and that there's actually a lot of learning that happened there that they're just taking for granted. JULIE: I think so many people start from HTML and CSS. That's one of their first introductions to programming, or JavaScript or some combination of all three of those. And so, to them the idea that you would be learning Haskell first and then coming around and being like “Oaky, I have to figure out HTML,” that [seems very] strange, right? [Laughter] CHARLES: Yeah. Well, definitely probably stepping into bizarro world. JULIE: And I went backwards. But [Laughs] CHARLES: Yeah. JULIE: Not that it's backwards in terms of… just backwards in terms of the normal way, progression of [inaudible] CHARLES: Yeah. It's definitely the back door. Like coming in through the catering kitchen or something. JULIE: Yes. CHARLES: Instead of the front door. Because you know the browser, you can just open up the Dev Tools and there you are. JULIE: Exactly, yeah. CHARLES: The level of accessibility is pretty astounding. And so, I think t's why it's one of the most popular avenues. JULIE: Oh, definitely. Yeah. ELRICK: It's the back door probably for web development but not the back door for programming in general. JULIE: Mm, yeah. Yeah. CHARLES: Yeah. It seems like Haskell programming has really started taking off and that the ecosystem is starting to get some of the trappings of a really less fricative developer experience in terms of the package management and a command line experience and being able to not make all of the tiny little decisions that need to be made before you're actually writing ‘hello world'. JULIE: Right. ELRICK: Interesting. Haskell has a package manager now? CHARLES: Oh, it has for a while. ELRICK: Oh, really? What is it called? I have no idea? Do you know the name off the top of your head? CHARLES: So, I actually, I'm not that familiar with the ecosystem other than every time I try it out. So I definitely will defer this question to you, Julie. JULIE: This is going to be a dumb question, I guess. What do we mean by package manager? CHARLES: So, in JavaScript, we have npm. The concept of these packages. It's code that you can download, a module that you can import, basically import symbols from. And Ruby has RubyGems. And Python has pip. JULIE: Okay, okay. CHARLES: Emacs has Emacs Packages. And usually, there's some repository and people could publish to them and you can specify dependencies. JULIE: Right, yeah. Okay, so we have a few things. Hackage is sort of the main package repository. And then we have another one called Stackage and the packages that are in Stackage are all guaranteed to work with each other. CHARLES: Mm, okay. JULIE: So, on Hackage, some of the packages that are on Hackage are not really maintained or they only work with some old versions of dependencies and stuff like that, so the people who made Stackage were like “well, if we had this set of packages that were all guaranteed to work together, the dependencies were all kept updated and they all can be made to work together, then that would be really convenient.” And then we have Cabal and we have Stack are the main… and a lot of people use Nix for the same purpose that you would use Cabal or Stack for building projects and importing dependencies and all of that. CHARLES: Right. So, Cabal and Stack would be roughly equivalent then to the way we use Yarn or JavaScript and Bundler in Ruby. You're solving the equation for, here's my root set of dependencies. Go out and solve for the set of packages that satisfy. Give me at least one solution and then download those packages and [you can] run them. JULIE: Yeah, yeah. Right, so managing your dependencies and building your project. Because Haskell's compiled, so you've got to build things. And so yeah, we have both of those. CHARLES: And now there's like web frameworks and REST frameworks. JULIE: Oh there are, yeah. We have… CHARLES: All kinds of stuff now. JULIE: We had this big proliferation of web frameworks lately. And I guess some of them are very good. I don't really do web development. But the people I know who do web development in Haskell say that some of these are very good. Yesod is supposed to be very good. Servant is sort of the new hotness. And I haven't used Servant at all though, so don't ask me questions about it. [Laughter] JULIE: But yeah, we have several big web frameworks now. There are still some probably big holes in the Haskell ecosystem in terms of what people want to see. So, that's one thing that people complain about Haskell for, is that we don't have some of the libraries they'd like to see. I'd like to see something… I would really like to see in Haskell something along the lines of like NLTK from Python. CHARLES: What is that? JULIE: Natural language toolkit. CHARLES: Oh, okay. JULIE: So yeah, Python has this… CHARLES: Yeah, Python's got all the nice science things. JULIE: They really do. And Haskell has some natural language processing libraries available but nothing along the lines of, nothing as big or easy to use and stuff as NLTK yet. So, I'd really like to see that hole get filled a little bit better. And you know… CHARLES: Well, there you go. If anyone out there is seeking fame and fortune in the Haskell community. JULIE: That's actually why I started learning Python, was just so that I could figure out NLTK well enough to start writing it in Haskell. [Laughter] JULIE: So, that's sort of my ambitious long-term project. We'll see how that goes. [Laughs] CHARLES: Nice. Before we wrap up, is there anything going on, coming up, that you want to give a shoutout to or mention or just anything exciting in general? JULIE: Yeah, so on March 30th I'm going to be giving a talk at lambda-squared which is going to be in Knoxville and is a new conference. I think it's just a single-day conference and I'm going to be giving a talk about functors. So, I'm going to try to get through all the exciting varieties of functors in a 50-minute talk. CHARLES: Ooh. JULIE: So, we'll see how that goes. Yeah. And I am still working with Chris Martin on ‘The Joy of Haskell' which should be finished this year, sometime. I'm not going to… [Laughter] JULIE: Give any more specific deadline than that. And in the process of writing Joy of Haskell, I was telling him about some things that, some things that I think are really difficult. Like in my experience, teaching Haskell some places where I find people have the biggest stumbling blocks. And I said, “What if we could do a beginner video course where instead of throwing all of these things at people at once, we separated them out?” And so, you can just worry about this set of stumbling blocks at one time and then later we can talk about this set of stumbling blocks. And so, we're doing… we're going to start a video course, a beginner Haskell video course. I think we'll be starting later this month. So, I'm pretty excited… CHARLES: Nice. JULIE: About that. Yeah. CHARLES: Yeah, I know a lot of people learn really, really well from videos. There's just some… JULIE: Yeah. [Inaudible] for me, so I'm a little nervous. But [Laughs] CHARLES: Yeah, especially if you can do… are you going to be doing live coding examples? Building out things with folks? JULIE: Yeah. CHARLES: Yeah. Well, you just needn't look no further than the popular things like RailsCasts and some of the… yeah, there's just so many good video content out there. Yeah, we'll definitely be looking for the. JULIE: Cool. CHARLIE: Alright. Well, thank you so much, Julie, for coming on. JULIE: Well, thank you for having me on. Sorry I went down some… I went kind of down some rabbit holes. Sorry about that. [Laughs] CHARLES: You know what? You go down the rabbit holes, we spend time walking around the rabbit holes. JULIE: [Laughs] CHARLES: There's something for everybody. So… [Laughter] CHARLES: And ultimately we're strolling through the meadow. So, it's all good. JULIE: [Laughs] Yeah. CHARLES: Thank you too, Elrick. JULIE: It was nice talking to you guys again. CHARLES: Yeah. ELRICK: Yeah, thank you. CHARLES: If folks want to follow up with you or reach out to you, what's the best way to get in contact with you? JULIE: I'm @argumatronic on Twitter and my blog is argumatronic.com which has an email address and some other contact information for me. So, I'd love to hear questions, comments. [Laughs] Yeah. I always [inaudible]. CHARLES: Alright, fantastic. JULIE: To talk to new people. CHARLES: Alright. And if you want to get in touch with us, we are @TheFrontside on Twitter. Or you can just drop us an email at contact@frontside.io. Thanks everybody for listening. And we will see you all later.