Our original panel podcast, Ruby Rogues is a weekly discussion around Ruby, Rails, software development, and the community around Ruby.

Similar Podcasts

Flutter 101 Podcast

Flutter 101 Podcast
Weekly podcast focusing on software development with Flutter and Dart. Hosted by Vince Varga.

Views on Vue

Views on Vue
Vue is a growing front-end framework for web developments. Hear experts cover technologies and movements within the Vue community by talking to members of the open source and development community.

React Round Up

React Round Up
Stay current on the latest innovations and technologies in the React community by listening to our panel of React and Web Development Experts.

RR 328: Rails Security Beyond the Defaults with Matias Korhonen

September 19, 2017 53:12 51.57 MB Downloads: 0

Tweet this EpisodeMatias Korhonen has been writing Rails apps professionally at Kisko Labs, a Rails-focused software consultancy in Finland, for almost a decade. In his spare time he works on too many side projects (including Piranhas.co), a book price comparison site, and TLS.care (an SSL certificate monitoring service). He also somehow manages to find time to homebrew beer.The Rogues talk to Matias about securing your Rails applications. Rails comes with a lot of security features built in, but you can still leave yourself open to exploitation if you're not careful. Most of these problems occur in the portion of the app your write as opposed to the parts of the app that Rails handles for you. We go over several tools and techniques for making sure your application, access, and data are all secure.In particular, we dive pretty deep on: Tools that you can use to scan for vulnerabilities or add more security checks to your applications Authentication and authorization mistakes Securely managing data and much, much more... Links: secureheaders brakeman Code Climate CloudFlare zxcvbn Troy Hunt article on pwned passwords Devise Security Extension pundit Drifting Ruby episode on Complex Strong Parameters gemnasium bundler-audit OWASP Zed Attack Proxy Project rack-attack Picks:Brian: Regex 101 Give and Take by Adam Grant Eric:Indie HackersDave:Sumo LogicChuck: Ready Player One Comic-Con trailer breakdown Mattermost Ruby Rogues Parley Ruby Dev Summit (FREE) Matias: Webpacker 3.0 ActiveStorage Heroku Special Guest: Matias Korhonen.

RR 327: Hack Your Workday to Maximize Learning with Allison McMillan

September 12, 2017 57:52 56.04 MB Downloads: 0

Tweet this EpisodeAllison is a developer in the Washington DC area. She is a non-profit executive turned developer. She helps organize the RubyConf and RailsConf Scholar Program. She organizes a local meetup call Silver Spring Ruby. She works at Collective Idea.The Rogues talk to Allison about being a mom in coding and work-life balance.  They also talk about transitioning from non-profits to coding. This episode goes into depth on: Prioritizing your family and still having a great career Goal setting, focus, and growth Team collaboration Contributing to open source and much, much more... Links: Delayed Job Allison's Blog Baby Driven Development talk Rails Girls Ruby Dev Summit RSpec Minitest RailsCasts Interactor Gem Leah Silber from Tilde tweet Tilde article on Baby at Work Mother Coders RailsBridge Allison on Twitter Picks:Eric: Gallup Strengths Test Metabase Allison: Sticky Note Game by TableXI WriteSpeakCode Ruby Jewel Crystal DISC Assessment DaveRails GuidesSpecial Guest: Allison McMillan.

RR 326: Chatbots with Jamie Wright

