Hi! I'm Stephen Cross and I'm a software engineer.
I've always been enthusiastic about code, particularly when it comes to efficiency and clarity in both the software and the process of creating software. I'm known for delivering software that's readable, well-tested, well-documented and fast.
Most of the time I work on low-level software in languages like C and C++, and I've even created a systems programming language called Loci that manifests my approach to software.
Among other things, I've developed Linux kernel modules, built iOS apps, designed new communications protocols, written comprehensive documentation and re-factored large existing programs to fit new requirements or to eliminate entire categories of bugs.
I'm a quick learner and open minded when it comes to finding new solutions or adopting new tools; I'm always looking to expand my knowledge and learn new interesting things.
Loci Programming Language
When I was in my first few years of programming I played around with various languages and had a growing realisation that none of them provided the kind of capabilities I was looking for. I wanted a language that:
- Focuses on performance
- Uses compile-time mechanisms to provide safety
- Is designed to make doing the right thing easy
- Includes only the necessary features
- Has minimal dependencies for the generated binaries (no VMs!)
- Works with existing code
- Is great for developing APIs
At the time (around 2009) I was interested in compilers and so quite naturally I ended up building a compiler as a kind of hobby project to develop my skills.
However today's Loci programming language and its associated compiler is much broader and more comprehensive than I'd imagined. The compiler supports all the key features of the language, including classes, interfaces, templates, exceptions, predicates, modules etc. and targets LLVM IR, giving it access to production-quality code generation and optimisation.
In many ways Loci is quite an austere language; I've kept it fundamentally simple while at the same time expressively powerful. The focus has always been on having a few well-generalised features rather than a large number of special cases.
C is an example of a language that's simple, but doesn't help you to express structure in code, so inevitably it's hard to maintain structure within the code (i.e. you're fighting entropy!). C++ is a language that's too complex, yet at the same time often still doesn't give you expressive power and requires you to jump through hoops.