Skip to main content

Professional πŸš€β€‹

I am a software engineer who makes things for work and fun (personal projects). My principles are:

  • keep learning - especially learning by trying, failing and succeeding,
  • help others learn - especially the ones who love learning, and
  • solve problems for people - especially by understanding things and making them simpler.

I've worked with mobile platforms, runtimes and programming languages for mobile app development, SDK development and machine learning. This includes developing backend APIs for mobile apps. I received dean’s list and distinction for degrees in computer science and engineering at Imperial College. I also communicate well: I write hundreds of Stack Overflow answers (and questions πŸ™ˆ), give technical talks, and most importantly: discuss, debate and listen openly to others. I started programming in 2017 when I lived in a house with ~25 other students in the USA, some of who interned at Microsoft, Google, venture capitalists and startups. Since then, I haven't really stopped programming, learning and helping others. For mobile development, I use Flutter. For backend development, I'll usually use Typescript, NodeJS, relational databases. I have a list down below which shows the type of stuff I've worked with. Take a look at my projects.

Do you need help with a Flutter app? Do you need a servant leader to boost engineering productivity? Or are you at the beginning of your career and want to accelerate your learning and growth? I'd be honoured to help, get in touch.

Feedback πŸ“ˆβ€‹

Do you have something important I need to hear, but you're hesitating? Please give me feedback, you can submit them anonymously on my feedback page.

Personal πŸ‘Ήβ€‹

I am vegan πŸ₯•, love animals πŸ• and this planet 🌏 (nature, outdoors, cycling). Contact me if you have similar interests or are solving solve interesting and important problems, I'd love to help.

Contact πŸ’Œβ€‹

final bensEmailAddress = "ben" + "@orth.uk";

Join the 2 strings together (text within quotation marks). Or submit the feedback form with your message.

Talks/workshops I've given πŸŽ™β€‹

profile for Ben Butterworth at Stack Overflow, Q&A for professional and enthusiast programmers

Ben's github stats Ben's languages

Technologies I have used (recent first) πŸ€–β€‹

I actually started off as an (unpaid) product designer, not an engineer or programmer. Some of my contributions can be found in hotel rooms around the world, and in the back of camping vehicles in Australia πŸ˜…. However, in 2017 I learnt the impact possible from ones bedroom is amplified through programming. I haven't stopped programming since.

  • Flutter, iOS and Android: I've used Flutter since 2020, but I worked on a Flutter package, ably_flutter containing a lot of Android and iOS code. It was nice to learn some Objective-C, but I've already begun the migration to Swift πŸ˜‚. Recently, I've added push notification support, allowing users to register the device for push notifications, and handle everything on the Dart side without writing native code: handling foreground messages, background messages and notification taps / app launches. This was more complicated than expected, since I had to launch a Flutter Engine when the message arrives on Android.
  • Three.js, NextJS/React, WebSockets/Ably, MediaPipe, TailwindCSS: I learnt these while making Club2d, an anonymous video calling app.
  • iOS (Swift) and Android: Android and iOS development are both enjoyable in their own ways. I've also built a macOS CLI tool for colleagues, some prototype apps using CoreML (iOS) and Tensorflow Lite (Android). I've been compiling a list of differences which I'll publish soon. Currently working on an iOS library for Ably. I've also touched a small bit Objective-C, though I highly recommend you stick to Swift if possible.
  • 🀯😻 Flutter & Tensorflow since April 2020: In Flutter, I've accumulated 100+ hours now, and I'm loving the type system. I've also been working on my user interface designs, from sketching, wireframing and mocking. On top of normal UI design, I am currently designing a novel user experience as part of my Master's individual project, for physiotherapy patients and computer vision. I have now made a few smaller apps in Flutter. For my final project at Imperial, I am researching 3D pose estimation and computer vision and baking it into an app with Flutter. In 2021, I became a TensorFlow certified developer.
  • 😲 Gatsby, React, HTML and CSS: We needed a landing page for Foodprint, so I quickly learnt these tools to make Foodprint. I'll be using Next.JS instead of Gatsby if I ever need another landing page. Although Gatsby was frustrating, it provides a lot of web performance and tools out of the box.
  • React Native πŸ€—/Typescript 😎 in late 2019: I picked up React Native over Christmas 2019, and am now productive in Typescript & React Native, check out Foodprint.
  • πŸƒβ€β™‚οΈπŸ€  Rust: Alongside C++, I read the rust book, but didn't manage to build any complicated programs. So much for getting stuck in! I've decided to build more user facing programs, but won't hesitate to use Rust if I need performance.
  • πŸ’ͺ C++ for 3 months in late 2019:
    • Imperial'S C++ intensive course (where I learnt real programming skills, thanks to Will Knottenbelt and Fidelis Perkonigg). I got 85% in the exam πŸ˜₯ and 84% in courseworks on average.
    • This course taught me to be pragmatic, and to read the documentation 😍. It taught me to do things without watching courses and videos, and just get stuck in. I recommend the same.
  • πŸ₯° Javascript throughout 2019: learning javascript basics and writing scripts in my free time
  • 😑 Java for 7 months in early 2019: As part of on-boarding at Ocado & day to day programming. I didn't enjoy Java. Maybe it was because of the enterprise programming & boilerplate.
  • πŸ˜ƒ Python & Javascript & NodeJS for 6 months in late 2018: Self-taught to make web apps. Finally, I was actually programming. In reality I was just following tutorials and could not make anything myself... So much for deliberate practice.
  • My first real tool I learnt was Adobe Photoshop & Illustrator, mostly to draw illustrations and posters. I started when I was 11.
  • πŸ™‚ Python for about 6 months.
    • in 2017: Self-taught to do data analysis for simulation results
    • in 2018: Self-taught for final year project data analysis for simulation results
  • Matlab for about 3 months 😭 in 2014, 2015, 2016...
    • ...in undergraduate Matlab courses, and several simulation projects. I really did not enjoy Matlab, and know many students who were scared away from programming because of it. Do yourself a favour, don't touch that thing. Use the right tool for the job: in Science, that's Python now, not Matlab.

Devops related platforms I have used (recent first) πŸ’Έβ€‹

  • Docker and Docker Compose - writing Dockerfiles for CI, development machines and deployments at work.
  • Firebase & GCP - Mobile app backend as a service (authentication, database, cloud functions), including Firebase security rules and application threat modeling.
  • Doc Cloud: The Imperial College Department of Computing Cloud. It's got limitations no amount of money can circumvent. Might be a good thing for my wallet.
  • Netlify, Vercel, Cloudflare Pages - hosting my blog and other small web app projects
  • Terraform - Deployed AWS & Cloudflare resources for a project. And very soon killed the project with tf destroy 🀣. At least I can redeploy it with tf deploy.
  • Cloudflare DNS - They update their DNS records almost immediately when you make a change. So TTL does not matter, mostly πŸ˜‡.
  • AWS EC2, Lambdas - I used to use Lambdas for email forwarding. I also used EC2 it to some extent when working at Ocado. I've also explored Openfaas and Knative, but I don't want to pay for Kubernetes cluster.
  • Heroku - The tool that shows up a lot in front of beginners. I soon outgrew this. I just realised there are some really good websites hosted on heroku.