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!
You are from New Jersey. Why? I mean it's not Florida but it has quite a reputation.
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
Next, I'm curious, are you drinking miller lite?
Absolutely, but I will be honest here, my fridge isn't exclusively Miller Lite.
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?
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.
I'm sold. Ok, so computers: you do a lot of open source work. Why? what motivates you?
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
What open source project(s) are you most proud of?
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.
Yeah spectacle is everywhere these days!
It was one of the more ambitious things I had done with React recently, and it really lets me write presentations really easily
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?
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.
A half hour a day can add up, even if its just issue management or writing tests
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.
lol who isn't that person. in our field at least
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?
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)
have you tried out react native android yet?
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
is the app that you're building at walmart right now cross-platform?
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
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
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
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?
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
agreed, the folks behind bridging really killed it. aside from that, what custom native modules do you use on the pharmacy app?
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
do you have any thoughts on where react native needs the most work right now?
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.
haha it sounds like we're on the exact same page. the source is pretty readable though, right? 😃
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
the animation one is key i think, especially for android
indeed
so if the software industry blew up tomorrow and you had to find a new career, what would you do?
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
truly an engineer at heart
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
what would you do with your time if your finances were completely taken care of?
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
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?
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
are you using react-transform with react-native?
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?
https://github.com/mjohnston/react-native-webpack-server ymmv
oh wow. that looks like fun
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
could you explain your testing setup for the react native pharmacy app? ...if there is one
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?
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!)
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
thanks for the chats dude. keep up the awesome work in the oss community!
Awesome interview. Ken is a great guy, super talented and great to work with!