Internet of Things
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Subtitle |
| |
Title of Series | ||
Part Number | 92 | |
Number of Parts | 94 | |
Author | ||
License | CC Attribution - ShareAlike 3.0 Unported: You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal and non-commercial purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this | |
Identifiers | 10.5446/30674 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
00:00
Presentation of a groupInternet der DingeDifferent (Kate Ryan album)Demo (music)Data managementInformation technology consultingGamma functionNumberCodeBasis <Mathematik>Right angleContent (media)CASE <Informatik>User interfacePiCellular automatonVideoconferencingMobile appBitContext awarenessCoroutineComputer animation
02:11
VideoconferencingMultiplication signArithmetic progressionGraph (mathematics)Figurate numberTerm (mathematics)DebuggerMusical ensembleCycle (graph theory)Type theoryPhysical lawRight angleForm (programming)Vector spaceBitInformation securitySet (mathematics)Graph coloringSound effectCoroutineInternet der DingeWeb applicationMobile appInteractive televisionBookmark (World Wide Web)CountingComputer animation
05:39
BuildingMultiplication signInternetworkingDigital electronicsFitness functionInformation securityPhysicalismObject (grammar)LeakConnected spaceWater vaporMobile appInternet der DingeSpacetimeExecution unitTraffic reportingCartesian coordinate systemCoroutineFluid staticsOrder (biology)SoftwareRight angle1 (number)Integrated development environmentPay televisionPoint cloudPortable communications deviceComputer filePersonal area networkFilm editingVirtual machineNumberMathematicsLevel (video gaming)Ultraviolet photoelectron spectroscopyAngleSelf-organizationPower (physics)Video gameWordGroup actionOffice suiteWeb 2.0Software testingCodeLocal ringRow (database)Regular graphComputer animation
11:29
Right angleCartesian coordinate systemState of matterMathematicsConnected spaceOnline helpClient (computing)SpacetimeGraph coloringMultiplication signCycle (graph theory)NumberInteractive televisionWeb 2.0Internet der DingeSource codeEvent horizonService (economics)Dependent and independent variablesForm (programming)BitCoroutineServer (computing)Video gameRegular graphLevel (video gaming)Object (grammar)Computer clusterEndliche ModelltheorieGame controllerDebuggerBit rateVideoconferencingBuildingGroup actionUser interfaceExterior algebraTerm (mathematics)Mobile appDifferent (Kate Ryan album)Open setPhysicalismMultilaterationComputer animation
17:08
Scripting languageEvent horizonLibrary (computing)Slide ruleCellular automatonWeb 2.0Electronic program guideGroup actionMappingMereologyDebuggerClient (computing)Link (knot theory)Stack (abstract data type)Mobile appBuffer overflowComputer animation
18:10
Source codeGame controllerUser interfaceDatabaseObject (grammar)CASE <Informatik>Group actionCodeInteractive televisionCycle (graph theory)Connected spaceEvent horizonLevel (video gaming)Data storage deviceMappingMultiplication signCartesian coordinate systemString (computer science)Hash functionRouter (computing)Attribute grammarGraph coloringDebuggerParameter (computer programming)Message passingDomain nameEndliche ModelltheorieRight angleComputer animation
21:19
User interfaceSocial classMobile appObject (grammar)1 (number)CASE <Informatik>PlastikkarteDomain nameBitMultiplication signTelecommunicationCartesian coordinate systemGraph coloringDigital electronicsInternetworkingEndliche ModelltheorieLibrary (computing)Right angleMereologyCAN busSlide ruleFigurate numberInternet der DingePoint (geometry)Vector spaceSingle-precision floating-point formatSheaf (mathematics)Electronic program guideSoftware testingRule of inferenceComputer animation
24:01
Mobile appCountingoutputGraph (mathematics)Event horizonRight angleCartesian coordinate systemSinc functionThread (computing)FreezingCASE <Informatik>DebuggerPersonal identification numberImpulse responseServer (computing)CodeDatabaseService (economics)TrailControl flowMereologyProgrammschleifeLoop (music)Client (computing)Dynamical systemComputer animation
26:39
Mobile appDifferent (Kate Ryan album)Object (grammar)Computing platformSpacetimeBitINTEGRALRight angleObject-oriented programmingCoroutineSource codeSoftware developerCartesian coordinate systemGraphical user interfaceGame controllerSurface of revolutionBuildingInternet der DingeGroup actionNeuroinformatikSoftwareMereologyPhase transitionPoint (geometry)DivisorMultiplicationWordImplementationComputer animation
31:11
Integrated development environment
Transcript: English(auto-generated)
00:12
Thanks for coming out, guys, and checking out my presentation on the Internet of Things. It's a topic that I'm very, very fascinated with. Not something I do on a day-to-day
00:21
basis for work, but I've been kind of tinkering with the Internet of Things and reading a lot about it. So I kind of wanted to share that with you guys a little bit today. So today I'm going to walk through a simple Rails-based Internet of Things app that I've built and then kind of talk around some of the background and context around
00:40
the Internet of Things and then also talk through the future of the Internet of Things and kind of where I see it going. So kind of just a quick background and introduction around me. So I had kind of a roller coaster of a career, which is I've tried and done a
01:01
lot of kind of various different things, started off as a political science major, then went into business where I tried management consulting and venture capital. Before I kind of started teaching myself to learn to code, really loved it, so went to the Flatiron School and kind of to get a formal education there, and now I'm working at a small legal tech startup called Caseflex.
01:23
So certainly don't have the number of years of experience that a lot of I know a lot of you guys have, but I love it. It's been an awesome ride so far. I'm very excited to be here today as well. And for on a day-to-day basis, I use Rails and Angular.
01:43
And I've kind of, as I mentioned, I was kind of a Internet of Things nerd. I've really gotten into kind of tinkering a lot with Raspberry Pis and Arduinos as well. So before I kind of get into the presentation, let me walk you through my daily routine.
02:01
Just a quick disclaimer. I brought all the stuff here, but I figured the demo might be a little bit better if you guys can see it there, and I also videotaped it. So I'll just show you guys the video of the app.
02:33
Cool. Basically, I'll go through kind of what it's actually doing a little bit more in detail, but I have the actual web app on the left, and my
02:46
Internet of Things set up at home on the right, and I'll kind of go through what my daily routine is. So in the morning, I wake up, I turn my lights on, but I'm really cranky in the morning, so I need to dim my lights a little bit, so I do that.
03:01
As the day kind of progresses, it's supposed to be good to kind of get a redder type of light for your circadian rhythm, so using kind of a form there, I kind of start changing the color of my light as well. Then after that, kind of the next step, I really need some caffeine. What I do is I go to the appliances tab, and I turn on my coffee
03:24
maker, and as you can see, I start getting a little bit of coffee that starts coming down and being made, and that's all connected to an Arduino, and if you guys want to see afterwards the setup, I can show you that afterwards.
03:41
Then, sorry about the sound effects there. So then I can turn my coffee maker off once I've gotten enough, and then I turn on my favorite music playlist.
04:10
So I'm playing happy. I'm usually never happy in the morning, so it's trying to pump me up a little bit, but usually never works. Then as I'm leaving my apartment, what I do is I turn on my
04:24
security, my motion detector, right? On the right side, you see a little graph, and that kind of lights up every time there's motion, and you should see kind of the graph over time changing with a count of motions as well, and that's all on the front end. It's cut off a little bit there, so I just threw it in on the
04:41
right side as well. So as you can see, the little, it's like this thing here, but you can see it's like a little motion detector, and so I set that up before I leave. If I want, I can also set kind of a, rather than a silent alarm, it's kind of a louder alarm, so again, kind of
05:03
setting up that motion detector, but now connecting it with a Sonos and kind of having the two interact with one another. During the day, when I'm coding, I like to listen to beats, and then at the end of the day, after maybe on
05:28
a Friday or Saturday or so, I just want to kind of unwind a little bit, so I have a party. So that's kind of a quick overview of the app that I've built,
05:45
so I kind of go into more detail into how that's working out. So the high-level stack around this Internet of Things application
06:00
is, so I've got an Angular application, and that's running in the cloud, and I'm kind of serving that up with our, using Divshot, and I don't know if you guys have used Divshot before, it's really cool. It's kind of like Heroku, but for static applications, it's really easy just to push applications up. Then the Angular application consumes the API from my
06:24
Rails app, and the Rails app is actually running locally on a Raspberry Pi, and that's kind of serving kind of the Rails application and the API with that, and I'm running that on the Raspberry Pi, which is on my home network,
06:42
because I can't actually push that up on like a Heroku AWS or something, because I need to actually be running on the home network, because a lot of the objects, some smarter objects, so like a Sonos or like a LIFX light bulb, those are already connected to your home network, so in order to kind of use their APIs,
07:00
you need to be on that home network as well. Right now, I'm kind of serving that up to the web with Ngrok. It's kind of a really easy tunneling tool to kind of put your development environment up on the web, and this is kind of me kind of testing out this Internet of Things application, and then the Rails app then connects both smart objects as well as dumb objects,
07:24
so smart objects are the ones that are already connected to the Internet, so these are the ones that you're probably going to pay a huge premium for right now, so like a light bulb, like a regular light bulb, I don't know, it's like a dollar or so, right, and then the connected light bulb is a hundred dollars,
07:41
so, you know, a hundred times the premium for it to be connected to the Internet. So right now, the Rails app actually connects to the LIFX light bulb and the Sonos, which are both smart, and the Sonos actually works off of, with Dropbox, so I'm actually sending it files from Dropbox on the cloud just for portability so it doesn't have to depend
08:02
on the files to be on my local machine. Then I've also got a number of dumb objects as well, so, is the sound cutting in and out? So my coffee maker, this is a ten dollar coffee maker,
08:21
I've got that connected to the Internet, and I'm able to turn that on and off with my application as well, and as well as the motion detector as well, that's actually like a five dollar motion detector, so it's really, really cheap, and I do that all with an Arduino, I'm kind of splicing their circuits to be able to kind of send signals on when I want to turn the power on
08:42
and turn the power off. The cool thing is, because the front end kind of lives in the cloud, I can actually control this stuff anywhere, from anywhere, so I can be at the office and be able to turn on and turn off my lights, just make sure things are off. Same with my appliances, I'm starting to connect
09:01
a slow cooker to this as well, so that now I can actually start turning on my slow cooker and my food will be ready for the time that I come home. So what is the Internet of Things? It's literally object-oriented programming. You're connecting to physical objects through code,
09:22
and you're seeing the Internet of Things really pop up everywhere right now, health and fitness monitors, home security devices, connected cars, household appliances, and a ton of other applications out there, but there's also a lot of non-consumer applications as well, so we're seeing the Internet of Things.
09:42
For example, local governments are starting to use a lot of sensors to be able to look at their infrastructure and be able to see if there's any kind of water or gas leaks or whatever before the actual damage occurs, so really a lot of cool stuff happening in this space. So why is it important? I think there's really three reasons.
10:01
The most important reason is that it allows you to kind of better, more easily interact with the world around us. So before, let's take a Nest thermometer for example, right? Before, when we had to go to the wall unit and kind of turn it up and down or turn it off or remember to turn it off when we walk out the door, we can now use an app to control the temperature,
10:24
and then over time it starts kind of learning our routines and being able to better meet our needs so we can kind of more easily interact with it. The second reason why I think it's so important is it's already really, really big. We've seen a huge explosion over the past five years or so
10:43
in the Internet of Things space, and we're seeing kind of a lot of these connected devices pop up all over the place. A lot of companies are starting to get into this space, big ones, startups, everything, but I think it's going to get even bigger. There's been a lot of research reports that say that
11:02
by 2020 there's going to be, and all the research reports seem to cite 2020 as kind of the end goal and the big, where we're going to see a lot of change, but by 2020 we're going to see 40 to 80 billion connected objects, and that's 10 connected objects for every human on the planet at that time.
11:22
I just read a report that came out today saying that in 2020 the healthcare Internet of Things market will be a, it's going to be a $117 billion market, so a lot of big numbers in this space.
11:40
I think kind of the most important reason why the Internet of Things is really so important is because it really increases the amount of data that we have out there. So typically big data, we kind of think of that as all the data that's kind of on the web, on all our users, we're getting this from applications, but more and more big data is going to be comprised
12:00
of the things that actually occur in the physical world, the actual physical interactions that we have in the real world. So everything from like a light bulb to a thermostat to wearable devices, they're going to become sources of data that we can use and analyze
12:21
and hopefully make our lives kind of even better with. And this is kind of the notion of quantified self, where these technologies really help us to better understand and analytically look at our daily routines and our lives in general. But it's not just quantifying ourselves.
12:40
So fun fact, I read about this just recently about this Dutch startup that started. They built these sensors for cows, and you stick these sensors on a cow and the farmer is able to tell when they're able to kind of get all this data on the cow, when the cow is eating, sleeping, when the cow is pregnant, when it's sick.
13:01
And a cow generates 200 megabytes of data per year. So if an animal that sleeps 12 and a half hours a day and eats for another 10 hours a day generates that much data, imagine how much data a human can generate or even something like a car. I think there's just going to be so much data out there.
13:23
So as I was kind of building, as I was kind of thinking about what I was going to talk about today in terms of the Internet of Things and this application I was building, wasn't exactly sure what I was going to talk about initially. So I just started building, and then as some issues arose, that's kind of what helped to drive kind of the topics that I want to talk about.
13:42
So initially, with this application, I started off with a regular kind of HTTP API and started running into some issues there. So if you look, let's take a light for example, right? Our Rails application, when we want to turn on the light, we have to connect to the light and then we have to turn it on.
14:01
When we want to change something about the light, so if we want to change the brightness or if we want to change the color of the light, each time we have to connect to the light and then we have to turn down the brightness or we have to change the color of the brightness and send new kind of RGB values to the light. And then again, when we want to turn it off,
14:21
again, we're connecting to the light and then we're turning the light off. Now, so we're having to connect to this a lot of times. It's obviously not dry, but it's not just a stylistic issue, but it also becomes a performance issue as well when dealing with some of these Internet of Things objects.
14:41
So if you think about it, I showed you in the video a slider where you could change the brightness of the light. Just like a regular form, it's kind of got different values along each of the way. That slider has 100 values. It's 0 to 100. So if your user kind of takes that slider and just moves it up and down,
15:02
in one second they've generated 200 requests to the server and to the light, right? And so imagine that's just one user if you start building some kind of app with a lot of different users connected to something. I started to see a lot of slowdown. The light would take five minutes to go through that brightness cycle, or sometimes it would just crash into something.
15:22
It just wouldn't do it. So that's why I kind of started looking for a potential alternative. And the solution I found was WebSockets, and that's actually a lot more relevant now, especially after DHH's talk on Tuesday around ActionCable.
15:43
So pretty excited to see what's coming out of that. But the cool thing about WebSockets is that they allow you to hold a connection open between the client and the server. And so you can maintain this connection between requests, and you can maintain the state.
16:01
And then kind of a side benefit that I got that I actually ended up using and needing quite a lot was the service end events, that you're not tied to kind of the request-response cycle. You can actually generate events to kind of populate something in the front end as well to the client.
16:21
So the anatomy of the Rails app that I built, I'll quickly go over this and kind of get into a little bit more detail. But basically, you get requests to interface with an object, again, pretty much just with a front end. That kind of goes to the event map, which is just like a Rails route,
16:41
but you're actually just mapping events. That then goes to the WebSocket controllers, and then the controllers do two things. They work with your models to kind of save that interaction to the database, because I want to kind of be able to analyze everything from motions to when lights were on and off
17:00
and potentially get into some more advanced stuff later. But it also kind of interfaces with the physical object itself. So I'm not going to drain this slide. I'm going to kind of go through each of the steps that I just talked about, but since this is in Angular and we're at RailsConf right now,
17:21
basically what I'm doing is I'm creating a dispatcher on the front end, and I'm using this using the WebSocket Rails. So I'm using the WebSocket Rails gem on the back end, and they have a client-side library as well. Unfortunately, the client-side library is bundled in with the gem,
17:41
and also it's in CoffeeScript, and I prefer JavaScript to CoffeeScript. And I kind of wanted to pull out the client part of that into the Angular app. So what I did was I just unbundled it. I've got it actually in a link on this slide if you guys are interested. There was some interest on Stack Overflow around this.
18:02
So basically, I'm using this dispatcher that I've created, and the dispatcher triggers events that then map to your event map on the Rails side. So this is kind of where the request first comes into the Rails application. And as you can see,
18:20
it maps to your controllers and actions just like you would on kind of a regular HTTP in your router. And the syntax is very familiar. You can use the string or the hash syntax here. And I in general here tried to be, and this is kind of an example of the light and the coffee maker,
18:41
but I tried to be as restful as possible. So a create is actually turning the object on. Destroy is turning it off. Update is changing some attribute about that light. And show is kind of returning some status that we have on the object.
19:00
And in the case of the light, it's the color, whether it's on and off, and it's the brightness values. And just as a note, some of the code that I'm going to go through, I've paraphrased it a little bit for simplicity. The full source code is on GitHub, and I'll have the link available for that.
19:22
So then kind of the next step from there is the controllers. And there are really two important things to note in the controller. The WebSocket controllers allow you to create a connection that stays open, again, rather than working on a request-response cycle like HTTP.
19:41
And the cool thing about these WebSocket controllers is that you have this controller store available, and that lets us carry over the connection to the physical interface across your controller methods. So rather than, again, having to connect to the light every single time with the LIFX interface.new,
20:03
we can just call that the first time that controller is hit and then hold that connection and then use that connection over and over and over again in all of our methods. So if you look, like, for example, in the create method, right, we're referring to that light interface in the controller store.
20:21
And the cool thing about the controller store as well is that that works when the controllers first hit and it's initialized so that any time, whether it's one user or another user connects to it, you're still using that same connection, so you're not having to reconnect over and over and over to the light bulb.
20:44
And so every controller action really does two things. It, again, like I mentioned, it saves that interaction to the database and it actually interfaces with the object. This is kind of a little more detail. I'm not going to talk through this,
21:01
but just the update action that I have. I'm taking a params, which is message, here from the front end, and then here it's the RGB values that I want or the brightness value that I want, and then, again, doing the same two things. I'm saving it to the database and then interfacing with the object.
21:21
Domain model is really, really simple in this application. Basically, I've got a Sonos player, I've got a party, I've got a motion detector, which has many motion detections. I've got a coffee maker, I've got a light, and a light has many colors and a light also has many brightnesses.
21:42
The only thing here is that, again, really, really simple. I've just overridden the destroy method because in our case, with the Internet of Things, the destroy, at least the way I've got it set up, is actually turning the object off. So I actually want to save a reference to when that object was turned off.
22:02
So then the interface. This is kind of the most interesting and the most fun part to build in this application. Interface classes that I've built are kind of the glue between the Rails app and the actual physical object. The interface classes are really easy to build in the case of smart objects like your Sonos player or your light bulb
22:25
because there's a lot of APIs and gems and unofficial ones available out there where it gets a little bit trickier but also a little bit more fun is where you have dumb objects which are not connected to the Internet where you have to use kind of the Arduino's library
22:44
and then do a little bit of circuitry, but it's actually really, really easy. I'm not a very big circuits guy at all, so if I can figure it out, yeah, anybody can. So this is my motion detector up on the slide right now. The TSA, I came down from New York.
23:01
TSA really wasn't happy about this, and somehow I agree with them. It looks pretty sketchy. Somehow it survived all of their swabbing and testing, but it's here right now. And I think it's an interesting, the motion detector was kind of one of the more interesting interfaces to build
23:23
because unlike all of the other objects where it's an on-off, right, where you're turning the light on, turning it off, coffee maker, turning it on, turning it off, right, the motion detector, once you turn it on, it's actually not just kind of a single point in time. It's actually on for a while, so you're actually starting to get motion detections
23:41
coming from this motion detector. Also, it requires a two-way communication between the object and the Rails app, so it's not just the Rails app sending in a signal and being like, When there's motion, it needs to actually send that back to the Rails app, and we need to be able to deal with that as well.
24:02
So this is enabled through kind of multithreading and server-sent events, and this is, I know the code is tiny. I'm going to jump into more detail into all of this, but basically the main method that I have here, the start motion detector method, it does four things.
24:20
It starts a new thread. It connects to the Arduino. It detects and reacts to motion, and then it detects and reacts to no motion. So the first part of that is where we set up a new thread. So why do we need to do this? Again, the motion detector is continuously running.
24:42
It's almost kind of like a loop, so if you think about when you do loop do and then never put a break or something, it'll just keep looping and freeze up your app. So the same thing happens. It's continuously looking on the Arduino's input for motion, and if we don't get off the main thread,
25:01
it actually ends up freezing up the application since that's where the application is kind of running. So the first thing we do is we get off the main thread by creating a new thread, and then we start listening from the Arduino on the input port that we specify. The next part of the method is pretty cool, and this is where we react to motion and a lack of motion.
25:25
So when motion is sensed on the Arduino's pin that we specify as an input, and basically what happens here is when there's a motion that the motion detector detects, it kind of sends a little impulse to the input pin,
25:41
and therefore we send that back to the Rails app. So what we do is we save that motion to the database, again, keeping track of all the motions that have occurred, and then we send a server-generated event to alert the front end of the alert,
26:01
to alert the client of the fact that there's been a motion, and that's kind of how you start seeing on the graph. You see the graph turn red when there's motion and then turn blue again when there's no motion. It's because it's reacting to these server-sent events that are happening.
26:21
And then similarly, when there's no motion, we're sending just a signal to the front end to say there's no more motion, so turn blue again, and then we also send kind of a count of the latest count of motions to update the graph dynamically.
26:40
So the future of the Internet of Things. So in 1997, Alan Kay, the pioneer behind object-oriented programming and the graphical user interface, said today after 50 years of development, the computer is still masquerading as better paper, but in the next decade, the next decade will be the transition
27:00
into what computing and networks are really about, and we've really seen that kind of come to life and come about. I firmly believe that's kind of what we're seeing in the Internet of Things space as well. To play off of Alan Kay's words, right now the Internet of Things is really masquerading as a better light bulb or a better thermostat,
27:21
and you get the point, right? And we're kind of in this like cool factor phase where it's really cool to be able to turn on an object or turn off an object with your app, and the world is kind of really captivated by this, so far, unsophisticated implementation of this technology.
27:41
If you think about it, we've gone from a light bulb on, sorry, a light switch on a wall where you flip on and off when you walk into a room to an app, but then when you actually walk into a dark room, you realize that, you know, when you have to pull out your phone, hit your password, open the app, turn it on, and God forbid,
28:00
if you have multiple different brands of light bulbs, you have to open the app for each one, right? That's annoying. It's not actually very functional. So we've gone back to having these light switches on the wall, but these light switches are now connected to the Wi-Fi and they're Internet of Things light switches. So cool stuff, but, you know, we haven't really seen that much incremental value
28:25
being delivered in the space yet, and I think we're going to see a lot more of it in the next five years. So where do I think the Internet of Things is going? I think right now we're in the stage in between where we have these disconnected dumb objects
28:40
all over the place. So now we're starting to connect a lot of these objects. We're starting to see connected everything now. But I think they're kind of still working in silos. Again, you have different apps for different brands, and, you know, even if it's within the same company, there might be different apps to work with these things. So I think the next step from there
29:01
is centralizing a lot of the objects. So having one platform where you can be able to control all your different objects in one place, and we're starting to see a little bit of that as well. I know Apple's HomeKit is supposed to do a little bit of that. Amazon Echo, they just announced that they're going to have
29:21
integration of a few kind of Internet of Things objects in there. So that's kind of where I think the next step is, but I think the kind of ultimate step and where we really want to end up with the Internet of Things is where we're actually integrating all of these, where all of these smart objects are working with one another doesn't matter what brand they are or, you know, what they actually do.
29:43
They're actually working together in these kind of routines. So, you know, you can imagine an app or, you know, or you can imagine a situation where you're coming home late from work and your home almost knows that, so it starts heating up the food right when you're, you know, close enough.
30:00
The lights turn on when you walk in, the doors unlock. Everything kind of works, you know, together and seamlessly. So my goal for today was really just to show you that building an Internet of Things app is really easy, and, you know, this app took me just, you know, didn't take me very long at all to build. It's obviously very simple,
30:20
but especially the skills that we have as Rails developers, and I think it's going to get even easier now that, you know, with the announcement of Action Cable and it's going to be kind of more integrated in Rails. So I think that's going to be kind of make it very, very easy for all of us to kind of start building and kind of prototyping these Internet of Things applications.
30:40
I think it'd be awesome to see more Rails developers to be part of this, you know, Internet of Things revolution and kind of push us towards, you know, the Jetsons, as opposed to Flintstone. And so I hope that a lot of you are already building, will build an Internet of Things application soon.
31:01
Thank you so much for listening to my talk.