We just passed the half-way mark of the conference and I've learned so much in the last few days. Even being very introverted, I have also bee able to meet lots of new people and enjoy some of the social aspects of the conference.
Here are my notes and thoughts from my experiences on Tuesday and Wednesday (days 2 and 3):
KEYNOTE: Async, Python, and the Future
Andrew Godwin, a Django Core developer, gave a keynote on the current state of async development in the Python world. He really dove into some of the tradeoffs with designing for async development and how they are doing that specifically in Django.
Here are a few takeaways from his talk:
- Silent failure is the worst design problem, and this is a more common problem in async code. Some things are harder to detect and throw an error for in async code.
- Async will always give a little better performance but horizontally scalability is more important, which is usually better with synchronous code. However, this type of scaling is becoming better and better in async code as well.
- The web needs more real-time interaction and this doesn't currently fit well into the standard Python model of one thread per request.
- We must program for memory scarcity, which means considering using async functionality.
There are also a few alternatives to writing async code that can work in some cases; in some cases you might also not want to use async at all.
- Short polling is an easy solution (where you can ping something every so many seconds). This can mimic async code in a pinch.
- Some things don't need async code, you don't need premature optimization. Make sure you aren't using async just because it's a hot topic or 'cool' new thing. Learn about it pros and cons.
- Async is usually not that great for heavy calculations.
- PDB isn't that great for debugging async code. You might have to find new methods of debugging if you are writing async code.
These are the best use cases for async code:
- Async IO is good for DB, network, and sometimes filesystem calls. DB calls are often the slowest part of a web application, so optimizing these can really speed up your application.
KEYNOTE: Redesigning the Tech Talent Pipeline
Having worked with new developers and in teaching programming for years now, I know quite a bit about the tech pipeline, but I still got learned some new things from this talk by Linda Calvin. It is always good to see things from a new perspective as well!
Here are some notes:
- Not everyone is a coder. When we talk about tech, we should consider that there are many different facets of technology and different types of technical roles: project manager, UX designer, researcher, etc.
- Look at non-traditional routes for getting into tech. Community college programs, local coding schools, and self-learning groups are all good places to find diverse talent.
- What is culture fit? Almost every company makes culture fit a priority in hiring, but most of the time this is never quite defined or written down. We should be asking the question, "What is a culture fit?" in order to prevent unconscious bias in our hiring process.
- There is a lot of potential in the tech field, including solving poverty and underrepresentation.
- We need to create talent pipelines, but more than that, we need to make sure start with adults as well as children. We have to make sure our educational systems are working well for the future generation while still giving opportunities to those who might be adults and not had the opportunity to learn about tech in the past.
Python Memory Deep Dive for Speed and Efficiency
Michael Kennedy, the founder of Talk Python to Me, gave the opening keynote on the second day of the conference. This was probably my favorite talk of the conference so far. He really dug under the hood of how Python stores information and the depth of the talk makes it a little hard for me to write about here, so I also recommend you check out a video of a previous talk he gave on this subject here.
He goes over references, garbage collection, memory, and a few other things.
This talk also included my favorite quote of the conference so far: "Comments are deodorant for code smells." 🤣
Static Sites With Sphinx and Markdown
This talk by Paul Everitt was interesting and engaging, but I don't have much to say about it since I can't see myself using Sphinx for a project right now. I currently use VuePress or Gridsome when I need to write a static site with markdown and I am very happy with those solutions. That being said, I was impressed with the features of Sphinx as I never realized that there was such a good Python-based solution for documentation and knowledge-base solutions. I will definitely keep it in mind for those use cases in the future.
Making Sanic Even Faster
Adam Hopkins gave a great talk on the Python framework Sanic. This was honestly the first time I had heard of the framework so it was interesting to attend Adam's talk and compare it to frameworks like Flask, Django, and FastAPI that I have used in the past.
Here is the abstract for the talk which is a pretty good outline of what was covered:
Sanic is one of the fastest growing frameworks in the Python world. But it is also simply one of the fastest Python web servers. This year, we are making it even faster. There are a number of under the hood changes planned for 2021 as Sanic gears up for its first “stable” release at the end of the year. [You can read about some of the changes](https://community.sanicframework.org/t/2021-development-plan/783). This talk will focus on _why_ these changes are being made, and _how_ we are achieving them. Time permitting, I will also do a little demonstration about deploying production ready, high performant applications in the new world and show the practical impact.
From what I saw, and from getting to chat for a bit with Adam after the talk, it seems like an async alternative to using Flask that is a little bit more modern, but also still lightweight and mostly unopinionated. I definitely want to try to build something with Sanic to compare it with FastAPI, another async Python framework.
Trying Out Plone
There were a few talks that were either about Plone development or used Plone in code examples. I learned enough during the talks to want to try it out for myself so I started playing around with it between talks and in the after conference hours. The only other CMS I have used in Python so far is Wagtail and I can say that Plone is definitely more robust for a lot of use cases.
I definitely want to make some Plone content in the future :)
There have been quite a few after hour events at the conference so far. I am a little shy so I have been mostly just snooping on these and listening in, but have still benefited from semi-socializing :)
My favorite event was the Python Quiz Bowl they had with a panel of the speaker. I learned quite a few new things including the lack of ability to verify the authenticity of (most) packages on PyPi. It was a really fun experience and maybe I can participate in one of these in the future.
Another fun couple of days at the conference :)
I will post another update at the end of the week.