I’ve been programming for many years, and have spent most of the last few years managing development teams. I’ve written plenty of closed source software, and for a time made my living writing open source software too.
One thing stands out: a shared code base does not a software team make.
Continue reading A shared code base does not a software team make
The new Analytics system, built by my team at Percolate, allows our end-users to program their own custom calculations, offering them the ability to precisely customize the product for their needs.
At the center of that feature is a Pratt Parser. Percolate recently presented on this topic at the San Francisco Python Meetup. You can find the slides here, and code here.
Today sees the launch of Analytics 2.0 on the Percolate platform. After 12 months of hard work by my team, I am very proud of the new platform.
1 year ago the San Francisco team was tasked with rebuilding the Analytics system at Percolate. In place of our legacy MySQL-based system, we now have a brand new architecture, based on Apache Kafka and Elasticsearch. It’s more responsive, more flexible, and offers much richer functionality.
You can learn all about the new system on the Percolate blog.
It’s 2017, and that means I’ve been in various engineering management and technical lead roles for about 6 years. That’s long enough to learn something about management, but short enough to remember clearly all the mistakes I made early on.
Continue reading What new development managers should know
I was recently asked by some colleagues about my favourite books on programming. And not just books on coding, but on improving their understanding of successful teams.
Continue reading Some of my favourite programming books
Last night Percolate hosted the San Francisco Elasticsearch Meetup.
I acted as host, and it was a great night, with excellent speakers and presentations.
Continue reading Elasticsearch Meetup at Percolate
I gave a presentation on Ekanite — the syslog server with built-in search — tonight at the San Francisco Go Meetup. It was an enjoyable evening, and I had a chance to discuss why I built Ekanite, how it works, and where it might go in the future.
Continue reading Ekanite at the San Francisco Go Meetup
I’m a conviction engineer.
To me it’s the only way to be an effective engineer, software developer, and technical leader. You’ve simply got to truly believe in the value of what you do, and you’ve got to believe in doing it the right way.
Continue reading Be a Conviction Engineer
I made a presentation on rqlite tonight at the San Francisco Go Meetup. It was an enjoyable evening, and I had a chance to discuss why I built rqlite, how it works, and where it might go in the future.
Continue reading rqlite at the San Francisco Go Meetup
While running services is hard, it’s also fun. It confronts you with a whole set of engineering challenges because you’re building — and running — large scale systems.
So after 18 great months working on the InfluxDB source, I’m returning to Services and have started a new role with Percolate, as Director of Engineering on their Data Platform team.
I recently presented at the InfluxDB San Francisco Meetup, on InfluxDB and the Raft consensus protocol. My talk was about the fundamental problems of distributed systems, and how InfluxDB uses Raft to solve these issues.
Continue reading InfluxDB and the Raft consensus protocol
I came across another great video about software engineering management, this time by Bryan Cantrill. It’s a really great talk, and discussed in-depth — with plenty of humour thrown in — the importance of Mission to high-performing software developers.
Continue reading Leadership without Management
I’ve recently been thinking about why running Services is particularly hard. By Services I mean Software-as-a-Service platforms. During the years, I’ve written software for many different systems — embedded software, web services, databases, and distributed systems, but being involved with designing and running a SaaS platform was difficult in a whole new way: running Services is hard work.
Continue reading Running services is hard
Well, almost nothing.
Obviously it’s got something to do with computers since developers spend so much of their time in front of one. But software development is actually all about people. And successful software development even more so.
Continue reading Software development: it’s got nothing to do with computers
Recently at InfluxDB we discussed how code reviews fit in during the various stages of development. It’s great to see the team reach consensus about how we should develop software. It made me think more deeply about why I remain a big believer in the code review process.
Continue reading Code reviews still rule
Tomorrow I join the team at InfluxDB, something I’m really excited about. I’m really looking forward to coding in Go full-time — it’s a language with real promise, a nice clean tool chain, and a very active community.
Continue reading Measure Everything
I’ve been thinking a lot recently about what makes computer services and products sticky — what makes users and customers come back again and again to what you’ve built. There are lots of ways to summarize it, but when it comes to systems that help technical people run their own systems, they come for the features, but they stay for the uptime.
Continue reading Come for the Features, Stay for the Uptime
My father worked for many years in QA at Beckman, an American medical instruments firm. His job was to ensure that newly-manufactured centrifuge rotors would hold up when spun at thousands of RPMs. He used to tell me that the Beckman philosophy could be summarised in one sentence — “There is no substitute for quality”.
Continue reading Always thinking of the next guy
As technical lead at Loggly, responsibility for a well-engineered infrastructure ends with me. And one way to ensure the system is designed and implemented well is to stay as close as possible to the code, ensuring that the team and I write quality software.
But it can be difficult to complete the design and implementation of the features I am responsible for, ensure that what the team produces is well-implemented, and understand every line of code — there is only so much time in the day.
Continue reading Technical Leadership through Testing