Podcast appearances and mentions of jim weirich

  • 18PODCASTS
  • 34EPISODES
  • 51mAVG DURATION
  • ?INFREQUENT EPISODES
  • Sep 6, 2023LATEST

POPULARITY

20172018201920202021202220232024


Best podcasts about jim weirich

Latest podcast episodes about jim weirich

Turing School Podcast
Ruby Roots and Kotlin Wings

Turing School Podcast

Play Episode Listen Later Sep 6, 2023 35:58


Jesse chats with Gavin Carew, 2207 BE Alum and Jack In the Box Software Engineer about his Turing story, his tips for being a successful Turing student, his job search, coming up to speed on Kotlin, his current work, advice for current prospective students, asking questions, and optimism for the future. A few classic Jim Weirich conference talks are What all Rubyists should know about Threads - https://youtu.be/4zbN29UkNQw?si=s9v1kqIg22K2v0iu and SOLID Principles in Ruby - https://youtu.be/1BVFlvRPZVM?si=nJ05gm2wI1kOSFHf If you or someone you know are code curious, we encourage you to attend a Turing Try Coding Event. You can register for a Try Coding class at turing.edu/try-coding.  

roots wings threads turing kotlin solid principles rubyists jim weirich
The History of Computing
How Ruby Got Nice

The History of Computing

Play Episode Listen Later Jan 24, 2022 9:12


As with many a programming language, ruby was originally designed as a teaching language - to teach programming to students at universities. From there, it is now used to create various programs, including games, interfaces for websites, scripts to run on desktop computers, backend REST endpoints, and business software. Although ruby is used for web development more than anything else. It has an elegant syntax that makes it easy to read the code; this is one of the reasons why Ruby is so popular, especially with beginners (after all it was designed to teach programming). Yukihiro Matsumoto, or Mats for short, originally developed the ruby's programming language in the 1990s. Ruby was initially designed as an interpreted scripting language. That first interpreter, MRI, or Mats's Ruby Interpreter, spread quickly. In part because he's nice. In fact, he's so nice that the motto MINASWAN, or “Matz is nice and so we are nice.” Juxtapose this against some of the angrier programmers who develop their own languages. And remember, it was a teach language. And so he named ruby  after a character he encountered in a children's book. Or because it was a birthstone. Or both. He graduated from the University of Tsukuba and worked on compilers before writing a mail agent in Emacs Lisp. Having worked with Lisp and Perl and Python, he was looking for a language that was truly object-oriented from the ground up. He came up with the idea in 1993 of another Lisp at the core, but something that used objects like Smalltalk. That would allow developers to write less cyclomatically complex code. And yet he wanted to provide higher-order functions for routine tasks like Perl and Python did. Just with native objects rather than those bolted on the side. And he wanted to do so in as consistent a manner as possible. Believe it or not that meant dynamic typing. And garbage collection for free. And literal notation for some things like arrays and regular expressions while allowing for dynamic reflection for meta programming and allowing for everything to be an expression. The syntax is similar to a python or a perl and yet whitespace in things like indentation doesn't play a part. It's concise and the deep thinking that goes into making something concise can be incredible. And yet freeing.  The first version of Ruby was released in 1995 and allowed programs to be concise, so written with fewer lines of code than would have been possible with other languages at the time. And yet elegant. In 1996, David Flanagan and Jim Weirich grabbed the MRI interpreter and started using ruby for real projects. And so ruby expanded outside of Japan.  As the popularity grew, Matz founded his own company called Object Technology Inc, This allowed him to continue developing Ruby while making money. After all, programmers gotta' eat too. In 2006 Matsumoto committed the first version of what would eventually become Rails on Version Control Systems (VCS), a precursor git.  Ruby is written in C, which means it has access to most underlying operating systems given the right API access. It has a vast dictionary with nearly 1 million entries. It can often be found in many event-driven frameworks, with the most popular being Ruby on Rails, a server-side web application framework developed by David Heinemeier Hansson of Basecamp in 2004. Other frameworks include Sinatra (which came in 2007), Roda, Camping (which comes in at a whopping 4k in size), and Padrino. And Ramaze and Merb and Goliath. Each has their own merits.  These libraries help developers code faster, easier, and more efficiently than if they had to write all the server-side code from scratch. Another aspect of Ruby that made it popular is a simple package manager. RubyGems came about in 2003. Here, we lay out a simple structure that includes a README, a gem spec with info about the gem, a lib directory (the code for the gem), a test directory, and a makefile for Ruby they call a Rake. This way the developer of the gem does everything needed to be able to call them in their code. And so there are now well over 100,000 gems out there. Not all work with all the interpreters. Ruby went from 1.0 in 1996 to 1.2 in 1998 to 1.4 in 1999 and 1.6 in 2000. Then to 1.8 in 2003 and by then it was gettin popular and ready to get standardized. This always slows down changes. So it went to become an ISO standard in 2012 - the hallmark if you will that a language is too big to fail. Ruby 2 came along the next year with nearly full backwards compatibility. And then 3 came in 2020 in order to bring just-in-time compilation, which can make the runtime faster than just interpreting. And unlike the XRuby variant, no need to do java-style compilation. Still, not all ruby tooling needs to be compiled. Ruby scripts can be loaded in tools like Amazon's Lambda service or Google Cloud Functions. From there, it can talk to tools like MySQL and MongoDB. And it's fun. I mean, Matz uses the word fun. And ruby can present a challenge that to experienced programmers might be seen as fun. Because anything you can do with other languages, you can do with ruby. Might not get as much for free as with a spring security for Java, but it's still an excellent language and sometimes I can't help but wonder if we shouldn't get so much for free with certain lanuages. Matz is now the chief architect of Heroku. He has since written a slimmed down version of ruby called mruby and another language called streem. He also wrote a few books on ruby. Because you know, he's nice.

Ruby on Rails Podcast
Episode 391: Announcing Mocktail with Justin Searls

Ruby on Rails Podcast

Play Episode Listen Later Nov 10, 2021 33:10


