PyCon Australia 2016
It's been super interesting to meet people from the Australian Python community and there were a number of very interesting talks at the conference.
Things that I saw at talks that caught my attention:
- There's actually a JIT for CPython called numba. As a bonus it can use some numpy functionality because their project rewrote code in numpy to make it compatible.
- Monkeypatching is harder to get right that I imagined as there were edge cases mentioned in the monkeypatching talk I wasn't even aware of. The wrapt library is awesome and the author of the library is equally awesome, big thanks to Graham Dumpleton for answering some of my questions after the talk. Add me on to the long list of people that would like to see that in the standard library. I also learned that executable code can be run in .pth files which I find terrifying.
- There was a talk on reproducible research that employs software as a key step. This is a super important topic that I think gets far too little visibility. Helping scientists do research that's reproducible is very important to us as a society. Better software development practices might also enable people to get more in depth research done too because it can remove blocking issues of a software nature. Seeing talks like this show up at conferences for data science people is super encouraging.
- The talk by Christopher Swenson that went over what happens internally in the boot-up phase of cPython was fantastic. The talk was a run through of what happens between the time you type python at the command line and the time python code starts running. It followed the call stack through the C code and went over the most relevant parts. I felt I learned important things about the way in which bytecode works in cPython and this gave me insights into why the execution is so slow. The quick summary is that cPython sets up a bytecode stack and very conservatively executes it. (There's an emphasis on correctness and thus no optimization steps are performed in its very conservative approach.)
- File uploads talk. There's a whole lot of security issues with uploading files that you later serve. Very eye opening talk and I'll certainly be keeping an eye out for security flaws in apache. Right now I'm working on internal libraries at work and I'm glad that I can now defensively handle some of those security issues. The approach of cleaning up files aggressively is a really nice way to stop some exploits that can impact your users when they download the files.
- Micropython, it's awesome! There was a talk about another SoC system, will keep in mind if I do embedded systems design again. I had to make a mental effort to not go to more of these embedded talks as I'm not working on embedded systems right now and I have to prioritize on learning what I'm currently working on professionally. Were I on my own I might just continue on but I have juniors who are wanting my help so I think the right thing to do is really focus in on getting more skilled with the tech the team is working on so I can provide the best (more relevant to the projects) help to the juniors in my company.
- The mental health in development talk by Ducky was great. This is a super important topic and by getting these issues into the open we have a better chance of making positive change. I heard that there was a talk on impostor syndrome too, I missed that talk but I'm very familiar with the topic. Talks like this are a great reminder to be mindful of what's going on in your organizations. On a practical level there's a developer at my company and she's super awesome but can't internalize her own successes, I think that it's a good idea to be mindful of this and look for situations to be encouraging and help build up some confidence.
- Burnout in software industry. Super relevant talk, as I know many who are at risk of burning out and bringing issues like this out into the open is a really good idea. Incidentally I was talking to someone at the conference dinner about burnout the night before and I could see the incredible toll it had taken on him and his ability to do his work, the costs of burnout to the software industry and society in general are huge but sadly are not very visible. I hope this changes and as the cost is high and the benefits of project management approaches that burn people out actually provide much less benefit than people realize. There's a lot of people I know at risk of burnout, I hope they watch this talk.
- Blogging talk by Thursday Bram was great and is the inspiration for the blog post you are currently reading. I had wanted to get the blog going again because it's a really good way to practice writing and get useful information out into the public. Someone out there might find my recent work useful but they have to find out first.
- Talk on AWS lambda. Serverless architectures are super interesting for some problems, I feel very vindicated with my choice to use OpenAPI (Swagger 2.0) for my APIs because it's so easily supported in that system. I'll keep this in mind if I have a project to deploy with AWS in the future. Proper system administration is hard and some of the infrastructure as a service is a really interesting option if you are a sole developer on small projects. I make a point of going to talks like this from time to time so I can keep my knowledge more up to date with infrastructure.
Was lucky enough to get to talk with Heidi Waterhouse about documentation. She really knows a lot about documentation and she shared with me a great "fire fighting" approach to desperate documentation crises. To set the scene, you get put on a new project, there's a deployed system used by a variety of paying customers and there's no documentation in the code, no documentation out of the code and very little information about the project in any accessible form. A good approach to get started with this to create a single document that is searchable to start placing notes into. The important part is that you place the new notes at the top of the document and that way you get the newest information up at the top. This gives you a starting point and getting started as quickly as possible is critical in these situations.
Talked with Oliver Adams about natural language processing, he's working on a project to help save endangered languages via machine learning and natural language processing algorithms. Super worthwhile project and it's great to see smart people working on important projects like that. [#]
Talked with multiple people from the BoM and found out more about the very interesting work they do there.
At the dinner I talked with someone about burnout at his company and had a really deep conversation about what to do in such a situation. I was trying to figure out the best way to get someone I saw as a brilliant but frustrated developer to help showcase his skills as he was on the job hunt. This involved an offer of $50 if he makes a blog post, but it has to be a public blog post for him to collect on it. I really hope I lose that $50. There's some really interesting stuff he could write about 3d graphics that I personally would love to read about.
Talked with multiple people about the state of mathematics related software in Australia. There's more jobs that involve both development and mathematics in Australia than anyone seems to realize. For example where I work has a strong mathematics component in many of the projects we work on and there's other places too, it's just that people don't realize it. The BoM people for example use a lot of mathematics in their forecasting.
The organizers of the conference were brilliant, I'd like to personally thank them for their efforts in putting on a great conference, I'll do my best to attend next year as well. Also the speed with which videos were uploaded was super impressive.
[#] 2019 Edit: His project ended up turning into the Persephone automatic phonetic transcription library: https://persephone.readthedocs.io/en/stable/ go check it out!