PyDev of the Week: Simon Cross

This week we welcome Simon Cross (@hodgestar) as our PyDev of the Week! Simon lives in South Africa and helped start PyConZA. You can see all the various open-source tools that Simon works on over on GitHub.

Simon Cross

Let’s spend some time getting to know Simon better!

Can you tell us a little about yourself (hobbies, education, etc)

I’m a South African who grew up around Melkbosstrand and Fish Hoek which lie on the northern and southern ends of the beautiful Cape Town.

I enjoyed coding from an early age and after studying physics, mathematics and computer science at university moved on to a varied succession of software jobs. Highlights include working on bioinformatics at SANBI which was my first full-time Python job, helping build KAT-7 an early prototype for the upcoming SKA radio telescope, a stint at REACH and running a small data science team at Prodigy Finance.

Recently I combined by physics roots and my love of Python and became involved in writing Python tools for simulating and controlling quantum devices, which lead to my current role at Zurich Instruments developing quantum control software.

Why did you start using Python?

I didn’t have a particularly deep reason. I was working in a few languages for different projects. Python was just a really nice language to work in.

It was well thought out, self-consistent and very readable. It had less boilerplate than Java and it didn’t allocate half your RAM to itself on start up. Unlike C, there are nice tools like lists and hash tables (i.e. dicts) available out of the box. It was great for small projects, but also scaled really nicely as a code base grew. It wasn’t just for the web.

These are still good reasons to use Python today.

Another factor was that I had a bunch of friends who also liked it. We had a lot of fun coding things together, starting meet ups, talking about computer science, technology, the world, life, … .

In particular my close friend Neil Muller was my partner in crime in many Python (and non-Python) projects including CTPUG, Sutekh, Wafer and numerous PyWeek entries.

It’s strange to think that Python wasn’t particularly accepted for a long time. Professional software engineers from big institutions would say that Python wasn’t a proper language, people worried that there might not be jobs for Python developers. Variations on these old memes still float around today, despite Python’s incredibly wide and successful adoption.

What other programming languages do you know and which is your favorite?

I use C and Javascript regularly and have done some bigger projects in both.

Javascript is of course ubiquitous for coding web applications, and I use it there, but it’s also not a terrible language for writing services in.

C is a really great language. It sits at sweet spot in the abstraction layers where one is separated from many of the details of how the CPU works and yet still describing very precisely the operations to perform.

What projects are you working on now?

I’m involved in HPy and QuTiP at the moment.

HPy is a new API for writing Python C extensions like numpy. Python’s old C API exposes most of Python’s internals which makes it hard to provide a stable target for C extensions to build and link against while still allowing Python itself to evolve.

HPy is nearing its 1.0 release and there was a lot of discussion of HPy at the Python language summit this year, so I think it’s likely that we’ll start to see HPy used and adopted more widely.

QuTiP is a Python toolkit for simulating open quantum systems. Here “open” means a system that isn’t isolated and interacts with it’s surroundings — so really all quantum devices that one controls and interacts with. QuTiP is used by many academics and companies working with quantum devices.

I was lucky enough to be working on QuTiP full-time for a couple of years, but now I’ll be doing work on it as my spare time allows.

I’ve just started working at Zurich Instruments on LabOne Q. LabOne Q is open source, and we’re hoping to grow the community around it in the future, but for now I’m still learning the ropes.

Which Python libraries are your favorite (core or 3rd party)?

My favourite core Python module is “import this”. It doesn’t do anything, but there is a lot of software engineering wisdom encoded there, and I find myself going back to it every couple of years and reading it again. I’ve also had all of the lines printed on mugs for PyConZA (PyCon South Africa) or CTPUG (Cape Town Python User Groups) a few times.

Outside of the core libraries, I’m a big fan of the many libraries which had a significant impact on Python’s direction, even if they didn’t end up becoming massively adopted themselves or weren’t even Python libraries. For example, the Twisted asynchronous networking library eventually led to the creation of asyncio and language level support for asynchronous patterns. PyPy showed how great Python performance could potentially be, and I think has inspired many of the other attempts that have come and gone. Numpy and Pandas both created huge new communities of Python users, and I’m hoping that projects like PyScript and BeeWare will do the same for Python in the browser and on mobile in the future.

How did you end up starting PyConZA?

I attend PyCon US for the first time in 2012. I was working for REACH at the time — it was called Praekelt Foundation then — and on the way back my boss, Simon de Haan, messaged me to say, “We should start PyCon South Africa, do you want to do it?”, and I said yes.

I’d organized quite a few smaller events before, but I really knew nothing about organising a full conference. We had to find speakers, sponsors, a venue, sell tickets, advertise, have a budget and these were all new to me.

I’m very grateful to Praekelt for supporting PyConZA during the first few years, both by letting me spend a fair bit of work time on it, but also financially,

I’m also very grateful to Lauren Kotze and Sam Manclark who both gave a lot of their time and wisdom to help with the organization even though they weren’t Python developers at all. Lauren especially stayed heavily involved behind the scenes all the way until PyConZA became an independent non-profit many years later.

Organizing the first year was crazy, but a lot of fun because everything was new. Some of the later years were much harder. It wasn’t new, so there was a bit less excitement, funding was tighter. Eventually it started to get a bit easier again, but that took a few years.

Do you have any tips for others who want to start a meetup or conference?

I don’t claim much special wisdom around organizing events or communities, but I can share some things that worked for me or I wish I had been more intentional about:

  • At the start you’ll have no experience to guide you, so just start. You’ll make mistakes and learn on the way.
  • If you’ve never organized anything, start small so that the mistakes are smaller too.
  • Event organizing is a separate field all on its own, so if you’re primarily a software developer, you likely don’t know much about it. Find some professionals to talk to even if you can’t afford to hire them.
  • If you take on something big like organising a full conference, it’s going to be hard sometimes, so it really helps to have someone else as committed as you are to share the load. Even just one other person is a huge help.
  • Try be clear with yourself what your big picture goal is and what you and the other organizers are getting out of it. These will likely both change from year to year, but don’t look up a three years later and wonder if it was worth the sacrifices.
  • If an community is bigger, there will be many people within it who have opinions you disagree with, and many people within the community who disagree with each other. Think a bit about how you as an organizer want to approach this.

Thanks so much for doing the interview, Simon!