Expo Developer Feature: Simon Stern

Jess Hui
Exposition
Published in
5 min readAug 13, 2019

--

We‘re happy to return to our Developer Showcase with an introduction to Toronto-based developer Simon Stern. In addition to being a full-stack developer and consulting on React Native and AWS projects, Simon is investing in developing a new generation of developers at REDAcademy, where he leads the full-stack development department.

Simon only recently decided to give Expo a try, having shied away in the past. So we were particularly curious in getting his perspective, and to hear more broadly about his story. Without further ado, a little bit from Simon!

Q&A

Q: What’s your tech origin story?

A: These days its fairly conventional to say I have an unconventional intro into tech, but that’s the truth! I have a university degree in biology, but teaching myself to code after that changed my life.

Since then, I’ve worked at small agencies, large dev shops, helped lead teams and developed startup architecture from scratch. Over the past few years I’ve run a app development agency which focused on MVP’s in React Native, and helped teams make the bridge from concept to functional prototype.

Two of these prototypes ended up being showcased by RED Academy, which was my introduction to the school. I quickly fell in love with the classroom environment and started teaching full-stack app development there full-time. Teaching came with its own challenges and growing pains, but it’s been an awesome experience and I’ve had the chance to meet so many great students and faculty who all love tech and continuous learning. Now, I lead the full-stack department at the school and am continuously looking for new ways to engage my students and help them become better developers.

Q: How do you think your bio background has helped you as a developer / teacher-of-developers?

A: Being a research scientist helped me develop a methodical mental model when it came to solving problems. I didn’t realize it at the time, but this was a huge advantage to me when it came to working through the logic puzzles that building software represent.

It also kept me very grounded, and for a long time I felt like I was on the “just dabbling” side of the fence. When I started teaching, I realized that this was also a big strength, because it helped me connect with my students better and make concepts more relatable. Too often, developers dive in too deep and start talking about higher order functions, declarative code, etc. etc., to people who don’t even know what a variable is! So my background kept me grounded and mindful of that experience for newbie/junior devs entering the field, which I think has lead to some of my teaching successes.

Q: It sounds like deciding to work with Expo (and not regretting it) was a turnaround for you. What were the difficulties (no holds barred!) you’ve had around using Expo in the past?

A: When I first started building React Native apps, I was pretty unlucky in that the first few had some features that Expo didn’t support at the time, including bluetooth, payments, and requirements for packaged bundle size.

So while Expo looked like an easier way to get things done, I was stuck learning React Native “the hard way”. This meant Xcode, dependency hell, third-party library hell: oh man, lots of painful quirks that I had to become accustomed to.

I just took it for what it was at the time but never really dipped into the objective-C code, and found it really debilitating to upgrade, to include third-party libraries, to upgrade those libraries, etc. It actually caused me to move away from React Native for a bit and focus on building web React platforms. I would tell myself that the ecosystem wasn’t ready, and that spending some time away would be a good time to explore other aspects of software development I was interested in.

I also think there were/are a lot of misconceptions about Expo in the community. I was warned against using it because “ejecting is a pain” and “most apps will grow to the point where ejection is necessary” or that its “too much on training wheels”, so even though I still had app ideas I wanted to explore, I still stayed away and moved onto other things.

Q: What was the small idea you wanted to explore that found you trying out Expo recently?

A: Since I work at a school and am really interested in community involvement, I wanted to build something that facilitated real engagement between people in real life.

The app I’m building, SelfieTime, lets you take a selfie, and then sends that selfie out to a random person in your “group”, whether it be at school, a meetup, or even a conference.

With no other information or context besides the image you sent them, that person then has to find you, take a selfie with you, and you both get points for being in the picture together! It has a few interesting features that I wanted to play with, especially the camera and geo-fencing.

Using Expo made a *monumental* difference in building out this prototype. I was able to focus on features, design, and usability instead of suffering through the Xcode gauntlet.

Q: Anything nagging you right now that you wish Expo did better?

A: I think that the stigma around Expo is probably one of its biggest challenges right now.

Most apps don’t really need bluetooth, native payments or care too much about bundle size. However, there are still many developers (myself included, until recently!) who have too much fear over ejecting or over Expo not being powerful enough.

I think if there were more projects out there showcasing the powerful API, that would bring more developers into the fold. I also think that adding support for more third-party push notification services would go a long way to showing developers that Expo isn’t a closed ecosystem.

Q: What project are you working on right now?

A: After ‘seeing the light’ with Expo recently, I was excited to take it out for another spin, so I built a white-labelled brewery tour app for my students to try emulate. Honestly, using Expo for this was a dream, and I could focus on feature iteration instead of wrestling with libraries, links, and dependencies.

There are some complex features in it designed to take full advantage of Expo’s ecosystem. I had a lot of fun playing with maps, quickly getting a font/icon family up and running (shockingly non-trivial in XCode), and most importantly, being able to focus on code quality instead of wrestling with things. I was pleasantly surprised with how developed the Expo API documentation has become. In terms of building out future projects or exercises, it’s great to see what features I have available to me through their API documentation.

Still curious?

You can follow Simon here on Medium, on Twitter / Github, and at his website!

--

--