September 05, 2017 42:59 41.75 MB Downloads: 0

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 introductionJamie 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 featuresYou 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 involvedWriting 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 StartedEvery 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? FacebookNode 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 chatbotsTatsu 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 IRCFrom 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 dblockslack-ruby-bot by dblockeventmachine[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... PicksEricRollbarDaveMattermostChuckZoho CRMJamieDigitSpecial Guest: Jamie Wright.

RR 325: Date Night with Ruby with Ruberto Paulo

August 29, 2017 1:20:18 77.58 MB Downloads: 0

Tweet this EpisodeRR 325 Date Night with Ruby with Ruberto PauloIn this episode, panelists Dave Kimura, Eric Berry, and Charles Max Wood discuss ongoing learning and keeping your passion for programming alive with Ruberto Paulo.[01:16] Ruberto Paulo introduction and discussion on the South African and worldwide Ruby sceneRubyist from Cape Town, South Africa. Works for a fintech company in Cape Town. He's an organizer of RubyFuza and Ruby DCamp in South Africa.The Ruby scene in South Africa is growing as is fintech. His company's platform was build by Platform45 and is now maintained by his employer.Developers are also finding work in the wider world from the Cape Town area.Is Cape Town a big Rails area? or is there a big focus on other frameworks? It's a mix, but mostly Rails.Most of the people who live in Kenya spend 1/3 of their income charging their phones. M-pesa is their alternative to banks because they can't afford to have bank accounts. Every business in Africa has to have some kind of technology tie-in because of this.A lot of the developers in Ruby are Polyglots. They're people who have experimented with several languages in the past. Ruby is probably the highest paid language in South Africa. Dave Thomas spoke at RubyHACK conference that Elixir is the future. He's using Elixir for pretty much everything now. Elixir presents a viable option to move from for Rubyists.Several years ago, Ruby was hot. Now it's mature. Many corporations have invested in Ruby, so they're not going to adopt another stack.Most frameworks can solve most problems, so people only move when you're in the minority case where you need the capabilities of the new language.A lot of people stick around because they love the language and the community as well.What does Ruby give us that we want to take with us into the future?[19:10] Date Night with RubyRuberto is speaking at Ruby Dev Summit about Date Night with Ruby.More show notes in progress Special Guest: Ruberto Paulo.

RR 324: Developer Horror Stories

August 22, 2017 51:41 50.12 MB Downloads: 0

RR 324: Developer Horror StoriesThe panel for this episode of Ruby Rogues is Dave Kimura, Eric Berry, and Charles Max Well. They are telling developer horror stories this week. Tune in to listen to their stories![00:01:40] Eric’s Story Eric tells a story that happened today. He was working on a report on live data at work. While doing this, he sent texts to hundreds of people that shouldn’t be getting them. The moral of the story is that everyone makes mistakes, even seasoned developers.[00:02:58] How could that have been avoided? Eric has a fail-safe that has to override with an environment variable so that it won’t truncate the tables. Once that happens, no messages will be sent. He works at a company, which is a B to C texting platform that allows customer retention through mass, etc. He commented out stuff, not realizing that it would start sending messages. He needed live data to generate reports so he did not truncate the data. His advice is not to comment out code until you know why you are doing so.Dave says that same thing can also happen with an email service. Instead of commenting out code, make sure they are set up to a mail server or mail dev to where it actually never sends out to the real world but stays in a send box environment. Amazon SES has a way to do this where things stay internally.[00:05:10] Dave’s StoryAround seven years ago Dave needed to store some images. He did not want to use a storage on the local computer because he would have multiple web servers and he did not want to use external storage because he was “lazy.” So he stored the images in the database. It worked for years until one day he saw that the table was 30 GB, which was much larger than it should have been. He had to extract and rewrite because any test to undo it would be substantial. It would be a long running process because 30 GB is a lot of data.In hindsight, Dave’s advice is that you don’t have to prematurely optimize but you also don’t have to make bad decisions. Do not store globs of binary data in your database. If it can be stored as a jpeg, do that.[00:08:04] Charles’ StoryCharles’ story focuses on time zones. He was working on test first development. He wrote tests for a feature and his coworker checked them. The database was running in UTC and doing checks in Mountain Time, so the checks would fail from 6pm until midnight. The CI server would show that tests were not passing for a chunk of the day.It was a simple fix. He learned that you can write a test that passes but may be overlooking something simple that may change when in a different place or a different time.[00:11:05] ErrorsErrors are hard to track down. The hardest ones to find are the ones that only happen occasionally. The worst ones are those that are critical errors that only happen occasionally. Because they only happen sometimes, it is hard to know how to fix them.[00:19:13] Using a Technology Too SoonEric used a technology too soon, which was Rails. Nobody could take over once he left the company. He had to go back to the company and rebuild it in PHP so that others could use it. The lesson from this mistake is that when you chose a technology you have to choose one that supports the buzz factor.  Everyone has a responsibility to the people they are working for to add value. If you leave them with a maintenance nightmare you are not helping, you are hurting. Make sure you are locking things down.[00:22:35] Gems and Poll RequestsDave watches Gems to see what and how often they are updating. He checks to see if his poll request was accepted and reverts back to the original gem. He calls it “free maintenance from other people.” He doesn’t think you should deviate from it too much. An option is to use a proxy as well.[00:27:41] Have you ever had to make patches in your Rails app knowing that those patches were coming in a future release?Eric has had to in the past. His mentor had to patch Rails, apply it, but every time it ran it said,  “if you upgrade rails, upgrade me.” It was a reminder to make sure everyone stays in sync.[00:29:30] MigrationDave and Charles have both had problems with migration. Take snapshots of database before you use migrations. The moral of story is if you’re going to migrate data, make sure you back up your database before you change the data. And don’t do data modifications in your migrations. Also set up a replica of your database. There is no excuse except for laziness or inexperience.[00:32:10] Materialized views. Eric used to work for social media company that had a lot of data coming in from various forms of social media. Helped build sub products that handled intake of data. Decided to use materialized views. It is a view that self updates as data changes in the database. In other words, it creates a fake table and can simplify the application side of things.It got a little messy and they had no idea what was updating things when. Because of this, they had to convert the materialized views to stored procedures. The materialized views killed the database because it triggered things when it shouldn’t be.[00:37:23] Caching Caching is a big problem with development. There are complex cache keys built around different queries and combinations of objects. There is a value with using caches but there is a caution with not using caches too early. A lot of problems have resulted from caching wrong results.  The moral is to measure and make sure that you are working on the right problems. Sometimes premature optimization does not matter. Sometimes caching is just not needed and messes programs up rather than helping them.[00:40:34] How do you populate data with unrealistic data?It depends on how big the application is, but larger ones generate ten to twenty thousand records. For these, Dave uses Active Record Import. He used the Faker Gem to create fakes names. Without using Active Record Import it would take ten to fifteen minutes to 50,000 but instead it took two minutes with using it, saving a lot of time.PicksDave: Gem in a box Active Record Import Eric: udemy – Stephen Grider Code Sponsor  Charles: Audible Meditation app Find something that helps you re-center Ruby Dev Summit

RR 323: Queuing and Amazon SQS with Kinsey Ann Durham

August 15, 2017 53:29 51.85 MB Downloads: 0

RR 323: Queuing and Amazon SQS with Kinsey Ann DurhamThis episode of Ruby Rogues features panelists Charles Max Wood, Dave Kimura, and Eric Berry. Special guest Kinsey Ann Durham joins to talk about queuing and Amazon SQS. Tune in to learn more![00:01:19] Kinsey Ann DurhamKinsey writes code for a company called Go Spot Check. She is always a lead mentor in a San Francisco based company called Bloc.[00:02:50] Background on Amazon SQSGo Spot Check is using Amazon SQS on a smaller scale. Kinsey thinks it is sasy to use. She recommends using something like Amazon SQS or even RabbitMQ. It has provided the company with the ability to explore different architecture patterns and tools.[00:04:50] Can you talk a little about your company and what led to using Amazon SQS?Go Spot Check is a start up in Denver. They focus on recording and data collection for big companies that need to know what is happening in retail, grocery stores, and bars. The focus is on alcohol and retail brands. The company analyzes the data collected that previously held no insight. Go Spot Check is currently moving into a computer vision aspect. Kinsey works off a separate service off of main aspect of Go Spot Check.[00:06:46] What does your stack look like? Is it built off Ruby?Yes, it is a Rails API only. The computer vision is done in Python.[00:08:45] Are you feeding the images through the queue? How does the queuing fit in?Started using Amazon SQS because they wanted to have a more decoupled way of developing. This allowed them to decide the contract between the two services and decide what they wanted it to look like up front. Kinsey describes that it is easy to create fake messages for testing with Amazon SQS. Image data is sent back and forth through the queue. The company does a lot of planograms. Information is taken from that data and posted onto a queue from the machine learning side of things. On the Rail side of things, the data can be picked up in API and sent back to the main app.[00:10:50] Does it accept binary data in the queue? It does not send actual images. All comparison data that has been processed is sent from the machine learning aspect side of things. An article has been published that shows that people do send images in the queue.[00:11:35] Do you use SQS in parallel with SNS (Simple Notification Service)?Kinsey says that they haven’t used SNS. This is because there hasn’t been a need. They are using it to post messages to communicate between different services.[00:12:40] What point would you need to consider a SQS over a Sidekick?Kinsey didn’t look into using Sidekick; she was excited to use SQS. She wanted to try it out and see if it was easy to use. Thought it would be more complex than it has been. She enjoys the free features of Amazon such as message visibility and timeout, which is handled by them. It can be customized and two different queues can be used.[00:16:15] How do you write the workers for an SQS queue?Kinsey has a plain Ruby object in the API that she can reuse with any queue. There are three queues in the company.[00:19:45] Are there any other uses for queues and SQS?Kinsey hasn’t come across any personally but she is sure there are some.[00:23:40] What if you’re someone who is new? Where would you recommend they get started?Suggest getting started with SQS Amazon, SQS documentation. Can get up to speed quickly. Amazon SQS is easy to get up and running. Kinsey is tailoring her Ruby Dev Summit talk to people who are new.[00:30:35] How do you go about mentoring?Kinsey loves mentoring. Developers have side projects or freelance work, but Kinsey likes to mentor because she feels like she makes a difference while continuing to learn. An important part of mentorship is giving support. This support level to students’ means not only offering students help with technical skills. Her goal is to build a well-rounded developer: someone who will be a great team member and people will want to work with in the future. This involves helping students build soft skills such as networking, interviewing skills, and helping them build confidence.[00:33:52] How would people get involved with mentorship?Kinsey is involved with an organization called Bloc - they are always hiring mentors. She shares that people can always get involved in their local community. Schools are looking for mentors. People at local meet ups and Rails Bridge are also both good ways to volunteer. Kinsey learned through mentors - she didn’t go to school to learn code. Mentors changed her life and are important to her, which is why she now mentors.[00:36:30] Advice For Women Kinsey’s advice for women who want to work in the technology world is to go for it. She urges women to get as many people and resources on their side as possible, including great developers who are willing to mentor. She emphasizes the importance of confidence and says to be ready for comments on gender. She believes that - while there are definitely still diversity issues with socioeconomic background, sexual orientation, race, gender, etc. it is getting better – women are more welcome in the technology field than they have previously been.There are technology organizations that are doing well and have no problems with welcoming women into the workplace. People in the field need to be open to having discussions about gender inequality. Open dialogue with team members is the key to solving problems. Some people have grown up not realizing the way they think is wrong. They don’t connect that what they say or think is offensive because it is all they know; it is unconscious to them. This is the type of person that is hard to change.PicksEric:  Open Collective  Open Collective – Women Who Work  Dave:Health insuranceCharles: Profit First  Secrets of the Millionaire Mind Kinsey: Guide program applications for mentors at RubyConf Release It  Links for Kinsey Twitter Instagram GitHub Special Guest: Kinsey Ann Durham.

RR 322 Finding a Great Job

August 08, 2017 1:10:17 67.96 MB Downloads: 0

RR 322: Finding a Great JobThis episode of Ruby Rogues the panel is Dave Kimura and Charles Max Wood. They discuss Finding a Good Developer Job. Tune in to learn more about this topic![00:02:08] Internal Clock With JobsDave believes that within the developer community, people have a one to two year internal clock. This clock tells them it is “time to find another job.” It confuses him that people go through jobs in a short amount of time. He explains that this is largely due to the on boarding time: it takes a while for developers to go through this process.Charles has switched jobs more frequently than Dave. He explains that his internal clock has been set of either by necessity or simply it being time to move. His reasons for switching jobs have been due to him not being happy and there being a substantial pay raise that he could not afford to turn down. He believes employers need to do more to keep people engaged because it is a loss to get somebody up to speed then have them leave.[00:08:30] Developers Want ChallengesPeople he knows that are in the development career are there for challenges. A lot of them he speaks with state they get to where they aren’t being challenged. Their employer won’t invest in helping them get to the next level, whether it is paying for trainings or conferences. People he has interviewed said that when they are starting to switch, it is for growth.[00:11:12] Are you encouraged to or allowed to figure out how to do things better at work?Dave said that because he’s over the project, he is able to do so. He tells others he works with to do the same. He doesn’t look at it as wasted time, but as time that is spent getting better. This time will be made up when the information learned is used later on with different projects with the company.[00:13:40] Self-care Some companies are short sighted and want employees to spend the least amount of time possible doing things. Most successful teams are developers that want to feel like part of the team. You need developers to believe in the mission and the team. If your manager is telling you to work 80 hours a week something is wrong. It is healthy for a company to recognize limitations.The humane development principle that Ernie Miller that says developers are humans, not machines. Often managers forget developers are humans. They need to be treated as people. Companies have to give them downtime. They have to take care of themselves.[00:20:00] What do you tell people to do if they feel burnt out?First look and assess the situation. Is the issue a self induced issue? Or is the employer forced this issue onto you? Misunderstandings can occur. Communicate with your boss to discuss the issue. Sometimes, it’s a simple that you like your job and push it too far.Learning boundaries are important. There needs to be a physical separation between work and relaxation area. There also needs to be boundaries around your time. Schedule work time as well as family time. Don’t break your own boundaries!Planning is important. What can you fit into the schedule? There is almost a guarantee that you will work too much if you don’t schedule. Backlog items that you want to accomplish. Meet with your team about it. Once you have a plan, don’t exceed what you plan. This will show you whether you are working too much or not enough.[00:28:40] MentorsIt is important to find a mentor. Learning is your responsibility. It only benefits you and your career. The company’s benefit is a side affect of your effort. Your company may not have the resources to help you. Where you will find a mentor is worth considering when you take a job. There are many resources for finding good mentors. railsmentor.org is one for the Ruby community.Dave doesn’t have a mentor but highly advises getting one. He believes that you can be your own mentor if you have a self-teaching capability. It is just a harder way to go. Charles has a mentor. Business people will pay for coaching. He suggests eventualmillionaire.com to check out a business coach he recommends.[00:36:54] How to Get Hired Dave suggests forgetting about job titles when looking for jobs because they are meaningless. Instead, focus on the skill set that the company is looking for. If you expect a company to continue your learning, you’ll always have a junior mentality: you will be a “professional junior.” Development is a career that requires constant education because there will always be new stuff. Companies want someone useful to them who will turn a profit. They want to use you. Sell yourself to them.Companies have a problem and they want you to solve it. You have to show them that you’re the person who can solve the problem in a way that makes it work for them. There is a wish list of technical skills companies have, but that doesn’t mean you have to check every box. They want the right person to solve the problem efficiently and quickly, and be a pleasant person.There is a list of questions that Dave prepares to ask in interviews that he tailors towards each candidate. He doesn’t want to make candidates feel attacked. If they are hired for the company, they’ll have a bad taste in their mouth. He also doesn’t like tests given. Instead, he wants to know how a candidate thinks. He makes sure to ask, “What is your process in coming to an answer?”[00:49:50] Third-party RecruitersThey do not pay attention to resumes they see. They use different tactics to try to suck you in – one is to insult you, while another is to try to hire another person through you. Dave has a policy to not talk to third-party recruiters. They do not know the client they are working for.[00:54:45] NetworkingGet to know other people in the field. People will help you get jobs. Can hunt job boards but it is not as effective as having contacts. Know someone who works at the company doing the thing that you want to do. A personal referral goes a long way. When someone goes to bat for you, it’s because they believe you will do a good job. Companies will not take that lightly.[00:58:50] ResumesTake the time to do your resume right. It is the first impression you make on an employer. That first opinion they have about you will be hard to change. A resume should be grammatically correct, relevant, and updated. Customize and personalize your resume to the company that you are sending it to.PicksDave:Fidget Spinner Charles  The Miracle Morning by Hal Elrod  The Daily Lasagna YouTube  2 Keto Dudes  www.ruled.me  Living La Vida Low Carb Show with Jimmy Moore Ketoclarity  Links Eventual Millionaire  https://www.railsmentors.org/ getacoderjob.com

RR 321: Visual Studio Code Ruby Plugin with Penn Lv

August 01, 2017 57:42 55.89 MB Downloads: 0

RR 321: Visual Studio Code Ruby Plugin with Penn LvThis episode of Ruby Rogues features panelists Dave Kimura, Brian Hogan, and Charles Max Wood. Two special guests join the panel today: Eric Barry and Penn Lv. Tune in and learn more about Visual Studio Code’s Ruby Plug-in! [00:01:55] Introduction to Eric Barry Eric turned over Teach Me To Code to Charles, which helped build relationships for Charles that built the Ruby Rogues podcast. Eric is a software engineer who has been working in programming since 1998. He works for Skipio and has been a Ruby on Rails developer for nine years. [00:03:15] Introduction to Penn Lv Penn is a software engineer for Redim. He works on the Ruby extension for Visual Studio Code. This extension deals with enhanced Ruby language support. [4:00] What goes into building a language plug-in/language setup for VS code, what do you have to do in order to make that work in the electron set-up? Usually when you try to build an extension for VS code it is just a NodeJS application. It has nothing to do with electrons; it is just a Node application. Everything is run in a separate process. Just about how to build an extension for VS code.The first category is formatters, or colorization. For both of those you can write plain JavaScript. There are two categories that are difficult: first is de-buggers. The VS code is a set of common UI for de-bugging. Which is language diagnostic. Write an extension and hook up language debug.The second is a language server to write language experience. VS code has a concept called language server protocol. Need to write an extension that follows protocol and tells the VS code about semantic information about your program. [00:06:25] – In order to get some of the nice features for the language you have a Ruby process running somewhere that you talk to in order to do some of the syntax checking? Yes, have to run that in a stand-alone process. It analyzes Ruby, but it can’t run that in Node JS process. [00:06:52] So what’s the goal? What makes the VS code team write a Ruby program? Ruby for VS Code was his ticket to the VS code team. Penn wrote for himself. It is his hobby project. [00:07:32] How many contributors are on the project? Who works with you? It is a community project. There are probably in between 50 to 100 contributors. [00:08:33] What’s your process of knowing what to allow and what not to allow to modify it? How do you know what PRS to accept and how do you stay on top of it? It is challenging to know what to allow. Penn claims to still not be a professional Rubyist. The first step is to run test cases. His way of reviewing code is by downloading the code. He looks into every piece of the code, learns it, and plays around it. If it works, he adds it. [00:10:23] How main PRs do you regularly get and how much time does it take to keep that maintained? Every weekend he goes through everything. He will have maybe five to six VS code extensions and check them thoroughly. [00:13:30] Indentation when blogging in VS code Two months ago he finished a feature dealing with auto indentation. The option for this is called editor.autoindent. Indentation gets adjusted automatically while you type. [00:18:10] Recommendations for plug-ins Charles recommends Emacs key bindings and Penn recommends the VS code extension Vim. [00:21:49] Do you do most of your work in TypeScript? Yes. At the very beginning they were using JavaScript. They were one of the first adopters of TypeScript and are now all TypeScript. [00:22:50] How much of a commitment would it be to add TypeScript to an existing project? The setup of TypeScript is not easy. If you are using a NodeJS application and they have TypeScript or typing support there is no specific thing that needs to be done to make it happen. In VS code there is a feature called automatic type acquisition. If creating a new project that uses an express package, which already has a typing file for it. VS code provides you with auto complete. Also don’t need to worry about typescript file if you are not going to create a library. Can do TypeScript gradually. [00:26:16] What do you see that’s left to do in the Ruby plug-in? A language server is the missing part. [00:27:35] Is that currently being done in other editors? No one does that right now. RubyMine has the best support currently. [00:28:13] Does your work translate to Atom as well? Atom has basic support for Ruby but it is just about colorization, indentation, and formatters. Everyone is waiting for a language server for Ruby. [00:31:38] If you have multiple languages or modes that you have to handle within the same file how do you set up VS code to handle that? Users cannot customize that. A language support extension has to handle that. [00:34:50] What is the font that you use in VS code? Source code pro [00:35:08] If people want to give this a try, what are the best ways to do that? First go to code.visualstudio.com. Then, install VS code. At the welcome page instructions will show you how to use the command palate, give you an interactive playground, and show the best place to get familiar with everything. The welcome page also has links: one is VS tips and tricks, which are shared by the community. There is a Youtube channel, which shows how to make VS Code productive. [00:36:32] If someone is working on an esoteric language and there is no support in there language in VS code yet. Where would you recommend they start? There is a docs session on the website that tells you how to write extensions for VS Code. Penn thinks if you build a debugger it is most difficult. There needs to be an understanding of real debuggers. Look at some of existing debugger, understand how they read source code, get an understanding from there. [00:38:22] Was there an extension that you used as a model while writing the Ruby extension for VS code that you recommend people look at? First looked at Python. Then switched to PHP, which is pretty similar to the Ruby extension. The protocol is very similar. That’s how he learned to make the Ruby extension. [00:40:58] If people want to contribute, is there a GitHub they can go look at? The organization name is Ruby IDE and GitHub name is vscode-ruby. There is a Wiki Page on how to setup and explain concepts behind everything. [00:41:22] How long did it take you to get the plug-in till it was publicly useable? A couple of hours. He was at his girlfriend’s parent’s house bored, got a job with VS code because of it. [00:44:40] What’s your biggest sales pitch for VS code? Compared to some of competitors, VS code is fast. The best part of VS code is that it is open source. Everything is on GitHub, including issues and user feedback. Users know every issue that is being worked out. All information is open to users. Can file an issue and they will respond immediately. [00:47:00] Are there plug-ins for other languages? There is an elm plug-in.Picks Dave:Azure’s cognitive services Brian:OmniFocus Eric: Hugo Netlify Code Sponsor Charles: Building stairs Upwork Penn: The Text Editor Sam by Rob Pike Ruby Weekly Special Guest: Penn Lv.

RR 320 Shrine and File Uploads with Janko Mahronic

July 25, 2017 43:31 42.27 MB Downloads: 0

RR 320: Shrine and File Uploads with Janko MahronicJerome Hardaway, Dave Kimura, and Charles Max Wood discuss Shrine with Janko Mahronic on this episode of Ruby Rogues. Janko is a Ruby developer. He is the creator of Shrine, which handles file uploads. Shrine tries to solve existing problems and gives many ways to upload files. It tries to accommodate and provide every option for whichever types of file you may be uploading. Tune in to find out more about Shrine!Questions [00:03:56] What does Shrine do that CarrierWave doesn’t do? One of the main reasons Shrine was created was to support background jobs. CarrierWave was missing support for background jobs. There is a CarrierWave extension for uploading in back-end but it doesn’t work reliably. It doesn’t delete files in the background and is missing the ability to have stable basic grounding capability. Shrine was created because of this reason. [00:06:06] Does Shrine have good support for Rails? Yes, you can hook up any backgrounding library. It has a designed interface in the way that Shrine can realize data for you. Shrine can call the background library directly. It can be an active job or custom background library. Inside the job, call Shine again to load all objects back up to finish the job. [00:07:40] Does Shrine work across multiple file types or is it geared towards images? Shrine works for any types of files. It is called the Ruby method. It can be implemented in any way you want. It has a functional style. You give the original file for the input and then move it to the processed files on the outputs. The processing can be anything: as long as you produce a file object on the output, you can call whatever you want to call, even an external service. [00:09:04] What’s the biggest file that you’ve tested Shrine with? Have you run into any kind of memory leaks? In Shrine nothing is done through memory, everything is done via streaming. When you’re streaming you don’t lose anything. It works for both small and large files. [00:11:48] Explain what goes into building a file upload system. What are the concerns? The framework handles the way the file is uploaded for you. Once the file is uploaded it’s stored into a temporary file. A gem handles most of the heavy work. Shrine makes a wrap around it. A lot of work goes into deciding which file attraction process needs to go in which order. It is important that you don’t upload in a data based transaction (?) 14:41 if processing lasts for longer time, whole time. There is a lot of time and decisions about what to do when. [00:15:10] Do you have any blog posts about a migration plan? Do you have a good way to switch to Shrine? Yes, Janko wrote migration guides. They include what codes you need to have to transition to Shrine. None of them involve re-uploading file because files are already there, they just need to be assigned ids. Then records can be updated with the file in a way that Shrine would be able to find them, just need to do record updates. [00:17:29] What do you think active storage will do to the future of Shrine? Janko may not be the best person to ask. He created Shrine for people who are not using Rails. It is difficult to tell at this point what active storage will do for the future of Shrine. [00:19:50] How is the community adoption implementation? What is your process with that? There is a Google group for people to ask questions. The setup doesn’t look that much different. Adoption is more that Janko tries to write a lot of blog post emphasizing some of the things that are better in Shrine. Most of the adoption started from the Go Rails screencast. When the author started to release videos. People were able to see what it looks like from start to finish. Go Rails is a great way to bring a library closer to a wide population. [00:23:26] What stack are you using? The preferred web framework is Roda and Sequel. [00:25:00] Is there anything out there that you feel that these uploading that you adding to Shrine? He feels like there is integration missing, which would be nice to have but he started working on he already knew what he wanted Shrine to support up front. Most of those features were added in the first and second release of Shrine. People won’t find on demand processing in Shrine because he decided not to add that. [00:29:54] Security Points of Shrine Uploads have to be authenticated. If a file is uploaded to a URL another person should not be able to review that file. If you want to authenticate files, you need to serve the files from your Rail set. [00:32:55] How much time have you spent doing Shrine? Two years. Picks: Dave: Wallabag: https://wallabag.org/en Charles: Stair Points Skil Saw: http://www.amazon.com/dp/B0731Q92BY/?tag=chamaxwoo-20 Janko: Event Machine: http://www.rubyeventmachine.com/ Links: GitHub: https://github.com/janko-m Twitter: https://twitter.com/jankomarohnic?lang=en Special Guest: Janko Mahronic.

RR 319 Machine Learning with Tyler Renelle

July 18, 2017 49:04 47.59 MB Downloads: 0

RR 319 Machine Learning with Tyler RenelleThis episode of the Ruby Rogues Panel features panelists Charles Max Wood and Dave Kimura. Tyler Renelle, who stops by to talk about machine learning, joins them as a guest. Tyler is the first guest to talk on Adventures in Angular, JavaScript Jabber, and Ruby Rogues. Tune in to find out more about Tyler and machine learning!What is machine learning?Machine learning is a different concept than programmers are used to.There are three phases in computing technology. First phase – building computers in the first place but it was hard coded onto the physical computing machinery Second phase – programmable computers. Where you can reprogram your computer to do anything. This is the phase where programmers fall. Third phase – machine learning falls under this phase. Machine learning is where the computer programs itself to do something. You give the computer a measurement of how it’s doing based on data and it trains itself and learns how to do the task. It is beginning to get a lot of press and become more popular. This is because it is becoming a lot more capable by way of deep learning.AI – Artificial Intelligence Machine learning is a sub field of artificial intelligence. AI is an overarching field of the computer simulating intelligence. Machine learning has become less and less a sub field over time and more a majority of AI. Now we can apply machine learning to vision, speech processing, planning, knowledge representation. This is fast taking over AI. People are beginning to consider the terms artificial intelligence and machine learning synonymous.Self-driving cars are a type of artificial intelligence. The connection between machine learning and self-driving cars is abstract. A fundamental thing in self-driving cars is machine learning. You program the car as to how to fix its mistakes. Another example is facial recognition. The program starts learning about a person’s face over time so it can make an educated guess as to if the person is who they say they are. Once statistics are added then your face can be off by a hair or a hat. Small variations won’t throw it off.How do we start solving the problems we want to be solved?Machine learning has been applied since the 1950s to a broad spectrum of problems. Have to have a little bit of domain knowledge and do some research.Machine Learning Vs ProgrammingMachine learning is any sort of fuzzy programming situation. Programming is when you do things specifically or statically.Why should you care to do machine learning?People should care because this is the next wave of computing. There is a theory that this will displace jobs. Self-driving cars will displace truck drivers, Uber drivers, and taxis. There are things like logo generators already. Machines are generating music, poetry, and website designs. We shouldn’t be afraid that we should keep an eye towards it.If a robot or computer program or AI were able to write its own code, at what point would it be able to overwrite or basically nullify the three laws of robotics?Nick Bostrom wrote the book Superintelligence, which had many big names in technology talking about the dangers of AI. Artificial intelligence has been talked about widely because of the possibility of evil killer robots in the Sci-Fi community. There are people who hold very potential concerns, such as job automation.Consciousness is a huge topic of debate right now on this topic. Is it an emergent property of the human brain? Is what we have with deep learning enough of a representation to achieve consciousness? It is suggested that AI may or may not achieve consciousness. The question is if it is able to achieve consciousness - will we be able to tell there isn’t a person there?If people want to dive into this where do they go? Machine Learning Guide Podcast: http://ocdevel.com/podcasts/machine-learning The Master Algorithm. https://www.amazon.com/Master-Algorithm-Ultimate-Learning-Machine/dp/0465065708 Andrew Ng course: coursera.org/machine/learning Machine Learning Language The main language used for machine learning is Python. This is not because of the language itself, but because of the tools built on top of it. The main framework is TensorFlow. Python in TensorFlow drops to C and executes code on the GPU for performing matrix algebra, which is essential for deep learning. You can always use C, C++, Java, and R. Data scientists mostly use R, while researchers use C and C++ so they can custom code their matrix algebra themselves.PicksDave:20-gallon Husky oil free air compressor: http://www.homedepot.com/p/Husky-20-Gal-Vertical-Oil-Free-Electric-Air-Compressor-0332013/207040335 Charles: Twitter T gem: https://rubygems.org/gems/t/versions/2.10.0> Ruby Dev Summit: www.rubydevsummit.com Rake: https://www.sitepoint.com/rake-automate-things/ Tyler: Machine Learning Guide Podcast: http://ocdevel.com/podcasts/machine-learning Philosophy of Mind: Brains, Consciousness, and Thinking Machines (The Great Courses): https://www.amazon.com/Great-Courses-Philosophy-Mind/dp/1598034243 Special Guest: Tyler Renelle.

RR 318 Metaprogramming with Jordan Hudgens

July 11, 2017 45:35 44.26 MB Downloads: 0

RR 318 Metaprogramming with Jordan HudgensToday's Ruby Rogues podcast features Metaprogramming with Jordan Hudgens. We have panelists Jerome Hardaway, Brian Hogan, Dave Kimura and Charles Max Wood. Tune in and learn more about metaprogramming![00:02:00] – Introduction to Jordan HudgensJordan is the Lead Instructor at Bottega. Bottega has locations in Salt Lake City, Utah and in Phoenix, Arizona. They’re a full-stack development code school.[00:02:55] – MetaprogrammingMetaprogramming was one of those scary concepts. At the code school, when the students learn about metaprogramming and how it works, you can tell that it’s definitely a pretty exciting thing. Its formal definition is it’s a code that writes code. It can dynamically, at run-time, render other methods available to the program.[00:04:10] – Use cases for metaprogrammingThe best use case that Jordan has ever seen is implemented in Rails and that’s code that can run database queries such as User.find_by_email. By passing the email, it will go and find the user with that particular email. Now, there is no method in active record or in the user model that is called find_by_email. That’s something that is created at run-time.Another one is something that Jordan has implemented and that’s a phone parser gem. It essentially parses and validates a phone number. It also has a country code lookup. With all the countries in the world, that would be very time-consuming. But within 8 lines of code, it could do what a hundred lines could do without metaprogramming.[00:06:50] – Performance implicationsJordan never had performance issues because the generation of methods is not something that’s incredibly memory intensive. You might run into that but it would be a poor choice to do in terms of readability.In Brian’s experience, it comes down to the type of metaprogramming you do. If you have a bunch of logic somewhere and method_missing, that’s going to be a performance bottleneck. And if you’re generating a bunch of methods when the application starts up, it might increase the start-up time of the application. But after that, the performance of the application seems to not have any fluctuation at all.There are 2 main types Jordan works with. First is method_missing. Method_missing could have a little bit of performance hit because of how Ruby works. The system is going to look at every single method. The second type is define_method. In define_method, you’re really just creating a large dynamic set of methods at runtime. When you start up the Rails server, it’s going to build all those methods but it’s not going to be when you’re calling it. Whereas in method_missing, it has a different type of lookup process. [00:11:55] – Method collisions on monkey patchingThat’s one of the reasons why monkey patching can have a bad reputation. You don’t know who else may be overriding those set of methods or opening up that class. Jordan’s personal approach is trying to separate things out as much as humanly possible. If there’s something that can be done in the lib directory, you can place that functionality inside of a separate module. And if you’re creating a gem, you have to be sensitive to other gems in that space or even the Rails core.[00:17:25] – How to be good citizens to other developersMetaprogramming has a lot of potentials to do great things but it also has a potential to cause a number of problems in the application. For Jordan’s students, what he usually does is walk them through some examples of metaprogramming where it can be done poorly. But then, he will follow it up with showing exactly when this is done right.He shows examples of poorly written classes that have dozen nearly identical methods. And then, he also shows how they could take all those methods, put the names in an array, and show how to leverage things like define_method to generate them. He also shows them how doing monkey patching can cause issues, how they can actually open up the string class and change one of the basic functionalities. Show that when they override that, that affects the entire rest of the application.[00:24:45] – Worst examples of metaprogrammingJordan ran into this hive of metaprogramming. When he opened up one of its classes, he had no idea what that class did. It was method_missing all over the place. Usually, there are 4 or 5 lines of code inside of that. It’s relatively straightforward and makes logical sense when you read it. This was nothing like that.They had multiple conditionals inside of the method_missing. One other hard thing about it is it does not have any test whatsoever. You need some test to make sure you’re capturing that functionality and to check if changes broke anything. You can’t also decipher what the inputs and outputs are.[00:28:35] – TestingFollow as much as real world examples. For example, in the phone parser gem, you can see some tests in there for that. You can also pass in the input that you plan to give. See if that matches the output. Jordan tells his students that respond_to_missing is as important to putting method_missing in there[00:35:25] – Resources to get started Paolo Perrotta’s book Metaprogramming Ruby is one of the standards for metaprogramming in Ruby. He also gave some fantastic examples. He created a story about a new developer who goes into a company and learns how to implement metaprogramming from senior devs. It’s very entertaining and it also covers all the different aspects to think of metaprogramming, when to use it and when it could be a very bad idea to use it.PicksJerome HardawayDon’t Know Metaprogramming in Ruby? By Gavin MorriceDave KimuraSherlock TV Series on BBCBrian Hogan iOS application: Workflow Overwatch Charles Max Wood Ruby Dev Summit Angular Dev Summit Focuster Jordan Hudgens Petergate Comprehensive Ruby Programming by Jordan Hudgens Twitter @jordanhudgens Instagram @jordanhudgens Blog crondose.com Special Guest: Jordan Hudgens.

RR 317: Computer Science at University and the Future of Programming with Dave Thomas

July 04, 2017 54:10 52.49 MB Downloads: 0

RR 317: Computer Science at University and the Future of Programming with Dave ThomasCharles Max Wood interviews Dave Thomas about the Computer Science course he's teaching at Southern Methodist University, Elixir, and the future of programming. Dave is the author and co-author of several well known programming books including Programming Ruby (also known as the PickAxe Book), Programming Elixir, and the Pragmatic Programmer. This episode starts out discussing Dave's course and Computer Science education, then veers into Elixir and the future of programming. Tune in to hear where Dave thinks the programming industry is heading next. [00:02:30] Dave's Computer Science Course at SMU  Dave's advanced computer science course covers topics like source control and testing. He's been wanting to get into formal Computer Science for a while, so when he pulled back on his work at the Pragmatic Bookshelf, he approached SMU about teaching a course. He selected Advanced Application Development since he could teach pretty much whatever he wanted. The class is made up of Seniors and Master's students whose coursework primarily focused on theory, but lacked in the basics of coding as it happens "in the wild." The plan was to go in and subvert them with Elixir. All of the assignments are coding assignments and must be submitted with a pull request. Chuck recalls taking a class similar to the one that Dave describes.  [00:06:22] Computer Science's focus on theory People who go into academia generally get their degrees and don't spend any time in the non-academic world. So, they don't know what's important when it comes down to nuts and bolts programming. This serves the students that stay in academia, but fails to teach the skills needed by their students. They also focus on the mathematical aspects of Computer Science and fail to show students that if they get excited about software, it can be fun. [00:09:55] This is a job where we make a difference Sometimes we do great harm. and sometimes great good. [00:10:23] How do you communicate all of these aspects of coding to the students? You can't just tell them. Mostly, Dave just tries to be enthusiastic. The teaching as it's done now is like a eulogy given by someone who doesn't know the person. Instead, Dave shows his passion for coding, tells stories, and shows how fun it is to write code. Imagine walking down the street and seeing the code you wrote being used. Dave's code was used on the satellite sent to see Haley's Comet. [00:13:04] Software as a tool for change A painter's medium is paint. Sculptors' stone. People in software don't "write" per se, but they still express themselves. This is a medium for programmers to get their thoughts out and interact with other people all over the world. We do a really crappy job explaining this to students.Dave is involved in after-school programs for software development as well. The ones that succeed don't approach software head on. They do fun and fancy stuff with Raspberry Pi or put a webserver up and then point out the concepts used in the programming. This approach is the future of development training. [00:16:01] Do you feel like CS programs aren't preparing students well? or have the wrong focus? Students come out well versed in the theoretics of programming and can write programs. These are good things to know. The assumption is that they'll pick up the rest in their first couple of jobs. They're not preparing people to walk straight into a job, but prepares them to learn the rest on the job.A 4 year program should be done after 2 years working in the real world. Most of the things not taught don't make sense until the student has the problem that it solves. For example, source control. This would give them context for the things that are important and bring the knowledge back to the  [00:20:26] What is in the curriculum? In a few years, these students will probably be writing a functional language like Elixir. They start out writing a hangman game using Elixir. Then they add Phoenix. Then they add a webserver. The focus is around the fact that what you care about is state and transformations. Then someone will realize that you're really just implementing objects. Dave is trying to teach how to think in decoupled services. [00:22:28] The future is functional? Elixir is a practical functional language and solves some problems that programmers have been trying to solve for a long time. Clojure has a strange relationship with the JVM. Elixir is not as cleanly functional as other languages, but it's functional enough. At the same time, you can write kick-ass web services as well. You also get the power of the Erlang virtual machine.Looking at Moore's Law, why aren't our processors getting faster? Over the last 10 years, they're not that much faster and the next generations are slower. But they have more cores. If you double the clock speed, you 8x the power dissipation. So, there's a limit to how fast you can go before you melt the processor. So, you run more cores at a lower speed. This vastly increases your processing power and lower your consumption.If you're writing processes that run on a core from start to finish, then it only uses 1/16th of the processor's power (if it has 16 cores.) So, we need a programming paradigm that supports parallelism. Concurrent programming is hard. Making data immutable makes it so you can eliminate common problems with threading and concurrency. Read-only (immutable) Object Oriented programming is effectively functional programming. We should see this change occur over the next 3-7 years.  [00:31:05] Most of the people at Ruby conferences are using Elixir When Dave goes to conferences about Ruby, he finds out that about 50% of speakers and many of the attendees are doing Elixir and/or experimenting heavily with it. Ruby and Rails changed the way we work, but in many ways the functional programming is changing things again. Scaling matters. We can't just throw hardware at it. You can drop your server bill by 10x or 100x.Elixir can get you there fast like Ruby, but it can also cut costs of running your server. [00:35:43] Is a computer science degree that way to get in? or should people get in through bootcamps or self learning? It depends on your learning style. You do not want to get into Computer Science because your parents wanted you to have a good job. The students that get into it because of family pressure don't love what they're doing and are kind of stuck. Programming is hard enough that if you don't enjoy it you won't excel.In any case, do what works for you. You don't need to do a 4 year course of study to be a successful programmer. Quite a few good programmers Dave knows never took a CS course. If you do a course, find out that if the teachers are doing or have done the kinds of things you want to do. The better IT shops also tend to recognize that it's the person, not what they know, that really matters. So go to them and ask to apprentice with their good programmers at a lower salary. Then if you're contributing, ask for a competitive salary. [00:41:03] What do we as programmers assume about CS degrees that we need to change? Don't let the HR department do the hiring. Making them happy is what gets you bogus job requirements. Instead, put together some requirements that hint that enthusiasm trumps everything else. Or, have criteria like "must be able to fog a mirror" and pick for enthusiasm. Or, go to local maker groups or users groups or community colleges where the kinds of people you want are, and talk to people. Then network into the people you want. Ignore the qualifications and pay attention to the qualities.One of the best people Dave hired was an alcoholic chemistry teacher, but he could get into a project. [00:45:00] You don't want a career. Spend the next 5-10 years job hopping. You want experience, not a career. You have no idea what you want to do right now, so try lots of things. Then if it's not working move on.Picks Charles: Ubuntu Bash on Windows VMWare Workstation: https://www.vmware.com/products/workstation.html Dave: Have something in your life that is relatively simple and relatively mechanical that you can fix if something goes wrong. (Dave tells us about his tractor.)Special Guest: Dave Thomas.

RR 316 Learning Rails 5 with Mark Locklear

June 27, 2017 1:10:54 68.56 MB Downloads: 0

RR 316 Learning Rails 5 with Mark LocklearOn today’s episode, we have Learning Rails 5 with Mark Locklear. Mark works for Extension.org. The discussion ranges from the introduction of Learning Rails 5 to the strategies that most successful students have for learning Rails. Stay tuned![00:01:30] – Introduction to Mark LocklearMark Locklear works for Extension.org, a USDA-funded or government-funded organization. He serves the Cooperative Extension Service but a lot of people know about 4-H Youth Group. They got a handful of websites that they maintain that are mostly Ruby on Rails-based.He has been with Extension.org for about 3 years. He is also a staff at a community college mostly doing Rails and IT things. He is also an adjunct instructor at the same community college. He was mostly doing quality assurance and testing work but moved into development work in the last 7-8 years.Questions for Mark Locklear[00:03:00] – You authored Learning Rails 5? It was an actually an update on an existing book – Learning Rails 3. Mark is an adjunct instructor and used that book. He contacted the developers or the original authors in O’Reilly so he can update the book. He updated a lot of the syntax and rewrote a couple of chapters. He also wrote the authentication chapter from scratch.[00:04:15] – What’s unique about your book?For Mark, there are all kinds of learners out there. There’s nothing necessarily unique about this book. It approaches Rails from a standpoint of having really no development skill at all. The only assumption would be that reader knows some HTML and basic things like for loops and conditional statements.[00:05:30] – Has Rails gotten more complicated?That was one of the challenges with this book. The original version of the book didn’t have any API stuff, any Action Cables, or anything like that. But now, we’re looking on adding chapters on those things. Mark doesn’t think Rails is hard to learn now. It’s been pretty backward compatible over the years. It looks very much like it did 5 or 10 years ago.Dave thinks Rails started to standardize a lot of things and with Convention over Configuration, a lot of it is taking care of it for you. The also added a lot of new features like Active Job (Rails 4), Action Cable (Rails 5), Webpack (Rails 5.1). He think that when someone gets accustomed to it, it’s almost second nature. Thanks to Convention over Configuration and the support for the community.According to DHH, Rails is not for beginners. It is a toolkit for professional web developers to get stuff done. But Brian disagrees that it’s not for beginners. It’s not so much that it’s harder to learn but it’s just a little harder to get started with. There’s just lots of different ways you can do in a Rails application by using RSpec, Cucumber, etc.[00:12:20] - What are the core fundamental things to know in order to write Rails apps?Mark spends a week on testing in his class. He focuses more on the Model View Controller paradigm. He also used RSpec and the basics of CRUD. Those things are transferable across whatever framework that they choose to work in. He also want to hit testing, sessions in cookies and user authentication.[00:18:30] - Is there an approach for people to enhance their experience as they learn Rails?Jerome believes in the “just keep it simple” methodology. When it comes to Rails, just learn Rails. Just focus on CRUD apps. Focus on the entirety of the framework, and not only on Rails, focus more on Ruby.Another suggestion from Brian is to start cracking open the Ruby source code, Rails source code and see how things work under the hood. Look at things and see if you can reproduce them or write your own implementations as you learn.[00:24:30] – What are the strategies of your most successful students that you’ve had for learning Rails?In Mark’s class, they have final projects with very strict requirements, basically going back and incorporating everything that they’ve learned. The app has to have a user authentication. It has to have sessions and cookies. And students who are most successful want to solve some problems and have the passion.One of the things that Brian have always seen that separates people who are high performers from the rest is that they’re doing a lot of practice. Spend a lot of time practicing and building apps.Dave encourages the listeners to work on some personal projects that they are passionate about. Deal with someone else and get some experience with some peer programming. Try to see what it’s like working with other developers on the same application, you’ll find that your codes much cleaner because you have to take into account multiple users working around the same code set.Jerome suggests to find a mentor, someone who’s willing to spend time to help with your programs. The students who are talking to their mentors every week usually come to be the strongest. And mentoring is a rewarding two-way street.[00:40:05] – Are there any other aspects of learning or teaching Rails that we should dive into?Mark says you should be uncomfortable every once in a while in implementing new technology. It puts you in the same mindset as your students becomes sometimes it’s becoming incredible overwhelming. And when teaching, Brian does not start with complex examples.  He starts with simple ones.A faculty mentor has to observe Brian in his teaching. The mentor will say, “Just a reminder. You are the guide on the side, not the sage of the stage. You’re not there to tell them everything. You’re not there to make everyone think that you’re the coolest person up there. It’s your job to guide someone to the solution.”[00:49:25] – If I’m a Rails 3 developer, how do I learn Rails 5?            Mark thinks that the approach is probably the same if you’re doing Rails 3 to Rails 4. The questions you will start asking yourself is, “Okay, what areas do you want to dig deeper? Do I have to use Active Job or something like that? What are my mailers? Are there additions to the framework?”Whenever Rails releases a new version, Dave reads the blog which highlights the new features that were added in. Pinpoint those features, do a little bit of independent research and think how you could incorporate them into your application. Use them as guiding tools to upgrade your older Rails application to a more current version. [00:52:15] – Two Writing Assignments for New Programmers Mark wrote a Medium article entitled “Two Writing Assignments for New Programmers.” In his class, they have two writing assignments. One of it is on diversity and technology. They also use Moodle as the learning management system where they can post questions.He got some push back from students but his explanation was that, part of being a developer is to be an effective communicator. Brian agreed and said, “Your job as a software developer is 20% coding, 80% dealing with people, their problems and their requests.” You have emails to read. You have emails to write. Brian always asks, “What are the most important skills you want our students to have?” The top 3 are always soft skills like communication, work ethics, etc.Mark adds that if you can’t do writing, if you can’t show up to work on time and communicate with your colleagues, then, none of your technical skills matter. However, if you can’t past the technical hurdle, you’ll never get a chance to use your soft skills. Dave also adds that if he can’t get out of these people what they’re envisioning, then, they’re going nto develop the wrong things.PicksDave KimuraGruvboxBrian Hogan Keys to Great Writing by Stephen Wilbers Rails Jerome Hardaway Rails 5.1 Loves Javascript (Medium article) Hackerrank Charles Max Wood Castle Clash railsmentors.org Mark Locklear Grammarly History of Pi by Petr Beckmann Sierra Nevada’s West Coast Stout Github @marklocklear Site locklear.me Special Guest: Mark Locklear.

RR 315 Offshoring and Latin American Developers with David Hemmat

June 20, 2017 49:25 47.94 MB Downloads: 0

Offshoring and Latin American Developers - David HemmatFor this episode of Ruby Rogues we have Jason Swett and Brian Hogan for our panel along with Charles Max Wood and a special guest, David Hemmat from BlueCoding.com. David and the Blue Coding team work to connect developer talent to businesses in need through a thorough process of vetting as well as a database collection of potential developers. Check out this episode to learn more!How did you get started?1:34David talks about going to school in the Dominican Republic worked locally, but later found work with US companies. He also set up a friend with a US job and they realized that there may be a demand as someone to bridge the gap. Developers did not have the access or a way to reach opportunities aboard so he started BlueCoding.com.About Blue Coding2:32BlueCoding.com has clients in the US and Canada. They focus on Latin America due to having close timezones in relation to the majority of companies that would be looking for developers. Also, Blue Coding helps in regard to bridging the cultural gap. Latin American work culture can be different that US or Canadian culture. David talks about how it’s much of a communication difference. Developers sometimes will agree to jobs they are unable to do and are timid to communicate and often just disappear. Despite this, many Latin American companies spawned from United States companies and will tend to have a similar working environment and culture as US companies.The General Experience With Offshore Hiring4:17David and the panel chat about their offshore hiring experiences. David expresses that there is sometimes an issue of many developers taking on work, and then seemingly disappearing. Often times coming back with excuses or in some cases actually over committing to work and just failing to communicate properly from the start. In some cases, like with countries like Venezuela, has a less reliable environment for the developers with things like power outages.“Not All Good Developers Are Good Freelancers.”6:18Freelancers tend to need a different skillset. Extra communication and need tools in place like time tracking and daily reports , etc. Companies that hire freelancers or offshore hiring in general need to have tools setup as well. David expresses that the best developers often are the ones that already have full time jobs. Blue Coding tries to help those developers find a better opportunity and has structured systems to create a workflow that works for both parties. David talks about having those tools in place for the developer including the time tracking and daily reports.The Companies Tools.8:33Blue Coding will also check with the client companies to make sure they have tools as well to help both parties have a smooth workflow. Project management software for the developer to see what they should work on next.Rates9:04Rates vary between $30 and $45 an hour. David tries to stay away from junior developers, looking for developers with 3–4 years working experience. Some companies pay $30 to $60. Latin American countries generally see a starting rate of $30 an hour. Asian countries can start as low as $10 an hour, but in rare cases. Some developers on the opposite side of things charge $100 an hour.Getting Offshore Developers10:47Most people start with upwork.com or Freelancer.com or something like that. Lower overhead but very limited vetting. Buyout fees are very high as well on these sites. There are companies similar to Blue Coding that are staffing companies that exist. Also, direct networking. Networking directly is extremely efficient. If you have a bad work history, networking also comes into play. David talks about their biggest source for developers are other developers, reaching out to find good hires by networking through the community.Dealing with ‘Boom and Bust.’14:19Freelancers tend to run into boom and bust cycles, loads of work followed by slow spells. David tries to avoid this by hiring carefully and picking clients carefully. Looking for long term projects, either be a continuous flow of projects or one large projects. With this focus on long term relationship building, BlueCoding is able to have much lower rates. Other companies usually don’t have safety from downtime, offering internal work to make up for it.Finding Companies that Hire Offshore16:08Most countries have job boards to help. Also, technology specific job boards. But it’s hard to compete there. US companies won’t hire offshore developers for the same rates and the same skills. You have to be really good. David pushes developers to have plenty of experience.How to Get Noticed?17:46Companies can be prejudice, but isn’t seen too often. Becoming a top level talent is key. Being average is harder. As an average or novice in an area with no community, finding online communities, Facebook groups, LinkedIn communities, working on open source projects, and going to events can help.Working remotely and being good at it [22:02] It’s a two part effort. Companies can have tools to make things easier, but as a developer, you can request them. Communicate all online. All of the office talk should be online via Slack or some other documented system. Code reviews and Peer programming helps remote developers feel like a part of the team.Onshoring vs Offshoring24:28Some companies are hiring remote developers from the US. Why would someone want to hire from outside the country? Ultimately it comes down to finding a developer that fits in with what a company needs as well as matches the budget. Cost of living can change the rates for developers as well as where the company is located. David expresses that he wants to find really good developers, even if it means reaching out to Brazil or other parts of Latin America.Medical, Taxes, and Benefits24:43Each country has different laws. For example Dominican Republic has a law that states if you contract someone for over 3 months, they are considered employees and require benefits. Some countries allow Freelancers to work long term. Health care varies between companies.The Finical and Risks.32:14Freelancers and hourly workers tend to have less working time, spending some time each day to chase down work as well as managing time. Developers in general should notice that projects in general can have budget cuts and even end prematurely. In general a developer working as an employee will need to account for the benefits and extras thrown in when considering their rates.The Companies34:02What kind of companies are looking for this as a solution to their staffing problem? Most companies are smaller companies, 1 to 20 employees with a lot of long term development work. Generally three sectors, non tech companies that need tech work, digital agencies, and tech startups or established companies that already have a software product that needs to be maintained.How to find the Companies?36:30It’s a work in progress. References are vital, David talks about how vetting for developers ends with a very happy client that gives references. Also they spend a lot of time networking, conferences, meeting people online as well as cold calling. David mentions that it’s hard to express the quality of their service through email.Getting Started with Blue Coding?37:22For DevelopersGo to BlueCoding.com and find the link that says “join the team if you’re a developer” and you can connect that way. Just reach out to them and they will set up a conversation with you and see if there is a good fit. Then once a project comes in they will set you up with the vetting process.For CompaniesBlueCoding will want to set up a call with you. Reach out to them and setup a call. They will work through if you need a developer and what that developer looks like in regard to technical skills, personal skills, and general ability.Then the developers and clients have a meeting to make sure everyone is comfortable. Being comfortable is the most important part for this connection to end in a long term relationship.PicksJasonSamsungnite Columbian Leather Flat Over The Top Laptop BagBrianNew MacBook with Touch barCharles My Ruby Story Podcasts Online Summit Format Ruby Dev Summit Ruby Rogues Parlay on Slack David Micro Conf. Macbook Air One Minute ManagerLinks to Keep up with David His Medium BlueCoding.com Email him Special Guest: David Hemmat.

RR 314 DynamoDB on Rails with Chandan Jhunjhunwal

June 13, 2017 46:47 45.4 MB Downloads: 0

RR 314 DynamoDB on Rails with Chandan JhunjhunwalToday's Ruby Rogues podcast features DynamoDB on Rails with Chandan Jhunjhunwal. DynamoDB is a NoSQL database that helps your team solve managing infrastructure issues like setup, costing and maintenance. Take some time to listen and know more about DynamoDB![00:02:18] – Introduction to Chandan JhunjhunwalChanchan Jhunjhunwal is an owner of Faodail Technology, which is currently helping many startups for their web and mobile applications. They started from IBM, designing and building scalable mobile and web applications. He mainly worked on C++ and DB2 and later on, worked primarily on Ruby on Rails.Questions for Chandan[00:04:05] – Introduction to DynamoDB on RailsI would say that majority of developers work in PostgreSQL, MySQL or other relational database. On the other hand, Ruby on Rails is picked up by many startup or founder for actually implementing their ideas and bringing them to scalable products. I would say that more than 80% of developers are mostly working on RDBMS databases. For the remaining 20%, their applications need to capture large amounts of data so they go with NoSQL.In NoSQL, there are plenty of options like MongoDB, Cassandra, or DynamoDB. When using AWS, there’s no provided MongoDB. With Cassandra, it requires a lot of infrastructure setup and costing, and you’ll have to have a team which is kind of maintaining it on a day to day basis. So DynamoDB takes all those pain out of your team and you no longer have to focus on managing the infrastructure.[00:07:35] – Is it a good idea to start with a regular SQL database and then, switch to NoSQL database or is it better to start with NoSQL database from day one?It depends on a couple of factors. For many of the applications, they start with RDBMS because they just want to get some access, and probably switch to something like NoSQL. First, you have to watch the incoming data and their capacity. Second is familiarity because most of the developers are more familiar with RDBMS and SQL queries.For example, you have a feed application, or a messaging application, where you know that there will be a lot of chat happening and you’d expect that you’re going to take a huge number of users. You can accommodate that in RDBMS but I would probably not recommend that.[00:09:30] Can I use DynamoDB as a caching mechanism or cache store?I would not say replacement, exactly. On those segments where I could see that there’s a lot of activity happening, I plugged in DynamoDB. The remaining part of the application was handled by RDBMS. In many applications, what I’ve seen is that they have used a combination of them.[00:13:05] How do you decide if you actually want to use DynamoDB for all the data in your system?The place where we say that this application is going to be picked from day one is where the number of data which will be coming will increase. It also depends on the development team that you have if they’re familiar with DynamoDB, or any other NoSQL databases.[00:14:50] Is DynamoDB has document store or do you have of columns?You can say key value pairs or document stores. The terminologies are just different and the way you design the database. In DynamoDB, you have something like hash key and range key.[00:22:10] – Why don’t we store images in the database?I would say that there are better places to store the, which is faster and cheaper. There are better storage like CDN or S3.Another good reason is that if you want to fetch a proper size of image based on the user devices screen, resizing and all of the stuff inside the database could be cumbersome. You’ll repeat adding different columns where we’ll be storing those different sizes of images.[00:24:40] – Is there a potentially good reason for NoSQL database as your default go-to data store?If you have some data, which is complete unstructured, if you try to store back in RDBMS, it will be a pain. If we talk about the kind of media which gets generated in our day to day life, if you try to model them in a relational database, it will be pretty painful and eventually, there will be a time when you don’t know how to create correlations.[00:28:30] – Horizontally scalable versus vertically scalableIn vertically scalable, when someone posts, we keep adding that at the same table. As we add data to the table, the database size increases (number of rows increases). But in horizontally scalable, we keep different boxes connected via Hadoop or Elastic MapReduce which will process the added data.[00:30:20] – What does it take to hook up a DynamoDB instance to a Rails app?We could integrate DynamoDB by using the SDK provided by AWS. I provided steps which I’ve outlined in the blog - how to create different kinds of tables, how to create those indexes, how to create the throughput, etc. We could configure AWS SDK, add the required credential, then we could create different kinds of tables.[00:33:00] – In terms of scaling, what is the limit for something like PostgreSQL or MySQL, versus DynamoDB?There’s no scalability limit in DynamoDB, or any other NoSQL solutions.PicksDavid Kimura            CorgUIJason Swett     Database Design for Mere MortalsCharles Maxwood VMWare Workstation GoCD Ruby Rogues Parley Ruby Dev Summit Chandan Jhunjhunwal      Twitter @ChandanJ chandan@faodailtechnology.com Special Guest: Chandan Jhunjhunwal.