I'm a Software Engineer, passionate about bringing technology to the people, and using code to advance science, social impact and wellbeing.
Add the latest meta-programming and code generation practices to your projects!
During my career, I've worked as a software engineer in governmental agencies, academia, big tech and many smaller startups — and in all those places, I found people to be solving more or less the same problems, in more or less the same ways. Of course, every problem was uniquely complex, with its own nuances and challenges; but this complexity can be tackled with modern software techniques: its creative aspects can be abstracted into dynamic, reflective plugins using meta-programming, and decoupled from its tedious aspects, which can be automated with code generation. If you're looking to integrate such technologies into your project, I'd be happy to help.
I always loved to teach: I started doing it in high school for spare change, and continued doing so during my military service, teaching and organizing various advanced trainings. Since then, I've taught in both academia and the industry (including places like Google, Intel and Magic Leap, to name a few) — and now I do it for small groups of students, professionals and other enthusiasts, looking to improve their skills.
This course is about advanced Python programming: from subjects as basic as assignment, conditionals and loops (you'd be surprised how much there's to say), through functions and objects, to descriptors and metaclasses, including Python internals, performance, and software design. Master Python for real, inside out!
Software design, like any design, is near impossible to teach — it's more of an experience, an intuition. Through a series of lectures and guided exercises, we'll cover important design patterns, learn to build platforms instead of solutions, and draw on industrial design, architecture and urbanism for inspiration.
In this course, we cover everything from reverse-engineering and buffer overflows, to logical, network and web vulnerabilities, including cryptography, computer viruses and various defenses and mitigations; but more importantly — we learn the attacker's mindset, the defender's paradigm, and the underlying philosophy of it all.