Justin Searls helped start Test Double—a software agency of experienced developers who work with clients to build great software together, as a team. He gave Brittany the scoop on Mocktail, an opinionated alternative to minitest's mocks, rr, mocha, and rspec-mocks. As a bonus: he offers his insights and advice on being a confident speaker. Show Notes & Links: testdouble/mocktail (https://github.com/testdouble/mocktail) Test Double | An Agency Improving the World's Software (https://testdouble.com/) Mockito framework site (https://site.mockito.org/) Jim Weirich's Tweet (https://twitter.com/jimweirich/status/77124604602228737) searls/gimme (https://github.com/searls/gimme) jimweirich/flexmock (https://github.com/jimweirich/flexmock) Please don't mock me - Justin Searls - JSConf US 2018 (https://www.youtube.com/watch?v=x8sKpJwq6lY) VCR - GitHub (https://github.com/vcr/vcr) How to Make a Gem of a Gem | Rubyconf 2021 (https://rubyconf.org/program/sessions#session-1203) Justin Searls (@searls) · Twitter (https://twitter.com/searls) Sponsored By: Honeybadger (https://www.honeybadger.io/) Honeybadger makes you a DevOps hero by combining error monitoring, uptime monitoring and check-in monitoring into a single, easy to use platform. Go to Honeybadger.io (https://www.honeybadger.io/) and discover how Starr, Josh, and Ben created a 100% bootstrapped monitoring solution. Scout APM (http://scoutapm.com/rubyonrails) Try their error monitoring and APM free for 14-days, no credit card needed! And as an added bonus for Ruby on Rails listeners: Scout will donate $5 to the open-source project of your choice when you deploy. Learn more at http://scoutapm.com/rubyonrails (http://scoutapm.com/rubyonrails).

The Bike Shed
251: Absent-Minded Whistling

The Bike Shed

Play Episode Listen Later Jul 7, 2020 37:27


On this week's episode, Steph and Chris discuss using JSONB to store survey responses and the differences between JSON and JSONB, using (or not using!) exceptions in Ruby and the fail keyword, the pros and cons of namespacing models in Rails to organize features, and a new recommendation for running tests from vim. This episode is brought to you by ScoutAPM (https://scoutapm.com/bikeshed). Give Scout a try for free today and Scout will donate $5 to the open source project of your choice when you deploy! Seagull Mic Drop (https://i.kym-cdn.com/photos/images/facebook/001/383/162/20c.jpg) vim-test (https://github.com/vim-test/vim-test) plugin for running tests vim-rspec (https://github.com/thoughtbot/vim-rspec) thoughtbot's plugin for running specs from vim JSON types in Postgres (https://www.postgresql.org/docs/9.4/datatype-json.html) Ruby fail keyword (https://apidock.com/ruby/Kernel/fail) Avdi Grimm and Jim Weirich on exceptions (https://avdi.codes/jim-weirich-on-exceptions/) The Zen of Python (https://www.python.org/dev/peps/pep-0020/) Idris programming language (https://www.idris-lang.org/)

Greater Than Code
179: Conference Magic with PJ Hagerty

Greater Than Code

Play Episode Listen Later Apr 22, 2020 73:52


02:43 - PJ’s Superpower: Convincing people that karaoke is a good idea. * PJ’s Karaoke History * Why Karaoke is Awesome 07:13 - The DevRel World (DevRel = Developer Relations) * Jim Weirich (https://en.wikipedia.org/wiki/Jim_Weirich) 13:42 - Online vs In-Person/Live Conferences * Body Language and Delivery * Hallway Track: Is not a literal 'track.' It's all the interactions, conversations, talk follow-up, etc. that happen at a conference outside of the formal schedule. Hallway tracks are when people interact socially about the issues being discussed at the event. For instance, between talks or over lunch. Most hallway track conversations are open and casual. Sometimes hallway track conversations inspire a future lightning talk, Ignite talk, panel discussion, or full talk. * Can you emulate an in-person conference online? * Luck and Visibility 25:54 - Making Conferences Diverse & Inclusive * Putting People on Stage That Don’t Look Like You * Passing on “Lucky” to Others 33:01 - Prompt (https://promptconf.com/) and Talking About Mental Health * Ed Finkler on Open Sourcing Mental Illness at Distill (https://www.youtube.com/watch?v=DqRPln8X1sc#action=share) (this was the talk that launched Prompt) * Greg Baugues: Devs and Depression (https://www.youtube.com/watch?v=yFIa-Mc2KSk) * OSMI = Open Sourcing Mental Illness (https://osmihelp.org/) * CodeDaze 2016 - Paying Off Emotional Debt by Justine Arreche (https://www.youtube.com/watch?v=YppMGmdaxn4) * Madalyn Rose Parker: Overcoming Mental Health Hurdles at Work (https://www.alterconf.com/talks/overcoming-mental-health-hurdles-work) * Mental Health Summit - php[tek] 2014 (https://www.youtube.com/watch?v=U627ps3og3M&list=PLJPRYJOPv4pTLHxR1hkeikrUn2TlOsE2R&index=3&t=0s) 43:10 - Making Conferences Diverse & Inclusive (Cont’d) * Being Seen -- White Cis Men * The Colored Musicians Club (https://www.cmctheclub.com/) * Aggressive Inclusion * Micro Opportunities * Lightning Talks (https://en.wikipedia.org/wiki/Lightning_talk) 54:14 - Accessibility * Time and Monetary Expenses * Conferencing in the time of COVID-19 PJ's First Ever Full Talk at RubyMidwest: Act Locally - Think Globally (https://youtu.be/O8IzXwNDtqA) Reflections: Carina: The exaggerated visual of putting a hand down and throwing people into the air to lift them up. Jamey: Holding onto the feeling of being lucky while feeling awful. Jessica: Getting pushes to make output. PJ: Be a Jim Weirich. Have a “Hello World” attitude. Human connection is important. This episode was brought to you by @therubyrep (https://twitter.com/therubyrep) of DevReps, LLC (http://www.devreps.com/). To pledge your support and to join our awesome Slack community, visit patreon.com/greaterthancode (https://www.patreon.com/greaterthancode) To make a one-time donation so that we can continue to bring you more content and transcripts like this, please do so at paypal.me/devreps (https://www.paypal.me/devreps). You will also get an invitation to our Slack community this way as well. Special Guest: PJ Hagerty.

Ruby Rogues
RR 452: The History and Personalities of Ruby with Chris O'Sullivan

Ruby Rogues

Play Episode Listen Later Mar 17, 2020 59:59


Chris O’Sullivan joins the Rogues to talk about the people who influenced Ruby and how it’s shaped the community and technology we have today. Panel Charles Max Wood Dave Kimura John Epperson Guest Chris O'Sullivan Sponsors Resolve Digital ____________________________________________________________ "The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is now available on Amazon. Get Your Copy Today! ____________________________________________________________ Links 209 JSJ TypeScript with Anders Hejlsberg “DHH's whoops video” Mr. Neighborly's Humble Little Ruby Book Jim Weirich ruby/rake: A make-like build utility for Ruby. Quick Interview with Martin Sadler of WorkingWithRails.com miloops (Emilio Tagua RailsConf 2008 - O'Reilly Conferences, May 29 - June 01, 2008, Portland, Oregon why the lucky stiff why's (poignant) Guide to Ruby Zed Shaw https://gilesbowkett.com Object Property Value Shorthand in JavaScript with ES6 Parentheses in Ruby | Why, Dave, Why Seattle.rb style no longer valid when curly braces are used PeepCode - @peepcode Gregg Pollack - @greggpollack Jamis Buck - @jamis Picks Charles Max Wood: Wavelength The Expanse The Man In the High Castle Dave Kimura: Amazon.com : Sulcabrush Handle : Toothbrushes : Beauty John Epperson: GitHub - stimulusjs/stimulus: A modest JavaScript framework for the HTML you already have Chris O'Sullivan: Follow Chris on Twitter @thechrisoshow, Website, email: chris@lexoo.co.uk Codenames | Board Game Wavelength | Board Game Follow Ruby Rogues on Twitter > @rubyrogues

All Ruby Podcasts by Devchat.tv
RR 452: The History and Personalities of Ruby with Chris O’Sullivan

All Ruby Podcasts by Devchat.tv

Play Episode Listen Later Mar 17, 2020 59:59


Chris O’Sullivan joins the Rogues to talk about the people who influenced Ruby and how it’s shaped the community and technology we have today. Panel Charles Max Wood Dave Kimura John Epperson Guest Chris O'Sullivan Sponsors Resolve Digital ____________________________________________________________ "The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is now available on Amazon. Get Your Copy Today! ____________________________________________________________ Links 209 JSJ TypeScript with Anders Hejlsberg “DHH's whoops video” Mr. Neighborly's Humble Little Ruby Book Jim Weirich ruby/rake: A make-like build utility for Ruby. Quick Interview with Martin Sadler of WorkingWithRails.com miloops (Emilio Tagua RailsConf 2008 - O'Reilly Conferences, May 29 - June 01, 2008, Portland, Oregon why the lucky stiff why's (poignant) Guide to Ruby Zed Shaw https://gilesbowkett.com Object Property Value Shorthand in JavaScript with ES6 Parentheses in Ruby | Why, Dave, Why Seattle.rb style no longer valid when curly braces are used PeepCode - @peepcode Gregg Pollack - @greggpollack Jamis Buck - @jamis Picks Charles Max Wood: Wavelength The Expanse The Man In the High Castle Dave Kimura: Amazon.com : Sulcabrush Handle : Toothbrushes : Beauty John Epperson: GitHub - stimulusjs/stimulus: A modest JavaScript framework for the HTML you already have Chris O'Sullivan: Follow Chris on Twitter @thechrisoshow, Website, email: chris@lexoo.co.uk Codenames | Board Game Wavelength | Board Game Follow Ruby Rogues on Twitter > @rubyrogues

Devchat.tv Master Feed
RR 452: The History and Personalities of Ruby with Chris O’Sullivan

Devchat.tv Master Feed

Play Episode Listen Later Mar 17, 2020 59:59


Chris O’Sullivan joins the Rogues to talk about the people who influenced Ruby and how it’s shaped the community and technology we have today. Panel Charles Max Wood Dave Kimura John Epperson Guest Chris O'Sullivan Sponsors Resolve Digital ____________________________________________________________ "The MaxCoders Guide to Finding Your Dream Developer Job" by Charles Max Wood is now available on Amazon. Get Your Copy Today! ____________________________________________________________ Links 209 JSJ TypeScript with Anders Hejlsberg “DHH's whoops video” Mr. Neighborly's Humble Little Ruby Book Jim Weirich ruby/rake: A make-like build utility for Ruby. Quick Interview with Martin Sadler of WorkingWithRails.com miloops (Emilio Tagua RailsConf 2008 - O'Reilly Conferences, May 29 - June 01, 2008, Portland, Oregon why the lucky stiff why's (poignant) Guide to Ruby Zed Shaw https://gilesbowkett.com Object Property Value Shorthand in JavaScript with ES6 Parentheses in Ruby | Why, Dave, Why Seattle.rb style no longer valid when curly braces are used PeepCode - @peepcode Gregg Pollack - @greggpollack Jamis Buck - @jamis Picks Charles Max Wood: Wavelength The Expanse The Man In the High Castle Dave Kimura: Amazon.com : Sulcabrush Handle : Toothbrushes : Beauty John Epperson: GitHub - stimulusjs/stimulus: A modest JavaScript framework for the HTML you already have Chris O'Sullivan: Follow Chris on Twitter @thechrisoshow, Website, email: chris@lexoo.co.uk Codenames | Board Game Wavelength | Board Game Follow Ruby Rogues on Twitter > @rubyrogues

Devchat.tv Master Feed
MRS 071: Mark Bates

Devchat.tv Master Feed

Play Episode Listen Later Nov 28, 2018 50:43


Panel: Charles Max Wood Guest: Mark Bates This week on My Ruby Story, Chuck talks with Mark Bates who is a consultant, trainer, entrepreneur, co-founder of PaperCall, and an author! Chuck and Mark talk about PaperCall, GO, Ruby, JavaScript, and helping others within the community. Check out today’s episode to hear more! In particular, we dive pretty deep on: 0:00 – Get A Coder Job! 0:59 – Chuck: Hi! I saw we were on Episode 198! We talked about Ruby and different communities. 1:25 – Guest: Yes, we were talking about the conference we were trying to start, which never took-off! 1:50 – Chuck: You talked about how you are working with GO now. You are an author, too! 2:06 – Guest: That came out in 2009. My 2nd son was born the day before that went to print. 2:42 – Chuck: How many kids do you have? 2:47 – Guest: I have 2 kids. 3:00 – Chuck: Happy Birthday buddy! Let’s talk about your journey into and out of Ruby! 3:15 – Guest: I will be happy to. 3:23 – Chuck: 3:27 – Guest: I have a degree in music and studied guitar in England. I came back in 1999 and needed a job. If you could spell HTML then it was good – then if you could work with it then it was even better! The guest mentions Liverpool, England. 4:20 – Guest: I got a job and transitioned into other things. Fell in-love with Java at the time – and then moved into straight development. I needed money, I had skills into it, and then I fell in-love with 5:10 – Chuck: What aspect in music are you into? 5:14 – Guest: I am a singer/songwriter, and yes into guitar. 5:57 – Chuck: Yeah, they used to have jam sections at conferences. 6:37 – Chuck: I find in interesting how much crossover there is between music and programming/coding. I hear them say: I found I needed to build a site for the band and whatnot. 7:25 – Guest: Yeah, I can do view source and I can figure out that I am missing a tag. That put me ahead in 1997 and 1998! I had done some work that. 8:57 – Chuck: You don’t even have to generate a JavaScript project with that – can I find the template and can I go? 9:14 – Guest: Yes programming has come a long way. 9:22 – Chuck: It is interesting, though. When we talk about those things – it was a different time but I don’t know if it was easier/harder for people to come into the career field now. 9:52 – Guest: Yes, I am into the educational side of it, too. There was a lack of books on the subject back-in-the-day. There is almost too much material now. Guest: I do a Google search that will give me something that is most recent. There is no reason to have to dig through material that isn’t relevant anymore. Guest: I used NOTEPAD to write websites. 11:29 – Chuck: Yes, and then Notepad plus, plus! 11:39 – Guest: Those days are gone. If you want to build a website you go to a company that does that now.  The guest refers to Kubernetes, Ruby, HTML, Sequel and much more! 12:55 – Guest: I see the new developers getting overwhelmed in the beginning they need to learn 10 languages at once. I am fortunate to have come into the industry when I did. I don’t envy them. 13:56 – Chuck: Talking about how complicated the Web is getting. What led you to Ruby on Rails? 14:12 – Guest: In 2004 – I just finished a Java project that had roughly 100,000 lines of configuration!! Everything in Java at that point was XML configuration. I didn’t like debugging XML – and it wasn’t fun. I was refiguring out my career. Everything at the time was XML and more XML! I didn’t want to be in that world. I quit developing completely for 2 years. I worked as an internship in a recording studio for a while. I got to work with a lot of great people, but there was a lack of money and lack of general employment. We wanted to have kids and at the end of 2005 a friend mentioned Ruby on Rails. He told me that it’s NOT Java and that I would love it. I installed it and found an old cookbook tutorial and immediately I said: THAT’s what I want programming to be. When did you pick up Ruby on Rails? 18:14 – Chuck: I picked it up when I worked for...and I was doing Q&A customer service. 19:05 – Guest: Yeah, he hooked me for sure – that jerk! I really got into this book! Check it out! It changed my career and web development entirely. For all the grief we give Rails it did change the world. 20:40 – Chuck: What have you done in Ruby that you are particularly proud of? 20:50 – Guest: Most proud running Boston RB. We had so many people show up! 22:49 – Chuck: You talk about those things and that’s why I ask the question in the first place. And it turns out that: I did THIS thing in the community! I like talking to people and helping people. 23:31 – Guest: Yes, I get to work and help people all around the world. Sweet! I get to go in and help people. It gives me the time to contribute to open source and go to Slack. I have a career based around: Helping People! I like the code that I created, but I like the community stuff I have done over the years. 24:31 – Chuck: Yep my career coach wanted me to create a vision/mission statement for DevChat T.V. We make a difference and people make career changes b/c they are getting help and information 25:23 – Guest: Making a living off of helping people is a great feeling! 25:44 – Guest: The contents of the book are wildly out-of-date, but the origin story is hysterical. I went to a conference in 2008 and was just laid-off in October 2008. I got into a hot tub in Orlando and someone started talking to me about my recent talk. By the way, never write a book – don’t do it! 28:18 – Chuck: Sounds like a movie plot to me! 28:25 – Guest: Oh no – that’s not a good movie idea! 28:50 – Chuck and Guest go back-and-forth with a pretend movie: who would play you? 29:15 – Chuck: Let’s talk about PaperCall? 29:23 – Guest: I hated that (for conferences) you had to enter in a lot of different forms (2-3 proposals) for one conference. This bothered me and was very time-consuming. 31:45 – Guest & Chuck talking about saving time. 32:37 – Chuck: What are you doing now? 32:42 – Guest: Yeah, I get to go around and help engineers and open source exclusively. 33:48 – Chuck: How did you get into GO? 33:53 – Guest: In about 2012 I started looking into GO. The guest talks about the benefits and why he likes GO! 36:28 – Guest: What you see is what you get in GO, which is what I like! 39:13 – Chuck: It is an interesting language, and I haven’t played around with it as much as I would like to. I love trying new things, and see how it solves problems. 40:30 – Guest. 42:00 – Chuck: Picks! 42:06 – Advertisement – Fresh Books! END – CacheFly Links: Ruby Elixir Rails Rust Python PHP Kubernetes React Native Ruby Motion Mark’s GitHub Mark’s Twitter PaperCall.io Sponsors: Get a Coder Job Cache Fly Fresh Books Picks: Chuck Book: Ultra Marathon Man Mark GO! GoBuffalo.io Boston RB Jim Weirich – In Memory of... Jim’s Bio

My Ruby Story
MRS 071: Mark Bates

My Ruby Story

Play Episode Listen Later Nov 28, 2018 50:43


Panel: Charles Max Wood Guest: Mark Bates This week on My Ruby Story, Chuck talks with Mark Bates who is a consultant, trainer, entrepreneur, co-founder of PaperCall, and an author! Chuck and Mark talk about PaperCall, GO, Ruby, JavaScript, and helping others within the community. Check out today’s episode to hear more! In particular, we dive pretty deep on: 0:00 – Get A Coder Job! 0:59 – Chuck: Hi! I saw we were on Episode 198! We talked about Ruby and different communities. 1:25 – Guest: Yes, we were talking about the conference we were trying to start, which never took-off! 1:50 – Chuck: You talked about how you are working with GO now. You are an author, too! 2:06 – Guest: That came out in 2009. My 2nd son was born the day before that went to print. 2:42 – Chuck: How many kids do you have? 2:47 – Guest: I have 2 kids. 3:00 – Chuck: Happy Birthday buddy! Let’s talk about your journey into and out of Ruby! 3:15 – Guest: I will be happy to. 3:23 – Chuck: 3:27 – Guest: I have a degree in music and studied guitar in England. I came back in 1999 and needed a job. If you could spell HTML then it was good – then if you could work with it then it was even better! The guest mentions Liverpool, England. 4:20 – Guest: I got a job and transitioned into other things. Fell in-love with Java at the time – and then moved into straight development. I needed money, I had skills into it, and then I fell in-love with 5:10 – Chuck: What aspect in music are you into? 5:14 – Guest: I am a singer/songwriter, and yes into guitar. 5:57 – Chuck: Yeah, they used to have jam sections at conferences. 6:37 – Chuck: I find in interesting how much crossover there is between music and programming/coding. I hear them say: I found I needed to build a site for the band and whatnot. 7:25 – Guest: Yeah, I can do view source and I can figure out that I am missing a tag. That put me ahead in 1997 and 1998! I had done some work that. 8:57 – Chuck: You don’t even have to generate a JavaScript project with that – can I find the template and can I go? 9:14 – Guest: Yes programming has come a long way. 9:22 – Chuck: It is interesting, though. When we talk about those things – it was a different time but I don’t know if it was easier/harder for people to come into the career field now. 9:52 – Guest: Yes, I am into the educational side of it, too. There was a lack of books on the subject back-in-the-day. There is almost too much material now. Guest: I do a Google search that will give me something that is most recent. There is no reason to have to dig through material that isn’t relevant anymore. Guest: I used NOTEPAD to write websites. 11:29 – Chuck: Yes, and then Notepad plus, plus! 11:39 – Guest: Those days are gone. If you want to build a website you go to a company that does that now.  The guest refers to Kubernetes, Ruby, HTML, Sequel and much more! 12:55 – Guest: I see the new developers getting overwhelmed in the beginning they need to learn 10 languages at once. I am fortunate to have come into the industry when I did. I don’t envy them. 13:56 – Chuck: Talking about how complicated the Web is getting. What led you to Ruby on Rails? 14:12 – Guest: In 2004 – I just finished a Java project that had roughly 100,000 lines of configuration!! Everything in Java at that point was XML configuration. I didn’t like debugging XML – and it wasn’t fun. I was refiguring out my career. Everything at the time was XML and more XML! I didn’t want to be in that world. I quit developing completely for 2 years. I worked as an internship in a recording studio for a while. I got to work with a lot of great people, but there was a lack of money and lack of general employment. We wanted to have kids and at the end of 2005 a friend mentioned Ruby on Rails. He told me that it’s NOT Java and that I would love it. I installed it and found an old cookbook tutorial and immediately I said: THAT’s what I want programming to be. When did you pick up Ruby on Rails? 18:14 – Chuck: I picked it up when I worked for...and I was doing Q&A customer service. 19:05 – Guest: Yeah, he hooked me for sure – that jerk! I really got into this book! Check it out! It changed my career and web development entirely. For all the grief we give Rails it did change the world. 20:40 – Chuck: What have you done in Ruby that you are particularly proud of? 20:50 – Guest: Most proud running Boston RB. We had so many people show up! 22:49 – Chuck: You talk about those things and that’s why I ask the question in the first place. And it turns out that: I did THIS thing in the community! I like talking to people and helping people. 23:31 – Guest: Yes, I get to work and help people all around the world. Sweet! I get to go in and help people. It gives me the time to contribute to open source and go to Slack. I have a career based around: Helping People! I like the code that I created, but I like the community stuff I have done over the years. 24:31 – Chuck: Yep my career coach wanted me to create a vision/mission statement for DevChat T.V. We make a difference and people make career changes b/c they are getting help and information 25:23 – Guest: Making a living off of helping people is a great feeling! 25:44 – Guest: The contents of the book are wildly out-of-date, but the origin story is hysterical. I went to a conference in 2008 and was just laid-off in October 2008. I got into a hot tub in Orlando and someone started talking to me about my recent talk. By the way, never write a book – don’t do it! 28:18 – Chuck: Sounds like a movie plot to me! 28:25 – Guest: Oh no – that’s not a good movie idea! 28:50 – Chuck and Guest go back-and-forth with a pretend movie: who would play you? 29:15 – Chuck: Let’s talk about PaperCall? 29:23 – Guest: I hated that (for conferences) you had to enter in a lot of different forms (2-3 proposals) for one conference. This bothered me and was very time-consuming. 31:45 – Guest & Chuck talking about saving time. 32:37 – Chuck: What are you doing now? 32:42 – Guest: Yeah, I get to go around and help engineers and open source exclusively. 33:48 – Chuck: How did you get into GO? 33:53 – Guest: In about 2012 I started looking into GO. The guest talks about the benefits and why he likes GO! 36:28 – Guest: What you see is what you get in GO, which is what I like! 39:13 – Chuck: It is an interesting language, and I haven’t played around with it as much as I would like to. I love trying new things, and see how it solves problems. 40:30 – Guest. 42:00 – Chuck: Picks! 42:06 – Advertisement – Fresh Books! END – CacheFly Links: Ruby Elixir Rails Rust Python PHP Kubernetes React Native Ruby Motion Mark’s GitHub Mark’s Twitter PaperCall.io Sponsors: Get a Coder Job Cache Fly Fresh Books Picks: Chuck Book: Ultra Marathon Man Mark GO! GoBuffalo.io Boston RB Jim Weirich – In Memory of... Jim’s Bio

All Ruby Podcasts by Devchat.tv
MRS 071: Mark Bates

All Ruby Podcasts by Devchat.tv

Play Episode Listen Later Nov 28, 2018 50:43


Panel: Charles Max Wood Guest: Mark Bates This week on My Ruby Story, Chuck talks with Mark Bates who is a consultant, trainer, entrepreneur, co-founder of PaperCall, and an author! Chuck and Mark talk about PaperCall, GO, Ruby, JavaScript, and helping others within the community. Check out today’s episode to hear more! In particular, we dive pretty deep on: 0:00 – Get A Coder Job! 0:59 – Chuck: Hi! I saw we were on Episode 198! We talked about Ruby and different communities. 1:25 – Guest: Yes, we were talking about the conference we were trying to start, which never took-off! 1:50 – Chuck: You talked about how you are working with GO now. You are an author, too! 2:06 – Guest: That came out in 2009. My 2nd son was born the day before that went to print. 2:42 – Chuck: How many kids do you have? 2:47 – Guest: I have 2 kids. 3:00 – Chuck: Happy Birthday buddy! Let’s talk about your journey into and out of Ruby! 3:15 – Guest: I will be happy to. 3:23 – Chuck: 3:27 – Guest: I have a degree in music and studied guitar in England. I came back in 1999 and needed a job. If you could spell HTML then it was good – then if you could work with it then it was even better! The guest mentions Liverpool, England. 4:20 – Guest: I got a job and transitioned into other things. Fell in-love with Java at the time – and then moved into straight development. I needed money, I had skills into it, and then I fell in-love with 5:10 – Chuck: What aspect in music are you into? 5:14 – Guest: I am a singer/songwriter, and yes into guitar. 5:57 – Chuck: Yeah, they used to have jam sections at conferences. 6:37 – Chuck: I find in interesting how much crossover there is between music and programming/coding. I hear them say: I found I needed to build a site for the band and whatnot. 7:25 – Guest: Yeah, I can do view source and I can figure out that I am missing a tag. That put me ahead in 1997 and 1998! I had done some work that. 8:57 – Chuck: You don’t even have to generate a JavaScript project with that – can I find the template and can I go? 9:14 – Guest: Yes programming has come a long way. 9:22 – Chuck: It is interesting, though. When we talk about those things – it was a different time but I don’t know if it was easier/harder for people to come into the career field now. 9:52 – Guest: Yes, I am into the educational side of it, too. There was a lack of books on the subject back-in-the-day. There is almost too much material now. Guest: I do a Google search that will give me something that is most recent. There is no reason to have to dig through material that isn’t relevant anymore. Guest: I used NOTEPAD to write websites. 11:29 – Chuck: Yes, and then Notepad plus, plus! 11:39 – Guest: Those days are gone. If you want to build a website you go to a company that does that now.  The guest refers to Kubernetes, Ruby, HTML, Sequel and much more! 12:55 – Guest: I see the new developers getting overwhelmed in the beginning they need to learn 10 languages at once. I am fortunate to have come into the industry when I did. I don’t envy them. 13:56 – Chuck: Talking about how complicated the Web is getting. What led you to Ruby on Rails? 14:12 – Guest: In 2004 – I just finished a Java project that had roughly 100,000 lines of configuration!! Everything in Java at that point was XML configuration. I didn’t like debugging XML – and it wasn’t fun. I was refiguring out my career. Everything at the time was XML and more XML! I didn’t want to be in that world. I quit developing completely for 2 years. I worked as an internship in a recording studio for a while. I got to work with a lot of great people, but there was a lack of money and lack of general employment. We wanted to have kids and at the end of 2005 a friend mentioned Ruby on Rails. He told me that it’s NOT Java and that I would love it. I installed it and found an old cookbook tutorial and immediately I said: THAT’s what I want programming to be. When did you pick up Ruby on Rails? 18:14 – Chuck: I picked it up when I worked for...and I was doing Q&A customer service. 19:05 – Guest: Yeah, he hooked me for sure – that jerk! I really got into this book! Check it out! It changed my career and web development entirely. For all the grief we give Rails it did change the world. 20:40 – Chuck: What have you done in Ruby that you are particularly proud of? 20:50 – Guest: Most proud running Boston RB. We had so many people show up! 22:49 – Chuck: You talk about those things and that’s why I ask the question in the first place. And it turns out that: I did THIS thing in the community! I like talking to people and helping people. 23:31 – Guest: Yes, I get to work and help people all around the world. Sweet! I get to go in and help people. It gives me the time to contribute to open source and go to Slack. I have a career based around: Helping People! I like the code that I created, but I like the community stuff I have done over the years. 24:31 – Chuck: Yep my career coach wanted me to create a vision/mission statement for DevChat T.V. We make a difference and people make career changes b/c they are getting help and information 25:23 – Guest: Making a living off of helping people is a great feeling! 25:44 – Guest: The contents of the book are wildly out-of-date, but the origin story is hysterical. I went to a conference in 2008 and was just laid-off in October 2008. I got into a hot tub in Orlando and someone started talking to me about my recent talk. By the way, never write a book – don’t do it! 28:18 – Chuck: Sounds like a movie plot to me! 28:25 – Guest: Oh no – that’s not a good movie idea! 28:50 – Chuck and Guest go back-and-forth with a pretend movie: who would play you? 29:15 – Chuck: Let’s talk about PaperCall? 29:23 – Guest: I hated that (for conferences) you had to enter in a lot of different forms (2-3 proposals) for one conference. This bothered me and was very time-consuming. 31:45 – Guest & Chuck talking about saving time. 32:37 – Chuck: What are you doing now? 32:42 – Guest: Yeah, I get to go around and help engineers and open source exclusively. 33:48 – Chuck: How did you get into GO? 33:53 – Guest: In about 2012 I started looking into GO. The guest talks about the benefits and why he likes GO! 36:28 – Guest: What you see is what you get in GO, which is what I like! 39:13 – Chuck: It is an interesting language, and I haven’t played around with it as much as I would like to. I love trying new things, and see how it solves problems. 40:30 – Guest. 42:00 – Chuck: Picks! 42:06 – Advertisement – Fresh Books! END – CacheFly Links: Ruby Elixir Rails Rust Python PHP Kubernetes React Native Ruby Motion Mark’s GitHub Mark’s Twitter PaperCall.io Sponsors: Get a Coder Job Cache Fly Fresh Books Picks: Chuck Book: Ultra Marathon Man Mark GO! GoBuffalo.io Boston RB Jim Weirich – In Memory of... Jim’s Bio

BSD Now
224: The Bus Factor

BSD Now

Play Episode Listen Later Dec 13, 2017 100:25


We try to answer what happens to an open source project after a developers death, we tell you about the last bootstrapped tech company in Silicon Valley, we have an update to the NetBSD Thread sanitizer, and show how to use use cabal on OpenBSD This episode was brought to you by Headlines Life after death, for code (https://www.wired.com/story/giving-open-source-projects-life-after-a-developers-death/) YOU'VE PROBABLY NEVER heard of the late Jim Weirich or his software. But you've almost certainly used apps built on his work. Weirich helped create several key tools for Ruby, the popular programming language used to write the code for sites like Hulu, Kickstarter, Twitter, and countless others. His code was open source, meaning that anyone could use it and modify it. "He was a seminal member of the western world's Ruby community," says Justin Searls, a Ruby developer and co-founder of the software company Test Double. When Weirich died in 2014, Searls noticed that no one was maintaining one of Weirich's software-testing tools. That meant there would be no one to approve changes if other developers submitted bug fixes, security patches, or other improvements. Any tests that relied on the tool would eventually fail, as the code became outdated and incompatible with newer tech. The incident highlights a growing concern in the open-source software community. What happens to code after programmers pass away? Much has been written about what happens to social-media accounts after users die. But it's been less of an issue among programmers. In part, that's because most companies and governments relied on commercial software maintained by teams of people. But today, more programs rely on obscure but crucial software like Weirich's. Some open-source projects are well known, such as the Linux operating system or Google's artificial-intelligence framework TensorFlow. But each of these projects depend on smaller libraries of open-source code. And those libraries depend on other libraries. The result is a complex, but largely hidden, web of software dependencies. That can create big problems, as in 2014 when a security vulnerability known as "Heartbleed" was found in OpenSSL, an open-source program used by nearly every website that processes credit- or debit-card payments. The software comes bundled with most versions of Linux, but was maintained by a small team of volunteers who didn't have the time or resources to do extensive security audits. Shortly after the Heartbleed fiasco, a security issue was discovered in another common open-source application called Bash that left countless web servers and other devices vulnerable to attack. There are surely more undiscovered vulnerabilities. Libraries.io, a group that analyzes connections between software projects, has identified more than 2,400 open-source libraries that are used in at least 1,000 other programs but have received little attention from the open-source community. Security problems are only one part of the issue. If software libraries aren't kept up to date, they may stop working with newer software. That means an application that depends on an outdated library may not work after a user updates other software. When a developer dies or abandons a project, everyone who depends on that software can be affected. Last year when programmer Azer Koçulu deleted a tiny library called Leftpad from the internet, it created ripple effects that reportedly caused headaches at Facebook, Netflix, and elsewhere. The Bus Factor The fewer people with ownership of a piece of software, the greater the risk that it could be orphaned. Developers even have a morbid name for this: the bus factor, meaning the number of people who would have to be hit by a bus before there's no one left to maintain the project. Libraries.io has identified about 3,000 open-source libraries that are used in many other programs but have only a handful of contributors. Orphaned projects are a risk of using open-source software, though commercial software makers can leave users in a similar bind when they stop supporting or updating older programs. In some cases, motivated programmers adopt orphaned open-source code. That's what Searls did with one of Weirich's projects. Weirich's most-popular projects had co-managers by the time of his death. But Searls noticed one, the testing tool Rspec-Given, hadn't been handed off, and wanted to take responsibility for updating it. But he ran into a few snags along the way. Rspec-Given's code was hosted on the popular code-hosting and collaboration site GitHub, home to 67 million codebases. Weirich's Rspec-Given page on GitHub was the main place for people to report bugs or to volunteer to help improve the code. But GitHub wouldn't give Searls control of the page, because Weirich had not named him before he died. So Searls had to create a new copy of the code, and host it elsewhere. He also had to convince the operators of Ruby Gems, a “package-management system” for distributing code, to use his version of Rspec-Given, instead of Weirich's, so that all users would have access to Searls' changes. GitHub declined to discuss its policies around transferring control of projects. That solved potential problems related to Rspec-Given, but it opened Searls' eyes to the many things that could go wrong. “It's easy to see open source as a purely technical phenomenon,” Searls says. “But once something takes off and is depended on by hundreds of other people, it becomes a social phenomenon as well.” The maintainers of most package-management systems have at least an ad-hoc process for transferring control over a library, but that process usually depends on someone noticing that a project has been orphaned and then volunteering to adopt it. "We don't have an official policy mostly because it hasn't come up all that often," says Evan Phoenix of the Ruby Gems project. "We do have an adviser council that is used to decide these types of things case by case." Some package managers now monitor their libraries and flag widely used projects that haven't been updated in a long time. Neil Bowers, who helps maintain a package manager for the programming language Perl, says he sometimes seeks out volunteers to take over orphan projects. Bowers says his group vets claims that a project has been abandoned, and the people proposing to take it over. A 'Dead-Man's Switch' Taking over Rspec-Given inspired Searls, who was only 30 at the time, to make a will and a succession plan for his own open-source projects. There are other things developers can do to help future-proof their work. They can, for example, transfer the copyrights to a foundation, such as the Apache Foundation. But many open-source projects essentially start as hobbies, so programmers may not think to transfer ownership until it is too late. Searls suggests that GitHub and package managers such as Gems could add something like a "dead man's switch" to their platform, which would allow programmers to automatically transfer ownership of a project or an account to someone else if the creator doesn't log in or make changes after a set period of time. But a transition plan means more than just giving people access to the code. Michael Droettboom, who took over a popular mathematics library called Matplotlib after its creator John Hunter died in 2012, points out that successors also need to understand the code. "Sometimes there are parts of the code that only one person understands," he says. "The knowledge exists only in one person's head." That means getting people involved in a project earlier, ideally as soon as it is used by people other than the original developer. That has another advantage, Searls points out, in distributing the work of maintaining a project to help prevent developer burnout. The Last Bootstrapped Tech Company In Silicon Valley (https://www.forbes.com/sites/forbestechcouncil/2017/12/12/the-last-bootstrapped-tech-company-in-silicon-valley/2/#4d53d50f1e4d) My business partner, Matt Olander, and I were intimately familiar with the ups and downs of the Silicon Valley tech industry when we acquired the remnants of our then-employer BSDi's enterprise computer business in 2002 and assumed the roles of CEO and CTO. Fast-forward to today, and we still work in the same buildings where BSDi started in 1996, though you'd hardly recognize them today. As the business grew from a startup to a global brand, our success came from always ensuring we ran a profitable business. While that may sound obvious, keep in mind that we are in the heart of Silicon Valley where venture capitalists hunt for the unicorn company that will skyrocket to a billion-dollar valuation. Unicorns like Facebook and Twitter unquestionably exist, but they are the exception. Live By The VC, Die By The VC After careful consideration, Matt and I decided to bootstrap our company rather than seek funding. The first dot-com bubble had recently burst, and we were seeing close friends lose their jobs right and left at VC-funded companies based on dubious business plans. While we did not have much cash on hand, we did have a customer base and treasured those customers as our greatest asset. We concluded that meeting their needs was the surest path to meeting ours, and the rest would simply be details to address individually. This strategy ended up working so well that we have many of the same customers to this day. After deciding to bootstrap, we made a decision on a matter that has left egg on the face of many of our competitors: We seated sales next to support under one roof at our manufacturing facility in Silicon Valley. Dell's decision to outsource some of its support overseas in the early 2000s was the greatest gift it could have given us. Some of our sales and support staff have worked with the same clients for over a decade, and we concluded that no amount of funding could buy that mutual loyalty. While accepting venture capital or an acquisition may make you rich, it does not guarantee that your customers, employees or even business will be taken care of. Our motto is, “Treat your customers like friends and employees like family,” and we have an incredibly low employee turnover to show for it. Thanks to these principles, iXsystems has remained employee-owned, debt-free and profitable from the day we took it over -- all without VC funding, which is why we call ourselves the "last bootstrapped tech company in Silicon Valley." As a result, we now provide enterprise servers to thousands of customers, including top Fortune 500 companies, research and educational institutions, all branches of the military, and numerous government entities. Over time, however, we realized that we were selling more and more third-party data storage systems with every order. We saw this as a new opportunity. We had partnered with several storage vendors to meet our customers' needs, but every time we did, we opened a can of worms with regard to supporting our customers to our standards. Given a choice of risking being dragged down by our partners or outmaneuvered by competitors with their own storage portfolios, we made a conscious decision to develop a line of storage products that would not only complement our enterprise servers but tightly integrate with them. To accelerate this effort, we adopted the FreeNAS open-source software-defined storage project in 2009 and haven't looked back. The move enabled us to focus on storage, fully leveraging our experience with enterprise hardware and our open source heritage in equal measures. We saw many storage startups appear every quarter, struggling to establish their niche in a sea of competitors. We wondered how they'd instantly master hardware to avoid the partnering mistakes that we made years ago, given that storage hardware and software are truly inseparable at the enterprise level. We entered the storage market with the required hardware expertise, capacity and, most importantly, revenue, allowing us to develop our storage line at our own pace. Grow Up, But On Your Own Terms By not having the external pressure from VCs or shareholders that your competitors have, you're free to set your own priorities and charge fair prices for your products. Our customers consistently tell us how refreshing our sales and marketing approaches are. We consider honesty, transparency and responsible marketing the only viable strategy when you're bootstrapped. Your reputation with your customers and vendors should mean everything to you, and we can honestly say that the loyalty we have developed is priceless. So how can your startup venture down a similar path? Here's our advice for playing the long game: Relate your experiences to each fad: Our industry is a firehose of fads and buzzwords, and it can be difficult to distinguish the genuine trends from the flops. Analyze every new buzzword in terms of your own products, services and experiences, and monitor customer trends even more carefully. Some buzzwords will even formalize things you have been doing for years. Value personal relationships: Companies come and go, but you will maintain many clients and colleagues for decades, regardless of the hat they currently wear. Encourage relationship building at every level of your company because you may encounter someone again. Trust your instincts and your colleagues: No contractual terms or credit rating system can beat the instincts you will develop over time for judging the ability of individuals and companies to deliver. You know your business, employees and customers best. Looking back, I don't think I'd change a thing. We need to be in Silicon Valley for the prime customers, vendors and talent, and it's a point of pride that our customers recognize how different we are from the norm. Free of a venture capital “runway” and driven by these principles, we look forward to the next 20 years in this highly-competitive industry. Creating an AS for fun and profit (http://blog.thelifeofkenneth.com/2017/11/creating-autonomous-system-for-fun-and.html) At its core, the Internet is an interconnected fabric of separate networks. Each network which makes up the Internet is operated independently and only interconnects with other networks in clearly defined places. For smaller networks like your home, the interaction between your network and the rest of the Internet is usually pretty simple: you buy an Internet service plan from an ISP (Internet Service Provider), they give you some kind of hand-off through something like a DSL or cable modem, and give you access to "the entire Internet". Your router (which is likely also a WiFi access point and Ethernet switch) then only needs to know about two things; your local computers and devices are on one side, and the ENTIRE Internet is on the other side of that network link given to you by your ISP. For most people, that's the extent of what's needed to be understood about how the Internet works. Pick the best ISP, buy a connection from them, and attach computers needing access to the Internet. And that's fine, as long as you're happy with only having one Internet connection from one vendor, who will lend you some arbitrary IP address(es) for the extend of your service agreement, but that starts not being good enough when you don't want to be beholden to a single ISP or a single connection for your connectivity to the Internet. That also isn't good enough if you are an Internet Service Provider so you are literally a part of the Internet. You can't assume that the entire Internet is that way when half of the Internet is actually in the other direction. This is when you really have to start thinking about the Internet and treating the Internet as a very large mesh of independent connected organizations instead of an abstract cloud icon on the edge of your local network map. Which is pretty much never for most of us. Almost no one needs to consider the Internet at this level. The long flight of steps from DSL for your apartment up to needing to be an integral part of the Internet means that pretty much regardless of what level of Internet service you need for your projects, you can probably pay someone else to provide it and don't need to sit down and learn how BGP works and what an Autonomous System is. But let's ignore that for one second, and talk about how to become your own ISP. To become your own Internet Service Provider with customers who pay you to access the Internet, or be your own web hosting provider with customers who pay you to be accessible from the Internet, or your own transit provider who has customers who pay you to move their customer's packets to other people's customers, you need a few things: Your own public IP address space allocated to you by an Internet numbering organization Your own Autonomous System Number (ASN) to identify your network as separate from everyone else's networks At least one router connected to a different autonomous system speaking the Border Gateway Protocol to tell the rest of the Internet that your address space is accessible from your autonomous system. So... I recently set up my own autonomous system... and I don't really have a fantastic justification for it... My motivation was twofold: One of my friends and I sat down and figured it out that splitting the cost of a rack in Hurricane Electric's FMT2 data center marginally lowered our monthly hosting expenses vs all the paid services we're using scattered across the Internet which can all be condensed into this one rack. And this first reason on its own is a perfectly valid justification for paying for co-location space at a data center like Hurricane Electric's, but isn't actually a valid reason for running it as an autonomous system, because Hurricane Electric will gladly let you use their address space for your servers hosted in their building. That's usually part of the deal when you pay for space in a data center: power, cooling, Internet connectivity, and your own IP addresses. Another one of my friends challenged me to do it as an Autonomous System. So admittedly, my justification for going through the additional trouble to set up this single rack of servers as an AS is a little more tenuous. I will readily admit that, more than anything else, this was a "hold my beer" sort of engineering moment, and not something that is at all needed to achieve what we actually needed (a rack to park all our servers in). But what the hell; I've figured out how to do it, so I figured it would make an entertaining blog post. So here's how I set up a multi-homed autonomous system on a shoe-string budget: Step 1. Found a Company Step 2. Get Yourself Public Address Space Step 3. Find Yourself Multiple Other Autonomous Systems to Peer With Step 4. Apply for an Autonomous System Number Step 5. Source a Router Capable of Handling the Entire Internet Routing Table Step 6. Turn it All On and Pray And we're off to the races. At this point, Hurricane Electric is feeding us all ~700k routes for the Internet, we're feeding them our two routes for our local IPv4 and IPv6 subnets, and all that's left to do is order all our cross-connects to other ASes in the building willing to peer with us (mostly for fun) and load in all our servers to build our own personal corner of the Internet. The only major goof so far has been accidentally feeding the full IPv6 table to our first other peer that we turned on, but thankfully he has a much more powerful supervisor than the Sup720-BXL, so he just sent me an email to knock that off, a little fiddling with my BGP egress policies, and we were all set. In the end, setting up my own autonomous system wasn't exactly simple, it was definitely not justified, but some times in life you just need to take the more difficult path. And there's a certain amount of pride in being able to claim that I'm part of the actual Internet. That's pretty neat. And of course, thanks to all of my friends who variously contributed parts, pieces, resources, and know-how to this on-going project. I had to pull in a lot of favors to pull this off, and I appreciate it. News Roundup One year checkpoint and Thread Sanitizer update (https://blog.netbsd.org/tnf/entry/one_year_checkpoint_and_thread) The past year has been started with bugfixes and the development of regression tests for ptrace(2) and related kernel features, as well as the continuation of bringing LLDB support and LLVM sanitizers (ASan + UBsan and partial TSan + Msan) to NetBSD. My plan for the next year is to finish implementing TSan and MSan support, followed by a long run of bug fixes for LLDB, ptrace(2), and other related kernel subsystems TSan In the past month, I've developed Thread Sanitizer far enough to have a subset of its tests pass on NetBSD, started with addressing breakage related to the memory layout of processes. The reason for this breakage was narrowed down to the current implementation of ASLR, which was too aggressive and which didn't allow enough space to be mapped for Shadow memory. The fix for this was to either force the disabling of ASLR per-process, or globally on the system. The same will certainly happen for MSan executables. After some other corrections, I got TSan to work for the first time ever on October 14th. This was a big achievement, so I've made a snapshot available. Getting the snapshot of execution under GDB was pure hazard. ``` $ gdb ./a.out GNU gdb (GDB) 7.12 Copyright (C) 2016 Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Type "show copying" and "show warranty" for details. This GDB was configured as "x86_64--netbsd". Type "show configuration" for configuration details. For bug reporting instructions, please see: . Find the GDB manual and other documentation resources online at: . For help, type "help". Type "apropos word" to search for commands related to "word"... Reading symbols from ./a.out...done. (gdb) r Starting program: /public/llvm-build/a.out [New LWP 2] WARNING: ThreadSanitizer: data race (pid=1621) Write of size 4 at 0x000001475d70 by thread T1: #0 Thread1 /public/llvm-build/tsan.c:4:10 (a.out+0x46bf71) Previous write of size 4 at 0x000001475d70 by main thread: #0 main /public/llvm-build/tsan.c:10:10 (a.out+0x46bfe6) Location is global 'Global' of size 4 at 0x000001475d70 (a.out+0x000001475d70) Thread T1 (tid=2, running) created by main thread at: #0 pthreadcreate /public/llvm/projects/compiler-rt/lib/tsan/rtl/tsaninterceptors.cc:930:3 (a.out+0x412120) #1 main /public/llvm-build/tsan.c:9:3 (a.out+0x46bfd1) SUMMARY: ThreadSanitizer: data race /public/llvm-build/tsan.c:4:10 in Thread1 Thread 2 received signal SIGSEGV, Segmentation fault. ``` I was able to get the above execution results around 10% of the time (being under a tracer had no positive effect on the frequency of successful executions). I've managed to hit the following final results for this month, with another set of bugfixes and improvements: check-tsan: Expected Passes : 248 Expected Failures : 1 Unsupported Tests : 83 Unexpected Failures: 44 At the end of the month, TSan can now reliably executabe the same (already-working) program every time. The majority of failures are in tests verifying sanitization of correct mutex locking usage. There are still problems with NetBSD-specific libc and libpthread bootstrap code that conflicts with TSan. Certain functions (pthreadcreate(3), pthreadkeycreate(3), _cxaatexit()) cannot be started early by TSan initialization, and must be deferred late enough for the sanitizer to work correctly. MSan I've prepared a scratch support for MSan on NetBSD to help in researching how far along it is. I've also cloned and adapted the existing FreeBSD bits; however, the code still needs more work and isn't functional yet. The number of passed tests (5) is negligible and most likely does not work at all. The conclusion after this research is that TSan shall be finished first, as it touches similar code. In the future, there will be likely another round of iterating the system structs and types and adding the missing ones for NetBSD. So far, this part has been done before executing the real MSan code. I've added one missing symbol that was missing and was detected when attempting to link a test program with MSan. Sanitizers The GCC team has merged the LLVM sanitizer code, which has resulted in almost-complete support for ASan and UBsan on NetBSD. It can be found in the latest GCC8 snapshot, located in pkgsrc-wip/gcc8snapshot. Though, do note that there is an issue with getting backtraces from libasan.so, which can be worked-around by backtracing ASan events in a debugger. UBsan also passes all GCC regression tests and appears to work fine. The code enabling sanitizers on the GCC/NetBSD frontend will be submitted upstream once the backtracing issue is fixed and I'm satisfied that there are no other problems. I've managed to upstream a large portion of generic+TSan+MSan code to compiler-rt and reduce local patches to only the ones that are in progress. This deals with any rebasing issues, and allows me to just focus on the delta that is being worked on. I've tried out the LLDB builds which have TSan/NetBSD enabled, and they built and started fine. However, there were some false positives related to the mutex locking/unlocking code. Plans for the next milestone The general goals are to finish TSan and MSan and switch back to LLDB debugging. I plan to verify the impact of the TSan bootstrap initialization on the observed crashes and research the remaining failures. This work was sponsored by The NetBSD Foundation. The NetBSD Foundation is a non-profit organization and welcomes any donations to help us continue funding projects and services to the open-source community. Please consider visiting the following URL, and chip in what you can: The scourge of systemd (https://blog.ungleich.ch/en-us/cms/blog/2017/12/10/the-importance-of-devuan/) While this article is actually couched in terms of promoting devuan, a de-systemd-ed version of debian, it would seem the same logic could be applied to all of the BSDs Let's say every car manufacturer recently discovered a new technology named "doord", which lets you open up car doors much faster than before. It only takes 0.05 seconds, instead of 1.2 seconds on average. So every time you open a door, you are much, much faster! Many of the manufacturers decide to implement doord, because the company providing doord makes it clear that it is beneficial for everyone. And additional to opening doors faster, it also standardises things. How to turn on your car? It is the same now everywhere, it is not necessarily to look for the keyhole anymore. Unfortunately though, sometimes doord does not stop the engine. Or if it is cold outside, it stops the ignition process, because it takes too long. Doord also changes the way your navigation system works, because that is totally related to opening doors, but leads to some users being unable to navigate, which is accepted as collateral damage. In the end, you at least have faster door opening and a standard way to turn on the car. Oh, and if you are in a traffic jam and have to restart the engine often, it will stop restarting it after several times, because that's not what you are supposed to do. You can open the engine hood and tune that setting though, but it will be reset once you buy a new car. Some of you might now ask themselves "Is systemd THAT bad?". And my answer to it is: No. It is even worse. Systemd developers split the community over a tiny detail that decreases stability significantly and increases complexity for not much real value. And this is not theoretical: We tried to build Data Center Light on Debian and Ubuntu, but servers that don't boot, that don't reboot or systemd-resolved that constantly interferes with our core network configuration made it too expensive to run Debian or Ubuntu. Yes, you read right: too expensive. While I am writing here in flowery words, the reason to use Devuan is hard calculated costs. We are a small team at ungleich and we simply don't have the time to fix problems caused by systemd on a daily basis. This is even without calculating the security risks that come with systemd. Using cabal on OpenBSD (https://deftly.net/posts/2017-10-12-using-cabal-on-openbsd.html) Since W^X became mandatory in OpenBSD (https://undeadly.org/cgi?action=article&sid=20160527203200), W^X'd binaries are only allowed to be executed from designated locations (mount points). If you used the auto partition layout during install, your /usr/local/ will be mounted with wxallowed. For example, here is the entry for my current machine: /dev/sd2g on /usr/local type ffs (local, nodev, wxallowed, softdep) This is a great feature, but if you build applications outside of the wxallowed partition, you are going to run into some issues, especially in the case of cabal (python as well). Here is an example of what you would see when attempting to do cabal install pandoc: qbit@slip[1]:~? cabal update Config file path source is default config file. Config file /home/qbit/.cabal/config not found. Writing default configuration to /home/qbit/.cabal/config Downloading the latest package list from hackage.haskell.org qbit@slip[0]:~? cabal install pandoc Resolving dependencies... ..... cabal: user error (Error: some packages failed to install: JuicyPixels-3.2.8.3 failed during the configure step. The exception was: /home/qbit/.cabal/setup-exe-cache/setup-Simple-Cabal-1.22.5.0-x86_64-openbsd-ghc-7.10.3: runProcess: runInteractiveProcess: exec: permission denied (Permission denied) The error isn't actually what it says. The untrained eye would assume permissions issue. A quick check of dmesg reveals what is really happening: /home/qbit/.cabal/setup-exe-cache/setup-Simple-Cabal-1.22.5.0-x86_64-openbsd-ghc-7.10.3(22924): W^X binary outside wxallowed mountpoint OpenBSD is killing the above binary because it is violating W^X and hasn't been safely kept in its /usr/local corral! We could solve this problem quickly by marking our /home as wxallowed, however, this would be heavy handed and reckless (we don't want to allow other potentially unsafe binaries to execute.. just the cabal stuff). Instead, we will build all our cabal stuff in /usr/local by using a symlink! doas mkdir -p /usr/local/{cabal,cabal/build} # make our cabal and build dirs doas chown -R user:wheel /usr/local/cabal # set perms rm -rf ~/.cabal # kill the old non-working cabal ln -s /usr/local/cabal ~/.cabal # link it! We are almost there! Some cabal packages build outside of ~/.cabal: cabal install hakyll ..... Building foundation-0.0.14... Preprocessing library foundation-0.0.14... hsc2hs: dist/build/Foundation/System/Bindings/Posix_hsc_make: runProcess: runInteractiveProcess: exec: permission denied (Permission denied) Downloading time-locale-compat-0.1.1.3... ..... Fortunately, all of the packages I have come across that do this all respect the TMPDIR environment variable! alias cabal='env TMPDIR=/usr/local/cabal/build/ cabal' With this alias, you should be able to cabal without issue (so far pandoc, shellcheck and hakyll have all built fine)! TL;DR # This assumes /usr/local/ is mounted as wxallowed. # doas mkdir -p /usr/local/{cabal,cabal/build} doas chown -R user:wheel /usr/local/cabal rm -rf ~/.cabal ln -s /usr/local/cabal ~/.cabal alias cabal='env TMPDIR=/usr/local/cabal/build/ cabal' cabal install pandoc FreeBSD and APRS, or "hm what happens when none of this is well documented.." (https://adrianchadd.blogspot.co.uk/2017/10/freebsd-and-aprs-or-hm-what-happens.html) Here's another point along my quest for amateur radio on FreeBSD - bring up basic APRS support. Yes, someone else has done the work, but in the normal open source way it was .. inconsistently documented. First is figuring out the hardware platform. I chose the following: A Baofeng UV5R2, since they're cheap, plentiful, and do both VHF and UHF; A cable to do sound level conversion and isolation (and yes, I really should post a circuit diagram and picture..); A USB sound device, primarily so I can whack it into FreeBSD/Linux devices to get a separate sound card for doing radio work; FreeBSD laptop (it'll become a raspberry pi + GPS + sensor + LCD thingy later, but this'll do to start with.) The Baofeng is easy - set it to the right frequency (VHF APRS sits on 144.390MHz), turn on VOX so I don't have to make up a PTT cable, done/done. The PTT bit isn't that hard - one of the microphone jack pins is actually PTT (if you ground it, it engages PTT) so when you make the cable just ensure you expose a ground pin and PTT pin so you can upgrade it later. The cable itself isn't that hard either - I had a baofeng handmic lying around (they're like $5) so I pulled it apart for the cable. I'll try to remember to take pictures of that. Here's a picture I found on the internet that shows the pinout: image (https://3.bp.blogspot.com/-58HUyt-9SUw/Wdz6uMauWlI/AAAAAAAAVz8/e7OrnRzN3908UYGUIRI1EBYJ5UcnO0qRgCLcBGAs/s1600/aprs-cable.png) Now, I went a bit further. I bought a bunch of 600 ohm isolation transformers for audio work, so I wired it up as follows: From the audio output of the USB sound card, I wired up a little attenuator - input is 2k to ground, then 10k to the input side of the transformer; then the output side of the transformer has a 0.01uF greencap capacitor to the microphone input of the baofeng; From the baofeng I just wired it up to the transformer, then the output side of that went into a 0.01uF greencap capacitor in series to the microphone input of the sound card. In both instances those capacitors are there as DC blockers. Ok, so that bit is easy. Then on to the software side. The normal way people do this stuff is "direwolf" on Linux. So, "pkg install direwolf" installed it. That was easy. Configuring it up was a bit less easy. I found this guide to be helpful (https://andrewmemory.wordpress.com/tag/direwolf/) FreeBSD has the example direwolf config in /usr/local/share/doc/direwolf/examples/direwolf.conf . Now, direwolf will run as a normal user (there's no rc.d script for it yet!) and by default runs out of the current directory. So: $ cd ~ $ cp /usr/local/share/doc/direwolf/examples/direwolf.conf . $ (edit it) $ direwolf Editing it isn't that hard - you need to change your callsign and the audio device. OK, here is the main undocumented bit for FreeBSD - the sound device can just be /dev/dsp . It isn't an ALSA name! Don't waste time trying to use ALSA names. Instead, just find the device you want and reference it. For me the USB sound card shows up as /dev/dsp3 (which is very non specific as USB sound devices come and go, but that's a later problem!) but it's enough to bring it up. So yes, following the above guide, using the right sound device name resulted in a working APRS modem. Next up - something to talk to it. This is called 'xastir'. It's .. well, when you run it, you'll find exactly how old an X application it is. It's very nostalgically old. But, it is enough to get APRS positioning up and test both the TCP/IP side of APRS and the actual radio radio side. Here's the guide I followed: (https://andrewmemory.wordpress.com/2015/03/22/setting-up-direwolfxastir-on-a-raspberry-pi/) So, that was it! So far so good. It actually works well enough to decode and watch APRS traffic around me. I managed to get out position information to the APRS network over both TCP/IP and relayed via VHF radio. Beastie Bits Zebras All the Way Down - Bryan Cantrill (https://www.youtube.com/watch?v=fE2KDzZaxvE) Your impact on FreeBSD (https://www.freebsdfoundation.org/blog/your-impact-on-freebsd/) The Secret to a good Gui (https://bsdmag.org/secret-good-gui/) containerd hits v1.0.0 (https://github.com/containerd/containerd/releases/tag/v1.0.0) FreeBSD 11.1 Custom Kernels Made Easy - Configuring And Installing A Custom Kernel (https://www.youtube.com/watch?v=lzdg_2bUh9Y&t=) Debugging (https://pbs.twimg.com/media/DQgCNq6UEAEqa1W.jpg:large) *** Feedback/Questions Bostjan - Backup Tapes (http://dpaste.com/22ZVJ12#wrap) Philipp - A long time ago, there was a script (http://dpaste.com/13E8RGR#wrap) Adam - ZFS Pool Monitoring (http://dpaste.com/3BQXXPM#wrap) Damian - KnoxBug (http://dpaste.com/0ZZVM4R#wrap) ***

Devchat.tv Master Feed
RR 326: Chatbots with Jamie Wright

Devchat.tv Master Feed

Play Episode Listen Later Sep 5, 2017 42:59


In this episode of the Ruby Rogues podcast Dave Kimura, Eric Berry, and Charles Max Wood discuss chatbots with Jamie Wright. Jamie will be speaking at Ruby Dev Summit in October. [01:25] Jamie Wright introduction Jamie is a professional nerd and independent contractor. He's been coding for 20 years mostly in Ruby. He's starting to get into Elixir. One of his first projects was a text adventure game, which got him started with conversational UI's. He saw Hubot on Campfire. He started tweaking that. He made a timetracking bot that used Freshbooks and Harvest. Then Slack came out and he created Tatsu. [05:00] Tatsu features You can schedule it and it'll ask automated questions. He's working on having it integrate with github, Harvest, Google Calendar, etc. If there's a blocker, you should be able to create private conversations with the people who are blocked and add that to the standup. When you sign up it adds a video link into your slack. Eric thinks this is pretty clever. In Slack, the default action people should take when a bot is installed should be to DM the person who installed it. [08:50] What it takes to write a bot and the challenges involved Writing bots is "fun as hell." Chatbots suck. We have the opportunity to improve an entire piece of the industry. Many bots are command based bots. You say something and it responds. Conversational UI's are really hard because they don't have any context or shared understanding of the world. [12:18] Chatbot libraries - Getting Started Every large company is working on one. There are also lots of natural language processing services that you can use as well. Before you start, you need to know your use case. Where will your users be? What services do you want to provide? At work? Probably slack. Among friends? Facebook Node has botkit. It's the most popular chatbot platform in the world. Start with botkit, use the examples, then come back to Ruby. Dave brings up building a chatbot for Slack that connected to VersionOne. Data retrieval bots are another great place to start. From there, you start answering the question of where things go. [18:51] The panel's experience with chatbots Tatsu has been around for about 2 years and has existed pre-Slack. Eric uses a Slackbot to get information about users who cancel or decline messages. Chuck has done automatic posting to Slack with Zapier. Chuck also mentions serverless with AWS Lambda. Chatbots are a lot like webapps. They're text in, text out and process things in very similar ways. Dave also brings up SMS bots as well with Twilio. Jamie has thought about creating a web based standup bot for when Slack is down. Slack is a single point of failure for your bot if that's where it lives. Slack gives you a lot of UI elements that you don't get in SMS. [24:51] Do you wish that Slack were more like IRC From an end-user perspective, no. But Jamie does wish they'd revisit threading replies and separating conversations in the same channel. It only took a handful of developers to build Slack. [27:20] What gems do you use in Ruby? slack-ruby-client by dblock slack-ruby-bot by dblock eventmachine [29:30] Does Slack push to an endpoint? or do you poll Slack? You can call an api endpoint on Slack that gives you a websocket endpoint. The events API sends webhook events to your server. It's easier to program against, but it can be slower. It may also be restricted on certain API's [30:55] Github Fantasy League Based on a Peepcode video with Aaron Patterson. You got a score based on your activity in Github. Jamie recorded videos for a talk at Codemash. It never actually became a thing, but it was a fun idea. Jamie got into Ruby by going to a Ruby Koans talk by Jim Weirich. Jamie's links github.com/jwright twitter.com/jwright brilliantfantastic.com This is what we put into the chat room after the Dr. Who reference... Picks Eric Rollbar Dave Mattermost Chuck Zoho CRM Jamie Digit

Ruby Rogues
RR 326: Chatbots with Jamie Wright

Ruby Rogues

Play Episode Listen Later Sep 5, 2017 42:59


In this episode of the Ruby Rogues podcast Dave Kimura, Eric Berry, and Charles Max Wood discuss chatbots with Jamie Wright. Jamie will be speaking at Ruby Dev Summit in October. [01:25] Jamie Wright introduction Jamie is a professional nerd and independent contractor. He's been coding for 20 years mostly in Ruby. He's starting to get into Elixir. One of his first projects was a text adventure game, which got him started with conversational UI's. He saw Hubot on Campfire. He started tweaking that. He made a timetracking bot that used Freshbooks and Harvest. Then Slack came out and he created Tatsu. [05:00] Tatsu features You can schedule it and it'll ask automated questions. He's working on having it integrate with github, Harvest, Google Calendar, etc. If there's a blocker, you should be able to create private conversations with the people who are blocked and add that to the standup. When you sign up it adds a video link into your slack. Eric thinks this is pretty clever. In Slack, the default action people should take when a bot is installed should be to DM the person who installed it. [08:50] What it takes to write a bot and the challenges involved Writing bots is "fun as hell." Chatbots suck. We have the opportunity to improve an entire piece of the industry. Many bots are command based bots. You say something and it responds. Conversational UI's are really hard because they don't have any context or shared understanding of the world. [12:18] Chatbot libraries - Getting Started Every large company is working on one. There are also lots of natural language processing services that you can use as well. Before you start, you need to know your use case. Where will your users be? What services do you want to provide? At work? Probably slack. Among friends? Facebook Node has botkit. It's the most popular chatbot platform in the world. Start with botkit, use the examples, then come back to Ruby. Dave brings up building a chatbot for Slack that connected to VersionOne. Data retrieval bots are another great place to start. From there, you start answering the question of where things go. [18:51] The panel's experience with chatbots Tatsu has been around for about 2 years and has existed pre-Slack. Eric uses a Slackbot to get information about users who cancel or decline messages. Chuck has done automatic posting to Slack with Zapier. Chuck also mentions serverless with AWS Lambda. Chatbots are a lot like webapps. They're text in, text out and process things in very similar ways. Dave also brings up SMS bots as well with Twilio. Jamie has thought about creating a web based standup bot for when Slack is down. Slack is a single point of failure for your bot if that's where it lives. Slack gives you a lot of UI elements that you don't get in SMS. [24:51] Do you wish that Slack were more like IRC From an end-user perspective, no. But Jamie does wish they'd revisit threading replies and separating conversations in the same channel. It only took a handful of developers to build Slack. [27:20] What gems do you use in Ruby? slack-ruby-client by dblock slack-ruby-bot by dblock eventmachine [29:30] Does Slack push to an endpoint? or do you poll Slack? You can call an api endpoint on Slack that gives you a websocket endpoint. The events API sends webhook events to your server. It's easier to program against, but it can be slower. It may also be restricted on certain API's [30:55] Github Fantasy League Based on a Peepcode video with Aaron Patterson. You got a score based on your activity in Github. Jamie recorded videos for a talk at Codemash. It never actually became a thing, but it was a fun idea. Jamie got into Ruby by going to a Ruby Koans talk by Jim Weirich. Jamie's links github.com/jwright twitter.com/jwright brilliantfantastic.com This is what we put into the chat room after the Dr. Who reference... Picks Eric Rollbar Dave Mattermost Chuck Zoho CRM Jamie Digit

All Ruby Podcasts by Devchat.tv
RR 326: Chatbots with Jamie Wright

All Ruby Podcasts by Devchat.tv

Play Episode Listen Later Sep 5, 2017 42:59


In this episode of the Ruby Rogues podcast Dave Kimura, Eric Berry, and Charles Max Wood discuss chatbots with Jamie Wright. Jamie will be speaking at Ruby Dev Summit in October. [01:25] Jamie Wright introduction Jamie is a professional nerd and independent contractor. He's been coding for 20 years mostly in Ruby. He's starting to get into Elixir. One of his first projects was a text adventure game, which got him started with conversational UI's. He saw Hubot on Campfire. He started tweaking that. He made a timetracking bot that used Freshbooks and Harvest. Then Slack came out and he created Tatsu. [05:00] Tatsu features You can schedule it and it'll ask automated questions. He's working on having it integrate with github, Harvest, Google Calendar, etc. If there's a blocker, you should be able to create private conversations with the people who are blocked and add that to the standup. When you sign up it adds a video link into your slack. Eric thinks this is pretty clever. In Slack, the default action people should take when a bot is installed should be to DM the person who installed it. [08:50] What it takes to write a bot and the challenges involved Writing bots is "fun as hell." Chatbots suck. We have the opportunity to improve an entire piece of the industry. Many bots are command based bots. You say something and it responds. Conversational UI's are really hard because they don't have any context or shared understanding of the world. [12:18] Chatbot libraries - Getting Started Every large company is working on one. There are also lots of natural language processing services that you can use as well. Before you start, you need to know your use case. Where will your users be? What services do you want to provide? At work? Probably slack. Among friends? Facebook Node has botkit. It's the most popular chatbot platform in the world. Start with botkit, use the examples, then come back to Ruby. Dave brings up building a chatbot for Slack that connected to VersionOne. Data retrieval bots are another great place to start. From there, you start answering the question of where things go. [18:51] The panel's experience with chatbots Tatsu has been around for about 2 years and has existed pre-Slack. Eric uses a Slackbot to get information about users who cancel or decline messages. Chuck has done automatic posting to Slack with Zapier. Chuck also mentions serverless with AWS Lambda. Chatbots are a lot like webapps. They're text in, text out and process things in very similar ways. Dave also brings up SMS bots as well with Twilio. Jamie has thought about creating a web based standup bot for when Slack is down. Slack is a single point of failure for your bot if that's where it lives. Slack gives you a lot of UI elements that you don't get in SMS. [24:51] Do you wish that Slack were more like IRC From an end-user perspective, no. But Jamie does wish they'd revisit threading replies and separating conversations in the same channel. It only took a handful of developers to build Slack. [27:20] What gems do you use in Ruby? slack-ruby-client by dblock slack-ruby-bot by dblock eventmachine [29:30] Does Slack push to an endpoint? or do you poll Slack? You can call an api endpoint on Slack that gives you a websocket endpoint. The events API sends webhook events to your server. It's easier to program against, but it can be slower. It may also be restricted on certain API's [30:55] Github Fantasy League Based on a Peepcode video with Aaron Patterson. You got a score based on your activity in Github. Jamie recorded videos for a talk at Codemash. It never actually became a thing, but it was a fun idea. Jamie got into Ruby by going to a Ruby Koans talk by Jim Weirich. Jamie's links github.com/jwright twitter.com/jwright brilliantfantastic.com This is what we put into the chat room after the Dr. Who reference... Picks Eric Rollbar Dave Mattermost Chuck Zoho CRM Jamie Digit

All JavaScript Podcasts by Devchat.tv
226 JSJ Test Doubles with Justin Searls

All JavaScript Podcasts by Devchat.tv

Play Episode Listen Later Aug 24, 2016 64:11


React Remote Conf and Angular Remote Conf   03:15 - Justin Searls Introduction Twitter GitHub Blog Test Double JavaScript Jabber Episode #038: Jasmine with Justin Searls 04:13 - Testing testdouble.js teenytest Sinon.JS 08:44 - Mocking Growing Object-Oriented Software, Guided by Tests by Steve Freeman and Nat Pryce Jim Weirich 14:45 - Starting These Concepts as a Junior Developer Test-driven Development 17:55 - testdouble.js vs. sinon.js NIH = Not Invented Here 26:39 - Duck Typing, Monkey Patching, Duck Punching 32:22 - Node.js Negativity Design, Resources Martin Fowler’s Refactoring and Patterns Books Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans 42:52 - Community 45:08 - The AAA Rule: Arrange, Act, Assert 51:19 - Error Messages   Picks Unemployment (Jamison) React Rally (Jamison) Julia Evans' Tweet: how to be a wizard programmer  (Jamison) See the good in people (Aimee) Sinon.JS (Joe) How to Stay Motivated: Developing the Qualities of Success by Zig Ziglar (Chuck) The Harry Potter Series (Chuck) RetroPie (Justin) How Elm can Make you a Better JavaScript Programer (Justin) NEJS Conf (Justin)

JavaScript Jabber
226 JSJ Test Doubles with Justin Searls

JavaScript Jabber

Play Episode Listen Later Aug 24, 2016 64:11


React Remote Conf and Angular Remote Conf   03:15 - Justin Searls Introduction Twitter GitHub Blog Test Double JavaScript Jabber Episode #038: Jasmine with Justin Searls 04:13 - Testing testdouble.js teenytest Sinon.JS 08:44 - Mocking Growing Object-Oriented Software, Guided by Tests by Steve Freeman and Nat Pryce Jim Weirich 14:45 - Starting These Concepts as a Junior Developer Test-driven Development 17:55 - testdouble.js vs. sinon.js NIH = Not Invented Here 26:39 - Duck Typing, Monkey Patching, Duck Punching 32:22 - Node.js Negativity Design, Resources Martin Fowler’s Refactoring and Patterns Books Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans 42:52 - Community 45:08 - The AAA Rule: Arrange, Act, Assert 51:19 - Error Messages   Picks Unemployment (Jamison) React Rally (Jamison) Julia Evans' Tweet: how to be a wizard programmer  (Jamison) See the good in people (Aimee) Sinon.JS (Joe) How to Stay Motivated: Developing the Qualities of Success by Zig Ziglar (Chuck) The Harry Potter Series (Chuck) RetroPie (Justin) How Elm can Make you a Better JavaScript Programer (Justin) NEJS Conf (Justin)

Devchat.tv Master Feed
226 JSJ Test Doubles with Justin Searls

Devchat.tv Master Feed

Play Episode Listen Later Aug 24, 2016 64:11


React Remote Conf and Angular Remote Conf   03:15 - Justin Searls Introduction Twitter GitHub Blog Test Double JavaScript Jabber Episode #038: Jasmine with Justin Searls 04:13 - Testing testdouble.js teenytest Sinon.JS 08:44 - Mocking Growing Object-Oriented Software, Guided by Tests by Steve Freeman and Nat Pryce Jim Weirich 14:45 - Starting These Concepts as a Junior Developer Test-driven Development 17:55 - testdouble.js vs. sinon.js NIH = Not Invented Here 26:39 - Duck Typing, Monkey Patching, Duck Punching 32:22 - Node.js Negativity Design, Resources Martin Fowler’s Refactoring and Patterns Books Domain-Driven Design: Tackling Complexity in the Heart of Software by Eric Evans 42:52 - Community 45:08 - The AAA Rule: Arrange, Act, Assert 51:19 - Error Messages   Picks Unemployment (Jamison) React Rally (Jamison) Julia Evans' Tweet: how to be a wizard programmer  (Jamison) See the good in people (Aimee) Sinon.JS (Joe) How to Stay Motivated: Developing the Qualities of Success by Zig Ziglar (Chuck) The Harry Potter Series (Chuck) RetroPie (Justin) How Elm can Make you a Better JavaScript Programer (Justin) NEJS Conf (Justin)

Between | Screens Podcast
Avdi Grimm | Rake #01 | Origins | Jim Weirich | Common use cases | Advantages of Rake

Between | Screens Podcast

Play Episode Listen Later Dec 2, 2014 10:25


Show notes: http://betweenscreens.fm/episodes/1

All Ruby Podcasts by Devchat.tv
151 RR The Jim Weirich Tribute

All Ruby Podcasts by Devchat.tv

Play Episode Listen Later Apr 9, 2014 62:32


The Rogues honor fellow Rubyist Jim Weirich in a tribute episode.

tribute rogues jim weirich
Ruby Rogues
151 RR The Jim Weirich Tribute

Ruby Rogues

Play Episode Listen Later Apr 9, 2014 62:32


The Rogues honor fellow Rubyist Jim Weirich in a tribute episode.

tribute rogues jim weirich
Devchat.tv Master Feed
151 RR The Jim Weirich Tribute

Devchat.tv Master Feed

Play Episode Listen Later Apr 9, 2014 62:32


The Rogues honor fellow Rubyist Jim Weirich in a tribute episode.

tribute rogues jim weirich
Ruby NoName podcast
Ruby NoName Podcast S06E04

Ruby NoName podcast

Play Episode Listen Later Mar 2, 2014 44:57


Новости Скончался Jim Weirich — создатель rake и известнейший евангелист Ruby Релиз Ruby 2.1.1 MRI 1.9.3-p545, который посвящен Jim Weirich Релиз-кандидат Rails 4.1 AdequateRecord, превью некоторых оптимизаций AR по скорости в 4.2 Новость про RSpec 2.99 & 3.0beta2 в блоге одного из авторов RSpec Vagrant 1.5 с возможностью шарить виртуалки Статьи Rails Engines и для чего они нужны Статистика по использованию классов в Ruby Старая история о том что паршиалы — зло Про то, как интегрировать Puppet и Capistrano 3 Дискуссия Gitsh, специальный шелл для Гита SublimeGit, большое расширение для Sublime Text Atom, новый редактор кода от Github Дима Галинский Проект Димы — Vexor Drone, новый CI на Go

The Frontside Podcast
002: Devil's Advocate

The Frontside Podcast

Play Episode Listen Later Feb 26, 2014 29:50


Client-side apps are great, but they're not perfect for every situation. Charles and Brandon discuss times single-page apps might not make sense. Also, they discuss how Jim Weirich affected their lives. Goodbye, Jim. :( https://github.com/jimweirich/wyriki/commit/d28fac7f18aeacb00d8ad3460a0a5a901617c2d4

Teahour
#37 - 和鲁葳聊聊软件咨询公司是如何工作的

Teahour

Play Episode Listen Later Nov 4, 2013 90:45


本期由Terry Tai和Dingding共同主持,邀请了 neo 的美女软件工程师鲁葳,和她一起聊聊软件咨询公司是如何工作的。让大家了解更多的优秀软件咨询公司的细节和内幕。 关于鲁葳: Twitter Blog 访谈笔记 neo Pivotal Labs thoughtbot PivotalTracker University of Waterloo rocketfuel Jim Weirich Pair programming TDD Continuous integration Sublime Text RubyMine Vim Emacs tmux Travis CI Jenkins CI Yehuda Katz Eric Ries Lean UX Rails Girls Remote Pair Programing Blog Customer.io Effective JavaScript Special Guest: 鲁葳.

Teahour
#5 - Hardware for developers

Teahour

Play Episode Listen Later Mar 5, 2013 84:27


本期由 Terry Tai 主持,参与嘉宾有 Daneil Lv, Dingding Ye 和 Kevin Wang。本期由所有Teahour创始人和大家一起聊聊开发中用到的硬件和选购的一些技巧以及如何锻炼和保护程序员的身体。 Macbook Pro Parallel Tests Ivy Bridge 硬件虚拟化 超线程 Crucial M4 Samsung 830 Richard Huang Herman Miller Aeron Herman Miller Embody 锤子手机 QWERTY Dvorak Happy Hacking Keyboard Pro Type-S Razer Blackwidow For Mac Realforce 86U Tactile Pro Apple Extended Keyboard Alps Matias ADB Kinesis Freestyle mini Tactile Pro Shanghai Linux User Group Dell 2412M Jim Weirich Fitbit Zip Fitbit One Fitbit Flex Jawbone Up The Boy Scout Rule 钻石年代 Pocket Casts SuperDuper!

developers samsung flex hardware alps macbook pro pocket casts dvorak super duper qwerty adb kevin wang fitbit flex jawbone up jim weirich ivy bridge fitbit one superduper superduperdescription teahour
Ruby NoName podcast
Ruby NoName Podcast S05E01

Ruby NoName podcast

Play Episode Listen Later Jan 17, 2013 49:40


Новости Компьютерное зрение на Ruby - Hornetseye Чего не хватает в Ruby Книга Ruby Science Страничка о контрибьюторах Rails стала круче Обсуждение нового Gist Интервью с создателем rake Jim Weirich О переменных класса в Ruby и Smalltalk 31 статья про Rails 4 Почему плох DCI в Ruby Лисп в 27 строк на Ruby Можно ли уйти с Ruby на Clojure Рассказ о том, как создать приложение с помощью Ruboto Необычный способ искать сотрудников, спасибо Андрею Дерябину Свежие рельсы 3.2.10, 3.1.9, 3.0.18 Жуткая уязвимость в Rails с YAML, всем срочно обновляться на новые версии 3.2.11, 3.1.10, 3.0.19, 2.3.15. Либо применить workaround Рассказ о Zeus от Thoughtbot Обсуждение Безопасность rails с Егором Хомяковым Письмо в RoR:Security о CVE-2013-0156 Остальное Подкаст выходит только на rubynoname.ru Карточка Eye-Fi Саша Титов на борту Экспресса 42 О Звезде Смерти в США на lenta.ru и ресурсе, который нельзя называть

noname rails gist dci eye fi jim weirich
All Ruby Podcasts by Devchat.tv
RR 60 SOLID with Jim Weirich

All Ruby Podcasts by Devchat.tv

Play Episode Listen Later Jun 23, 2012 57:42


The Rogues discuss SOLID with Jim Weirich.

solid rogues jim weirich
Ruby Rogues
RR 60 SOLID with Jim Weirich

Ruby Rogues

Play Episode Listen Later Jun 23, 2012 57:42


The Rogues discuss SOLID with Jim Weirich.

solid rogues jim weirich
Devchat.tv Master Feed
RR 60 SOLID with Jim Weirich

Devchat.tv Master Feed

Play Episode Listen Later Jun 23, 2012 57:42


The Rogues discuss SOLID with Jim Weirich.

solid rogues jim weirich
Wide Teams
Wide Teams Podcast Episode #14: Interview with Jim Weirich

Wide Teams

Play Episode Listen Later Oct 4, 2010 13:06


In this episode I talk to Jim Weirich of EdgeCase. Jim is a prominent Ruby programmer and one of my programming heros. In this interview, he talks about using Skype...

skype wide jim weirich
Ruby on Rails Podcast
123: erubycon: Jim Weirich

Ruby on Rails Podcast

Play Episode Listen Later Sep 17, 2009 38:40


This episode was originally published on September 16, 2008. Jim Weirich, from erubycon.

ruby on rails jim weirich
Ruby on Rails Podcast
123: erubycon: Jim Weirich

Ruby on Rails Podcast

Play Episode Listen Later Sep 16, 2009 38:40


This episode was originally published on September 16, 2008. Jim Weirich, from erubycon.

ruby on rails jim weirich
Agile Toolkit Podcast
RailsEdge 2007 - Jim Weirich - Rake goodness

Agile Toolkit Podcast

Play Episode Listen Later May 15, 2007 45:04


I spoke with Jim after his Rake Talk at the RailsEdge.  If this is not your favorite build tool now it will be.  Jim is the creator of Rake and RubyGems package management for Ruby.  These two tools have made my life a lot easier and if you have not used them, then you are probably not using ruby.  Jim talks about using Rake and db migrations with a recent java project.  I also spoke with Jim about ruby test driven development.  It was great to see someone do tiny step TDD in a presentation that was not an eXtreme Programming demonstration.Jim is the first of my guests to say "Your the AgileToolkit Guy ... I listen to the podcast!" or something to that effect.  Thanks for the interview and for listening to my podcast Jim.Enjoy-bob payne