Skip to content

Instantly share code, notes, and snippets.

@brentvatne
Last active November 23, 2015 17:40
Show Gist options
  • Save brentvatne/d252c167d10ecdaf959c to your computer and use it in GitHub Desktop.
Save brentvatne/d252c167d10ecdaf959c to your computer and use it in GitHub Desktop.

React Native Newsletter - Community Interview #5

Ken Wheeler (twitter) (github) works at Formidable / Walmart Labs who you might know for spectacle, slick, mcfly (thanks a lot for perpetuating the Back to the Future references Ken, really), or as the winner of our Reactive Conference contest. According to github-awards.com, his worldwide ranking on Github for JavaScript is 61 out of about 600,000 developers, and 22 in the United States -- based off of number of stars on his repositories. He is also the creator of a young human female.

In this discussion we chat about beer, his open source work and of course React Native. I hope you learn something!

Brent

You are from New Jersey. Why? I mean it's not Florida but it has quite a reputation.

Ken

New jersey is a very special place. I mean, I guess for starters I grew up here. But the reason I stay is mostly because its easy. I'm an hour away from anything. 45 minutes to NYC, 5 minutes to the beach, 50 minutes to snowboarding

Brent

Next, I'm curious, are you drinking miller lite?

Ken

Absolutely, but I will be honest here, my fridge isn't exclusively Miller Lite.

Brent

I don't think we have that in Canada. ratebeer.com gives it an overall rating of 0/5, but 2/5 for style, does that seem right to you?

Ken

I think thats pure shenanigans. I do drink great crafty beers often. Lagunitas "sucks" (actual name of beer), tripels, lambics, sours.. but at the end of the day, you can't sit there and drink that stuff all night long.

Brent

I'm sold. Ok, so computers: you do a lot of open source work. Why? what motivates you?

Ken

I'm a terrible businessman. I notice a lot of peoples projects center around other disciplines they may have experience in, especially the ones that make money. I know people who might have experience with medical billing or something and make a platform for that and now they drive an audi. Personally, I have experience being a developer. So the ideas and tools that I think to create or want to create, are usually to help myself or other developers.. and I mean, hey, why not give it away

Brent

What open source project(s) are you most proud of?

Ken

I mean I'm super proud of Slick. I didn't think it would take off like that, but its really cool to see so many companies and sites using it. Its heartwarming when I pop an inspector open and I'm like " Hah, I knew it!" Another one is definitely Spectacle.

Brent

Yeah spectacle is everywhere these days!

Ken

It was one of the more ambitious things I had done with React recently, and it really lets me write presentations really easily

Brent

So you have a job and a family, and a basement and garage that require cleaning sometimes, how do you stay on top of that still manage to maintain a bunch of open source projects? Any tips for folks out there?

Ken

I don't get a whole lot of sleep. I wake up pretty early, because baby, and I go to bed around 2am for reasons I'm not really sure of.. but I think its more of a balance thing I work from home, so I dont have the commuting time cutting into my available 24 If I had to give some advice on how to manage it, I would say do a little bit all the time, instead of trying to block off 4 hours for open source.

Ken

A half hour a day can add up, even if its just issue management or writing tests

Brent

great point - i've found that the same works for me as well. so i'm often that person who has my backpack everywhere. i mean i'm always that person.

Ken

lol who isn't that person. in our field at least

Brent

haha, ok let's talk react a bit: can you explain what kind of process led up to formidable/walmart labs starting to invest in react native? was it driven by some specific product or general needs? what did the technology evaluation period look like?

Ken

So I started at Formidable/Walmart around 7 months ago, on a small team with a goal of proving that React (browser) was worthwhile to switch our applications over to

We started by creating a component library that we call Electrode, that essentially encompasses most of the UI elements that you would see on the Walmart site After a few prototypes, and some refining of our process, around a month ago we got confirmation of a full switch over to React

So we have multiple verticals transitioning to React architecture, that had previously been on a Backbone/Thorax stack. And the pharmacy portion of the site recently launched as our first React vertical in production

After React was locked, there was interest around react native We had previously been exploring a hybrid approach, and React Native seemed like an awesome way to get the benefits of both

So right now we are in our first phase of react native implementation, with native Pharmacy as our target I'm super happy with RN so far, and it has actually surprised me

