POPULARITY
KYNETON LIVE Interview with Richard Gabriel by Ralph Barba
Jury consultant for the A$AP Rocky Trial, Richard Gabriel, joins us to discuss the recent trial. We ask everything from why he would want a Firearms expert on the jury, to his thoughts about the prop gun defense! Richards company: https://decisionanalysisinc.com/ Richards book: https://www.amazon.com/Acquittal-Secrets-High-Profile-Trial-Consultant/dp/0425269728 Trust in Justice project: https://decisionanalysisinc.com/wp-content/uploads/2023/06/Trust-in-Justice-National-Survey-Report-w-Charts.pdf Join this channel to get access to perks: https://www.youtube.com/channel/UC0Mq010V-pKduwLxDYX-F-Q/join Join my Patreon for access to all court docs, podcasts and more! https://www.Patreon.com/imnotalawyerbut Tiktok: https://www.tiktok.com/@imnotalawyerbut
Support the show on Patreon: https://www.patreon.com/c/lionsledbydonkeys Joe and Tom are joined by Trashfuture's Milo Edwards to talk about the time a bunch of guys named Mstislav got destroyed by the Mongols. Sources: Leo De Hertog. Genghis Khan: Conqueror of the World. Richard Gabriel. Subotai The Valiant: Genghis Khan's Greatest General. The Chronicle of Novgorod. chrome-extension://efaidnbmnnnibpcajpcglclefindmkaj/https://faculty.washington.edu/dwaugh/rus/texts/MF1914.pdf Victor Kamenir. Russian Disaster at the Kalkha River. Military Heritage. Vol 20, no. 6 Robert Rossabi. All the Khan's Horses.
STS YouTube Channel: Surviving The Survivor: #BestGuests in True Crime - YouTubeIT'S HERE: STS HARDCOVER BOOK SIGNED COPIES FROM JOEL AND KARM: https://premierecollectibles.com/waldmanSTS Book on Audible: Https://www.audible.com/pd/Surviving-...STS Book on Amazon: Https://www.amazon.com/shop/surviving...STS Merch Store: https://www.bonfire.com/store/sts-store/STS Patreon: Https://patreon.com/SurvivingTheSurvivorSTS Website: https://survivingthesurvivor.com/All Things STS
Join us for this insightful episode featuring Jury Consultant, Richard Gabriel. all bout Jury Duty! Mr. Gabriel has assisted counsel in the Aaron Hernandez acquittal as well as the Casey Anthony, O.J. Simpson, Phil Spector, Enron, Whitewater, Kwame Kilpatrick, Heidi Fleiss, and numerous other high-profile civil and criminal matters. Three cases he has participated in have resulted in United States Supreme Court decisions...and we ask him everything you want to know about Jury Duty Richard's Information: Website: https://decisionanalysisinc.com/experience/richard-gabriel/ Acquittal: An Insider Reveals the Stories and Strategies Behind Today's Most Infamous Verdicts: https://www.amazon.com/Acquittal-Insider-Reveals-Strategies-Infamous/dp/042526971X
IT'S HERE: STS HARDCOVER BOOK SIGNED COPIES FROM JOEL AND KARM: https://premierecollectibles.com/waldmanSTS Book on Audible: Https://www.audible.com/pd/Surviving-...STS Book on Amazon: Https://www.amazon.com/shop/surviving...STS Merch Store: https://www.bonfire.com/store/sts-store/STS Patreon: Https://patreon.com/SurvivingTheSurvivorSTS Website: https://survivingthesurvivor.com/#STSNation, Welcome to another episode of Surviving The Survivor, the podcast that brings you the #BestGuests in all of True Crime… Nearly three years after the fatal shooting of cinematographer Halyna Hutchins on the New Mexico film set of “Rust,” actor Alec Baldwin is set to stand trial. Baldwin is charged with involuntary manslaughter for his role in the deadly incident that also injured the film's director, Joel Souza. Jury selection in his trial is set to begins Tuesday. It's unclear if Baldwin will take the stand. #BestGuests: Prior to joining the UNM Law School faculty this September, Professor Joshua Kastenberg had a 20-year career as a lawyer and judge in the U.S. Air Force. He served as an advisor to the Department of Defense on cyber security and cyber warfare matters, twice deployed to Iraq and oversaw the military's compliance with international law. Professor Kastenberg served as a prosecutor and defense counsel in over 200 trials and as a judge in over 200 trials. He has been cited by the Washington Post and appeared on Fox News, and written over a dozen law review articles as well as four books. Prior to joining the faculty he taught graduate and undergraduate level courses in national security law and systems as well as legal history. Professor Kastenberg's interests are in the field of criminal law and procedure, evidence, legal history, and judicial ethics. Since 1985, Richard Gabriel has been a leader in the field of jury research, jury selection and litigation communication with experience in more than 1,500 trials in both the civil and criminal arenas across the country. Some of his big cases include Aaron Hernandez , Casey Anthony, O.J. Simpson, Phil Spector, Enron, Whitewater, Kwame Kilpatrick, Heidi Fleiss, and numerous other high profile civil and criminal matters. Tara Malek is an Idaho licensed attorney practicing in state and federal Court in business and commercial litigation. Tara has experience in both civil and criminal law. Joseph Krowski Jr. is regarded as one of the pre-eminent trial attorneys in Massachusetts. His aggressive and persuasive approach to litigation continues to produce real results for his clients. Attorney Krowski Jr. started practicing law 22 years ago, a former prosecutor, he opened his own practice in 2000. Since then, he has tried high profile cases in both Federal and State Court. #AlecBaldwin #Rust#Shooting #HalynaHutchins #JoelSouza #HannahGutierrezRead #TrueCrime #NewMexico #MovieSetShooting#Hollywood #truecrimecommunity #truecrimepodcast #truestory #truecrime #murdermystery
IT'S HERE: STS HARDCOVER BOOK SIGNED COPIES FROM JOEL AND KARM: https://premierecollectibles.com/waldmanSTS Book on Audible: Https://www.audible.com/pd/Surviving-...STS Book on Amazon: Https://www.amazon.com/shop/surviving...STS Merch Store: https://www.bonfire.com/store/sts-store/STS Patreon: Https://patreon.com/SurvivingTheSurvivorSTS Website: https://survivingthesurvivor.com/#STSNation, Welcome to another episode of Surviving The Survivor, the podcast that brings you the #BestGuests in all of True Crime… The trial for Karen Read, the Massachusetts woman who is accused in the 2022 death of her Boston police officer boyfriend, is underway with Day 2 of testimony. Read, 43, of Mansfield, is charged with running down John O'Keefe, her Boston police officer boyfriend, and leaving him to die in a blizzard in the town of Canton on Jan. 29, 2022. She has pleaded not guilty to charges of second-degree murder, motor vehicle manslaughter, and leaving the scene of a collision in connection with O'Keefe's death. #BestGuests: Since 1985, Richard Gabriel has been a leader in the field of jury research, jury selection and litigation communication with experience in more than 1,500 trials in both the civil and criminal arenas across the country. Some of his big cases include Aaron Hernandez , Casey Anthony, O.J. Simpson, Phil Spector, Enron, Whitewater, Kwame Kilpatrick, Heidi Fleiss, and numerous other high profile civil and criminal matters. Richard is also the author of Acquittal: An Insider Reveals the Stories and Strategies Behind Today's Most Infamous Verdicts Meghan Sacks is a full Professor of Criminology and the Graduate Program Director at Fairleigh Dickinson University. She teaches classes including Women and Crime, Serial Killers, and Crime Policy. Amy and Meghan co-host two podcasts: Women and Crime and Direct Appeal …NOW IN SEASON 2 Darryl Cohen is an Entertainment and Criminal Defense attorney, is a partner of Cohen, Cooper, Estep & Whiteman, LLC, and previously partner with Katz, Smith & Cohen in Atlanta, Georgia. He is a former Assistant State Attorney in Miami, Dade County, Florida, and Assistant District Attorney in Atlanta, Fulton County, Georgia. His Entertainment practice includes representation of television anchors, actors, photographers, models, and talent agencies. Further, he is involved with numerous syndicated television programs. As a criminal defense lawyer, he has represented the entire spectrum of clients for over thirty years. Many of his clients and cases are high profile entertainment related cases covered by the national media. #KarenRead #Turtleboy #AidanKearney #DavidYanetti #AlanJackson #JenMcCabe #BrianAlbert #MichaelProctor #TrueCrime #TrueCrimeCommunity #Canton #CantonCoverup #truecrimecommunity #crime_news #murdermystery #truecrimepodcast #crimestory #truestory
Former President Donald Trump sat in a New York courtroom today as jury selection began in his hush money case. 96 prospective jurors were questioned, and at least 50 were excused because they told the judge they couldn't be fair and impartial. Jury consultant Richard Gabriel speaks to Anderson about the historic trial. Plus, tensions are extremely high in the Middle East as Israel vows to "exact a price" after an Iranian attack over the weekend. Iran's Deputy Foreign Minister said Tehran will respond in less than a few seconds if Israel "makes another mistake.” All this started after officials said Israeli carried out a deadly strike on the Iranian consulate in Damascus earlier this month. AC360 is live from Tel Aviv tonight, where Anderson speaks to Michael Oren, former Israeli Ambassador to the United States. Learn more about your ad choices. Visit podcastchoices.com/adchoices
STS Website: https://survivingthesurvivor.com/ STS Merch Store: https://www.bonfire.com/store/sts-store/ #STSNation, Welcome to another episode of Surviving The Survivor, the podcast that brings you the #BestGuests in all of True Crime… After 9+ years, Donna Adelson appeared in a Tallahassee courtroom to hear the charges levied against her, including murder, in the conspiracy to kill her ex son-in-law FSU Law Professor Dan Markel. The following day her son Charlie Adelson was sentenced to life in prison without parole. Now Charlie's jailhouse calls are out there making people wonder if Donna and Charlie could turn on Wendi? #BestGuests: Since 1985, Richard Gabriel has been a leader in the field of jury research, jury selection and litigation communication with experience in more than 1,500 trials in both the civil and criminal arenas across the country. Some of his big cases include Aaron Hernandez , Casey Anthony, O.J. Simpson, Phil Spector, Enron, Whitewater, Kwame Kilpatrick, Heidi Fleiss, and numerous other high profile civil and criminal matters. Richard is also the author of Acquittal: An Insider Reveals the Stories and Strategies Behind Today's Most Infamous Verdicts about his high-profile trial work, which was optioned by Warner Brothers and developed for CBS by Jerry Bruckheimer Productions. He is also the co-author of Jury Selection: Strategy and Science #JusticeForDanMarkel #TrueCrime #FSU #TrueCrimeCommunity #Podcast #Podcasting #Florida #CharlieAdelson #WendiAdelson #TrueCrime #DonnaAdelson
STS Website: https://survivingthesurvivor.com/ STS Merch Store: https://www.bonfire.com/store/sts-store/ #STSNation, Welcome to another episode of Surviving The Survivor, the podcast that brings you the #BestGuests in all of True Crime… We dive back into the #DanMarkel murder case. He's the Harvard-educated FSU Law Professor gunned down in his Tallahassee driveway back in 2014. Two hitmen and a go-between are already convicted of the crime and in prison. With Charlie and mom Donna now behind bars, it only leaves two Adelsons left. So what does Wendi's and Harvey's future look like? #BestGuests:THE LAWYER YOU KNOW Peter L. Tragos is the managing partner at the Law Offices of Tragos, Sartes & Tragos in Clearwater, Florida. He focuses his entire practice on fighting for injured victims of wrongful death, car accident, and premises liability cases. As far back as law school, Mr. Tragos has been drawn to perfecting the craft of trial work. Mr. Tragos won a national championship while on the mock trial team at Florida State University College of Law, and has tried a host of cases from federal to state and criminal to civil. Recently, Mr. Tragos has expanded his research and education by reviewing and breaking down other trials on his YouTube channel the “Lawyer You Know”. Trial work is his passion and he has been a member of the Florida Bar Association Civil Procedure Rules Committee for a number of years working to edit and create the best, and most just, civil rules for the entire state. Dave Aronberg is the State Attorney for Palm Beach County. The State Attorney is also a former member of the Florida Senate. He was elected to the Senate in 2002 as its youngest member and served for eight years. He is a graduate of Harvard undergrad and Harvard Law. Since 1985, Richard Gabriel has been a leader in the field of jury research, jury selection and litigation communication with experience in more than 1,500 trials in both the civil and criminal arenas across the country. Some of his big cases include Aaron Hernandez , Casey Anthony, O.J. Simpson, Phil Spector, Enron, Whitewater, Kwame Kilpatrick, Heidi Fleiss, and numerous other high profile civil and criminal matters. Richard is also the author of Acquittal: An Insider Reveals the Stories and Strategies Behind Today's Most Infamous Verdicts about his high-profile trial work, which was optioned by Warner Brothers and developed for CBS by Jerry Bruckheimer Productions. He is also the co-author of Jury Selection: Strategy and Science
Support #STS ❤️ Become a patron
Coming up in this episode 1. Network failures 2. Gaming wins 3. We get Emacs Pinky 4. A little browser watch 5. And we get a little manipulative 0:00 Cold Open 1:40 The Little Outage 7:45 Splitgate 10:25 The History of Emacs 23:51 Emacs, Emacs, Emacs 38:39 Browser Watch! 45:32 Kdenlive Fundraiser 47:58 Feedback 56:30 Community Focus: System Crafters 59:40 App Focus: GIMP 1:05:29 Next Time: Alpine Linux 1:09:17 Stinger Support us on Patreon! (https://www.patreon.com/linuxuserspace) Banter Dan re-installs his pfSense (https://www.pfsense.org) Splitgate on Steam (https://store.steampowered.com/app/677620/Splitgate/) Announcements Give us a sub on YouTube (https://linuxuserspace.show/youtube) You can watch us live on Twitch (https://linuxuserspace.show/twitch) the day after an episode drops. History Series on Text Editors - Emacs GNU Emacs (https://www.gnu.org/software/emacs/) TECO editor (https://dbpedia.org/page/TECO_(text_editor)) TECO-6, compatible with the PDP-6 (https://web.archive.org/web/20021001151829/http://www.transbay.net/~enf/lore/teco/teco-64.html) Gosling Emacs (https://youtu.be/TJ6XHroNewc?t=9896) Initially Gosling permitted unrestricted redistribution (https://youtu.be/TJ6XHroNewc?t=10519) Free software movement (https://en.wikipedia.org/wiki/Free_software_movement) UniPress began to redistribute and sell Gosling's Emacs on UNIX and VMS (https://archive.org/details/byte-magazine-1983-12/page/n335/mode/2up?view=theater&q=unipress+emacs) Interview in 2013 via Slashdot, Richard Stallman said: (https://features.slashdot.org/story/13/01/06/163248/richard-stallman-answers-your-questions) The Free Software Foundation is born (https://web.archive.org/web/20130525155859/http://corp.sec.state.ma.us/corp/corpsearch/CorpSearchSummary.asp?ReadFromDB=True&UpdateAllowed=&FEIN=042888848) Richard Gabriel's Lucid Inc needed version 19 to support their IDE, Energize C++. (https://www.jwz.org/doc/lemacs.html) Emacs 21.1 brought (http://mail.gnu.org/archive/html/info-gnu-emacs/2001-10/msg00009.html) Emacs 22.1 brought (http://lists.gnu.org/archive/html/info-gnu-emacs/2007-06/msg00000.html) The last official release (http://www.xemacs.org/Releases/21.4.22.html) of XEmacs Emacs 23.1 brought (http://lists.gnu.org/archive/html/info-gnu-emacs/2009-07/msg00000.html) Emacs 24.1 brought (http://lists.gnu.org/archive/html/info-gnu-emacs/2012-06/msg00000.html) Emacs 25.1 brought (https://lists.gnu.org/archive/html/emacs-devel/2016-09/msg00451.html) Emacs 26.1 brought (https://lists.gnu.org/archive/html/emacs-devel/2018-05/msg00765.html) Emacs 27.1 brought (https://lists.gnu.org/archive/html/emacs-devel/2020-08/msg00237.html) Emacs 28.1 brought (https://lists.gnu.org/archive/html/emacs-devel/2022-04/msg00093.html) September 12, 2022 Emacs 28.2, the latest maintenance release is out (https://lists.gnu.org/archive/html/emacs-devel/2022-09/msg00730.html) Further Reading The Beginnings of TECO (https://opost.com/tenex/anhc-31-4-anec.pdf) Real Programmers Don't Use PASCAL (https://web.archive.org/web/19991103221236/http://www.ee.ryerson.ca/~elf/hack/realmen.html) https://www.jwz.org/doc/emacs-timeline.html https://web.archive.org/web/20000819071104/http%3A//www.multicians.org/mepap.html https://www.gnu.org/software/emacs/history.html https://web.archive.org/web/20131024150047/http://www.codeartnow.com/hacker-art-1/macsimizing-teco https://web.archive.org/web/20101122021051/http://commandline.org.uk/2007/history-of-emacs-and-xemacs/ More Announcements Want to have a topic covered or have some feedback? - send us an email, contact@linuxuserspace.show Browser Watch Firefox 105 (https://9to5linux.com/firefox-105-is-now-available-for-download-brings-better-performance-on-linux-systems) Firefox release notes. (https://www.mozilla.org/en-US/firefox/105.0/releasenotes/) Microsoft Teams is going away (https://news.itsfoss.com/microsoft-linux-app-retire/) and being replaced by a PWA. Malware infested ads in Edge. (https://www.bleepingcomputer.com/news/security/microsoft-edge-s-news-feed-ads-abused-for-tech-support-scams/) This might be the push to move to a PWA? (https://www.bleepingcomputer.com/news/security/microsoft-teams-stores-auth-tokens-as-cleartext-in-windows-linux-macs/) Housekeeping Catch these and other great topics as they unfold on our Subreddit or our News channel on Discord. * Linux User Space subreddit (https://linuxuserspace.show/reddit) * Linux User Space Discord Server (https://linuxuserspace.show/discord) * Linux User Space Telegram (https://linuxuserspace.show/telegram) * Linux User Space Matrix (https://linuxuserspace.show/matrix) Kdenlive fundraiser is now live! Kdenlive fundraiser that is now live (https://dot.kde.org/2022/09/20/kdenlive-fundraiser-live) If you want to help too you can head over to their donation page (https://kdenlive.org/en/fund/?mtm_campaign=fund_dot) Feedback Mark (Youtube) Nice Green day shirt, and actually nice Nintendo shirt too, nice shirt all round. Larry (Email) How do you handle sharing things in multiple distros installed on the same machine? Bhiku (Email) Mozilla Neural Machine Translation Engine (https://hacks.mozilla.org/2022/06/neural-machine-translation-engine-for-firefox-translations-add-on/) Unleashing the power of GNU Nano (https://github.com/hakerdefo/GIGA-beest) Community Focus System Crafters (https://www.youtube.com/c/SystemCrafters) Check out the Absolute Beginners Guide to EMACS (https://youtu.be/48JlgiBpw_I) App Focus Gnu Image Manipulation Program (https://www.gimp.org) aka GIMP Next Time We will discuss Alpine Linux (https://www.alpinelinux.org) and the history. Come back in two weeks for more Linux User Space Stay tuned and interact with us on Twitter, Mastodon, Telegram, Matrix, Discord whatever. Give us your suggestions on our subreddit r/LinuxUserSpace Join the conversation. Talk to us, and give us more ideas. All the links in the show notes and on linuxuserspace.show. We would like to acknowledge our top patrons. Thank you for your support! Producer Bruno John Dave Co-Producer Johnny Sravan Tim Contributor Advait CubicleNate Eduardo S. Jill and Steve LiNuXsys666 Nicholas Paul sleepyeyesvince
On this episode of Defence Deconstructed, David Perry speaks to Charlotte Duval-Lantoine about the Independent External Comprehensive Review Guest Bio Charlotte is the Ottawa Operations Manager and a Fellow for the Canadian Global Affairs Institute (www.cgai.ca/staff#Lantoine) Host Bio: Dave Perry is President of the Canadian Global Affairs Institute (www.cgai.ca/david_perry) Read The Ones We Let Down by Charlotte Duval-Lantoine – https://www.mqup.ca/ones-we-let-down--the-products-9780228011262.php?page_id=73& "Abour Report" – https://www.canada.ca/en/department-national-defence/campaigns/conduct-and-culture/independent-external-comprehensive-review.html Crisis in Command by Richard Gabriel and Paul Savage – https://us.macmillan.com/books/9780809001408/crisisincommand Recording Date: 10 June 2022 Follow the Canadian Global Affairs Institute on Facebook, Twitter (@CAGlobalAffairs), or on LinkedIn. Head over to our website at www.cgai.ca for more commentary. Produced by Charlotte Duval-Lantoine. Music credits to Drew Phillips
In this episode of True Crime Daily The Sidebar Podcast: Katherine James and Richard Gabriel join host Joshua Ritter to discuss the undefined elements of psychology and behavior that affect everyone in the courtroom and beyond. They discuss trial management, witness preparation, and the process of jury selection from the opening statements all the way through closing arguments. Stay tuned until the end of the episode to hear how these concepts work in actual cases and how the theater of the trial can affect the outcome. Tweet your questions for future episodes to Joshua Ritter using the hashtag #TCDSidebar. See omnystudio.com/listener for privacy information.
The Kyle Rittenhouse jury begin deliberations tomorrow after day of closing arguments. Does the prosecution's ‘provocation' headline in their closing arguments invalidate Rittenhouse's self-defense claim? Veteran Jury consultant Richard Gabriel joins to give his perspective on the case. As the list of Trump associates subpoenaed by the January 6 Committee rises to 35, Steve Bannon turns himself in and is subsequently released from custody on his contempt of Congress charges, warning this will be "the misdemeanor from hell" for A.G. Garland, Pelosi & Biden. ABC News Chief Washing Correspondent Jonathan Karl joins to talk about his book ‘Betrayal', in which he reveals the plan that Trump's Chief of Staff Mark Meadows sent to Mike Pence to overturn the 2020 election, and the key pieces of evidence Trump is trying to suppress through legal delays, which prove the near-miss of his Administration's attempted coup. To learn more about how CNN protects listener privacy, visit cnn.com/privacy
The Kyle Rittenhouse jury begin deliberations tomorrow after day of closing arguments. Does the prosecution’s ‘provocation’ headline in their closing arguments invalidate Rittenhouse’s self-defense claim? Veteran Jury consultant Richard Gabriel joins to give his perspective on the case. As the list of Trump associates subpoenaed by the January 6 Committee rises to 35, Steve Bannon turns himself in and is subsequently released from custody on his contempt of Congress charges, warning this will be "the misdemeanor from hell" for A.G. Garland, Pelosi & Biden. ABC News Chief Washing Correspondent Jonathan Karl joins to talk about his book ‘Betrayal’, in which he reveals the plan that Trump’s Chief of Staff Mark Meadows sent to Mike Pence to overturn the 2020 election, and the key pieces of evidence Trump is trying to suppress through legal delays, which prove the near-miss of his Administration’s attempted coup.To learn more about how CNN protects listener privacy, visit cnn.com/privacy
Please join us May 8, 2019 at 4:00 p.m. California time for a live show with host Denise Messenger. Our special guest is Richard Gabriel, CEO of the Tumor Genesis Company. Richard Gabriel has worked at nearly all levels in the life science and specialty chemical industries from manufacturing, research and development, scale-up, FDA compliance, government contracting, public company SEC compliance, regulatory, business development, marketing, sales and team building. His broad experience allows him to look at complicated business and technical situations and map a clear course of action. He is currently a Board Member of Precision Therapeutics (NASDAQ: AIPT) and an Operating office for TumorGenesis a AIPT wholly owned subsidiary focused on cancer cell capture, culture and drug screening. He is also COO and Cofounder of GLG Pharma, a AIPT partner in cancer discovery, development and approvals. He has assisted a number of start-up companies as a mentor, sat on boards of directors and was advisor to large corporations regarding technology innovation and development of new market and business opportunities. Mr. Gabriel has a Bachelor of Science (Chemistry) degree from Ohio Dominican College and a Masters in Business Administration from Suffolk University’s Executive MBA Program. He is the author of numerous patents and has presented on cGMP compliance, team building and management in the pharmaceutical industry as well as many other topics. You asked for it and we deliver.
CEO Dr. Carl Schwartz and Richard Gabriel of Precision Therapeutics Inc. (NASDAQ: AIPT), join the show to talk in detail about the state of the recent merger, new technology for tumor and cancer testing, and plans for 2019. # NASDAQ: AIPT # formerly Skyline Medical: SKLN # FDA-approved STREAMWAY® System # Helomics Corporation # Direct to drain system # automated # breast cancer # Cytopatch # D-chip #FDA cleared # Lung cancer # medical devices # Ovarian # patented # Precision Oncology # STREAMWAY® System # Tumor Genesis # Tumor treatments # waste fluid management
Guest: Philip Poots: GitHub | ClubCollect Previous Episode: 056: Ember vs. Elm: The Showdown with Philip Poots In this episode, Philip Poots joins the show again to talk about the beauty of simplicity, the simplicity and similarities between Elm and Ruby programming languages, whether Elixir is a distant cousin of the two, the complexity of Ember and JavaScript ecosystems (Ember helps, but is fighting a losing battle), static vs. dynamic, the ease of Rails (productivity), and the promise of Ember (productivity, convention). The panel also talks about the definition of "quality", making code long-term maintainable, and determining what is good vs. what is bad for your codebase. Resources: Michel Martens mote Learn the Elm Programming Language and Build Error-Free Apps with Richard Feldman Worse is Better: Richard P. Gabriel Gary Bernhardt's Destroy All Software Screencasts Zen and the Art of Motorcycle Maintenance: An Inquiry into Values The Calm Company It Doesn't Have to Be Crazy at Work This show was produced by Mandy Moore, aka @therubyrep of DevReps, LLC. Transcript: CHARLES:: Hello, everybody and welcome to The Frontside Podcast, Episode 113. My name is Charles Lowell. I'm a developer here at the Frontside and with me today are Taras Mankovski and David Keathley. Hello? DAVID:: Hey, guys. TARAS: Hello, hello. CHARLES:: And we're going to be talking with a serial guest on our serial podcast, Mr Philip Poots, who is the VP of engineering at ClubCollect. Welcome, Philip. PHILIP: Hey, guys. Thanks for having me on. CHARLES:: Yeah. I'm actually excited to have you on. We've had you on a couple of times before. We've been trying to get you on the podcast, I think for about a year, to talk about I think what has kind of a unique story in programming these days. The prevailing narrative is that folks start off with some language that's dynamically typed and object oriented and then at some point, they discover functional programming and then at some point, they discover static programming and they march off into a promised land of Nirvana and no bugs ever, ever happening again. It seems like it's pretty much a straight line from that point to the next point and passing through those way stations. When I talk to you, I guess... Gosh, I think you were the first person that really introduced me to Elm back at Wicked Good Ember in 2016 and it seemed like you were kind of following that arc but actually, that was a bit deceptive because then the next time I talked to you, you were saying, "No, man. I'm really into Ruby and kind of diving in and trying to get into Ruby again," and I was kind of like, "Record scratch." You're kind of jumping around the points. You're not following the preordained story arc. What is going on here? I just kind of wanted to have a conversation about that and find out what the deal was and then, what's kind have guided your journey. PHILIP: There was one event and that was ElmConf Europe, which was a fantastic conference. Really, one of the best conferences I've been to, just because I guess with the nature of early language, small conference environment. There's just a lot of things happening. There's a lot of people. Evan was there, Richard Feldman was there, the leading lights of the Elm community were there and it was fantastic. But I guess, one thing that people have always said to me is the whole way track is the best track of the conference and it's not something I really appreciated before and during the breaks, I ended up talking to a guy called Michel Martens. He is the finder of a Redis sourcing company and I guess, this was just a revelation to me. He was interested in Elm. He was friends with the guys that organized the conference and we got talking and he was like, "I do this in Ruby. I do this in Ruby. I did this in Ruby," and I was like, "What?" and he was like, "Yeah, yeah, yeah." He's a really, really humble guy but as soon as I got home, I checked him out. His GitHub is 'soveran' and it turns out he's written... I don't know, how many gems in Ruby, all with really well-chosen names, very short, very clear, very detailed. The best thing about his libraries is you can print them out on paper. What I mean by that is they were tiny. They were so small and I guess, I just never seen that before. I go into Ruby on Rails -- that was my first exposure to programming, that was my first exposure to everything -- unlike with Rails, often when you hit problems, you'd start to dive a bit deeper and ultimately, you dive so deep that you sunk essentially and you just accepted, "Okay, I'm not going to bend the framework that way this time. Let's figure out how everyone else goes with the framework and do that." Then with Ember when I moved into frontend, that was a similar thing. There were so many layers of complexity that I never felt like had a real handle on it. I kind of just thought this was the way things were. I thought it's always going to be complex. That's just the nature of the problem. That's just the problem they're trying to solve. It's a complex problem and therefore, that complexity is necessary. But it was Elm that taught me, I think that choosing the right primitives and thinking very carefully about the problem can actually give you something that's quite simple but incredibly powerful. Not only something quite simple but something so simple that it can fit inside your head, like this concept of a program fitting inside your head and Rails, I don't know how many heads I need to fit Rails in or Ember for that matter and believe me, I tried it but with Elm, there was that simplicity. When I came across this Ruby, a language I was very familiar with but this Ruby that I had never seen before, a clear example was a templating library and he calls it 'mote' and it's including comments. It's under a hundred lines of code and it does everything you would need to. Sure, there were one or two edge cases that it doesn't cover but it's like, "Let's use the trade off." It almost feels like [inaudible] because he was always a big believer in "You ain't going to need it. Let's go for that 80% win with 20% effort," and this was like that taken to the extreme. CHARLES:: I'm just curious, just to kind of put a fine point on it, it sounds like there might be more in common, like a deeper camaraderie between this style of Ruby and the style encouraged by Elm, even though that on the surface, one is a dynamically typed object oriented language and the other is a statically typed functional language and yet, there's a deeper philosophical alignment that seems like it's invisible to 99% of the discussion that happens around these languages. PHILIP: Yeah, I think so. I think the categories we and this is something Richard Feldman talks. He's a member of the Elm community. He does a lot of talks and has a course also in Frontend Masters, which I highly recommend. But he often talks about the frame of the conversation is wrong because you have good statically typed languages and you have bad statically typed languages. You have good dynamic languages and you have bad dynamic languages. For all interpretations of good and bad, right? I don't want to start any wars here. I think one of the things that Elm and Ruby have in common is the creator. Matz designed Ruby because he wanted programming to be a joy, you know? And Evan created Elm because he wanted programming to be a delight. I think if you experience both of those, like developing in both of those languages, you gain a certain appreciation for what that means. It is almost undefinable, indistinguishable, although you can see the effects of it everywhere. In Ruby, everything is an object, including nil. In Elm, it's almost he's taken everything away. Evan's taken everything away that could potentially cause you to stumble. There's a lot to learn with Elm in terms of getting your head around functional mindset and also, working with types but as far as that goes, people often call it like the Haskell Light, which I think those are a disservice to Elm because it's got different goals. CHARLES:: Yeah, you can tell that. You know, my explorations with Elm, the personality of Elm is 100% different than the personality of Haskell, if that is even a programming term that you can apply. For example, the compiler has an identity. It always talks to you in the first person, "I saw that you did this, perhaps you meant this. You should look here or I couldn't understand what you were trying to tell me." Literally that's how the Elm compiler talks to you. It actually talks to you like a person and so, it's very... Sorry, go ahead. PHILIP: No, no, I think the corollary to that is the principle of the surprise in Ruby. You know, is there going to be a method that does this? You type it out and you're like, "Oh, yes it is," which is why things like inject and reduce are both methods in enumerable. You didn't choose one over the other. It was just like, "Let's make it easy for the person who's programming to use what they know best." I think as well, maybe people don't think about this as deeply but the level of thought that Evan has put into designing Elm is crazy, like he's thought this through. I'm not sure if I said this the last time but I went to a workshop in the early days in London, which is my kind of first real exposure to Elm and Evan was giving the workshop. Someone asked him, "Why didn't you do this?" and he was like, "Well, that might be okay for now but I'm not sure that would make so much sense in 10 years," and I was kind of like, "What?" Because JavaScript and that ecosystem is something which is changing like practically hourly and this is a guy that's thinking 10 years into the future. TARAS: You might have answered it already but I'm curious of what you think is the difference, maybe it just comes down to that long term thinking but we see this in JavaScript world a lot, which is this kind of almost indifference to APIs. It almost doesn't really matter what the API is for whatever reason, there seems to be a big correlation between the API that's exposed with the popularity of the tool. I think there are some patterns, like something that's really simple, like jQuery and React have become popular because of the simplicity of their APIs. What the flip side to that? What other ways can APIs be created that we see in JavaScript world. Because we're talking about this beautiful APIs and I can relate to some of the work that Charles has been doing and I've been doing microstates but I wonder like what would be just a brief alternative to that API, so it's kind of a beautiful API. PHILIP: I don't know if anyone is familiar with the series of essays 'Worse is Better' like East Coast versus West Coast, from Richard Gabriel. The problem is, I guess and maybe this is just my understanding over my paraphrase of it, I'm not too familiar with it but I think that good APIs take time and people don't have time. If someone launches a V1 at first and it kind of does the job, people will use that over nothing and then whenever they're happy with that, they'll continue to use it and develop it and ultimately, if she's market share and then that's just the thing everyone uses and the other guy's kind of left behind like, "This is so much better." I guess this is a question, I think it was after Wicked Good Ember, I happened to be on the same trend as Tom Dale on the way back to New York and we started talking about this. I think that's his big question. I think it's also a question that still has to be answered, which is, "Will Elm ever be mainstream? Will it be the most popular thing?" aside from the question of whether it has to be or not. For me, a good APIs good design comes from understanding the problem fully -- CHARLES:: And you can understand the problem fully without time. PHILIP: Exactly and often, what happens -- at least this is what happens in my experience with the production software that I've written -- is that you don't actually understand the problem until you've developed a solution for it. Then when you've developed a solution for it, often the pressures or the commercial pressures or an open source is [inaudible] the pressures of backwards compatibility, mean that you can never refactor your way to what you think the best solution is and often, you start from scratch and the reality is people are too far away with the stuff you wrote in the past about the thing you're writing now. Those are always kind of at odds. I think there are a lot of people that are annoyed with Elm because the updates are too slow, it relies on Evan and we want to have a pool request accepted. All of the things that they don't necessarily recognize like the absence of which make Elm an Elm, if you know what I mean. The very fact that Evan does set such a high standard and does want everything to go through his personal filters because otherwise, you wouldn't gain the benefits that Elm gives you. The attention is very real in terms of I want to shift my software now and it becomes easier then. I think to go to a language like JavaScript, which has all of the escape hatches that you need, to be able to chop and change, to edit, to do what you need to do to get the job done and let's be quite honest, I think, also with Elm, that's the challenge for someone who's not an expert level like me. Once you hit a roadblock, you'll say, "Where do I go from here?" I know if I was using JavaScript, I could just like hack it and then clients are happy and everything's fine and you know there's a bit of stuff in your code that you would rather wasn't but at the end of the day, you go home and the job's done. DAVID:: Have you had to teach Elm to other people? You and I did some work like I've seen you pair with someone and guide them through the work that they needs to get done. If you had a chance to do something like that with Elm and see how that actually happens, like how do developer's mind develops as they're working through in using the tool? PHILIP: Unfortunately not. I would actually love to go through that experience. I hope none of my developers are listening to this podcast but secretly, I want to push them in the direction of Elm on the frontend. But no, but I can at least make from my own perspective. I find it very challenging at first because for me, being a Ruby developer and also, I would never say that I understood JavaScript as much as I would have liked. Coming from dynamic language, no functional experience to functional language with types, it's almost like learning a couple of different things at the same time and that was challenging. I think if I were to take someone through it, I would maybe start with a functional aspects and then move on to the type aspects or vice versa, like try and clearly breakdown and it's difficult because those two are so intertwined at some level. Gary Bernhardt of Destroy All Software Screencast, I watch quite a bit of his stuff and I had sent him an email to ask him some questions about one of the episodes that he did and he told me that he done the programming languages course, I think it's on Coursera from Daniel Grossman, so [inaudible] ML which is kind of the father of all MLs like Haskell and also Elm. I find that really helpful because he broke it down on a very basic level and his goal wasn't to teach you ML. It was to teach you functional programming. It would be a very interesting exercise, I think. I think the benefit that Elm gave you is you get to experience that delight very quickly with, "Oh, it's broken. Here's a nice message. I fix the message. It compiles. Wow, it works," and then there's a very big jump whenever you start talking about the effects. Whenever you want to actually do something like HTTP calls or dealing with the time or I guess, the impure stuff you would call in the Haskell-land and that was also kind of a bit weird. CHARLES:: Also, there's been some churn around that, right? PHILIP: That's right. When I started learning, they had signals, then they kind of pushed that all behind the scenes and made it a lot more straightforward. Then I just mastered it and I was like, "Yes, I know it," and then I was like, "All right. I don't need to know it anymore." This is the interesting thing for me because at work, most of our work now is in Elixir and Phoenix. I'm kind of picking a little bit up as I work with them. I think Elm's architecture behind the scenes is kind of based, I believe on Erlang's process model, so the idea of a mailbox and sending messages and dealing with immutable state. CHARLES:: Which is kind of ironically is very object oriented in a way, right? It's functional but also the concept of mailboxes and sending messages and essentially, if you substitute object for process, you have these thousands and thousands of processes that are sending messages back and forth to each other. PHILIP: Yeah, that's right. It's like on a grand scale, on a distributed scale. Although I wouldn't say that I'm that far with Erlang, Elixir to appreciate the reality of that yet but that's what they say absolutely. CHARLES:: Now, Phoenix and Elixir is a dynamically typed functional language. does it share the simplicity? One of the criticisms you had of Rails was that you couldn't fit it in your head. It was very difficult. Is there anything different about Elixir that kind of makes it a spirit cousin of Elm and the simple Ruby? PHILIP: I think so, yes. Absolutely. I don't think it gets to the same level but I think it's in the right direction and specifically on the framework front, it was designed specifically... I mean, in a sense it's like the anti-type to Rails because it was born out of people's frustrations with Rails. José Valim was pretty much one of Rails top core committers. Basically, every Rails application I wrote at one period, at 80% of the code written by José Valim, if you included all the gems, the device and the resourceful and all the rest of it. Elixir in many ways was born out of the kind of limitations of Ruby with Rails and Phoenix was also born out of frustrations with the complexity of Rails. While it's not as simple as say, Michel Martens' Syro which is like his web framework, which is a successor to Cuba if people have heard of that, it is a step in the right direction. I don't understand it but I certainly feel like I could. They have plug which is kind of analogous but not identical to Rack but then the whole thing is built out of plugs. I remember Yehuda Katz give a presentation like 'The Next Five Years' and essentially about Rails 3.0. This is going way back and Phoenix is in some ways the manifestation of his desire to have like the Russian doll pattern, where you could nest applications inside applications and you could have them side by side and put them inside each other and things like that. Phoenix has this concept called umbrella applications which tells that, like Ecto is a really, really nice obstruction for working with the database. CHARLES:: I see. It feels like, as opposed to being functional or static versus dynamic, the question is how do you generate your complexity? How do you cope with complexity? Because I think you touched on it at the beginning of the conversation where you thought that my problems are complex so the systems that I work with to solve those problems must necessarily also be complex. I think one of the things that I've certainly realized, kind of in the later stages of my career is that first part is true. The problems that we encounter are extremely complex but you're much better served if you actually achieve that complexity by composing radically simple systems and recombining them. To the commonality of your system is going to determine how easy it's going to work with and how well it can cope with complexity. What really drives a good system is the quality of its primitives. PHILIP: Absolutely. After ElmConf, I actually invited Michel to come to my place in the Netherlands. He live in Paris but I think he grew up Buenos Aires in Argentina. To my amazement, he said, "Yes, okay," and we spent a couple of days together and there he talked to me about Christopher Alexander and the patterns book, where patterns and design patterns actually grew out of. One of his biggest things was the code is the easiest part, like you've got to spend 80% of your time thinking deeply about the problem, like literally go outside, take long looks. I'm not sure if this is what Rich Hickey means with Hammock Driven Development. I've never actually got around to watching the talk. CHARLES:: I think it's exactly what he means. PHILIP: And he said like once you get at, the code just comes. I think Michel's work, you should really check it out. I'll send you a link to put in the show notes but everything is built out of really small libraries that do one thing and do it really well. For example, he has a library like a Redis client but the Redis client also has something called Nest, which is a way to generate the keys for nested hashes. Because that's a well-designed, the Redis client is literally just a layer on top. If you understand the primitive then, you can use the library on top really well. You can embed Syro applications within Syro applications. I guess, there you also need the luxury of time and I think this is where maybe my role as VP of engineering, which is kind of my first role of that kind, comes in here which is when you're working on the commercial pressure, try to turn around to a business guy and say, "Yes, we'll solve this problem but can we take three weeks to think about it?" It's never going to happen -- CHARLES:: No. PHILIP: Absolutely, it will never going to happen. Although the small things that I tried to do day to day now is get away from the computer, write on paper, write out the problem as you understand it, attack it from different angles, think about different viewpoints, etcetera. CHARLES:: I think if you are able to quantify the cost of not thinking about it for three weeks, then the business person that you're going to talk to is their ears are going to perk up, right? But that's so hard to do. You know, I try and make like when we're saying like, "What technologies are you going to choose? What are the long term ramifications in terms of dollars or euros or whatever currency you happen to be in for making this decision?" I wish we had more support in thinking about that but it is kind of like a one-off every time. Anyway, I'm getting a little bit off track. PHILIP: No, not at all. This is a subject I love to talk about because we kind of had a few a bit of turbulence because we thought, maybe we should get product people in, maybe we should get them a product team going and what I find was -- and this is maybe unique to the size of the company -- that actually made things a lot more difficult because you got too many heads in many ways. Sometimes, it's better to give the developer all of the context so that he can think about it and come up with the best solution because ultimately, he's the only one who can understand. I wouldn't say understands the dollars and cents but he understands the cost implications of doing it in efficient ways, which often happens when you're working in larger teams. TARAS: One thing I find really interesting about this conversation is the definition of good is really complicated here. I've observed Charles work on microstates and I work with him, like I wrote a lot of the code and we got through like five or six iterations and at every point, he got better but it is so difficult to define that. Then when you start to that conversations outside of that code context and you start to introduce business into the mix, the definition of good becomes extremely complicated. What do you think about that? How do we define it in a way? Are there cultures or engineering cultures or societal cultures that have a better definition for good that is relevant to doing quality work of this? CHARLES:: That's a deep question. PHILIP: Wow. Yeah, a really, really deep question. I think often for business, like purely commercially-driven, money-oriented good is the cheapest thing that gets the job done and often that's very short term, I think. As you alluded to Charles, that people don't think about the cost of not doing the right things, so to speak in our eyes and also, there's a huge philosophical discussion whether our definition of good as programmers and people who care about our craft is even analogous to or equal to a good in a commercial context. CHARLES:: Yes, because ultimately and this is if you have read Zen in the Art of Motorcycle Maintenance, one of the things that Pirsig talks about is what is the definition of quality. How do we define something that's good or something that's bad? One of the definitions that gets put forward is how well something is fit to purpose. Unless you understand the purpose, then you can't determine quality because the purpose defines a very rich texture, a very rich surface and so, quality is going to be the object that maps very evenly and cleanly over that surface. When it comes to what people want in a program, they're going to want very different thing. A developer might need stimulation for this is something that's very new, this is something that's going to keep my interest or it's going to be keeping my CPU max and I'm going to be learning a whole lot. A solution that actually solves for that purpose is going to be a high quality solution. Also, this is going to be fast. We're going to be able to get to market very quickly. It might be one of the purposes and so, a solution that is fast and the purpose fits so it's going to be good. Also, I think developers are just self-indulgent and looking for the next best thing in something that's going to keep their interest, although we're all guilty of that. But at the same time, we're going to be the ones maintaining software, both in our current projects and collectively when we move to a new job and we're going to be responsible for someone else's code, then we're going to be paying the cost of those decisions. We both want to minimize the pain for ourselves and minimize the pain for others who are going to be coming and working in our code to make things long term maintainable. That's one axis of purpose and therefore, an axis of quality. I think in order to measure good and bad, you really have to have a good definition of what is the purpose of that surface is so rich but the more you can map it and find out where the contours lie, the more you're going to be able to determine what's good and what's bad. TARAS: It makes me think of like what is a good hammer. A sledgehammer is a really good hammer but it's not the right hammer for every job. CHARLES:: Right. TARAS: I think what you're saying is understanding what is it that you're actually doing and then matching your solution to what you're actually trying to accomplish. PHILIP: Yeah, absolutely and in my experience, we have a Ruby team building a Rails application. That's our monolith and then, we have a couple of Elixir teams with services that have been spun out of that. This isn't proven. This is just kind of gut feel right now and it is that Elixir is sometimes slower to develop the same feature or ship it but in the long term it's more maintainable. I haven't actually gotten dived into to React and all of the amazing frameworks that it has in terms of getting things up and running quickly but in terms of the full scale application, I still think 10, 11 years on, Rails has no equal in terms of proving a business case in the shortest time possible. CHARLES:: Yeah. I feel very similarly too but the question is does your development team approach the problem as proving a business case or do they approach the problem as I want to solve the set of features? PHILIP: Yes. Where I'm working at the moment, I started out just as a software developer. I guess, we would qualify for 37 signals or sorry... base camps definition of a calm company -- CHARLES:: Of a what company? PHILIP: A calm company. Sorry. They just released a new book and called 'The Calm Company' and 'It Doesn't Have to Be Crazy at Work.' I was given in my first couple of months, a problem. It was business oriented, it had to be solved but it had to be solved well from a technical perspective because we didn't want to have to return to it every time. It was standardizing the way that we exported data from the database to Excel. You know, I was amazed because it was literally, the first time that I'd been given the space to actually dive in on a technical level to do that kind of stuff. But I think even per feature, that varies and that sometimes challenging when handing the work on because you've got to say, "This fit. Literally, we're just trying to prove, whether if we have this feature, the people will use it?" versus, "This is a feature that's going to be used every day and therefore, needs to be at good, technical quality." Those are the tradeoffs that I guess, keep you in a job. Because if it was easy, then you would need anyone to figure it out but it's always a challenge. What I like is that our tools are actually getting better and I think, with Elm for example, it's kind of major selling point is maintainability and yet, with Elm, there haven't been that many companies with Elm over a period of years that exists, that can live to tell the tale. Whereas, we certainly know with Rails applications have done well like Basecamp and GitHub. For sure, they can be super maintainable but the fact that it took GitHub to just moved Elm to Rails 5.0, I belief, the fact that it took them years and years and they were running off at fork of Rails 2.3, I think it shows the scale of the problem in that way. You know, Phoenix also went through a few issues, kind of moving architectures from the classic Rails to a more demand driven design model. I think we're getting there slowly, zig-zagging towards a place where we better understand how to write software to solve business problems. I guess, I was really interested in microstates when you shared it at Wicked Good Ember because that to me was attacking the problem from the right perspective. It's like given the fact that the ecosystem is always changing. How can we extract the business logic such that these changes don't affect the logic of our application? CHARLES:: Man, we got a lot to show you. It has changed quite a bit in the last two years. Hopefully, for the better. TARAS: It's been reduced and it's almost a quarter of its size while maintaining the same feature set and it's faster, it's lazier, it's better in every respect. It's just the ideas have actually been fairly consistent. It's just the implementation that's evolved. CHARLES:: Yeah, it's been quite a journey. It parallels kind of the story that we're talking about here in the sense that it really has been a search for primitives and a search for simplification. One of the things that we've been talking about, having these Ruby gems that do one thing and do it very, very, very well or the way that Elixir being architected has some very, very good primitives or Elm, the same kind of thing being spiritually aligned, even though on the surface, it might share more in common with Haskell. There's actually a deep alignment with a thing like Ruby and that's a very surprising result. I think one of the things that appeals to me about the type of functional programming that is ironically, I guess not present in Elm, where you have the concept of these type classes but I actually think, I love them for their simplicity. I've kind of become disenchanted with things like Lodash, even though they're nominally functional. The fact that you don't have things like monoid and functors and stuff is kind of first class participants in the ecosystems, means you have to have a bunch of throwaway functions. Those API surface area is very large, whereas if you do account for those things, these kind of ways of combining data and that's how you achieve your complexity, is not by a bunch of one-off methods that are like in Lodash, they're all provided for you so you don't have or have to write them yourself. That is one level of convenience but having access to five primitives, I think that's the power of the kind of the deeper functional programming types. PHILIP: And Charles, do you think that that gives you the ability to think at a higher level, about the problems that you're solving? Would you make that link? CHARLES:: Absolutely. PHILIP: So, if we're not doing that, then we're actually doing ourselves a disservice? CHARLES:: I would say so. PHILIP: Because we're actually creating complexity, where it shouldn't exist? CHARLES:: Yeah, I think if you have a more powerful primitive, you can think of things like async functions and generator functions, there's a common thread between async functions, generator functions, promises arrays and they're all functors. For me, that's a very profound realization and there might be a deeper spiritual link between say, an async function and an array in the same way that there's a deep spiritual link between Ruby and Elm, that if you don't see that, then you're doing yourself a disservice and you're able to think at a higher level. Also, you have a smaller tool set where each tool is more powerful. PHILIP: You did a grit, I think it was a repository with a ReadMe, where you boiled down what people would term what I would term, the scary functional language down to a very simple JavaScript. Did you ever finish that? Did you get to the monads? CHARLES:: I did get to the monads, yeah. PHILIP: Okay. I need to check that out again. I find that really, really helpful because I think one of Evan's big things with Elm is he doesn't use those terms ever and he avoids them like the plague because I think he believes they come tinged with the negative experiences of people trying Haskell and essentially getting laughed at, right? CHARLES:: Yes. I think there's something to that. TARAS: But we're doing that in microstates as well, right? In microstates documentation, even though microstates are written completely with these functional primitives, on the outside, there's almost no mention of it. It's just that when you actually go to use it, if you have an idea, one of the thing that's really powerful with microstates is that this idea that you can return another microstate from a transition and what that will do is what you kind of like what a flat map would do, which is replace that particular node with the thing that you returned it with. For a lot of people, they might not know that that's like a flat map would do but a microstate will do exactly what they wanted to do when it didn't realize that's actually should just work like that. I think, a lot of the work that we've done recently is to package all things and it make it powerful and to access the concepts that it is very familiar, something you don't need to learn. You just use it and it just works for you. CHARLES:: Right but it is something that I feel like there's unharvested value for every programmer out there in these type classes: monads and monoids and functors and co-functors or covariant functors, contravariant functors, blah-blah-blah, that entire canon. I wish there was some way to reconcile the negative connotations and baggage that that has because we feel kind of the same way and I think that Evan's absolutely right. You do want to hide that or make it so that the technology is accessible without having to know those things. But in the same way, these concepts are so powerful, both in terms of just having to think less and having to write less code but also, as a tool to say, "I've got this process. Is there any way that could it be a functor? If I can find a way that this thing is a functor, I can just save myself so much time and take so many shortcuts with it." PHILIP: And in order to be able to communicate that, or at least communicate about that, you need to have terms to call these things, right? Because you can't always just refer to the code or the pattern. It's always good to have a name. I'm with you. I see value in both, like making it approachable, so the people who don't know the terms are not frightened away. But I also see value in using the terms that have always existed to refer to those things, so that things are clear and we can communicate about them. CHARLES:: Right. definitely, there's a tradeoff there. I don't know where exactly the line is but it would be nice to be able to have our cake and eat that one too. We didn't get really to talk about the type versus dynamic in the greater context of this whole conversation. We can explore that topic a little bit. PHILIP: Well, I can finish with, I think the future is typed Erlang. Maybe, that's Elm running on BEAM. CHARLES:: Whoa. What a take? Right there, folks. I love it. I love it but what makes you say that? Typed Erlang doesn't exist right now, right? PHILIP: Exactly. CHARLES:: And Elm definitely doesn't run on BEAM. PHILIP: I don't know if I'm allowed to say this. When I was at this workshop with Evan, he mentioned that and I'm not sure whether he mentioned it just as a throwaway comment or whether this is part of his 20-year plan but I think the very fact that Elm is designed around like Erlang, the signal stuff was designed around the way Erlang does communication and processes, it means I know at least he appreciates that model. From my point of view, with my experience with Elixir and Erlang in production usage, it's not huge scale but it's scale enough to need to start doing performance work on Rails and just to see how effortless things are with Elixir and with Erlang. I think Elm in the backend would be amazing but it would have to be a slightly different language, I think because the problems are different. We began this by saying that my story was a little different to the norm because I went back to the dynamic, at the dark side but for example in Elixir, I do miss types hugely. They kind of have a little bit of a hack with Erlang because they return a lot of tuples with OK and then the object. You know, it's almost like wrapping it up in a [inaudible]. There are little things and there's Dialyzer to kind of type check and I think there are a few projects which do add types to Erlang, etcetera. But I think something that works would need to be designed from the ground up to be typed and also run in the BEAM, rather than be like a squashed version of something else to fit somewhere else, if that makes sense. CHARLES:: It makes total sense. PHILIP: I think so. I recently read a book, just to finish which was 'FSharpForFunAndProfit' is his website, Scott Wlaschin, I think. It's written up with F# but it's about designing your program in a type functional language. Using the book, you could probably then just design your programs on paper and only commit to code at the end because you're thinking right down to the level of the types and the process and the pipelines, which to me sounds amazing because I could work outside. CHARLES:: Right. All right-y. I will go ahead and wrap it up. I would just like to say thank you so much, Philip for coming on and talking about your story, as unorthodox as it might be. PHILIP: Thank you. CHARLES:: Thank you, Taras. Thank you, David. TARAS: Thank you for having us. CHARLES:: That's it for Episode 113. We are the Frontside. This is The Frontside Podcast. We build applications that you can stake your future on. If that's something that you're interested in, please get in touch with us. If you have any ideas for a future podcast, things that you'd like to hear us discuss or any feedback on the things that you did here, please just let us know. Once again, thank you Mandy for putting together this wonderful podcast and now we will see you all next time.
Panel Brendan Eich Joe Eames Aaron Frost AJ ONeal Jamison Dance Tim Caswell Charles Max Wood Discussion 01:57 – Brendan Eich Introduction JavaScript [Wiki] Brendan Eich [Wiki] 02:14 – Origin of JavaScript Java Netscape Jim Clark Marc Andreesen NCSA Mosaic NCSA HTTPd Lynx (Web Browser) Lou Montulli Silicon Graphics Kernel Tom Paquin Kipp Hickman MicroUnity Sun Microsystems Andreas Bechtolsheim Bill Joy Sun-1 Scheme Programming Language Structure and Interpretation of Computer Programs – 2nd Edition (MIT Electrical Engineering and Computer Science) by Harold Abelson, Gerald Jay Sussman & Julie Sussman Guy Steele Gerald Sussman SPDY Rob McCool Mike McCool Apache Mocha Peninsula Creamery, Palo Alto, CA Main () and Other Methods (C# vs Java) Static in Java, Static Variables, Static Methods, Static Classes 10:38 – Other Languages for Programmers Visual Basic Chrome Blacklist Firefox 12:38 – Naming JavaScript and Writing VMs Canvas Andrew Myers 16:14 – Envisioning JavaScript’s Platform Web 2.0 AJAX Hidaho Design Opera Mozilla Logo Smalltalk Self HyperTalk Bill Atkinson HyperCard Star Wars Trench Run 2.0 David Ungar Craig Chambers Lars Bak Strongtalk TypeScript HotSpot V8 Dart Jamie Zawinski 24:42 – Working with ECMA Bill Gates Blackbird Spyglass Carl Cargill Jan van den Beld Philips Mike Cowlishaw Borland David M. Gay ECMAScript Lisp Richard Gabriel 31:26 – Naming Mozilla Jamie Zawinski Godzilla 31:57 – Time-Outs 32:53 – Functions Clojure John Rose Oracle Scala Async.io 38:37 – XHR and Microsoft Flash Hadoop Ricardo Jenez Ken Smith Brent Noorda Ray Noorda .NET Shon Katzenberger Anders Hejlsberg NCSA File Formats 45:54 – SpiderMonkey Chris Houck Brendan Eich and Douglas Crockford – TXJS 2010 Douglas Crockford JavaScript: The Good Parts by Douglas Crockford TXJS.com ActionScript Flex Adobe E4X BEA Systems John Schneider Rhino JScript roku Waldemar Horwat Harvard Putnam Math Competition Chris Wilson Silverlight Allen Wirfs-Brock NDC Oslo 2014 JSConf Brendan JSConf Talks 59:58 – JavaScript and Mozilla GIP SSLeay Eric A. Young Tim Hudson Digital Styles Raptor Gecko ICQ and AIM PowerPlant CodeWarrior Camino David Hyatt Lotus Mitch Kapor Ted Leonsis Mitchell Baker David Baren Phoenix Tinderbox Harmony 1:14:37 – Surprises with Evolution of JavaScript Ryan Dahl node.js Haskell Elm Swift Unity Games Angular Ember.js Dojo jQuery react ClojureScript JavaScript Jabber Episode #107: ClojureScript & Om with David Nolen MVC 01:19:43 – Angular’s HTML Customization Sweet.js JavaScript Jabber Episode #039: Sweet.js with Tim Disney TC39 Rick Waldron 01:22:27 – Applications with JavaScript SPA’s Shumway Project IronRuby 01:25:45 – Future of Web and Frameworks LLVM Chris Lattner Blog Epic Games Emscripten Autodesk PortableApps WebGL 01:29:39 – ASM.js Dart.js John McCutchen Monster Madness Anders Hejlsberg, Steve Lucco, Luke Hoban: TypeScript 0.9 – Generics and More (Channel 9, 2013) Legacy 01:32:58 – Brendan’s Future with JavaScript Picks hapi.js (Aaron) JavaScript Disabled: Should I Care? (Aaron) Aaron’s Frontend Masters Course on ES6 (Aaron) Brendan’s “Cool Story Bro” (AJ) [YouTube] Queen – Don't Stop Me Now (AJ) Trending.fm (AJ) WE ARE DOOMED soundtrack EP by Robby Duguay (Jamison) Hohokum Soundtrack (Jamison) Nashville Outlaws: A Tribute to Mötley Crüe (Joe) Audible (Joe) Stripe (Chuck) Guardians of the Galaxy (Brendan)
Panel Brendan Eich Joe Eames Aaron Frost AJ ONeal Jamison Dance Tim Caswell Charles Max Wood Discussion 01:57 – Brendan Eich Introduction JavaScript [Wiki] Brendan Eich [Wiki] 02:14 – Origin of JavaScript Java Netscape Jim Clark Marc Andreesen NCSA Mosaic NCSA HTTPd Lynx (Web Browser) Lou Montulli Silicon Graphics Kernel Tom Paquin Kipp Hickman MicroUnity Sun Microsystems Andreas Bechtolsheim Bill Joy Sun-1 Scheme Programming Language Structure and Interpretation of Computer Programs – 2nd Edition (MIT Electrical Engineering and Computer Science) by Harold Abelson, Gerald Jay Sussman & Julie Sussman Guy Steele Gerald Sussman SPDY Rob McCool Mike McCool Apache Mocha Peninsula Creamery, Palo Alto, CA Main () and Other Methods (C# vs Java) Static in Java, Static Variables, Static Methods, Static Classes 10:38 – Other Languages for Programmers Visual Basic Chrome Blacklist Firefox 12:38 – Naming JavaScript and Writing VMs Canvas Andrew Myers 16:14 – Envisioning JavaScript’s Platform Web 2.0 AJAX Hidaho Design Opera Mozilla Logo Smalltalk Self HyperTalk Bill Atkinson HyperCard Star Wars Trench Run 2.0 David Ungar Craig Chambers Lars Bak Strongtalk TypeScript HotSpot V8 Dart Jamie Zawinski 24:42 – Working with ECMA Bill Gates Blackbird Spyglass Carl Cargill Jan van den Beld Philips Mike Cowlishaw Borland David M. Gay ECMAScript Lisp Richard Gabriel 31:26 – Naming Mozilla Jamie Zawinski Godzilla 31:57 – Time-Outs 32:53 – Functions Clojure John Rose Oracle Scala Async.io 38:37 – XHR and Microsoft Flash Hadoop Ricardo Jenez Ken Smith Brent Noorda Ray Noorda .NET Shon Katzenberger Anders Hejlsberg NCSA File Formats 45:54 – SpiderMonkey Chris Houck Brendan Eich and Douglas Crockford – TXJS 2010 Douglas Crockford JavaScript: The Good Parts by Douglas Crockford TXJS.com ActionScript Flex Adobe E4X BEA Systems John Schneider Rhino JScript roku Waldemar Horwat Harvard Putnam Math Competition Chris Wilson Silverlight Allen Wirfs-Brock NDC Oslo 2014 JSConf Brendan JSConf Talks 59:58 – JavaScript and Mozilla GIP SSLeay Eric A. Young Tim Hudson Digital Styles Raptor Gecko ICQ and AIM PowerPlant CodeWarrior Camino David Hyatt Lotus Mitch Kapor Ted Leonsis Mitchell Baker David Baren Phoenix Tinderbox Harmony 1:14:37 – Surprises with Evolution of JavaScript Ryan Dahl node.js Haskell Elm Swift Unity Games Angular Ember.js Dojo jQuery react ClojureScript JavaScript Jabber Episode #107: ClojureScript & Om with David Nolen MVC 01:19:43 – Angular’s HTML Customization Sweet.js JavaScript Jabber Episode #039: Sweet.js with Tim Disney TC39 Rick Waldron 01:22:27 – Applications with JavaScript SPA’s Shumway Project IronRuby 01:25:45 – Future of Web and Frameworks LLVM Chris Lattner Blog Epic Games Emscripten Autodesk PortableApps WebGL 01:29:39 – ASM.js Dart.js John McCutchen Monster Madness Anders Hejlsberg, Steve Lucco, Luke Hoban: TypeScript 0.9 – Generics and More (Channel 9, 2013) Legacy 01:32:58 – Brendan’s Future with JavaScript Picks hapi.js (Aaron) JavaScript Disabled: Should I Care? (Aaron) Aaron’s Frontend Masters Course on ES6 (Aaron) Brendan’s “Cool Story Bro” (AJ) [YouTube] Queen – Don't Stop Me Now (AJ) Trending.fm (AJ) WE ARE DOOMED soundtrack EP by Robby Duguay (Jamison) Hohokum Soundtrack (Jamison) Nashville Outlaws: A Tribute to Mötley Crüe (Joe) Audible (Joe) Stripe (Chuck) Guardians of the Galaxy (Brendan)
Panel Brendan Eich Joe Eames Aaron Frost AJ ONeal Jamison Dance Tim Caswell Charles Max Wood Discussion 01:57 – Brendan Eich Introduction JavaScript [Wiki] Brendan Eich [Wiki] 02:14 – Origin of JavaScript Java Netscape Jim Clark Marc Andreesen NCSA Mosaic NCSA HTTPd Lynx (Web Browser) Lou Montulli Silicon Graphics Kernel Tom Paquin Kipp Hickman MicroUnity Sun Microsystems Andreas Bechtolsheim Bill Joy Sun-1 Scheme Programming Language Structure and Interpretation of Computer Programs – 2nd Edition (MIT Electrical Engineering and Computer Science) by Harold Abelson, Gerald Jay Sussman & Julie Sussman Guy Steele Gerald Sussman SPDY Rob McCool Mike McCool Apache Mocha Peninsula Creamery, Palo Alto, CA Main () and Other Methods (C# vs Java) Static in Java, Static Variables, Static Methods, Static Classes 10:38 – Other Languages for Programmers Visual Basic Chrome Blacklist Firefox 12:38 – Naming JavaScript and Writing VMs Canvas Andrew Myers 16:14 – Envisioning JavaScript’s Platform Web 2.0 AJAX Hidaho Design Opera Mozilla Logo Smalltalk Self HyperTalk Bill Atkinson HyperCard Star Wars Trench Run 2.0 David Ungar Craig Chambers Lars Bak Strongtalk TypeScript HotSpot V8 Dart Jamie Zawinski 24:42 – Working with ECMA Bill Gates Blackbird Spyglass Carl Cargill Jan van den Beld Philips Mike Cowlishaw Borland David M. Gay ECMAScript Lisp Richard Gabriel 31:26 – Naming Mozilla Jamie Zawinski Godzilla 31:57 – Time-Outs 32:53 – Functions Clojure John Rose Oracle Scala Async.io 38:37 – XHR and Microsoft Flash Hadoop Ricardo Jenez Ken Smith Brent Noorda Ray Noorda .NET Shon Katzenberger Anders Hejlsberg NCSA File Formats 45:54 – SpiderMonkey Chris Houck Brendan Eich and Douglas Crockford – TXJS 2010 Douglas Crockford JavaScript: The Good Parts by Douglas Crockford TXJS.com ActionScript Flex Adobe E4X BEA Systems John Schneider Rhino JScript roku Waldemar Horwat Harvard Putnam Math Competition Chris Wilson Silverlight Allen Wirfs-Brock NDC Oslo 2014 JSConf Brendan JSConf Talks 59:58 – JavaScript and Mozilla GIP SSLeay Eric A. Young Tim Hudson Digital Styles Raptor Gecko ICQ and AIM PowerPlant CodeWarrior Camino David Hyatt Lotus Mitch Kapor Ted Leonsis Mitchell Baker David Baren Phoenix Tinderbox Harmony 1:14:37 – Surprises with Evolution of JavaScript Ryan Dahl node.js Haskell Elm Swift Unity Games Angular Ember.js Dojo jQuery react ClojureScript JavaScript Jabber Episode #107: ClojureScript & Om with David Nolen MVC 01:19:43 – Angular’s HTML Customization Sweet.js JavaScript Jabber Episode #039: Sweet.js with Tim Disney TC39 Rick Waldron 01:22:27 – Applications with JavaScript SPA’s Shumway Project IronRuby 01:25:45 – Future of Web and Frameworks LLVM Chris Lattner Blog Epic Games Emscripten Autodesk PortableApps WebGL 01:29:39 – ASM.js Dart.js John McCutchen Monster Madness Anders Hejlsberg, Steve Lucco, Luke Hoban: TypeScript 0.9 – Generics and More (Channel 9, 2013) Legacy 01:32:58 – Brendan’s Future with JavaScript Picks hapi.js (Aaron) JavaScript Disabled: Should I Care? (Aaron) Aaron’s Frontend Masters Course on ES6 (Aaron) Brendan’s “Cool Story Bro” (AJ) [YouTube] Queen – Don't Stop Me Now (AJ) Trending.fm (AJ) WE ARE DOOMED soundtrack EP by Robby Duguay (Jamison) Hohokum Soundtrack (Jamison) Nashville Outlaws: A Tribute to Mötley Crüe (Joe) Audible (Joe) Stripe (Chuck) Guardians of the Galaxy (Brendan)
In this weeks episode we are lucky to have Scott Wlaschin back on the show to discuss his most recent talk ‘Four Languages from Forty Years Ago’. We start off by talking about why the 1970’s was such an influential decade for language design. This leads us on to highlight what a programming language fundamentally is, and explain the many different paradigms that are present. From here, we explain the issue with throwing out the design phase completely when building software, and the interesting points made in Richard Gabriel’s ‘Worse is Better’ essay. Finally, we try to make sense of why all popular programming languages today follow a very similar style, and what is with all the curly braces?!
World famous prosecutor, Marcia Clark, investigates the unresolved death of toddler Caylee Anthony, including the bizarre circumstances and behavior surrounding the child's mother, Casey Anthony. Featuring Psychoanalyst, Dr. Bethany Marshall, and Jury Consultant, Richard Gabriel. Thanks again to this week's sponsors: ziprecruiter.com/MCI casper.com/MCI48
We chat with Fred George, handgrenade of software development, live on stage during Øredev 2014. Topics include choosing clients, getting out before you start breaking things, the right ways of changing, the value of methodologies, remote work, gams, languages and more. This recording exists as good as it is thanks to Stephen Chin of nighthacking.com for providing and masterfully wrangling all the necessary technology. You can discuss this episode at Techworld! Links Mail Online Node Lean thinking Scrum master Agile coach Clojure Fad diet Thoughtworks Java Spring framework Outpace Pong Dreamhack Starcraft Skyrim The law of large numbers Metal Swift Palo Alto Swift user group Øredev session on Swift Elixir Dave Thomas Erlang virtual machine Micro services Key value store Database transaction Forward internet group Fred Georges' sessions at Øredev: Enabling emergent technologies and Microservices: lessons from 3 companies KPI - Key performance indicators Waterfall model of software development COBOL C-level executives Richard Gabriel Lucid Emacs Worse is better - paper by Richard Gabriel Myspace Valve organizational structure
Speakers: Guy Steele & Richard Gabriel The first day of ooPSLA 2007 ended with treat, Guy Steele & Richard Gabriel talking about the lessons we can learn from Programming Languages past in 50 in 50. If you've ever attended a talk by either Steele or Gabriel at an ooPSLA, then you know that their "talks" are so much more. This is the one ooPSLA keynote that probably loses some of its impact as a podcast, but we think you'll want to hear it for its content!
Speakers: Guy Steele & Richard Gabriel The first day of ooPSLA 2007 ended with treat, Guy Steele & Richard Gabriel talking about the lessons we can learn from Programming Languages past in 50 in 50. If you've ever attended a talk by either Steele or Gabriel at an ooPSLA, then you know that their "talks" are so much more. This is the one ooPSLA keynote that probably loses some of its impact as a podcast, but we think you'll want to hear it for its content!