In this episode of Pop Tech TL;DR, we'll talk about my experience at PyCon APAC 2019! It was an awesome event and I learned a lot. I could write a very lengthy posted about the event but instead I'll talk about the more important things that I learned in the event.
1. Acing Technical Interviews
Jacob Kaplan-Moss, Co-Creator of Django, talked about his experiences on technical interviews as a consultant and an interviewer. These are the top things that he says can help with acing technical interviews:
- Ask Questions
- Take Notes
He talked about different kinds of interview methods and says that these are some of the best ones:
- Behavioral Interviews - predicts what the interviewee would do in a situation.
- Take-Home - building a project without the time constraint will show the abilities of the interviewee better.
- Lab Exercise - completing an exercise using the environment that they would be working on at work will show how adept the interviewee is with those tasks and that environment.
He also talked about methods that we should avoid like:
- Hypothetical Interviews - Asking an interviewee what they would do in a situation they have not experienced yet will not yield conclusive answers. It would only tell you what they think they would do in a situation, not what they would actually do. Most of the time, these differ greatly.
- Whiteboarding - When building projects and creating solutions in the real world, you'll have access to a computer, internet and a search engine.
- "Real World" Project - Making an applicant create an app or feature that you would actually use in the company is just plain unethical.
2. Model Explainability
Suzy Lee talked about why the explainability of predictive models are important and how we can explain models using the following tools:
3. Jupyter Tools
Dmitry Trofimov of JetBrains talked about Jupyter Notebooks, being an implementation of literate programming, and tools that help augment it to become a better tool for data scientists and developers.
Here are the tools he talked about:
- JupyterLab - JupyterLab is like Jupyter Notebooks++. You can open multiple notebooks at once & switch between them through tabs, open text editors, open a command-line, and more -- all within the confines of JupyterLab.
- VS Code + Python Extension - VS Code, along with the Python extension which you can easily install from within VS Code itself, allows you to convert Jupyter Notebooks to Python code and vice versa.
- Jupytext - Jupytext allows you to treat your Jupyter Notebooks as if they were just text. The notebook and the text representation are linked so if you edit the text representation in your editor, the notebook changes, and vice versa.
- Atom + Hydrogen - Hydrogen is an Atom plugin which allows you to dynamically see the results of your Python/Jupyter code directly in the code editor itself. Even the graphs show up inside the editor as you make your changes! Awesome!
- PyCharm - Of course, being one of the lead developers of PyCharm at JetBrains, he also talked about the PyCharm Scientific Mode, which allows dynamic plotting and graphs when dealing with Python/Jupyter code and more!
- nbviewer - nbviewer is basically how it sounds like: a notebook viewer. This tool is a hosted service by the Jupyter team, but can also be self-hosted. It allows you to display your Jupyter notebook online as a static website, accessible to anyone with internet access.
- nbdime - Jupyter Notebook diffing can be very messy because directly diffing the contents of the
.ipynbfile would result in a horrible mess of sometimes incomprehensible content. nbdime makes diffing and merging of Jupyter Notebooks simpler by showing the differences of notebooks by how the code actually changed from the user's perspective, not the actual contents of
4. Property-Based Testing
This was one of the most eye-opening concepts I learned in PyCon. Property-based Testing allows you to capture bugs and edge cases you might not have thought about by testing the properties of the functions instead of the result of the function itself.
For a great example, check out this link: https://fsharpforfunandprofit.com/posts/property-based-testing/