We are doing some seriously non-trivial things with it, and I haven't found something I've been unable to do with it yet (providing you're willing to get your hands dirty in some Obj-c)

Brent

have you tried out react native android yet?

Ken

Thoroughly. I released my first dual platform react native OSS lib a couple weeks back, react-native-orientation-listener Writing the module for both platforms was easier than I had thought

Brent

is the app that you're building at walmart right now cross-platform?

Ken

I'm actually working on that this weekend. Most components will work on both but they will have to be slightly separate builds, as we are embedding them as sections of their respective host applications Also, certain things don't translate directly, so that too

Brent

i saw that you were looking into integrating react native with UINavigationController to embed it into a larger app -- is this because the app already exists and you don't want to re-write? or other reasons

Ken

The Walmart app is a pretty large app. And we typically work on a vertical basis, like Pharmacy, Search page, Item page So we are doing the Pharmacy first, which is only one portion of the greater Walmart app So at the moment, our goal is to embed the RN app into the main app's nav flow

Brent

So you mentioned before that you haven't found something you've been unable to do with react native yet provided that you're willing to drop down to native. when have you had to do that?

Ken

So my goal with Pharmacy has been to hit 100% feature parity with the existing native version of Pharmacy So certain small details needed to be accounted for One particular thing is the MapView. I had to extend RCTMapView in order to add image based annotations Other things stem from behavior/story needs When the map loads, we find stores nearest to the user and center on the closest store so I needed to write a module to get the users location and return it to JS for me to fetch against the API with (which was lovely by the way)

The react native API seems super well thought out, between the custom modules and custom views and the RCTConvert class

Brent

agreed, the folks behind bridging really killed it. aside from that, what custom native modules do you use on the pharmacy app?

Ken

Well we have our custom MapView, a CLLocation module, and the orientation listener module and I wrote a custom view for UISearchBar but that's still in progress, as the current native story includes opening a SearchDisplayController, and I need to get that set up

Brent

do you have any thoughts on where react native needs the most work right now?

Ken

If I had to say anything, i would say Android I see a couple things there around Text display I would absolutely love to see the separate animation thread feature get implemented I think some more extensive docs and examples might be helpful too. I read the source a lot.

Brent

haha it sounds like we're on the exact same page. the source is pretty readable though, right? 😃

Ken

super readable So most of the time I have a question, I just go to the source but other folks might not go right there and be confused so in terms of adoption, some thorough docs always helps

Brent

the animation one is key i think, especially for android

Ken

indeed

Brent

so if the software industry blew up tomorrow and you had to find a new career, what would you do?

Ken

Thats a great question. I would probably just cry. Really though, I'd go back to school for electrical engineering.. or mech.

Building circuits and devices fascinates me

Brent

truly an engineer at heart

Ken

I mean, I like to do a lot of things but I got a family, so the career would have to be a promising one If there was no family in the picture, I'd go live in the woods or south america or something

Brent

what would you do with your time if your finances were completely taken care of?

Ken

I would definitely spend time with my family a lot. I would probably get a Tony Stark setup going. super computerized house with a dope R&D lab.. I would do a lot of MMA training, Travel, and I would build cool things

I want to be Tony Stark when I grow up. A miller litey 'merica version of Tony Stark

Brent

well it's a longshot but i hope someone reads this and makes that a reality. anonymous billionaire, it's on you.

aside from react what are some of your favourite tools out there these days?

Ken

Flow. I really like Flow. After years of being teased about its typing, Javascript went and hit the gym and got some types in its life. I'm a really big fan of react-transform and redux. Dan did an awesome job with those, and my workflow is currently bananas as a result

Brent

are you using react-transform with react-native?

Ken

I am not, I use the regular packager with a .babelrc. but I am using redux, with redux-logger-middleware, and it is absolutely lovely can you use react-transform with react native?

Brent

https://github.com/mjohnston/react-native-webpack-server ymmv

Ken

oh wow. that looks like fun

Brent

That's something i would love to have built-in first-class support for in react native 😃 Dan, if you're out there... we need you

Brent

could you explain your testing setup for the react native pharmacy app? ...if there is one

Ken

we're still figuring that out. we have an internal automation testing suite but we're still trying to figure out how to test react-native I mean we can mock everything out with Jest, and write the Obj-c tests, but we're tossing a couple of things around atm suggestions?

Brent

i've gone down the obj-c testing route, using KIF for acceptance tests, we had trouble getting consistency with ios compatible CI services (travis, circle) as for mocking everything with jest -- react native is pretty tough to test with jest right now... at least the components. i'd love to be able to do shallow renders. (note: this is being worked in currently!)

Ken

yeah we'll probably end up doing something similar. been throwing around the idea of polyfilling views for headless testing. sort of like necolas's react-native-web. I'm currently experimenting with it, I'll let you know how that goes

Brent

thanks for the chats dude. keep up the awesome work in the oss community!

@jherr
Copy link

jherr commented Nov 23, 2015

Awesome interview. Ken is a great guy, super talented and great to work with!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment