Talk Python To Me


  • Episode 96 -  Exploring Awesome Python
    • listened to this on 2017.01.30
    • http://www.fullstackpython.com/
      • This is a reference he wrote for newer developers
    • https://awesome-python.com/
      • 11:50 - They go through some entries to highlight which aren't as widely known but have the potential to become really important.
      • 13:30 - Six - a bridge from Python 2 to 3 and allows you to support both at once.
      • 17:50 - Bokeh - Interactive visualizations in Python, like D3 or Processing.
      • 20:30 - MkDocs - A static site generator
        • 21:50 - A SSG is just files that can be served up by a web server. It's a generator b/c you write your content in markdown, and then there are templates you can use, and the SSG combines the markdown files with the templates to generate HTML files.
        • 23:10 - He deploys via a CDN. He hosts on GitHub Pages or Amazon S3, and he uses CloudFlare as the CDN.
        • 25:30 - Accepting Markdown from users is the best way to get rich text
      • 27:45 - Wagtail - A Django CMS which makes various operations easy which would be hard.
        • 29:30 - There's a trade-off with CMSs, where they can be slower or confusing to use.
        • Wagtail is powering Twilio's docs website.
      • 31:20 - python-patterns - A collection of design patterns implemented in Python.
        • Be careful about using these patterns if you're not familiar with Python, because some of them aren't idiomatic Python.
        • The interviewer says to use patterns in moderation, the interviewee says that it's powerful to be aware of the patterns in case something
      • 34:30 - Authomatic - OAuth / Authentication
        • Authomatic is great because it has examples in different web frameworks (Django, Flask, Pyramid, Google App Engine), whereas the other OAuth options don't have examples.
      • 37:40 - Beaker - A way to cache pickled versions of things.
        • It can go in a bunch of different places
        • It has a SQLAlchemy plugin
      • 40:10 - Passlib - It takes all of the best practices and puts them into two functions, so it's super easy to use.
      • 43:50 - piptools - A way to keep your requirements.txt fresh and to figure out what versions of certain dependencies you're using, if they were never recorded in the requirements.txt.
        • PyUp.io - You point this at your GitHub repo, and if there are security releases for libraries you have as dependencies, it'll submit a PR to update your dependencies.
      • 48:30 - Q to the interviewee: What editor do you use? A: vim for Python, XCode for Swift, IntelliJ (Ultimate Edition) for Java. I use the vim mode for whatever editor I'm in.
      • 49:05 - Q: Favorite PyPi package? A: Shout-out to Pelican, the static site generator I'm using for FullStackPython
  • Episode 86 - Python at StackOverflow
    • listened to this on 2017.01.31
    • He's been programming since he was young, his father was an engineer.
    • He's been using Python since '99.
    • The first time he used Python he beat his time estimate for his assignment, which had never happened to him before.
    • 4:20 - Mercurial is built with Python.
    • 4:30 - At Facebook, everything is turned up to 11, the scale is insane. We couldn't make git scale, but Mercurial did scale. It's highly tweakable.
    • 5:30 - At Facebook they try to put everything into one repo.
    • 6:50 - He explains what StackOverflow is. It was born from frustration with forums, where useful answers would get buried under comments, so the answer to you question might be on page 15.
    • 8:50 - They discuss his reputation and how he finds SO addictive; he's found he learned a lot from answering questions.
    • 10:40 - What makes a good question? A: Questions where there's a clear right answer. Show context. Show examples. Narrow down your issues to individual problems. Research the question to try to avoid duplicate issues.
    • 16:00 - What are some noteworthy questions?
      • 'wat' questions - Questions that touch on issues he's not familiar with, or where there's some unexpected behavior (which usually indicates a bug in the language).
    • They discuss the first interesting question, in which older versions of Python had a bug that was recently fixed, where, for certain inputs, the set() and {} would return different results for the same input.
    • 25:10 - Second question of interest: What is a metaclass in Python?  The question isn't the interesting bit, it's the second answer, which is an incredibly useful explanation.
    • 28:10 - 3rd question of interest - Both the Q and A were written by the same person, in response to seeing the same kind of question over and over in the chat.
    • 30:10 - The answer was made a 'community wiki', where the original answerer doesn't get points.
      • 30:45 - It's also 'protected'. This is used to protect Qs/As that are likely to attract unhelpful contributions from new users.
    • ~31:00 - Martijn explains how people gain privileges as their reputation increases.
    • 34:20 - 4th question of interest - He learned 1) a lot about how scoping works and 2) how the developers of Python see it as a living language and will change it if it makes sense to.
      • He goes into detail about how list comprehensions were originally conceived as being like a for-loop, where the variables in them are in the same scope as their containing function, but after creating generators they realized that list comprehensions were more like generators, and so in Python 3 they updated them to have their own scope, and that had an interaction with the class scope, so that now a list comprehension defined in a class scope can't access other variables from that class scope, because it now has its own (function-) scope.
    • 39:30 - Are the Python core developers paying attention to Stack Overflow?
      • A: It's one of the inputs.
    • 42:10 - 5th question of interest - "Why is Python 3.x's super() magic?"
      • He explains what 'super()' does.
      • He explains why, in Python 2, super() required passing in the name of the class: it's to help Python figure out where in the hierarchy of classes to look for the parent class.
      • The problem with the Python2 way was that people were passing in 'type(self)' for the first argument, which would break if it was called from a subclass. It also violated the DRY principle.
      • The way it works in Python 3 is that the name of the class is saved in a closure.
    • 49:40 - He learned how the 'dis' module works purely from answering questions on SO.
    • 49:50 - 6th question of interest - Why is "1000000000000000 in range(1000000000000001)" so fast in Python 3?
      • A: range() in Python 3 is an object that contains a function for handling 'X in range(asdf)' queries by doing a calculation instead of creating all of the numbers.
    • 52:30 - 7th question of interest - Why is the order in dictionaries and sets arbitrary?
      • A: It isn't arbitrary; it depends on the history of insertions and deletions, because when there's a collision in the underlying hash table, a new entry is assigned to the 'next' slot.
    • 56:10 - Q: Why do you contribute to SO? It seems like a lot of work.
      • A: The best way to become an expert in something is to find a source a questions and start trying to answer them.
    • 58:30 - Q: If I want to dedicate myself to SO, would people start contacting me for jobs?
      • A: Some have used my SO presence to contact me, but it's not the norm. I do think it's helpful for employers to be able to look at your SO answers. If I saw someone with too-high a reputation, I would ask myself if they're spending too much time there.
    • 62:10 - Q: Is SO unfriendly to newcomers?
      • A: There's often a mismatch of expectations. If you don't provide enough information, or don't show evidence of having researched the question, you may not get a good response. SO isn't a helpdesk; it isn't for helping you finish your homework.
    • 66:20 - Q: Favorite PyPi package? A: FTFY - A library for fixing text encoding errors; it's very helpful for dealing with UTF-8 / Latin-1 issues.
    • 67:18 - Q: Favorite editor? A: From the terminal, vim, otherwise Sublime Text 3.
  • Episode 39 - Getting your first dev job as a Python developer (part 1)
    • 2:15 - Part 1 will be talking to people who just got a job, Part 2 will be talking to people who do hiring.
    • 3:00 - He says he has a job offer in his inbox right now for $115k + bonuses
    • 3:23 - It's hard for people to get started.
    • 4:20 - He's going to recommend two books that changed his thinking.
      • Soft Skills: The software developer's life manual
      • The End of Jobs: Money, Meaning and Freedom Without the 9-to-5
        • He says this book may not be as helpful when you're first getting started.
    • 6:45 - He switches to interviewing the people.
    • 7:10 - Person 1 - Jess Unrein
      • She's been working for about a year.
      • She had a few side projects she could use as code samples.
      • Her first assignment was to write unit tests.
    • 8:30 - Person 2 - Eric Chou
      • Working at Microsoft Azure.
    • 9:00 - Person 3 - Jonathan Sundqvist
      • Got a job a year ago as a support engineer, but transitioned to a role as a backend engineer.
    • 9:45 - Person 4 - Justin Beall
      • Justin has been working as a Java developer for ten years but is new to Python.
      • "The ability to learn is one of the important qualities any candidate can showcase."
      • One of the best pieces of advice I got was, "It's a sink-or-swim world, and you're always sinking."
    • 11:30 - Person 5 - Helio Correia
      • He's in a small town in Portugal, so he's a good example of trying to find something while being remote.
      • He also doesn't have much experience.
    • 14:10 - Person 6 - Matt Yancey
      • Data scientist(?) at First Analytics.
    • 15:30 - Q: What did they do to prepare for this job?
      • 16:00 - Where I work, we don't hire junior developers. We don't care about degrees; we just want to know what you've done.
      • 16:50 - Jess - DevBootcamp; I did some self-study but decided it wasn't as efficient. I didn't want to spend another four years in school.
      • 18:10 - Eric - He started taking in classes in college, started a blog regarding programming. He was using programming on a daily basis.
      • 19:10 - Jonathan - He took CS101 on Udacity, then started studying on his own for 1.5 years. He went to a bootcamp called 'Hackership'. Having coaches and fellow learners around him really helped him.
      • 20:45 - Justin - The most important thing is to be able to demonstrate competency. You should review big-O notation, data structures, algorithms. SOLID, OO principles, be able to solve Fizzbuzz, be able to reverse a string.
      • 21:55 - Helio - He started off with the company doing a single project, then as a freelancer, and then after a few months was brought on-board full time.
      • 24:30 - Matt - He got a Master's degree that gave him a lot of exposure to programming. He recommends Kaggle as a way to get real-world experience.
    • 27:45 - Q: What part of your experience from your preparation was the most important?
      • Jess - During the 8-day 'hell week' at DBC I learned how to talk about the decisions you make as a programmer
      • Eric - The blog showed my dedication to coding / helped me stand out, and also helped me track my effort.
      • Jonathan - It was the immersive experience; it gave me a lot of confidence, and gave me something I could show potential employers.
      • Justin - I think the thing that makes the biggest difference in an interview is demonstrating that this is a lifestyle choice for you, it's not just 9 to 5 job. When I go home, I read about programming, when I work I program, when I dream I program, it's one of those things where this is my niche and I want to be an expert in it. Prove to people that that is true for you also. If you feel like you are weak on something, read about it. Most recently I was told that I don't know what I am doing as far as being a manager, so I've been listening to audio books at work. Most recently I've listened to "The Leadership Secrets of Attila the Hun", "The Lean Startup", if there is something you feel like you are weak in- master it and don't let anybody tell you that they are better than you.
      • Helio - you have to be an eternal student
      • Matt - I would probably say it was those experiences that were either creative or kind of outside the norm or involved in new technology. Basically anything that really kind of distinguished me from the different candidates they were also interviewing.
    • 34:45 - Q: Why do you think they chose you over the other applicants?
      • Jess - 1) a strong code sample that I felt proud of and I was able to defend for it clearly. 2) a hugely important factor in finding my first Python job was to culture fit in my company.
      • Eric - I think a diverse background really helped, I guess they could say, "Hey you know, if this software engineering thing doesn't work out, we can always use him as a network engineer."
      • Jonathan - I think the other experience I had had before definitely mattered in getting me chosen as an applicant. I had done some writing professionally so I could give a hand with that in marketing when it was needed.
      • Justin - I was able to easily demonstrate my competency. I have a GitHub repository with almost a dozen or so different projects ranging from Javascript and Angular to web services to incription. I also like to blog so I have many blog posts on my brother's site where I just basically talk about the technologies that I picked up, what I did to master it and how to apply it. Finally, I believe they picked me because their bar was not as high as it should have been.
    • 40:06 - Q: What advice do you have for others to help them get started?
      • Jess - I wish I had done more research and experimentation prior to starting my first Python job, since I wrote my first line of Python on my first day at the job. Being opinionated shows that you are passionate and considered about your craft. Join local user groups. I really regret that I didn't do as much networking as I should have prior to my job search.
      • Eric - I would really recommend to get out there and socialize with other developers. I also think that it's really helpful to actually have a concrete project that you have made yourself and that you can talk about.
      • Justin - If you are stuck in a place without good mentors, without competent business people, you will be wasting your time. I know especially when you have your first job anything seems acceptable, but make sure you land the right one, you don't want to be known as a job hopper so plan on staying for at least two years.
      • Matt - First, be familiar with the technology that is out there. The second part of advice is that I would say to have like an online portfolio.  Having a well designed website is kind of the same going to the interview in a nice suit.