I'm Talater and you're listening to the changelog. Welcome back everyone. This is the changelog on your host, Adam Stikoviak. This is episode 183.
And on today's show, you're now joined by Talater. We talked about speech recognition, and specifically his project called Aanyang. So if you heard that name before, and you listened to a rest of development, or you watched that show, you know what I'm talking about. We also talked about offline first and his project up up.
And we also talked about promoting open source. We had four awesome sponsors, Co-Chip, Top-Town, BrainTree, and also Oppi. Our first sponsor for today's show is Co-Chip. If you haven't checked out the blog from Co-Chip, go check it out, blog.coachhip.com.
And there was a recent post I want to mention from Barry Jones titled Why Docker. And he dabbied deep into why Docker became a household name, why Docker said it VMs. He even goes into how Docker enables consistent environments, and even the fact that Docker isn't going away, he makes that hypothesis that it's not going away. There's also an e-book mentioned in that article.
It's free, it's from Co-Chip. Super awesome e-book. It's titled Why Containers in Docker of the Future. This book is awesome.
Go check it out. The link is in the article, and I'm gonna put a link to the article in the show. So check out the show notes and now on to the show. All right, we're back.
We got a fun show left today. I got American accent, so I'm not gonna say his name right, but the American way is tile-a-terre. Great, open-saucer, maybe a little mention to the end of the show, but yeah, this show has been teed up for a bit now. Can you talk a bit about the plans for getting tell-and-show?
Yeah, well, tile, I think we first met you around your open-source library, Aon-Yong, which was a couple of years ago. Recently you released UpUp, which made a decent splash. And in the conversations around those two things, you mentioned that you got married, clicked your job on a six month honeymoon, or traveling the world and working on open-source. Wow, that's a dream right there.
This guy's living the dream, let's get him on the show. Right, welcome to the show, Tom. Yeah, thanks guys. So, yeah, actually I said the name perfectly tell-a-terre.
So yeah, I've been, just to start on, if anyone is worried about the accent here, it's me not you guys. I've been practicing for two weeks, how to say the name of my own library, like UpUp, am I saying? Is it an application? Is it Up, like I don't even know how to say it.
So, you guys are good. Maybe give us your roots, where you're from, and how do you get into this whole gig? So, I'm a developer from Tel Aviv, Israel. As you can hear, developer, I've been a product guy, entrepreneur, maker, creator, all those stuff.
And yeah, as you said, like the slogan I like to attach to myself is, I quit my job for Open Source. So, you can also add crazy to the list based on that. Well, the question is, you're newly married, so does your wife think you're crazy? Yeah, so I guess we're gonna have to talk about sustainability in Open Source at some point.
A little bit of spoiler, but yeah, I'm still figuring that out, but still to the jump and the plunge into it, and let's see how it plays. So, before you were doing Open Source, you're a developer and a product guy. You have a long history of working in the industry, writing code, what even up do you quit your job for Open Source? So, basically I've been doing this all my life.
I mean, at around the age of seven, my dad got me a singular spectrum Zeddiks, if you guys remember that one. It was basically just a keyboard that you connected to a tape recorder, which connected to your screen. And you could program basic on that little thing. And I didn't even know the English alphabet at that point, and I was already learning how to program.
I would go learn at a class, come home, and my dad would teach me the ABC. So, it was a bit of a slow start. But I've been doing that ever since. I mean, in high school, and the minute they finished high school went right into it after the army, of course, during the army of them.
And I've been building websites since 96. So, it's almost 20 years now. That's the thing in Israel, where you have to serve the military, right? Yeah.
I had a friend from back in the day, his name was Dayan, probably similar where I pronounced his name incorrectly, or with my English American accent. But he was like, he lived here in the States, and then he had to go back home. Because he was studying here, back home and served in the military for a couple years. I was like, that's crazy.
So, they force you. It's like, not really, it's not a chance they forced. You have to, it's, I mean, that is forced. I don't know what can you say.
I mean, you have to, but anyone who wants to get out of it can. Oh. I mean, it's like... There are ways.
Yeah, there are ways. But yeah, I mean, that didn't stop me from, like, continuing to read up. And like, I would walk around with little, I would print out programming books, and little pieces of paper, and put them in my uniform, and read them whenever I could. I took every minute they could.
So you put Guardedity to, to its truest form there, you were guarding and learning. Yeah. So yeah, I actually did that while in Guardity. Yeah.
So yeah, basically 20 years, which makes me sound really old. I'm 35 now. And so basically my entire life since high school. That's interesting to hear that perspective that you're, you know, that it was so important to you, that you would go to any link that seems like, you know, even printing out a programming book and putting it in your shirt pocket in your uniform to, you know, find a way because of this passion.
Yeah. I find myself to be extremely lucky to still be so passionate about what I'm doing and love it so much. And if anything, it grows with time. Like, I still love it as much.
So much fun. Like, and there's so much happening right now with web development and JavaScript, and everything is changing so fast and new things are coming out. So it's just exciting all the time. I got to ask you just because you mentioned it, but the programming book, can you recall what you may have been studying that, and like what languages, what paradigms, what I'm trickler?
So this is probably Pearl or ASP Classic. I do have an image of myself after the army sitting on a beach in a CNI in a Egypt. Sitting there, my legs into water, reading our Ruby and Rails. Nice.
Yeah. It was like 2001. I want to see that picture. I wish I had it.
I wish I had it. Like, everyone around me was relaxing and smoking and relaxing. I was like, reading about Ruby and Rails, which was like the new hotness back then. It's how you relax.
Yeah, exactly. It's less stressful. That's one thing about the software industry that I love is, you know, a lot of people spend a lot of time finding what they're passionate about, what really, you know, floats their boat, so to speak. And oftentimes, once you find it, it's contrary to making a living, you know, like, I love, if you love music, like, it's very difficult to make a living and doing music because so many people are trying that.
If you love to paint, like, it's not the easiest way to make a living, but if you love to write software, you've fallen in love with something that you can do, not just for fun, but you can do, you know, very lucratively, as a location as well. So pretty fortunate that way. Yeah, exactly. I mean, that's what I found.
Like, oh, I love doing this so much. I mean, like, this is a bit embarrassing, but I've literally found myself jumping out and dancing alone in the room when I had the pull requests accepted to open source libraries. So when you're this passionate and this excited about open source, quitting my job and focusing full time on open source suddenly makes sense to me, if not to my wife. I think that's a case where we need to pick or it didn't happen.
You can use the new iOS Live photos the next time you get a PR. You know, there's that project that'll take a picture of you each time you get, you know, your push doesn't happen or you have a merch conflict that came out of which one it is, but you should get a live shot every time you get a pull request. I haven't heard that one. It sounds amazing, especially for SVN, whoever is still using those.
Yeah. Well, speaking of interesting and somewhat amazing open source projects, you have a couple of them under your belt and the first one that seemed to take everybody by surprise and was a big hit back in 2013, I think was when it first came out September time. I remember you emailing us about it. It's called Aung-Yong, which is speech recognition that just works.
That's your tagline there and it's allows you to control the website by your voice. Can you give us a background on that project? Okay, so I think the background behind this is pretty much the story behind every project I do. There's like so many exciting new technologies coming out and new things in browsers every day.
And sometimes, you know, you gotta read through long specs and understand everything and the differences between different browsers and all those little things. So what I like to do is I like to call it, I read the specs so you don't have to. So with Aung-Yong, what I did was this new technology of speech recognition came out and it's such a part of our lives by now. I was talking, just today I spoke to my phone and asked him a question a few times already, but you don't really see that on the web yet.
So what I went, what I set out to do was to take that and make it super easy for anyone to use. So you don't have to understand like all the different settings for web kit speech recognition as it is called and understand the difference between browsers and HTTP and HTTPS and all those things. You just say, okay, Aung-Yong, if the user says, show me search phrase, then run this function and pass it that search phrase. If it says, do that, then do that.
And then you just say Aung-Yong start and it takes care of everything. So basically I'm taking a technology that is very powerful and has a lot of features and build a very opinionated library that does one thing and does it well and super easy. So that's what Aung-Yong does. I mean, if you want to add, you can basically change the UI of your site.
So if you're Apple.com, for example, which is an awful example because it doesn't work in Safari, like most things these days. But if you're an Apple.com and there's a limited number of links, if you're looking for a monitor, you have to click through a few different pages before you find it. And if you're looking for store locations, whatever it is, a limit amount of screen space. But if you open up in a way, it's another dimension.
If you open it up to speech, like show me screens or show me monitors or show me HD monitors, whatever the user thinks he wants, the second respond to that. So that's what I did. I was the use case I had in mind. But of course, once you release something, that's the most exciting thing about open source.
Once you release it, people go crazy with it. If you're lucky. It takes a life of its own. Yeah.
I mean, I've seen people who use onion to create remote control cars that you can tell them to go left or go right, reverse, etc. I've seen people in a hackathon in Bangladesh. I think it was that they built AR drones, those little flying drones, and you could tell them to dance or spin or do different things. And they built that with Aung-Yong.
Very cool. Actually, just two weeks ago, I saw a developer who built a bathroom mirror that he can talk to. So he's standing in front of his bathroom mirror shaving or whatever, and he can actually ask it for a stokeholds or ask him as the mirror about the weather. And he built it with a two-way mirror that has a tablet behind it that shows everything.
And it looks super polished. What? Yeah. It looks like it's amazing.
It looks like an Apple product from 2022. Like it's so polished and so amazing. So doing things like that is really exciting seeing what people are building, like taking these new technologies and making them more accessible. That's really fun.
Yeah. So in those different use cases, specifically the bots and whatnot, are those all running embedded web browsers or Aung-Yong able to be used in a server site context or like a node environment as well? How is that working? With a browser.
It's still hard to run it on node. Very cool. Yeah. I think that is one of the most exciting things about open source is once you put it out there, especially something like this, which has a specific use case in mind, but then it's just generally interesting to dink around with.
People tend to start using it in ways that you could imagine going back to your point about the third dimension or the additional dimension that you're adding. One problem that I find with audio interfaces into websites, for instance, or even on the phone is that discoverability is really an issue. I don't know what I can and cannot say to this interface. Have you put any thought into that with regard to Aung-Yong?
No, I guess that is a bigger problem. And that is something that I still run into with my Google phone. Like just yesterday it was telling him, okay, Google, and he was like, please retrain voice models. I said, okay, Google, retrain voice model.
And he asked me to retrain and I said it back and it didn't understand. So it requires like machine learning. I said, the series is crazy. Siri upsets me on a daily basis.
I give her a chance and I really wanted to work better. And I'm like, no, I think I was looking for something to the day. I was looking at the word in the Greek library or the Greek language. And I was trying to Google for it.
And it just kept pulling back the Wikipedia page for Greek, what Greek means or what Greek is. And it like omitted everything after that. I just have many times I'm like upset with voice stuff. But it's a new paradigm.
Yeah, it kind of reminds me of the Wikipedia back in the day in Microsoft. Are you sure you spelled your name correctly? Can I help you with that? Yeah, thanks.
Yeah, I'm sure it's probably even more difficult. You know, being from middle America, you know, Omaha and Nebraska are kind of one of the telemarketing capitals of America because we're kind of famous for having no accent and kind of the most boring, dialect possible so that we don't offend anybody, I guess, with our how normal eyes, our voices are, but you know, yourself being from Israel, you know, you have that accent. And I just think of the problem domain of speech recognition and it kind of overwhelms me from perspective of algorithms. It's hard problem to solve, especially with people, you know, so many different voices over the world.
So how does on-young do speech recognition? Is there a library to implement yourself? Does that work? So onion is using a speech recognition, which is part of the W3 spec or proposition or who can get track of those.
They're so complicated. But it uses what's available in the browser. So right now it's in a Google Chrome. I think Firefox is working on implementing it soon.
But yeah, that's a problem with a speech recognition. I mean, most features you can, browser vendors can implement, but this one requires a very sophisticated backend, something that Google obviously has, but a lot of smaller browsers don't really have. So yeah, that is a major issue with Onion. It's Chrome only.
But it's, yeah, I know other browsers are working on that. The browser itself actually does the recognition, the speech to text, and it just hands off to the browser, to your JavaScript library, the text. And you take it from there? Yeah, exactly.
So I take care of all those little nuances and all those, like, for example, if you have a speech recognition running in two different windows, it can actually cause Google Chrome to crash. So I take care of actually reporting this to them and they fixed it since then, but it takes care of issues like that. So it's an interface in a way, a more friendly interface. I think it would be remiss to just keep saying Onion over and over again and not mention the namesake.
I pulled back up our emails from back in the day, Kyle. The first thing I did when you emailed me was I started criticizing the spelling of your name. So that's just like me to just immediately start bike shedding on something so I'm going to see you as the how you spell Onion. Why don't you give us, for those who aren't you, you're dressed as a Velvet fans?
Why don't you give the inspiration for the name and maybe your justification for spelling it wrong? So yeah, Onion is a reference to one of the greatest shows ever made, or as the development where there was a character who, I don't know if it's fair to say he was called Onion, but that's what everybody called him. Because when he came, the first time he just said Onion, which means hello. And everyone just assumed that was his name and didn't bother to find out.
So yeah, it's, you can say it's spelled a bit differently. You wouldn't say wrong. You'd say it differently. I like that.
Well, there's no right or wrong way to spell it because it's not English. You're just, it's phonetic spelling, which I'm phonetically spelling it wrong, but at least that way it looks less like the word Annoying, which is the feedback I got initially. So I went with that. But yeah, I loved her back and forth when I sent this to you a few years ago.
You're like very, very obsessed and the more obsessed you got about it, the better I felt about it. Well, it's something that Adam and I, we look at a lot of open source projects. And so we're very cognizant of names, what catches your eye, what doesn't. Sometimes names are offensive and we try to help people pick a better name or just ask where names came from.
Sometimes it'll be a project that I have no idea whether or not it has merit based on its value proposition, but the name is so spectacular that I just tweeted or included in weekly anyways. Because we do judge books, whether covers unfortunately, and with how fast open source moves, you kind of have to. So I'm definitely immediately caught my eye. And I thought, well, that's got to be a reference to the development.
So I went to the rest of the wiki and I saw it spell differently there. And that's when I had to start giving you some chabs. But it wasn't just a mistake. It was you actually said, well, it looked like annoying, so I'm going to change the A, and that makes sense.
Yeah, and I guess that's the point. I mean, if you're, if I cause you to pause and look it up and check it, then, you know, most things don't even cause you to pause you just to glance over and continue. And you remember it like a few years later, which, which says something. Yeah, absolutely.
And I think it didn't hold it back the wrong spell. I'm using the term wrong because I'm going to stay on my side of that argument. But definitely didn't hold it back. It's been a couple of years.
I saw at least on your GitHub that Onyong 2.0 has come out. What's the state of it? Is it done? Do you have future features for it?
Tell us those kind of things. So like a lot of developers, I have a very short attention span. You know, I get very excited about something and I can build something pretty interesting. Like, you know, those where will wind, where will wind 48 hours after you get the idea?
You can build something that would normally take you months. I won't say it's done, but it's pretty feature complete. From time to time, people do ask for more things, send pull requests. So I add those hopefully very soon.
I'll need to worry about other browsers besides Chrome. But it's pretty feature complete and definitely stable. I mean, if it's 2.0 and I'm very, like I use semantic versioning, so it's stable. You gave me some examples.
You already gave a couple of where it's been used. And the other is to come to mind of cool places that you've, those libraries gone that you couldn't have imagined. So actually I'm going to answer a different thing, a different question. Because like, I don't know, you know what?
I don't know. It seems like this is a real issue with open source because you develop something and people use it. And you don't really know who uses it, how they are using it. And I mean, they don't tell you.
There's no way for you. There's no analytics for open source. So that is a real issue that I've thought a lot about how to solve. I don't have anything yet, but it's something that has been on my mind.
Going back to your question, there has been a lot of Jarvis's, if you remember from Iron Man. So a lot of people have built Jarvis's. Jar-vi would be the employer. So a lot of people have, like that was the go-to project that most people like, really the first thing that pops to most people's minds.
But that is definitely an interesting problem to solve discoverability. Yeah, it might be interesting to have some sort of built, you know, similar to how a lot of websites for nerds like us will have a real small keyboard shortcuts. And if you hit, you know, question mark, it'll pop up, it heads up to supply type of a look, which says, you know, these are kind of keyboard shorts that we shortcuts that we support. Thank you, Jared, for being an idiot.
The kind of keyboard shortcuts that we support, you could have some sort of an interface for Anyang as well, which when you include it, you know, allows you to pop up something and says, like, these specific voice commands are supported. Even that would need to be discoverable. So, you know, most people don't know there are, you can hit question mark and get those things, but your power users do. That might be a step in the right direction.
That doesn't solve the problem altogether, but it really is a allow kind of a common way of people saying, you know, here are the types of voice commands that this website supports. Yeah, I mean, that is something I live to the developer who uses Anyang in, but definitely on the Anyang side itself, I do. I mean, that's how I introduce it. I mean, you land on the side just like barely two sentences, and then it's just telling you, say hello, and you say hello on the side says Anyang back, or it says, show me queer kittens and it shows you kittens, or then it says like, ask for anything in the side response.
So it's like a soft intro, and then sometimes it's just fun to discover. Very cool. Well, I think this is a good chance for us to step back and hear from one of our awesome sponsors on the other side of the break, we're going to move on to your newest open source project, up up. So stay tuned for that.
Our friends at Top Talent launched a scholarship program for female developers to support aspiring female computer scientists, developers, and software engineers to help achieve their goals through planning to support and also mentorship. Each scholarship winner will receive a $5,000 scholarship that can be used towards education and professional development goals. You can spend this money on anything you want from coding boot camps to online programming courses, textbooks, you name it. You also get one-on-one mentoring an entire year of weekly one-on-one mentoring with a top-top seat developer, and this person's going to help with topics like project guidance, choosing an academic or career path, and also preparing for interviews to top out a comm slash fellowship to learn more and also to apply.
All right, we are back with all ATER talking about a few awesome open source projects. The most recent of which is called up up, and you can find that at upup.rocks, making use of those awesome and or not awesome new domain names there. Up up is a tiny script that makes sure your site's always there for your users, the offline first library. Why don't you give us the elevator pitch here?
Okay, so I mean basically where the last big thing was mobile first. I mean we're building sites that are ready to always be there for users when you're on your phone or wherever. But now that we're all on our phones, we can't really rely on having a constant connection. No one's walking around with a wire connecting them.
So new technologies have come out to allow sites to still work, even while the user is losing connectivity. And that is what up up does. I mean, it uses the new service worker APIs to achieve that. I'll talk a little bit more about that.
Basically, I mean, this is something that happens all the time. I mean usually when I tell people about this problem and they're thinking, yeah, I mean like in the in the less developed world. Yeah, they don't have connectivity all the time. But I've been visiting the states for the past two months and in downtown San Francisco, I couldn't get a service.
And this is something that happens all the time, like whether you're in San Francisco or going down to the elevator or in a flight, you can't really rely on having that connecting to have that persistent connection to the internet all the time. So basically what up up does is allows the site developer to decide what experience he wants the user to see when he's not connected. So that can be as simple as if I go to a certain site and I don't have internet, I might see a message from the site saying you don't have a connection connection, so you can read your emails, come back later, or it can be a full single page application experience. I mean, you could have Gmail working even without a connection if they implement this.
So, and of course, this requires the user to visit the site while he's online the first time. But once he did, every time he visits it again and his offline, it will still work. So the classic example for me would be like a site like Bookin.com. So I know I'm flying to San Francisco.
I booked a number of hotels. I landed in San Francisco. I still don't have a local data plan or the connection didn't work. I sit in my cab, open up my phone, go on Bookin.com.
And instead of seeing that little chrome dinosaur telling me I'm offline, I would still be able to see my reservations, to see the address of my hotel, the phone numbers, et cetera. And that's the idea behind ABAP and the technology that enables its service worker. This is an interesting conversation around connectivity in general. I tend to live in a little bit of a bubble where I don't know if I'm ever not online.
Of course, airplanes is the big proof point against that. And now they're adding in-flight Wi-Fi. People can get online on airplanes. It's limited, but going to be coming.
Obviously in third world countries places where there's less infrastructure, we do know that cellular infrastructure is way better than any sort of wired infrastructure has been in those places. And so maybe it's expensive, but access is there, maybe it's slow, but there is connectivity. Do you think this is a problem that's going to exist five years from now, ten years from now? Or is the network coming or is it not coming?
What do you think? I really hope so. But one of my first as an entrepreneur, one of my first companies was called Wiser. And we were one of the first companies to add Wi-Fi to restaurants and cafes in Tel Aviv.
And this was in 2004. And we tried to explain to people to restaurant owners why they even need to provide this service. And this was 11 years ago, and we still have that problem. So I think it'll be a few more years before coverage is...
I remember back then people were talking about, I think it was called Wi-Max, something like that, Wi-Fi, but Wi-Max routers that would cover entire series 11 years ago. So I think it'll still be a while before this problem is solved. Not with you, though, Jared. I've only ever been out without a connection.
Like I always have the internet. I think we're probably just in bubbles. Wi-Max, I think, is a bit of a dead technology. I know Sprint was one of the carriers that rolled it out in mass years ago, and they've since switched technology so much.
The promise of Wi-Max has never really arrived. But yeah, it's hard. It's living in a bubble. It's difficult to empathize with people who aren't in that bubble and see this for the real problem that it is.
And then you have people who experience connectivity problems all the time, who aren't just like Smash their whatever podcast listening device they're using right now because we're so dumb that we think that this isn't a real problem. It just seems like it depends on where you are in life. And you're in a unique perspective because you're traveling the world right now. And so you probably have lots of experiences recently with MI Online or MI Offline.
I'm just curious how many of those flights you've taken have had internet access? Well, mostly domestic flights in the US have Wi-Fi. It still costs a lot. And there's no company to expense it to.
But yeah, the past two months have been traveling all over the States, started in the East Coast, West Coast, now I'm back in the East, and you see it everywhere. The US isn't covered yet by all those networks. And with a lot of pressures on them to drop prices, that problem will still happen. I mean, even in the US.
And I agree, I also live in a bubble. In Tel Aviv, we call RCD the bubble. And you have connectivity wherever you go. And it seems isolated in many ways.
If anything, it's like Silicon Valley. But the issue of connectivity is a real one for most people. Well, I think up-ups interest and success early on has driven that this is a problem that developers want to solve. I think you're over 3,000 stars on GitHub.
You're definitely in change log nightly a few days in a row in the top of star repos, sections. I think you were at the top of Product Hunt even. Can you speak about that experience on Product Hunt? Yeah, so that was very interesting.
It was actually at my last day at my old company, I went into basically say goodbye to everyone. And suddenly I got a tweet from Product Hunt that my, that up-up is there and has had over 100 votes already. And they do this animated GIF of Oprah, like going crazy. That was so exciting.
I didn't even submit it there. But it was super exciting. And I just locked myself in a room and followed it throughout the entire day, talking to people, asking them to share it and look at it. And yeah, at the end of the day, it was the most haunted, I guess, is the term, the top of product and product hunt, which brought in a huge amount of traffic in the tens of thousands.
And yeah, up-up has grown incredibly. And I think the only metric I have to measure that is in GitHub stars. That's our new currency, I guess. And it has surpassed Anyank in a month or two, what took Anyank to your stu-chief.
So that was very exciting. You think it's because of Product Hunt or you think it's because of Simply the Library itself? It's a lot of things. Product Hunt certainly helped.
It was also featured in a lot of other places. You guys brought about it, which also brought in a lot of traffic. But I think a lot of it is what I love to talk about later is simply looking at what you're building at the library, even if it's open source, looking at it as a product. Even if you're not selling it for money, you need to grab the user's attention.
You need to have him understand immediately why he wants to invest another minute of his time to understand what it is, getting excited, making him want to try it or share it with his friends. And that is something that I think I did a little bit better in an up-up than I did in Anyank. I'm not leaving the learn. Product Hunt's interesting.
It started off as Simply the place where you post a new software as a service or try this app. They've seemed to have expanded their scope quite a bit, even so much so that there's podcasts now, which Adam and I just found out earlier this week. I think when I said, hey, they have podcasts. Why are we on there?
We were all there once before. Somebody on Twitter, I can't recall the name. I see all the time I know we're out of time. I just can't think of the name right now.
We were submitted a couple of times, so I've known about it, but I didn't think I guess it was brand new then three weeks ago. I've never been the one to subscribe to. I've got to put my thing in this site and then it will become popular. I just don't like feeding that beast, sadly, Product Hunt has done well enough that you have to feed the beast.
I don't want to feel like that, but at least products do. I've just launched a new product at her work. Product Hunt was a big part of that. They were on the front page for a while.
They were on the top five of the day. It made a big deal for their adoption. It's a great thing. I've become a huge fan of Product Hunt because I'm one of the old gazers of the Internet, I guess.
I remember back in the days of Dig and all those stuff. Flash.dig. Flash. We started tweeting back and forth and he was super nice.
When your product gets featured, they send you funny animated GIFs and you can see the responses of the community. They're also supportive and interested in asking constructive questions and trying to understand my story and stuff like that. Whereas in other places, it just seems like you're feeding the trolls. It just feels different.
I think some of that's you can contribute to the community itself. You can also treat some of it to the size and the relative youth of the site. As things get bigger and as communities grow and as the stakes rise, which products are rising, meaning it becomes more valuable to be featured there prominently, it'll be very difficult for them. One of the main goals is to maintain that positive community and not have it turned into a toxic one.
It's possible that they're still in that stage where it's all kumbaya style and hopefully they can maintain that. I think that will be a challenge for them. Success brings me to the call for some trouble. I agree with you, please.
I was an early, early Hacker News user and like actual commenter and stuff. It felt very much like that. It felt like people were smart, they were helpful, they were insightful. It was generally a place where you would learn and be uplifted and find new technologies.
I know it's kind of a recurring thing that happens with online communities. It's over time. The difficulty is to maintain that early feeling as more and more people and still be able to grow. I think it's just a really hard problem to solve.
Let's get back to the top of your hand up up. Todd, what's behind this thing? Honestly, it does amazing things. It's really awesome, but this is all because of the technology that is under it, which I didn't develop service workers.
In my opinion, service workers are one of the biggest additions to the browser. We've seen, I don't know, Ajax and Web 2.0. It's amazing. Just for people who still haven't played with it yet, basically service workers are scripts that sit between the browser window and the server.
It's a script that runs in the browser, independent of the window, independent of the DOM. One of the things it can do, it can act as a proxy that you can program. It can sit there and intercept every single request that comes out of the window before it reaches the server and decide whether to do something about it, change it, call the server, call a different asset, and then return the response if it chooses. This sounds like a big security issue, but this has been thought through and I've tried to break it.
It's built very well. What this allows is things like up up, for example, but also imagine a site that asks for HTML from the server. Then the service worker detects that it's installed and says, don't ask for HTML, ask for JSON instead, calls for JSON file and runs the templating inside the browser before it even reaches the window and returns back HTML. It has a lot of power and possibilities.
It can do amazing things. It can talk to the windows even when windows are closed. It has the ability for push notifications. Basically, this is one of the things that are pushing web pages as close as they've ever been to the power of applications.
It's really spectacular. The guys behind it have been doing an amazing, incredible job. Let's dive deeper on servers. We're going to take a quick break here from a sponsor.
On the other side, I got some questions about it because I agree that it has a few potential and it seems like it's shrouded in mystery. I'm giving a good description there, but we'll do some Q&A on service worker. We'll get back. Braintree is all about making developer lives simpler with code for easy online payments.
If you're searching for a simple payment solution, check out Braintree. Remove what developers out there, the Braintree B.0 SDK makes it easy to offer multiple payment types, start accepting PayPal, Apple Pay, Bitcoin, Venmo, traditional credit cards, and whatever's next, all with a single integration. Into a simple, secure payment that you integrate in minutes and developers that got you, don't worry about taking days to integrate your payments, but Braintree is done in minutes, and if you don't have time, give them a call and they'll handle integration for you and walk you through it. Braintree supports Android, iOS, and JavaScript clients.
They have SDKs and several languages.net, Node.js, Java, Perl, PHP, Python, and Ruby, and their documentation is comprehensive and it's easy to follow. To learn more, and for your first $50,000 in transactions fee-free, go to braintreepaintas.com.com. So we are talking about up-up, which, smooths over and adds some things to service workers. Tal, you gave us a rundown of what service workers are.
A few questions. Let's start with browser support. Who's implemented this and who hasn't? So, service workers, and I'm Googling it, so I don't have any of them.
But basically, they just landed in Firefox. They've been in Chrome Opera. The only ones who aren't part of the party that are explored and you explore and are so far. And I've actually spoken with some of the guys at the team there and they're looking into it and it's on their roadmap.
They actually wrote this on their roadmap plan that service workers. It looks like everyone is requesting this and thinks they need it, so it looks like we'll add it. But it might take a while before it lands. I mean, Safari, which unfortunately means no iPhone for now.
But Chrome Opera and Firefox for now. And I've already described as allowing you to man in the middle yourself. Do you think that's an apt description of what service workers do? It's an interesting way to think of it.
It's kind of like a proxy server. It's basically like it sounds like men in the middle and what I describe it sounds very dangerous. But basically, whatever JavaScript can do in the browser window, you're just taking it to one level up and it has the same permissions, it can access the same kind of resources. Only you can do it where it's a bit more powerful and you can control the experience a bit more.
Is it time for the particular tab or window? No, so it's attached to a certain scope. So, for example, if you have a server that is attached to every window that is under that directory in that domain or any window that is in that domain, it's kind of like cookies. Yeah, a little bit, you can say.
So, it can control any request that is within that scope. That's how it stays secure. So, I like thinking about a proxy. We're used to service proxies or browser proxies.
And here you have basically, if you have a proxy inside the browser window that you can tell it what to do before it delivers the content to your application or in the direction. Maybe, we know up-up does. It allows you to have offline web apps. Maybe describe to us how up-up uses service workers to get that done.
Yeah, okay. So, what up-up does is it registers a service worker that sits above the window and intercepts every request that goes whether the user is asking for the HTML images, etc. And it catches that request forward. It doesn't touch it, let it go to the server.
But it traps it in a promise. And if that promise is broken, that means the server couldn't be reached, whether no internet or even the server is down, then that's when up-ups brings into action and says, okay, there's a problem. Let's see if I have something in the cache to show instead. It looks for alternate content in the cache and returns that.
So, what the user is seeing is will be instantaneous. Like the user would go to a certain site and he would immediately get the offline content. And then the background is trying to reach the server, seeing that it fails and showing alternate content. So, the offline experience is actually faster than the online experience in that way.
Man, I guess I'm just pedantic about naming, but, you know, service worker. What does that mean? What does that mean, anybody? It reminds me of web workers.
Can you tell us if there's any relation to web workers at all with service workers? Yeah, so I haven't played around much with web workers, but as far as I understand it's similar in a way that it is a script that runs in a background in the background, yeah, in your browser. So, I guess that was the source of the name. So, one server web and one for service.
Still somewhat confounding. Perhaps, you know, perhaps service worker, the name is one of the reasons why people struggle so much to embrace it and really know what it's used for. Maybe because it's just generally useful, but it doesn't have specific uses beyond just caching where people can really latch onto it. I like what you do with your libraries.
You seem to kind of take the cookies down to the bottom shelf so to speak. You do that with on-yong. You said let's make this speech recognition available to more people here. You're saying let's make this specific feature of service workers, which is offline availability easier for people to implement.
What were some of the challenges that you ran into with regard to service workers implementation-wise with up-up that you can share with us? So, just understanding how all of this works and fits together is like promises that work differently than how we're used to doing JavaScript. Accessing the new caching API that is part of a service worker is difficult. There's been a lot of things that I'm, frankly, I'm still learning.
Or more correctly, I'm forgetting and relearning. But it's not that easy to get into. I mean, there's a lot of things that you can achieve immediately, but if you're looking for a more sophisticated use case, there's some reading required, some learning. There's a learning curve there for sure.
How about the learning curve with up-up? Have you found people that need to look under the covers and figure out how it's working underneath? Or has it been a pretty good abstraction layer? No, so actually the only people who commented under the covers, as you say, on the code of it, where people who have been personally involved with the service workers back and other developers who have been building other service worker libraries, they've been looking under the covers and giving some awesome feedback, which improved the library.
But I think it targets the developer who just wants to build something and have it work without having to worry about service workers and stuff like that. There are a few problems there with the learning curve of up-up in that you need to realize that it can only control a certain scope. So if you're placing the up-up JavaScript file inside the JavaScript folder, it will only be able to control what's in there. So you have to place the root.
Another limitation of service workers is your server has to be secure, so it only works over HTTPS. But it's built as a progressive enhancement. So if the browser doesn't support it, nothing will happen. It'll just be a normal site.
It won't even load the script file, so it doesn't affect the performance. Did you have to actually build that progressive enhancement into up-up, or is that how service workers are generally? Maybe better put, can I shoot myself in the foot with service workers, or do they also just fail gracefully? Now, they have been written based on a lot of experience with other technologies that have come before that.
The guys who've written all of this, which I'll gladly talk about later, are really made sure these things work. The first thing it does is it tries to register a service worker, and if it doesn't succeed, then it doesn't do anything. So it doesn't affect you. With Aniong, I did have to do some things to make sure it loads the minimum amount of code because it's only Chrome.
So I had to make sure I checked as early as possible for support. And if the support isn't there, don't do anything. So as not to affect users, we use unsupported browsers. So you mentioned that a service worker has to be registered.
So what does the process of actually registering a service worker back to? I guess does it install something to the client? How does that process of registering? So yeah, this is service workers.
What I'm talking about in general, not up-up specific. Is it different for up-up then? Or did you have to do some hurdles for up-up to work? Yeah, tiny bit.
What service workers do is when users first visit the site, it does a register, I forget the name of the command, but it registers a service worker, which then runs the service worker script in the background. And that has an installation process, which then then shoots an event once it is installed. So that means that usually when you first arrive at the site and the service worker is registering and installing, it isn't available for the site until you refresh and then find that it's already registered. So you kind of did some hacks around that in up-up to make sure it can communicate with the service worker which content you want cached and save that during the first day of the page.
This has become a little bit easier. This is a bit more required, a little bit of hacking in Chrome 42, I think, but it's much easier now. So there's an installation process and then it's ready and you can do things. And that installation process is a great time to cache content, to download stuff.
That's what it's there for. So while you're doing the installation, you can take the payload and also drop in some, for example, what would you cache? So what I do with the up-up, which is one example, is when you run it for the first time, you tell him I want you to cache this HTML and show this for the user the next time he doesn't have a connection. So you can cache that HTML and you can also cache additional assets with it, like image files, CSS, MP4, anything, video.
It can look like a full web experience even when it's offline. I guess from a user's perspective, I'm thinking of, right now users don't really know what's available. So not so much us, like people who are geeks, building technology, but users who aren't even sure what HTTP means or anything in particular about how technology works. They're not expecting these applications to not work offline.
So how does, I guess, maybe this is more experiential than it is technological. What do you think's happening around educating users that offline is an opportunity or application developers educating their users that, you know, while our application might require a lot of online interaction, normally, there are some things you could do offline and to take advantage of it? So, yeah, as you said, it should be a part of the experience. I don't want to educate, I don't want users to need to be educated what to do differently when it's offline.
It should just work. And only when it doesn't work and you get the little dinosaur in Chrome or a message in another browser do you realize that something stopped working? And I'm looking forward to a web where that doesn't happen. Like maybe you'll get a slightly different experience, like for example, the Guardian just implemented service workers.
So if you're going on the Guardian site and you don't have a connection, you get a little crossword puzzle that you can do. It's something interesting. It's in trivial. Yeah, I mean, you'll notice that it's offline.
But another thing they can do is like, for example, still let you read the last 10 articles even when you're offline. You just save the text of the articles and template and show that to the user. It's all possible. The user doesn't even have to notice he's offline to a certain limit.
Yeah, because there's certain things that, you know, if you think that you're online and take your booking situation, for instance, where you can look at your hotel information, you shouldn't have to be online. You already have that information in your phone, right? It should be displayed when you come back to that webpage. But say you want to change it.
Or you know, once you get out of read-only mode, if you're offline and you know, there's no indication to the user that they're offline, and just acting as if they aren't, they could create some confusion. Are there ways in up up where you can trigger certain things based on the offline online status? Or is that just something that you can do daily with the browser? Not yet, but that is definitely something I'm very interested in allowing you to cache certain actions and queue them in a way so that they can be done once you're offline.
You're online again. Exactly. Where I want to do next with up-up. Yeah, I mean, I think that's where offline gets really tricky, is like queuing up changes because now reliably, I changed my booking time.
And now the browser can't actually load that up to the server. And then maybe five minutes later, I get back online. And that API call gets rejected for one reason or the other. You start getting all sorts of issues.
I think a great middle ground in the meantime is like, what can you provide? You know, like start thinking about that. We can put you in a read-only mode. I don't think it's death telling the person that they're offline.
And showing them as much information as possible, people have that understanding. So indicators, I think, are valuable. I think that cross-repuscles kind of a fun idea. Where, you know, instead of dealing with all the problems of what happens with these requests that they're queued up and certain ones are dependent on others being successful.
And then seeing that all resolved when these are coming online, which is technically, you know, can be quite a cesspool. Having this like middle ground between like your Chrome dinosaur and a fully functioning app. Yeah, for sure. Yeah, it's super important.
But that is something that is right now left to each side to implement. Sure. Yeah. What about, you know, so you basically tell up up to start on this page and you tell it which content you want to cache when they come offline.
He said you can pass it HTML or images, these kinds of things. Are there any limitations or mis-incompetibilities with certain CSS frameworks or JavaScript libraries or frameworks that you found? No, not so far because basically because it doesn't sit within the browser window, it sits in layer above. It's returned to the browser as if it's a network, as if it's a response from the network.
It just works the same. As long as, of course, it doesn't call for resources which aren't available like JavaScript from a CDN or something like that. So you have to make sure all those resources can be cached and made available when you're offline. You mentioned before that you tried to break it, which made me believe that you may also try to think about EVOAs, you can use this service worker opportunity.
Is there anything that you can think of that might be an evil possibility so to speak for this to play part? No, I had some ideas. I tried to do that. I tried to see if you can return stuff to bypass the existing security mechanisms, but it's pretty well written.
This is just something that I like doing. I've did it before in speech recognition. I've found a number of bugs which I reported to Google and most of them they fixed, if you have them, they didn't. But yeah, it's fun to break things.
I mean, people who make stuff also like to break stuff. That is true. That is true. Well, anything else that you want to say specifically to the technology and how it works before we move on to talk about your products thinking and your promotion of your own source projects?
I think that is the point of the way I work with it to make these things invisible. But service workers are definitely something people should be looking into. People who are interested. It's definitely fascinating stuff.
And if you are interested in service workers, seeing a real world in use application of them, such as what's inside of up up, it's probably a decent way of wetting your teeth. I'm doing it every time. I'm doing it every time. I'm doing it all right here, guys.
Wetting your appetite, cutting your teeth. It's mixing metaphors. Let's take a break before I shoot myself in the foot again. And here's one last time from one of our awesome sponsors.
And we want to talk to you on the other side of the break about this promotion idea, how you're treating your open source projects as products and how you are getting them out there in mass. So we'll talk about that on the other side of the break. Guess what everyone? Opbeat is announcing their No.js beta right here right now exclusively to our listeners.
Opbeat combines performance metrics, release tracking, and error logging into a single simple service. And with all of your data in the same place, they're able to do smart things with it and help you make wiser choices. Opbeat integrates with your codebase through Git and makes monitoring and debugging your production apps much faster. It's free from unlimited number of users and until now has only been available for Django and Flask.
But now they're launching a private beta for No.js and sharing it with our listeners first. So go check it out and sign up for the beta head to opbeat.com slash change log. That's opbeat.com slash change log. I were back from the break.
You know, that's been fun on young up up a lot of fun. A lot of enthusiasm behind your pursuit of software technology, open source. But you have a pretty good heart for promoting open source. You've done a pretty good job with these last two releases of yours.
It seems like it's it's almost easier for you to have some success with your projects. Do you have secret sauce you can share? What are you doing? What are you doing that's making these products so great?
So I think that the and I'm making air quotes now. The secret is I was an entrepreneur for many years freelancing working basically building things from A to Z and having to wear all the different hats whether it's marketing, development, planning, all of that. So that is something that I think a lot of developers sometimes don't do because I know I worked in a company and there's product people and there's marketing people and there's development. Sometimes it's very it's very comfortable not to do those other things.
But once you get a you get a little bit of experience trying those other things. I think I know what you're saying though. I mean, I'm thinking like people get comfortable with their title or their job or the one thing they do and you know, because I'm a developer, I'm just a hyped up here. Because I'm a developer, I can't write marketing copy or I can't help the marketing team to say what our product does better than they can't because that's their job.
I can't do their job. But in the case of you because of your past experience as an entrepreneur and you know, kind of wearing many hats, it's easy for you to wear many hats. It's something to actually do well and thrive on. Yeah, and like we do it a certain way in our work and once we go into open source and we're in charge of wearing all the different hats, it's totally different issue.
I find that there's like a tension between two opposing forces when you're developing because on the one head it's a very private intimate experience. I mean, you're developing something that you're passionate about. You're sitting probably in the dark with headphones and I'm describing myself here. And writing code like drinking red balls and like it's very personal, very intimate.
And you're so familiar with the code and then you want to release it and you expect other people to be as excited about it as you are. But that is where the other force comes because other people didn't experience it as you have. So you have to distance yourself from it a little bit and understand how other people see it and look at it and realize that it's something that I find is usually in the projects I've built. It takes up 90% of the time.
So you build something like Anny on your up up and then you work on creating copy and a brand around this. It's a scary word like brand and marketing and PR. It's something we're not used to doing but it's just as important because I mean how many times have you seen like people who've released the library and you go and it's like there's a read to me and sometimes it's documented or not but it's like one star, two stars and those are often like amazing libraries but you need to go past that moment and realize that you need to look at the whole picture and turn it into a product and market it and make sure people want to find out about it and want to try it. And that is the biggest challenge for people like us I think.
Something Jared said earlier which was we judge books off of the covers more often and I think that was more in reference to us seeing so much software and so much open source that a name matters. A misspelling might matter, a collision with another library of different language matters. What can you share about let's say like the lessons learned from Aanyang to up up up. What did you learn from Aanyang that made up up even better in terms of releasing?
So all this I guess is a matter of time passing because I know me personally every time I whether you write code or you design something or you do like fast forward six months later and you hate it so maybe a little bit of story of half of soon. But I think what it did was a better job at explaining what it does so you immediately like it clicks and you immediately get it and also to provide a hook right up front that the minute you land on the website you're like intrigued and want to find out more about it. There's a I read an article by one of the I think the head product guy at Four Square and Swarm and he says there's a phrase they use a lot of surprising and delighting users. So that is something I'm really looking forward to.
That is the hook that catches the person who comes to a site and has like 20 tabs open. You need to catch him in those first 10 seconds and make him remember your remember the name and want to actually read what you do before he switches to the next one. And so that can be something playful like the name of Aanyang or that you just start playing with it and it shows you pictures of kittens or whatever you ask it and like there's other references there like it's showing TPS reports and stuff like that. In AppUp for example that was like a big discussion I had in my head about how to do this.
When you get to the homepage there's a video on the top of it that doesn't look like a video it just looks like an IDE or there's some code and a phone right next to it. It doesn't it looks like an image and as the user scrolls down it starts playing and there's no controls it doesn't look like a video it just looks like a live coding. People are like I'm seeing people react to it and they're like trying to play and then when they're like realizing that it's a video they're like oh yeah they're like surprised. And that wasn't the safe choice to do there because about I think 20% of people I've showed to have missed that video and they were like oh there's a video there when I told him later and you should have a play button so we don't miss it.
But it was worth it for me to have missed a couple of people for that reaction from the other 80% who were surprised by it and they were like oh and the reactions have been amazing. Like people have tweeted about it and tweeted how awesome it is and that's how you catch people like in those 10 seconds. I love it it's like an instant demo honestly and it's a passive way to because you might think well yeah I should you know I should go to the demo section of your website and actually click a video button or something like that to. But that's a you know an explicit way of doing it where you are sort of catching them off guard and surprise them away and maybe even delighting them that like hey right here real time in about less than 30 seconds I can take this example website from an online to an offline version and you actually see how easy it is to write.
You know the different scripts and include the up script and you know go to the different functions and you know what not to get to this point I think it's. That's really awesome to to to do that and even to the risk like was that totally your idea did you have some secret party say you should try this. That was my idea but it's it's not some stroke of inspiration like this is a painstaking process over months like I build something and I've worked months to have a website that I can feel comfortable with releasing polishing and changing and over polishing it and show you to a lot of people. It's a painful process.
What's your aim at all what's your M.O. why all the time why all the effort. Because when you build something like that and you're so passionate about it the payoff that the dance that I later do when I find someone doing something is from people actually not just glancing over it and going to the next thing but actually being caught in it and understanding what it is and getting excited. That is the most important part of like polishing that to have that experience from the user is the most important part of my for me to get that payoff to get people to use it to get people to sharing it and building awesome stuff with it.
What are all different parts to go into thinking about an open source project like a product you can use up as an example you've obviously stated that the name of the project matters that the landing page are there other aspects to it that you put so much thought into as those things. So a few other things are of course the name I want to say I'm 100% happy with the name up up I'm happy with Anyan because it's a bit weirder. But yeah you have to consider how people once they get excited you have to give them an action to do next so you have to consider how they're going to share it and when they share it how that is going to translate into more people being excited about it. You have to consider how you approach other coders or bloggers or developers media you have to consider all of that.
You have to consider how people in different countries are going to perceive what you've built for example Anyan which uses language which I don't understand so you need to be careful with that. But hey it's not even a real world word. Yeah. So there's a lot of thinking that goes and obsessing that goes behind this sense it's a labor of love.
We talked about you know you ending up on product hunt you emailed us you know that you have a new project. You're okay with promoting your projects and you stated why. And you know Adam I even revealed some of our thoughts around like how do we feel about promoting the change logon these different venues and stuff. I think developers kind of have a icky factor when it comes to self promotion or marketing I know that's like considered a bad word.
Do you ever feel icky with any of this stuff that you do to get your projects out there or do you ever feel like you've crossed a line or is it all just par for the course. No because I don't think the icky experiences I've had were with marketers who weren't who didn't believe in the product who didn't like when it's someone who's a developer and he truly believes in it and he talks about it with passion because he really loves what he does. I love it like I love watching people do screencasts and talks about their technology because you get caught up in excitement. It's it's not marketing it's just talking about what you love.
It's not marketing it's just talking about what you love I like that. That's good. Was that a marketing slugging what I did? I'm like a good slugging.
I'll write that down. We have a couple closing questions we obviously love to ask our guests. We got a super secret one I think you got something coming up that you might be able to talk about so maybe we'll open with that super secret one for a free thing dude. I think so.
Let's do it. So is there anything super secret that you might be doing in the near future to promote open source something no one else knows about. Okay, so I'm actually right now obsessing about my latest labor of love as you can see I'm super excited about these other aspects of open source that people usually don't talk enough about I think like you guys do it and the change log and that's why I enjoyed a lot because there's a lot that goes into open source that has nothing to do with the code and there's not enough places to talk about it. So one of the things I've been working on is a new blog a new site called the open source or com where I'm going to be talking about everything that has to do with open source and not.