Google Drive, you might have a NAS at home. Now with owncloud, you can mount all these storages. You can add them to owncloud.  Now you can rename it to Evil if you want. And then you can access the files from Dropbox all through one interface, just like the files from every other place where you've got files. You can access them in one interface. For home users, this is really nice to consolidate everything in one place. You can imagine for companies, this is even more important because they're already paying big bucks for all this storage technology they have. And having to move it all to a company like Box, which says on the website, oh, if you need to send us three terabytes of data, just send us a hard drive by mail.  So with owncloud, you don't have that problem. You can just keep it where it is. Now another nice feature is your owncloud encryption app which can encrypt all the files that you have in storage. So what it does is whenever the file is sent from a client, and that goes encrypted, of course, to your owncloud via HTTPS, SSL, or TLS, and when it receives the file, it will encrypt it and then store it on the storage. Now combine it with external storage, and suddenly Dropbox can become useful again.  Very nice. So there's a whole bunch of apps that have all kinds of other stuff to your owncloud, the calendar app, compacts. There's a real-time document editor called Documents, our owncloud documents. And the sites from that app, technically speaking, that's a JavaScript app that runs in your browser. It's very easy to install an owncloud because there's one click in our app store, and then you have it that's downloaded and installed. We were currently also working with Colabora on creating integration for LibreOffice online in owncloud. Because the documents have for owncloud. First of all, again, it's a JavaScript app. So that means that the documents look slightly different than every browser. This is the same problem that Microsoft Office 365 has, the same problem as Google Docs had. It's never really exactly as it would look when you look at it on a desktop. LibreOffice online works different. It doesn't run in the browser. It runs on the server. And then streams the UI effectively to your browser. That heavy on the server, but it's pixel-perfect rendering exactly what you would get on a desktop. Because it is the same code, exactly the same code. Plus, it also has all the features of LibreOffice. So it can do spreadsheet, documents, anything that's in there. And again, this is only documents right now.  That's pretty heavy, at least if you do it with multiple people. And on cloud documents, it's very light, because it doesn't run on the server. It runs on the client. So we'll keep both. But I'm quite excited about LibreOffice online, because I think it's really cool to have that. And there are all kinds of other apps, like password managers, and there's lots of stuff. Mails, bookmarks, is the app store on the left. So you just get categories. And you click on Enable or Disable. That's all you need to do. Because if you click Enable, it's not installed. And it's downloaded and installed. Separate installation or something. And on the right, there's the website, so you can also check out oncloudapps on apps.oncloud.com and see if there's something that you're looking for that you need. And then you know what's available. So for admins, our own cloud tries to be easy to maintain, but also gives administrators of cost control. So we have things like you can set up an email server and edit the mail template, so your users get notifications when they get a share or when a file got downloaded if they wanted a notification from that. I have a couple of really cool features that I'll actually get to later, the server-to-server sharing. Was that intentional? All right. Yeah, excellent. All right, keep it good for me. One of the nice things, I don't actually have a screenshot of that, but I think one of the nice things that owncloud does in the admin screen is that on top you get a whole bunch of warnings. Well, warnings. Let me say it in nicer terms. It tries to help you make sure that your configuration is secure and performant. So owncloud will work the first time you install it with, let's say, SQL Lite, but if you put a lot of files on an owncloud with SQL Lite, it gets slow. So you'll get a notification in the admin screen on top where it says, hey, you're using SQL Lite, which is great, but there are performance limitations. Click here for the documentation, how to upgrade to MySQL.  Like, for example, this folder has wrong permissions. It'll work, but it's insecure. Click here to find out how to increase the security of your owncloud installation, and so on, and so on. We try to make it easy to make owncloud fast and secure. I mean, the problem, of course, with security is that it's rarely the technology that's a problem. It's the people using it. And that's the way we try to deal with that. So as you see, you can enable or disable public uploads, all kinds of other settings. Art, create users. Owncloud has an LDAP backend and some other ways of managing users. But of course, for small installation, the easiest is to just use the built-in user management. That'll be fine. So this is owncloud itself. Next, I'm going to talk about Pi. But first, are there any questions about owncloud? What it does? How it does it? What you might want to do with it? Ask me now. I can ask later, too, but yes. Does it support SpiderOak as a backend? I haven't seen it. It's not one of the options there. However, I don't know what kind of API SpiderOak uses or offers. So if they offer a web dev interface, then yes. Or FTP, because those are supported. And Sambai is supported on Amazon S3. So again, I don't know. I can actually show you the list of supported. No, that's the wrong direction. Sorry for that. The list of supported backends is here, as you can see. Amazon S3, and what works with it. Dropbox, FTP, Google Drive, OpenStack, owncloud, another owncloud, you can use it as external storage. As FTP web dev, there's also Sambai and SIFS as CIFS, which is not in this list, because clearly on this owncloud, they didn't have the Sambai client installed. And then, ownclouds will tell you, hey, you don't have the Sambai client installed, so it's not in the list. But it'll show you the rest. Any more questions? No. So as I already mentioned, so owncloud uses our hash external data storage capabilities. And we feel that you should do things like redundancy and stuff there on the file system level, or use rate, something like that. Also a node, rather on a similar node. Owncloud is not a backup. It synchronizes your files. That means if you have files locally, and you use the sync client to sync them to the server, and you think, OK, I can delete them locally because you're not safe, well, you just delete them from the server, too. Now, we have file history, or how do you say that? Like a capability to bring back, restore all the files. So owncloud actually automatically always keeps a copy of every time you change a file. It keeps like one copy per minute in the first 10 minutes, and one copy per hour in the third day, and one copy per day in the first week, and so on. So you could say you can use this backup, but it is not a backup. That's not what it's made for. And the same, it doesn't replicate. So you have the ability to connect two different owncloud servers, and share files between them, and have users basically have them act as one owncloud server. It's called Federation. I will get to that later. But the data stays on one or the other, because also we want the owner of the data to be in control. So if we would start to replicate data to another owncloud, then suddenly you're giving away a new date, and it's again on somebody else's server. This is about control for people themselves, rather than whoever else. Any more questions? All right, let's talk toys. So may I introduce to you the banana pie and the raspberry pie? There are millions more development boards out there, but these happen to be the ones that I'm most familiar with, and also have with me. They're roughly the same form, factor, same size. They're very compatible as well. Specifications are different. Raspberry Pi, this is Raspberry Pi 2. I'm talking about co-op core 900 megahertz, video core video, 1 gig DDR2, well, you can read, I'm sure. Now, the big difference between the two is that second line, the Mali 400 versus the video core 4, the video core 4 is like, I don't know, four or five times faster. If you want a media player in your home connected to your TV, Raspberry Pi 2 is your best bet. It's actually from all the development boards. Out there is pretty much the best for that option, because it has just very good performance on the video side of things. On the other hand, the biggest downside of the Raspberry Pi is that that 100 megabit network plus the four USB ports are all connected to one single USB port on the chip. So from an I-O data transfer perspective, it is just terrible. I mean, if you would connect four hard drives to it and then try to get data off the network, what are you doing? This is really, really going to be slow. On the other hand, the Banana Pi has a one gigabit network port on the chip, so direct and fast. And it has a SATA port, which is orders of magnitude faster than USB, and two USB that are, well, together one hub. So for data storage and running a little server, they both cost the same. They're roughly the same size. But the Banana Pi is a lot nicer for a server, while the Raspberry Pi is a lot nicer for a media center. I'm telling you this in parts because, well, we have a device over Raspberry Pi too, and people ask me quite frequently what device should I use, for what. Doesn't mean you can't use a Raspberry Pi, because we do. We have it running at the booth again. It works. But from a performance perspective, there's a lot of work to optimize it more than you would need for the Banana Pi. Anyway, so I've been given these workshops. I actually proposed to give one of these workshops for scale to install own cloud on a Banana or a Raspberry Pi. The secret to these workshops is actually that installing own cloud is boringly easy. I already explained it's a PHP web app. If you drop it in the right folder, it'll work. And the hard part is installing a web server and running a web server. So how many of you have a server running here or there already? You manage one. That's about a third. So for you, the hard part of running own cloud is done. If you want to learn how to run own cloud at home, don't bother. Just go to the install page, get it, drop it in the folder. It'll work, follow the instructions. As I said, own cloud will tell you what to do. It's really not completely trivial. I mean, if you want to make it fast, you need to install caching and other stuff. I'll get to that a little bit later. But for just home use, if you have a server, you already have done the hardest parts, right? If you have SSL set up, security, I mean, I found that at least by far the most difficult part. So the own cloud part is going to be easy. Security is a bit harder. Now, of course, if you want to run own cloud for 150 people or for 150,000 people, then things get a little more interesting. Because then that Raspberry Pi isn't exactly going to cut it anymore. So I'm going to talk about that. Now, a colleague of mine started a couple of months ago developing a cluster of banana pies in which he wanted to use clustering technology, a cluster file system of spread over multiple pies, database spread over multiple pies, different application servers, the whole caching infrastructure, again, I'll get to that later, on banana pies, and then see how fast he could make it. And this was what I wanted to talk about today with account because this is not finished yet. It's basically stuck. There's this time thing, so I'm going to get in the way and all these other distractions from back. So I won't talk much about this. I'm going to talk about much of the underlying technology, though. I'm going to talk about scaling own cloud. I'm going to start with a small own cloud server for a couple of dozen users. As I said, for home users, you don't need much scaling knowledge. It's nice to make it fast, so use PHP 7 and use a decent cache or get to that. But it won't be terribly complicated for a home user. But for a small business, or if you want to give a lot of people access to it, it's nice to make it a little faster. So the basic you would need is, indeed, just LAMPstack Linux Apache MySQL. Now, I know Nginx is probably faster than Apache. Yeah, maybe. Most of the developers do use Apache, though, so it's simply the most reliable and easy to use solution. And it's not that slow if you use more PHP. We're actually, right now, working on with the Pi project that I'll talk about later. We're just using Apache at the moment. I'm sure somebody will try and make an Nginx version. And maybe we'll see that it's going to be 20% faster, which I think is worth it. It's pretty good. MySQL, too. Actually, we recommend MySQL in parts because you have Kalera clustering that you can use, or Kalera, I don't know how you pronounce it. Probably not the way I just did it in Dutch. SQLite works, but it really, really does not scale. So SQLite is by far the easiest way to get your own cloud installed, because then you really just need to drop it in the folder.  And then you're done. With MySQL, of course, you have to create a user in the database and tell them about the user and that stuff. It's a little more complicated, but it's worth it as soon as you have more than five users or a few gigabytes of files, et cetera. PHP 7, it's out. Go play with it. I wouldn't use it in the business yet, but it's really fast, and it's very notably fast. We did some statistics with own cloud. They promised PHP 7 is twice as fast as PHP 5.6. It's true. It's really true. For own cloud, it's definitely true. It'll be twice as fast. RAD is another cache, you make it also faster. So I'll talk a little bit about those as well. RAD is more on the high end, although I found it surprisingly easy to install on my two-person system, which is users. Yes, well, officially supported. That's a big word that makes it almost sound like you should run it in your company. I run it. It works fine. On the Raspberry Pi, I would certainly do it, because hey, twice as fast, right? But I believe at the moment, the calendar app has a problem with it, which is kind of a downer for a lot of people. So some of the apps don't work. The core is pretty solid, because we developed own cloud 8.2, which have been out for a couple of months now. We developed it, basically, while all our developers are happily playing with Pi 7, because it wasn't out yet, which means you need to run it, right? So that's pretty solid. And for own cloud 9, this official thing will probably be slept on it. So yeah, it's worth trying, but there are one or two apps that don't support it. So you're my ultimate very. Keep asking questions, by the way. Totally cool with that. OK, so I'm going to talk about the small set up, a one server. I mean, this would be like if you take a dual core system with 16 gigabytes of RAM, which is a beefy server, but nothing totally special. Following the recommendations I'll give you, you can run for about 150 users without breaking a sweat. And that means these users running like the client on multiple devices, right? So the clients are hammering the server every 30 seconds or every 15 seconds. So don't underestimate the load that 150 users generate, because they all have multiple devices, their phones, their tablets, their desktops, et cetera. So that's all work for the server to handle. And of course, they all want to send public chairs to customers or to other people to fund. So with Apache, use mob PHP. And again, I'm going to just stay simple to Apache in MySQL. As I said, if you grow this system in the future, if you now are on MySQL, that means in the future you can move to a Galera cluster, which makes a lot easier to keep your database performing. For backups, now the normal way of doing a backup is that you stop on cloud, you put it in maintenance mode. That means it won't work for the users. Then you do a database dump. And you do the backup of the data. And then you restart everything again. It's not a massive downtime, but if you have a big database, obviously it is going to be time. The neat trick is to use Butter-FS. I mean, with Butter-FS you can just make a snapshot. You do the database dump, and make a Butter-FS of the database or of the data. And that's where you don't have any downtime. And obviously the same goes with ZFS if you use that. Then you're probably not running Linux. Another tip, though, if you do use Butter-FS, make sure that the database is on a partition that you have mounted with no data COE, so no copy on write, because that will kill your performance completely. I don't know how many you guys know about Butter-FS, but the way it works is that every time Butter-FS writes a file, let's say you have a picture, and you just change the metadata. It doesn't just change the metadata. It makes a copy of the whole file and put it somewhere else. That's good, because that means if you later want to go back and undo the change you did, well, the original file is still there. And for an SSD, this is fine, also in terms of performance. If you start doing this with a database, which makes hundreds of thousands of tiny changes all the time to one very big file, you can imagine that this is not a very smart tactic to get decent performance. So for a database, you should always turn that off either on a partition, or you can't even do it on a file level. Another tip is to put local session management in a tempFS. So PHP on cloud just uses a session management from PHP. And PHP has a folder designated on your system where it stores session management. I don't have it out in my head, but you can look it up in the php.ini file, what folder it is. We have it in our documentation as well. But it's smart to put that on tempFS, because then it's a memory that's a lot faster, and there's no need to store that stuff, because if you server would crash, well, then it's not like those sessions are going to be reused on the next reboot anyway. So for memcache, you should use it, and just use the APCU, so the upfound PHP cache that's relatively easy. Well, it's actually very easy to install, and you just tell on cloud in the config file to use that as file cache, and you've got a pretty massive speedup for basically no work. This doesn't work clustered. And if all these 150 users have a folder that they have shared with them, so actually we internally have our own cloud, and then there's one massive shared folder that all the employees have access to, and that everybody puts most of their stuff in, aside from the private files they're working on. In that setup, you have a lot of file locking going on. And it might be good to then actually use Redis, which is a cache tool that you can install to Google it, to use that for the locking, for the file locking, so you can say in the config file, OK, use Redis for file locking, that'll keep that fast. Let's go a little bigger. So if you split stuff up, now you've got a little more of a serious system here, right? I mean, we're talking about two to four application servers, unless you're trying to do this on a banana pie, you would then give them four cores, maybe 32 gigs of RAM, two database servers here, also a lot of RAM, probably even 64 gig each. You put your storage on external storage, so like NFS or S3, something like that. Use LDF for authentication. And then you have a couple of web servers that actually handle the incoming user requests. So on those, again, you need to put the session management in tempFS, especially now, because now performance becomes even more critical. And then you have an HAProxy, which basically does load balancing between the two to four application servers. So in this setup, you can get to, yeah, let me see what are the numbers I attached to that. Well, I put those here. So this is the setup that can go to 1,000 users quite easily, and 200 terabytes of storage. So going back to the details, so the setup was in hardware, I just went over that. So the setup that you do for load balancing, you use HAProxy. The SSL terminates there with sticky sessions. I mean, again, this is all documented, so you can loop this up as well. But those are the settings that you use for HAProxy. And the database do MySQL, and as I earlier said, use Galera. So we use this in the master slave.  And that way you have no downtime at all. And then you just turn the master slave replication on again, so it's more of a backup than you really are using it for a lot of data storage. LDAP, yeah, you can put a read-only slave on each of the application servers, so they don't always have to go to the main LDAP server, but just for updates and changes, that will give you a lot of extra speed. And then there's the Redis side of things. So now it's a good idea to use Redis for the locking, and APCU for the local cache on the client themselves. And NFS, well, yeah, it can be set as a storage. I mean, you can spread it out. I mean, it's a dark storage, right? As I said earlier, you keep that side of things outside of our own cloud itself. Now, I'm not going to go deeply into this one, because that's where it gets really fun, right? I mean, now you're talking about 5,000 users to 100,000 or more. We have such deployments. And here, you have set the bytes of storage, perhaps. Again, this is what the certain guys do. They have a very complicated setup, but they also really deep. They have replaced parts of our own cloud with their own storage solution. So we have a, that's coming out in own cloud nine. The storage system allows you to hook really directly into like your own unique storage, which for high performance situations can make a big difference. And then you get perfect high availability and all that. Now, one cool feature that you should use here, and that's what a lot of bigger deployments do. That's also why I said you go to about 100K, maybe 150, but if you want larger deployments, we actually don't recommend to try to have it on a single instance. So this is where Federation comes in. I talked about it a little before. This is where it gets really cool. So own cloud has this ability where you can connect different own cloud servers with each other. Now, let me go back a little bit. Think about Dropbox. There is one or multiple big data centers where all files are null storages. So if you want to work together with another Dropbox user, you need to have a Dropbox account on that same Dropbox cloud thing, essentially one server. And even if you would run an own cloud and you want to work with somebody else, or you can give them an anonymous link, as I said earlier, they are pretty powerful. But still, when push comes to shove, if you really want to work together, you would need to give them an account on your own cloud. That keeps everything centralized. It's also cheap. I mean, this is the model of software as a service. I mean, it's nice. It's used in a lot of places. It's fancy. But it can also be slow, because your data can be far away. Now, own cloud, of course, gives you the private cloud thing. Everybody can have their own little cloud with a couple of users that can work together and can do all their things through control. The thing is, if you want to work with somebody on another own cloud server, then you need an account on the other server, and soon you have 20 accounts and it makes no sense, right? So this is where federation comes in. So we developed an own cloud 7 technology called server-to-server sharing, and you could create a share and send that to somebody else, and they could add it to their own cloud. And they would basically then mount your own cloud as external storage in their own cloud, and they could just then use that as a folder just like it would be a Dropbox folder or anything else. This is really cool. Now, we've been adding a lot of functionality to that. And then the upcoming release, and already in the current release, you can quite easily share files, and you can even find users. So you can connect two own clouds with each other, and then it will even auto-complete users on the other own cloud. So it'll really be like you're on the same cloud. So if you have a deployment for half a million users, which they have in Germany in North and West Phalan, which is the biggest province in Germany, you have five universities, six. I think all the universities in North and West Phalan, how many that are B, I don't know. But they all run their own own cloud server. That means they are all still in charge of their own data. And they can have their own access policies. Those are little circles around everything. They have their own rules. They say, look, we don't want this student to work with these files. You can say, look, these file types are not to be accessed by this group of people. People in this location can't have access to that. You can say, look, we have files that need to stay in Europe and not allowed to go to the US, but it can go to Australia, all these policies you can then apply on your own server, on your own data. But at the same time, for the users, they don't notice that they're working on a cluster of five, six, seven completely different independently controlled own clouds. They just type the name of the person they want to share something with. It gets shared that our person can download it and sync it, and nobody ever knows that there's something going on down there that there are differences, that means managing different servers. So this is really cool technology that we're developing. So this is pretty much a scalability part of things. I have a few more things, including the Raspberry Pi to go to. I also don't know how much time do I still have. 10 minutes, right? Excellent. Well, if you already have any questions, then this is not a good time to shoot in my direction. That's us, by the way, at the TU Berlin, which is not our own cloud user. They gave us location for the conference already for a couple of years. Really cool. Yes? Yeah, yeah. Windows, Mac, Linux, Android, iOS. There are a couple of unofficial ones as well in various places. Sailfish, I believe, has one. Yeah, if you start to layer it, you want to break it, right? Yeah, you can nest it. I mean, obviously there's a point where things will start to break down and become difficult, et cetera. But in theory, you can go pretty far. I have a couple of, I mean, do we need to stop? Oh, sorry, yes. His question was, of course, can you nest all these sharing between servers? I mean, hey, go ahead and try to break it, right? I mean, it's actually one of the things CERN, so CERN, they really are big on-cloud firms. They developed a tool called Smashbox, because their own on-cloud instance is called CERNbox. And then Smashbox smashes CERNbox. So it's an automated testing tool that basically pretends to be an on-cloud client. And then they first create via provisioning API a whole bunch of users.  So they found quite a few weird things, because yeah, you can do really interesting stuff with layering and sub-layering. So, well, they made this open source, because their research institution and what they do is open source. So now we're actually using CERN Smashbox, it's about a year, to test on-cloud ourselves. This is a nice piece of collaboration, which has made a lot of things a lot more booth, but it also forced us to simplify a number of things. One of the things, and I think that's coming in on-cloud nine, is that when you share a file with someone, and then that person shares to a third and that to a fourth, and you go back and you go around and around, you could do that then with the older on-cloud releases, but obviously at some point, it's going to do weird stuff and break. So in on-cloud nine, we basically flatten the hierarchy, and if you share someone with someone, something with someone, and you allow them to re-share, so when they re-share, it effectively looks like you shared with that third person, and you are the one who has to un-share it if you don't want that shared to be there. And if you stop your share to the second person, the middle person, then that third share is still there because it's a separate share that came from you. Because otherwise, you can get these circular shared things, and we just flatten the whole hierarchy. And I think with server-to-server sharing, you have similar things, and we flatten things. Like for example, I already know in the current on-cloud release, you can't put a file in a folder that's shared with you by someone in a folder that you shared with them. I mean, these circle of things are now basically it says, look, you can't do this. Sorry. We want to avoid breaking stuff. Yeah. Sorry? No, I'm not familiar with the RBD. So we asked if we had that place of that on the pie. No, we haven't. So this is a little bit of this federation and action. There is a project. I didn't even put the name here, but it's called Open Cloud Mesh. And it's an intercontinental collaboration of research institutions and universities in the US, Europe, and Australia. And they have all their own cloud instances connected and are working together. All these researchers use an own cloud to share their data. And they are working hard on extending this. There was a conference last week in Switzerland which was technically a cloud file sync and share for research institutions conference. But in reality, I think, 18 of the 19 presentations was about own cloud. So they kind of settled on the solution. And yeah, they're going to go big on my own cloud, which is really cool, I think. We also have some really big installations in Brazil and India that we're, well, we actually don't really know what they're doing there, exactly. So we're trying to get in contact with them, figure out. But there are some really big installations out there with, like, up to millions of users even. What's missing a bit here is a slide on the Raspberry Pi device, which should have been here. Yeah, exactly, because this is like a very empty slide. So I will just do that, well, with the device itself. So a couple of weeks ago, Western Digital sent us an email. And they said, look, we have this project, which is called the Pi Drive. And what it is, let me take this out. It's a packet you can buy. It's already available. You get this. You get a 1 terabyte hard drive and a couple of cables and SD card. And then you buy your own Raspberry Pi. And you stick it here in the back. So this is, you know, you can have a nice case for it. And this case, by the way, is also available for 3D printing if you want to make it yourself. You don't need to buy it from them. Really cool, right? Points for Western Digital. And with that, you can make your own, like, you know, media server, Kodi or something at home. And, you know, because of the nice thing around it, it's kind of like living room proof.  So I think that's really nice. So they came to us and they said, you know, that they had been experimenting with various software to run on that thing. One of those was obviously, you know, XBMC or Kodi these days. But they also had been experimenting with own cloud. And they thought it was really cool.  OwnCloud tells people that they can host their own stuff at home, match made in heaven, right? So now we're working with them on a project where the plan is, in a couple of months, if it's done, to make available in the Western Digital Store a own cloud branded and pre-installed device kit, which you can buy for about 70 bucks, which gives you a one terabyte hard drive and a box with a nice own cloud logo on it, et cetera, so you can build your own cloud at home. So we are working at the moment in the community project because this is not company. This is just volunteers in the free time. So, you know, I can't make too much promises, especially because I'm not one of the people building it. Other people doing that. But the idea is that we're going to put a set of software together at the moment. We're playing with Ubuntu Snappy, among other things, because that's kind of like interesting technology. And then we're going to create an image that Western Digital is then going to give to people together with a little manual as part of that retail package. And then you can buy your own cloud from Raspberry Pi.  But, you know, that's five minutes' work. It's just plugging in the USB ports. It's very nice hardware. You can see it in action at our booth. This is actually 3D printed, because that's like the cover on top to make it completely, you know, family-friendly. But it's still a 3D print model, so I have to figure out if we can really do this. But, yeah, it's all very clever, I think. Really interesting. So if you're interested, come drop by at the booth or just look me up. I mean, I'm done. I think my time is over. And honestly, I don't have that much more to say. So there you go. So by the way, I do give another talk today at 4.30, but that's an entirely different subject, because it's, well, let me summarize it as social skills for geeks. More of a private hobby of mine. I'm actually a psychologist. Well, you know, now I'm a geek and community manager on cloud. But I studied psychology and tried to bring that here. So I'll be talking about our limitations with human beings. There's quite a list of those. I can tell you, there's even a Wikipedia page with all the things that we do wrong. So I'll try and bring a little bit of humility to you and then perhaps teach you a few things of how to deal with that. But that's at 4.30 in one of the other rooms. Okay. Have a nice day, everybody. Test, one, two, three. Test. Test. Here, here. One, two, three. Test, one, two, three. Better. One, two, three. Test, one, two, three. Test, one, two, three. There's quite a few that are coming out. But mainly it's, a lot of people are focusing on the drone quadcopter stuff as well as heavy and robotics. There's a few folks that are actually creating a few that are for automotive. Basically, do it yourself, car, computer. So there's quite a few people that are doing designs. Tin Can Tools has been doing quite a bit of stuff. They've actually been doing a development on Lure with multiple ethernet. But John Holley's a good place to start with any of those, if you've got something specific you're looking in, filter through him and he can kind of get you an update on what's out there. What's that? We're about five minutes before starting so I'm just going to kind of break the ice here. How many folks here own a oscilloscope? And how many people own a logic analyzer? All right, well that counts, that counts. And how many people own a soldering iron? And of course the one that everybody should raise your hand. How many of you own a multimeter? And how many, so all of you guys that have done soldering before, how many of you have done basic through-hold components? How many people have done surface-mounted components? That's a pretty good mix. And one last question, how many are primarily hardware developers? And how many are primarily software developers? Oh, this is good then, because you're my target audience really for this. One last show of hands we'll do here while we're waiting. We're talking about what's the most expensive device you've ever let the magic smoke out of?  More than 500, more than 1,000, okay. And over 2,000, over 5,000, over 10,000, hey. So we got one hand left, how much was it? How did you explain that failure? That's always a good, I don't know, I took it out and it just didn't work. Oh really, ESD testing? Well that's better than my excuse for blowing them up. As you can see on the slides here, I'll have everything up on eLinux, I'll have the slides in PDF format and all the links to all the components and items that I've discussed here. I'll have those up later today. I've been doing booth duty, so I hadn't exactly got them all uploaded, but they will be there by the end of the day. This is actually gonna be a fairly informal discussion or presentation, it's not gonna be highly technical or anything, so it's more of just some of the things that I've learned over the years and it's not a be all end all of reviews of different components, but it's just some stuff that I have experienced with and thought I'd share with, so at the end I usually leave 15 minutes or so for questions, feel free to ask anything. It doesn't have to be on the topics of the items that we've discussed in the presentation. Anything with open source hardware, open source tools, any of that, I'll be happy to discuss. And if we run over time, you're welcome to visit me at the Minnaboard booth over in the exhibit hall. We can be happy to spend any time tonight. I have to answer any of your questions. I think we'll wait another minute or two. Get started. No, I'm good, yeah, I'm good. I usually like to pass you around. If you, okay, okay. If you would, you're gonna be here in the back. Would you give me a kind of sign at 30 minutes in? No, I've seen gesture stuff. Hope everybody's had their coffee this afternoon. If you would pull the door through back there as well. Thanks. So we'll go ahead and get started. And again, all the slides in PDF format will be up on the Wiki page later today, as well as links to all the different materials that I've discussed. My name is Dave Anders. I'm also known as Purple Plague on social media, as well as IRC and other places. I'm currently employed by Intel as part of the open source technology center and specifically part of the Minnaboard project. We have a booth over there in the exhibit hall. Today's discussion is on inexpensive essential tools. One of the things that I've been doing as part of different development board projects over the years is we generally like to have inexpensive tools that we can take to hackathons and to work with our development platforms and things. So I've spent a lot of time going through and experimenting, trying to find out which cheap tools, sorry, not cheap, inexpensive tools that we can find out there that really do the job and are worth you actually spending money on. So one of the things that we're gonna talk about is a couple of low cost logic analyzers and software that can go with them. We're gonna talk about some very low cost oscilloscopes that are handheld. We're gonna talk about some features for multimeters. And we're gonna talk about the microscopes, as well as some soldering iron stuff. And so we're gonna go ahead and jump into it. Not everybody needs a $100,000 logic analyzer like the one that's listed here. Most of the time, if you're debugging I2C or SPI or even RS232, a very simple logic analyzer will do the trick. One of the most popular ones over the last decade is the Celia Logic. It's based on a USB chip called the FX2, which actually is, of all things, an 8051 processor with USB interface on it. Now, this particular one had eight channels and can sample at 24 megahertz. It was very, very popular during the time period and generally sold for about $100. The particular company that's manufacturing, had been manufacturing, has upgraded their designs and moved on to other products. But one of the interesting things is, a lot of the Chinese and Indian companies have taken the design and created clones of them. So if you go out on eBay or actually you can find them on Amazon, eBay, Alibaba, half a dozen other places, you can actually find a clone of the original Celia Logic device. And the funny thing is, they haven't even taken the name off of the design. They have it even on the documentation.  And there's tons of them out there. And they're all ranging from the $15 to $25 range. And they're great for the price that you're paying for them. They've got eight channels, which is more than enough for you to decode. Most things, the SPI, I2C, UR, even BitBang GPIO stuff. So it's a very great buy. Another great purchase is the open workbench logic sniffer. And this is something that if you really needed more channels, this one will support up to 32 channels with a 100 megahertz sample rate. This one's $50 and the open source design and available through quite a few different places like Seed Studios and Adafruit and a couple others. So you've got several different logic analyzers that are out there very inexpensive that you can purchase. One of my concerns is that I'm very strong supporter of open source software. So anything that I purchase, I want to make sure it's compatible with my Linux distribution. And for the last seven or eight years, a particular software project called SigRoc has been creating software to use these logic analyzers. And SigRoc has a wide range of logic analyzers that it does support, including all of these Chinese clones that you can find. If you go to the sigrock.org website, they actually have a link to show all of their supported hardware that they know about and have tested. And they have a wide range of the Chinese ones listed there that you can find, as well as much more expensive ones. My personal recommendation, they have a little green checkbox or a red X indicating whether it's supported by SigRoc or not. Don't buy one that's got a red X. Any of the ones that have a green checkbox, somebody has gone through it and extensively tested. It works with Linux, it's reliable, it's a good component. So take the red X ones as a place not to go. The SigRoc applications that, again, it's an open source project, but it also has a lot of interesting features to it. It'll actually allow you to use your logic analyzer to decode the data that you're actually sniffing through. And it has a programming interface that has several different ways that you can actually program your own decoders in there. So if you're running with a CAN bus or if you've got a proprietary protocol that your company is working with for, say, an elevator or some other unique protocol, as a programmer, you can go through and create something to decode those values as you capture them. And there's a wide range of decode, a protocol of decoders that have already been shared with SigRoc and put out there in the open for you to use. So we're gonna go ahead and move on to oscilloscopes. Most of this, again, just like logic analyzers, most people don't really need an extremely expensive oscilloscope unless you're debugging high-end HDMI or SATA interface. High-end oscilloscope is really just not necessary for doing embedded development, especially from a software perspective. So one of the things I did was, as part of my duties, I actually purchased 27 handheld oscilloscopes. I went from eBay to Alibaba to every place I could find, Amazon, Micro Center, Frize, I found everyone I could find and I purchased them and tried to do an evaluation on them. And I found that there was a wide variety that are out there, some good, some bad, some okay, but there was a huge variety out there. And it's a wild, wild west for people trying to get your money for these particular devices. And with the maker community that's really exploded over the years, there's this market for people who may not necessarily know what features to look for in an oscilloscope and whether it will actually do the things that they want it to do. So I had some very tight guidelines that I wanted to use when I'm evaluating a small handheld oscilloscope. I wanted to make sure that I could use it to actually look at I2C signals running at 400 kilohertz. So that was very important to me. And so I had a particular product that had an I2C failure. So I was, each one of the oscilloscopes I used to see if I could identify that failure using that oscilloscope. I also had a specific device that had a power glitch where the startup of the power sequence was very predictably a failure. And I wanted to make sure that I could identify that using the oscilloscope. I also wanted to be able to identify timing errors when something was not in sync with the rest of the timing. I also wanted to be sure that the advertised bandwidth for the device was actually what it actually was. The bandwidth generally is going to be how much the frequency at which you can actually determine a signal and view it. And there are various advertisements of that particular bandwidth. The question was, did they actually meet up to that standard? And also the sample rate, we wanted to make sure the advertised sample rate looked as accurate as possible. The clear winner out of all of these particular devices is the DSO-1112, which is the one that's listed here. It's a very interesting device. I disassembled it and went through pretty heavily just to look at it. And the device itself looks like it was manufactured by someone who actually knew about building oscilloscopes. It's by a company called JYETech. And once I started looking into them, apparently they do have some background in designing oscilloscopes, high-end oscilloscopes. But they've really started focusing on these lower ones that are really interesting. This particular one is battery-powered. It has a USB interface so that you can actually capture the data. It has a touchscreen interface. It has two megahertz bandwidth, which makes it very usable for looking at ITC at 400 megahertz. And it has a five million samples per second sample rate. It's just overall a really nice unit. The battery lasts quite a long time. It comes with two accessory probes. It also has a signal generator on it as well. So you can actually generate five-tooth, square wave signals on it as well. So from a resource perspective, this particular one is just phenomenal. And what really stood above all the other low-cost oscilloscopes that were on the market was the user interface. I've actually used $100,000 oscilloscope and the interface that's on this feels like a professional oscilloscope. If you sit down and use this interface, transitioning to a real high-end oscilloscope is very easy to do. The problem I had with a lot of the other ones were they had user interfaces that were very cryptic because they were trying to fit the user interface on a small screen. The wording on it was very difficult. Being able to switch between menus was very difficult. So while there's some others that are in the same price range that have the same feature set, this one just stands out to me as just really, really nice. This average is about $70. You can find it less than that on some places, but through Amazon Prime, $70, rock solid. And for me, this is very important. And again, based on our show of hands for software developers, this is a no-brainer investment for you to have on your desk to look at. It's less than $100. You don't have to worry if you accidentally shorted out and destroy it. It's not that bad of an investment. And it's easily a great tool for you to look at issues from the hardware side. It's single trace. That was an item that I was going to point out here. There were two items that I talked to JYE Tech about on the design. It doesn't have a built-in stand. So what I usually, I've got a little cell phone stand that I use for it. And also, it doesn't support an external trigger. So in theory, if it did support external trigger, you could actually daisy change these together and get dual or quad trace if you wanted to. And so it's a very interesting design. And we did provide that feedback to JYE Tech. It is touch screen. It's a four-wire resistive touch screen. And so one of the things, it does not come with a stylus. It works fairly well with your fingers, but I have big, fat fingers. And so I actually went on eBay and bought a package of Game Boy DS styluses for like 50 cents. And so I have my cell phone stand, my Game Boy DS stylus, and my Oscope. So it works really well on your desktop. And from a software programmer perspective, it's a no-brainer investment. Let me answer that here. So don't waste your money on some things, especially kits. The kits are basically worthless. Unless you're just wanting to put a kit together to practice your soldering, most of the time once you're done with it, it's basically useless. The calibration on it and everything, just don't waste your money on them. They're a bad idea. I know they're tempting to get, but they're just not worth your time. Don't waste your money on the small AVR boards like this, in particular one. These are all over the place. They're advertised as dual-trace. They are basically worthless. I mean, yes, it will show a signal on there, but you cannot identify any failure points. And that was one of my test conditions. I knew this particular board had a power glitch. Could I identify it with a device? And I couldn't. So maybe you need some more higher bandwidth dual-trace. Two of the ones that are popular on the market are the Quad DSO and dual DSO that are out there. There's a lot of different variations of them that are sold by Seed Studios and Spark Fun and everything. They have the user interface that I really don't like because they're very, very cryptic. The cost of these are generally in the 150 for the dual and 225 for the Quad. Unless you absolutely need to have this as a portable where you're taking it out onto a location, I highly recommend don't do it. And the reason I recommend that is because you can get a full-featured generic DSO for $200. And that's on eBay or Amazon or half a dozen other places. And for the money, for $200, you're getting more features like high-end frequency counting. It's easier to use because it's larger and it has better specs, higher bandwidth, higher sample rate. So from my perspective, unless there's a very good reason for you to have that as a hand-held device, the money is much better spent on a real-files, professional oscilloscope. Did that answer your question? Yes. Basically what was happening was I had four power supplies that needed to come up in a very specific sequence and one of them was not very consistent on its timing. And it was like one out of every three times I would power up. It would take like 200 milliseconds longer than it should have. And so I wanted to actually identify that and the smaller AVR one just simply couldn't capture that short period and display it in any meaningful way. All the other devices generally did pretty well on it. So we're gonna go ahead and move on to multimeters. And there's not much I can say about multimeters. There's a lot of them out there now. There's a lot of them that are actually supporting RS232 and USB for data capture. It all depends on your needs and what kind of stuff you want. But most of the multimeters are generally that you can find less than $100, generally more than $20 are generally extremely good. There's just no point in going through and testing all of them because they generally do what they say they're gonna do. So if you need data capture, you can look and see if you can get USB or RS232 support on that. So from my perspective, what's more important is the probes that you use with the multimeter because normally the ones you get with a multimeter are generally useless. So one of the runs I recommend are basically called needle probes and companies like Spark Fund, Adafruit, Seed Studios, Digikey, Mauser, all of these places generally will carry a needle probe. Now you do have to be very careful with this. I've poked my thumb and finger many a time because when they say these are needles, they are needles. And so why is this important? Because generally when we talk about most of the Rojas compliant PCBs and such, the solder that's being used on there is very difficult to get through a lot of times. And if you're usually using one of the cheap probes and trying to measure two points, maybe a joint that's been soldered or to get on a test point, a lot of times the ones that come with the multimeter, you can't get through that. Additionally, if you need to probe a trace or a test pad that's actually covered with solder mask, you either have to take an exacto knife and scrape some of the solder mask off or you can actually use a needle probe to poke through the solder mask. And these are very important and they're only $5 and it's a well worth your investment to make your multimeter much more usable. I keep several different sets around available and again they're very inexpensive. So I would recommend investing in a set. The other one that I recommend is a tweezer probe. This works very much like a tweezer but each side of the tweezer will actually is a different probe portion. And what this is meant to use is if you wanna measure across surface mounted resistors or capacitors, different types of devices without actually having to use both probes together on both sides, you simply just squeeze on each side of the device. It's a very handy probe to have around and again, it's only $5 and when you have that there and you need to do a probe of a particular device, it makes everything so much easier and when you're trying to move around and do two or three different things, maybe checking your serial console and hold this on the probe at the same time. Doing it one handed is, with this particular set of tweezers is very nice. And of course, I recommend using alligator clip with banana probe or banana connections on these. When you're doing a lot of measurements that are consistent, you're always connecting up and you're doing your software development and debugging, you don't wanna have to stop from working on your keyboard to move over and do the test probes or whatever that you're doing. The alligator clips are very important. What I generally do for using the alligator clips, I'll take a small piece of wire and solder directly to the test point that I'm using, that way I can actually use the alligator on that piece of wire. So there's a lot of different things you can do on there. Again, it's $5. For $15, you can get an entire set of things that make doing your measurements a lot easier and instead of just depending on the probe that came with your multimeter. And so as we were looking at with the tweezer probe, there's actually an additional type of multimeter that I keep around. And this is basically an SMD meter. And it's a variation of the probe tweezers that I showed earlier, but it actually has the multimeter built into the tweezers themselves. And this is just absolutely great for finding resistor values on boards that have been populated improperly. It also does inductance testing and capacitor checks. So it's a pretty interesting little tool and it's great to have around. It's $30, so it's really a good investment to have on your desk. So I'm gonna go ahead and move on to microscopes. This particular one is actually one that I have, it's a stereo microscope. And it actually comes with several different lenses and a snake light for doing soldering to highlight your components and stands. This particular one is about $250 from Amazon which puts it at the really bottom of the expensive stereo microscopes but it works really well. But to the point, most everyone doesn't need this. I'm using this with 0.4 millimeter pitch soldering so in 0402 package sizes. So not everyone needs that, especially software developers. A lot of times you may necessarily want to just go and take a picture of a component and send it to a colleague or say, should I change this resistor value on this pad? So with that in mind, USB microscopes that were originally targeted at children for scientific and educational purposes really have become a booming business for hobbyists, makers, and developers over the last 10 years. Strangely enough, the very first USB microscope that was on the market was manufactured by the Intel Educational Group and it sold for about $250 and was VGA resolution and immediately developers and hobbyists were buying it and taking pictures of circuit boards and rework and doing soldering under it. So the market for these devices has changed dramatically. So when I'm about, go ahead. It's my understanding that it's fully supported with the current distribution. One of the things that I did when I evaluated all of these USB microscopes and I purchased about 20 different ones ranging from a $5 one all the way up to a $200 one was I wanted to make sure that they worked under Linux, that the resolution of the microscope was reasonable enough that I could take good, solid photos of a PCB with 0805 surface mounted components. I also wanted to make sure that we had some way to control the light on the camera. Most of these microscopes come with LED lights on the bottom of them. Some of them are fixed, you can't change the brightness. Others have a thumb wheel that you can actually use and I also wanted to make sure that the camera actually had a button to do a picture capture. And as you can see in this particular one, the button is actually on the side, side here. And there's actually a thumb wheel to adjust the LED lights. But one of the things that I found extremely frustrating about all of these microscopes that what I get was the stand. The stand is terrible.  And for me to take pictures of PCBs, it was very difficult to make these stands work to get consistent square pictures of it. What I would do is just like in this picture, it would be an offset picture. It was very difficult to get a picture directly over the device and not oblong or exaggerated. This particular camera or microscope is from Adafruit. It sells for $70. And with the exception of the stand, it's an absolutely excellent microscope. The button on the side is very solid. It's got the thumb wheel to adjust the LED, but the stand would just made it unusable for me. I still recommend it for some aspects, but what I also recommend is buying a separate stand for it. This stand is sold by Adafruit as well. And I purchased one of these and it's absolutely lovely. You can actually buy the stand by itself and use it with other microscopes as well that come with that stand. And it holds the camera very steadily. It allows you to get good solid pictures and adjust just the height on it. Right, absolutely, absolutely. I'll add that in there in the notes. But together with these two, you're talking about $120 to get the Adafruit camera, microscope and the stand together. So you're talking about $120. And that's why my real preferred microscope is the Celestron version of it. It has very similar specifications as the Adafruit one. It has a picture button, has the thumb wheel to control the LED light, fully Linux compatible. But the thing is it comes with a very nice stand. This particular stand, it's got springs to hold whatever you're working on in place. It has an adjustable arm that goes for up and down your Z-axis. And it's got a thumb wheel so that you can actually adjust directly on there. And so you're basically getting the camera and the stand for $70. So from my perspective, it's a much better buy long-term. Unless you really have a need for that swing arm stand, I really recommend this particular component. So next up is the soldering iron. And so I expect a lot of people to have the questions and whether there's different types of soldering irons I recommend and everything. But really the Haiku FX-888 is like the gold standard of soldering iron stations. Don't waste your money on anything else. If you want a basic soldering iron station, this is the one to buy. It's extremely a reasonable price. You can find them anywhere from $85 to $100. But as someone who may not necessarily be doing a lot of soldering, you might be doing a rework of a board for your board bringer for something. Don't waste your money on a $25 or $35 fixed iron or one of the cheaper stations you find on eBay. It's worth every penny just buy it and you'll never have a problem with it. Yes, absolutely. So it's the difference between the digital calibration and analog calibration. I do recommend the digital one. The reason being that if you're using two different types of solder, leaded versus lead free, it's really not to know the exact temperature that you're working with. And it's very easy to calibrate this device. It's very full featured. It has a wide range of soldering iron tips. It's carried by a lot of different distributors including Micro Center, I'm sorry, Fries. So a lot of places you can just go and pick one up. But from my perspective, I simply just don't recommend anything else unless you're going to a $500 or $800 rework station. There's just nothing else. And I've bought a lot of little single iron 51 irons and everybody probably has seen the Radio Shack irons and Weller irons that you can get. But from my perspective, there's just nothing else. Yeah. Oh, thanks. Yeah, it's a standard inductive tip but it's got the sensor in it directly but there's like a half a dozen different types of tips for it. Haku has even a pair of heated tweezers that you can get for it as well. But the biggest thing about it is, for me, I've used this particular type for like three years now. And compared to the Wellers and some of the other items, the tips just don't wear out like they do on the Weller. They don't oxidize, they don't bend. I can abuse the tips fairly heavily and they just still work. And when you're doing 0.4 millimeter pitch stuff, you have to have a really nice tip in order to get that working. And it just works well. So there was one other soldering iron that I do say that's kind of interesting. I don't recommend it to everybody but it's interesting for one fact. The TS100 can be powered by five volts either by a USB port or an external power supply. It's not a great soldering iron. The tips are fairly limited on what you can get with them but what I do find it interesting, for anyone that travels internationally, this particular iron is a godsend because most soldering stations and soldering irons are fixed at either 110 or 220 volts and they're not adaptable. So if you buy a 110 soldering iron in the US and try to go to Europe for a conference or trade show and you need to solder up something, your iron's not gonna work and vice versa. So this one's interesting because it does run on five volts. It makes it easy if you're traveling internationally to adapt to the power supply. I don't recommend it as a normal purchase but if you do travel internationally, it's a good buy to have. There's one item that I wanna discuss that may not necessarily be considered as part of soldering irons but it's a part of a soldering station I guess you would say. This is called the stick vise by the Hackaday. It is just absolutely fantastic. I've used all these different vices and extra hands and third hands and if we're doing soldering all over the years and there has been nothing like the stick vise. It is just absolutely fantastic. It's a little expensive because it's kind of a niche product that Hackaday is making in lower quantity but it's $30. It's an adjustable PCB holder. It's spring loaded so once you adjust it, all you have to do is squeeze the end and it'll release the PCB. They have a version that's eight inch long and I think they have an extra long version now that's 16 inches. So I keep about five of these around and with different PCBs holding it and if you're doing through-haul soldering of a lot of components, I'm sure you've found the fun of trying to hold components in place while you're trying to do the soldering. This is just absolutely wonderful and I recommend it to be purchased as an accessory for your work station. Okay. So that's where we're at as part of the conclusion here. Go ahead. And I normally keep a wide range of them. Again, price generally for the Haku has probably 15 or 20 different variations. They're fairly inexpensive so it's a good investment just to pick them up in case you need them. So that kind of brings us to the conclusion here. There are some good bargains out there that are less than $100 that help you kind of keep your work station functional but you have to be careful because a lot of times you often get what you pay for. Your expectations need to be right where you're at, you know, around what you're paying for, you know. The DSO 1112, it's well worth the $70 to do basic debugging but if you're expecting to debug HDMI with it, it's probably not going to match your expectations. Look through all of the reviews. For the low-cost items, there's surprisingly a lot of reviews and people talking about how their experience with a particular device was used. eBay, look at previously sold items, that's really important. Another really interesting thing is YouTube videos. There are a lot of YouTube videos popping up of people unboxing things and giving reviews of it. And generally, I've found that they're fairly accurate on their reviews so it's easy. Just Google out there and see if there's a YouTube review on the particular part before you buy it. And if all else fails, go ahead and ask a friend. Don't be afraid. I know that from a perspective of talking to a lot of my hardware-challenged programming friends, sometimes they're a little shy on asking about some of this type of stuff so don't be afraid to ask a hardware guy what's your opinion on a particular item. Do you have a question in the back? So the question is, which type of chip or a tip would be the best to get? It all depends on what you're soldering. Remember, these are tools that you don't ask for a Phillips when you need a flat. So when screws or if you're cutting something, you don't want to try to use a hammer. It's all about thinking of it as a tool. Generally, if you're doing very fine pitch, 0.5 millimeter or you're doing surface mount components, a conical tip will be a much better choice. If you're doing a lot of through-hole components, the chisel tip is much more important to spread the heat across the larger through-hole pad areas. So it's very dependent on what you're working with. That's why I recommend go ahead and buy a few different ones. Yeah, for de-soldering, it's very straightforward on a lot of that. We have de-soldering braid that's available and that's very easy to work with. There's a lot of great YouTube videos on how to use de-soldering braid. The other one's the vacuum solder suckers and those are fairly common. There's not much variation in the quality of it. There are some hot air rework stations that are available but they generally don't start until you're talking about $250. So again, it's very dependent but basically de-soldering stuff, you don't see much variation in the quality of them. Right? Yeah, the problem with most of those is that they over-temperature the PCB very quickly and do damage and one of the worst thing that you tell people that do old arcade game restoration is tell them that you use one of these de-soldering bulb suckers on it because it really destroys the boards quickly. I've not found one that's really good at that. Occasionally there's a couple of refurbs that get posted on eBay but I've not found a new out-of-the-box and I'm not keen on the refurbs. So I just don't know of a good one and yes, I've been looking. So to summarize there, last, if you don't know about these particular things, don't be afraid to ask somebody whether it's on IRC, email or a friend that you know. All of the documentation will be up later today on the elinux.org website as well as links to all the devices that are discussed. And again, this is not a be-all, end-all list of stuff but these are just some of the things that I found over the years and through my testing that really makes it easy especially for software developers who may not necessarily know which items to purchase. Thanks for attending. Oh, go ahead. Yeah, I just said. On the elinux. I'll have all the links up on the elinux as well. I'll have the links as well. Yes? Yeah, I'll have it as a place holder so I'll have it up later. Were there any other questions that I could answer? Yes, yes, as a matter of fact, there's a project right now for the ISPIC, the Lattice development platforms. To, they've been reverse engineering the protocol to program those. So Google open source ISPIC, it's ICPIC, C-I-C-K. And it's very functional. It's not as a complete, I remember you have to remember it's an early on reverse engineering project but it's a very nice and it has a lot of potential. I don't know the details on that. I've downloaded and done some testing with it and it's fairly robust but I don't know what their overall intent is going to be. Yeah. Again, thanks for attending. If you have any questions, let me know. Don't worry. The mic's okay. Test, test, test. Back room hear me? Any other room hear me? All right, front row can hear me. So we're good. What do I need the mic for? Louder, louder, quieter, louder. Good? Hello, hello, testing one, two. That's a little loud. Speed back. Test, that's good. Maybe good? Good, good, good, yep. Yeah, I read that. When they're recording for the client on the web and the audience can never hear the questions and the answers come out of the process. Repeat. Okay, we're gonna get started. This talk is the Internet of Thingies. Our speaker is Ken Eschelby. He's with OpenNMS. And the talk is about how to do the Internet of Things for do-it-yourselfers and people that wanna use open hardware designs and open source software. So without further ado, I give you Ken. Thank you. Ken, how many of you have tinkered with making hardware, little things, soldering, electronics, hobby, kinds of things? So about half of you, okay. So if this is too pedantic, hurry me along or something. For the rest of you, this might be a good introduction. It's meant to be basic enough for you to understand. For the end, it's gonna get a little advanced because the software of the company that I work for, OpenNMS, is kind of an advanced monitoring software. So I'm not gonna go into a lot of detail with that. So we'll get started. I always say, start with the joke. And the joke is, my clicker doesn't work. Sorry about the microphone, it's kind of hokey. So the joke about the IoT is that all these things are gonna take us all over and we'll be their servants eventually. Maybe hopefully, maybe not hopefully, I don't know. So my interest in this is basically around my home, trying to do things more efficiently and learn about the environmentals around me and how I'm using energy and heat and any ways that I can do to control my energy use. So to me, that means collecting data and analyzing the data and making decisions based on this data and using comparative data. So typically for home systems, what you see are diagrams that look something like this maybe. There are a lot of varieties of models out there but this is kind of what I'm talking about. Sprinkling smart hardware with software on it that does various things like control systems and measuring systems and access systems. And there are tons of product out there for you to check out. This is another kind of model, a little more cleaner, but this is typical of what you see. I really like this one, but I have no idea what it says. Does anybody speak Russian or read Russian? Someday I'll Google translate it into a normal. And then this is where things can go. This is the fear in the machine overlord kind of thing where you're being blackmailed by your devices to turn up the heat or not watch what you do that's the end of my joke segment.  If you go just down the mall where the restaurants and shops are across the street and keep going to the city hall, the big Rotunda, walk under it and out to the courtyard and in the corner, each corner of the courtyard are these things and they have a little motion sensor and they make animal noises and other weird things. And I don't know why they would do that other than maybe keep people from sleeping there because I've run into people in sleeping bags out there at night, so I have no idea, go check it out. If you do keep going to the Weston, you just go straight on through, cross the street and you're into this little manmade creek and mosaic tile thing and it just takes you right to the Weston. It's a really nice walk, keeps you away from the traffic. Okay, so these are the design goals that I was working with. They're a little vague purposefully because not all things fit and you have to pick the priorities of the components you want. I might use the camera. All right, sorry about that and that didn't help. So this is my beginning point. You need kind of a set of tools. You don't need this much, but you need some of these things because you're working with measuring voltage, inducing voltage to work with the pieces. There's some circuit boards and things here. There's little jewelers, screwdriver kit, electrician scissors, soldering station, a variable power supply and then like fricking forever components and pieces and stuff and junk that you get from things around the house sometimes. My advice for things that you get is to, it's hard because unless you have hands on you don't know if something works for you or not but get things that are helpful and make things efficient so you're not fighting your equipment. So try to buy quality things like the soldering irons like a, I don't know, $50, $60 one. It's not a $15 one from Harbor Freight or something. Probably shouldn't say Harbor Freight, they're a customer. But you know, the kind of discount tool places. So there's a variable power supply. That's really important because different components use different voltages and they can tolerate different amounts of amperage. So you have to be careful about these things or you let the magic smoke out of the electronics and that's not a good thing. I've done that maybe. There's kind of a simple list. Again, better quality makes working with this stuff more fun and easier. You're not fighting screwdrivers that strip or you know, things like that. Power supply is not required but it's very useful and be sure to light up your workspace and give yourself enough room to work. It's like simple things that make a huge difference and makes it more enjoyable to do this kind of thing because you end up spending a lot of time at this. So comfortable. What a picture of a breadboard with a Arduino and these are the various sensors. This is kind of a higher accuracy sensor if these are all temperature sensors. This is a waterproof one. This is one with humidity on it and then this is kind of a really cheap one. And so when you're looking at components of the pieces of what you want to build, whether you're measuring voltage or amperage or temperature or humidity or pressure or whatever light, you have to find what's out there and what fits you so you can see that these different components have different characteristics and some may work better or worse for your application. So what I found in my case was that this BMP180 seemed to be the most robust for me and it uses an ITUC protocol which makes it really easy to hook to the thing that's gonna take the data in and then work with it. This one is another one that I use because it's got humidity built into and that's useful to know around the house. Just for, you know, I have a basement and it's interesting to watch humidity in the basement and in the garage and outside and inside and see how they change and if you can affect it by insulating and different things like that. So Arduino is one way to go with this.  So that's the basics of Arduino. They're very cheap now, they have a lot of utility, they're easy to work with, they have their own environment to develop, they're easy to connect to and there are a lot of tutorials and examples out there so honestly this is a good starting point. Let's see, I have to look at my notes too once in a while. This is the IDE, it gives you a serial console so you can watch debugging of what's actually going on and it has a variety of libraries to work with the different hardware, to work with, to have a web server built in and it's really easy to work with, it's probably the best if you're starting out. So for this project I wanted to communicate over IP so I have, that's a component of my requirement and these are the possible characteristics and possibilities that I can work with Arduino. SNMP which is a common networking protocol is very flaky on Arduino. It's not consistent and reliable so I kind of had to throw it out and use something else. Our software can collect from a lot of different protocols and methodologies so I went with something else but this is kind of, I'm kind of showing you the approach so these are the things that you look at, you match it with your hardware and your software available in the whole system and you decide whether or not it works well or not for you. So next I look at this little thing, it's an ESP8266, it's really cheap, it's really tiny, it's very simple, it can take digital and analog inputs, it's on, this one happens to be 3.3 volt and see it's a model, it's a generation I guess, ESP01. It's the first iteration of this board. The cool thing about it is it's got built-in wifi so you can connect it to your AP and it becomes a client, right? Has a built-in PCIP library, has a built-in web server so it's miraculous, it's a magical little box and I'd say the price was, I'd give a price, about five bucks for that one. So here's the prototype using ESP8266. So I just wanted to show this note because all these details matter so the thing itself operates at 3.3 volts, you gotta make sure you deliver 3.3 volts to it or you cook it and release the smoke then it doesn't work anymore. So to do that, you usually have to take some other voltage and drop it down to 3.3 volts so that's what this thing is, is a voltage regulator. So typically you get like a wall worth that outputs five volts or six volts or nine volts or 12 volts and you drop it down to 3.3 and the regulator's like a buck but if you don't get the heat sink for it and you're feeding it 12 volts you'll burn up the regulator. So on and on and on this goes, right? Every step of the way you have to be careful about everything you do and you learn and luckily it's cheap to learn so. And so after you do all the things correctly, put your code in, this is the kind of result so I just built a simple web server that gives me a page and now I can collect it with the network management software. So this is a very, very basic model for this approach. So then, you know, well that's not good enough. I want something better in different ways so you go about it again, make a new iteration of it. One thing about this is that you can't just plug batteries in and let it sit somewhere and run. That's kind of my dream is to have it truly wireless and remote so I don't have to rely on house power to make it operate. That lets me put it in places that you otherwise couldn't put it. Thank you. And it lets you be more flexible in where you collect and how long you collect. So the previous design didn't fit that so I had to try over and over and get better at this. The other problem is that that O1 model has a really weird pin set up. Maybe here, you can see there's eight pins and they have to bridge this gap in the prototype. So, well actually there's the better one. So I bought an adapter that those pins plug into and they come out and they spread and can bridge the board gap, but they don't fit. So the pins down here don't fit the square, they're different types of pins.  So I take a battery clamp and clamp it to it. And that works for a few days until you get annoyed with it. So then you can, if somebody did this, you can heat up a pin and then pull it up and then solder a kind of L-shaped right angle set of pins to it and now you can bridge this gap. It's a really hokey fix but it works well. It seems to be reliable but that's kind of silly, right? You have to do this for everyone and it's just not a clean, efficient approach to it. So the other thing about the first way that I was doing it is you have many components. So we talked, I showed you the voltage regulator. Well I got one off eBay, that's kind of an all-in-one. It's got a built-in kind of heat sink and way to deliver clean power. It's not as like physical, mechanical. It's got some marks to it so it's a better tool to use. However, it's not reliable. I've had, I've killed two of these things. Likewise, you have to have a switch to do the programming of the ESP8266. I'm showing this with an Arduino but that's not really involved in this. I'm just, I'm just, sorry, bad manufacturing. eBay, Chinese special kind of a thing. And honestly, that's really a good way to go for if you don't know what you're getting into because you can buy a five pack for $10 or $5 or something and you've got five to kill in new and creative ways each time. So, right, it's honestly buying many of things at the start or a couple at least, right? Figure you're gonna destroy one and you might get one to work and then determine if it's flaky or not or maybe it's your approach or something but you run into a lot of bad hardware in this so that's just kind of how things work. That's life. So, I found, I've been aware of this one but I found, I guess, the 12th generation but they're not all, don't do an incremental thing but anyways, Adafruit which is a popular Arduino retailer. They sell a board that's based on the 12th, the ESP12 model of this chip and it has the voltage regulator and the programming button, reset buttons and a whole load of inputs and outputs on the side available, it's got pins for connecting USB. It's like, I'm pretty much all in one. So that plus the BMP 180, temperature and pressure sensor, it's a lot more simpler than multiple components, physical components and I found that these are incredibly reliable. I haven't had one die since the summer and we had a hot summer in Oregon so it's been a good box, it survived freezing and December was the second wettest month for Oregon and Portland ever so it's had a harsh environment so far and I haven't had to go out and reset it or do anything so it's been really good. You have a lot of options with it. It's $10, like I say, I haven't killed one yet and I have like six of them running I think so it's been a really good board for me. So, software side, how do these things work? You can run the Arduino IDE with the ESP8266's but you can also flash it to something else, anything you want, you can build your own firmware and your own development and your own code and language to use with it. By default it comes with Lua programming language so it's got a firmware that includes the IP smarts and the web interface and Lua is the language you use to program it but I'm just showing you the NodeMCU is kind of the ringleader for these it's a popular one and this is just a flashing utility and this is the way you load different firmware and make use of different ways of programming these things. So, the Lua language, here's your Wikipedia for it. It's a popular language, it's widely used with different applications, there are some of the applications and not even close to it. Maybe that's 10% or 25% of what's on Wikipedia. But you can see it's pretty widespread use. I do this because there's games and that's probably five or 10% of the list that I saw but popular games use it to make mods or to be their front end or it's an interesting language. It's used in the like systems management and networking world for various things.  It's widely used, so it's kind of a nice language to use because a lot of people use it and there's a lot of knowledge out there for it. So, this is for example a, this is a temperature sensor if that's the temperature in humidity one. It's a library for it and that's the file and you get it and you use this little IDE environment called ES Flora for ESD8266. You load the DHT.Lua file and here's kind of the loading or the console screen for it and you upload it and I'll show it there maybe on the next slide. Well, anyways, this is removing but anyways you load it and it shows, it will show on one of these slides that the file is here and loaded and there's your library and then you load a basically your program and you execute it and then when you reset the device it's just running constantly so it's kind of a loop thing and based on whatever you've told it to do it will it will constantly do that. It can do things like you can set it to a deep sleep mode and wake it up every so many minutes and have it send something or you can leave it on like I had for this one as a web server and it's just waiting for somebody to query it and get values from it. You can do whatever you want so sky's the limit. So, this is the uploading of that file and then I learned how to do highlighting in whatever screen capture I was using. And you can see the file there so right now we're getting advanced in my presentation but it shows the file, the size of it, how much space you've got left and here's the code of that library and now so because these devices have limited flash memory on it there's a nice thing you can do that lets you compile that Lua file you uploaded into kind of a binary that strips out a lot of comments and things like that so you can shrink it by what a quarter or a third of what the original size was so it's kind of nice for saving space on it and then you load what they call the init file. The init file is basically your program so to go through this all I've done is set a static IP all the examples you'll find on the internet are for DHCP and that didn't fit my model with multiple devices and having to monitor because I had to go and have to identify a device and say this is the outside sensor and if it's changing IPs or contesting with any other things you can't tell which one you're collecting so I needed to set the IP address. So I've set that up. This is my SSD, SSID and my password for my AP. I've basically defined some pins and some variables and then I kind of do a run through of the device itself which is basically initializing it, getting some values, doing some calculations of those values and then clearing out memory, doing garbage collection. I then take temperature and humidity and set up the webpage basically and somewhere pass it temperature and humidity values and then it basically loops. So it's doing this every, I can't see that number, can't see it on mine either, but it does it every 30 seconds or something like that. So again, this is a very simple model. You can kind of see how you have some variability and depending on what your use case is for this you can set it however you like. Okay, so that's the hardware part. Do you guys have any questions about kind of hardware related and getting, go ahead. So I gave it, I think the one I ended up with needed four and a half or five volts. There was some number up in there where I ended up using four double A rechargeables. Those didn't quite last 24 hours set up as a web server. So what you really want to do for this is do the deep sleep and do a push collection. I wanted to keep the kind of presentation simple so I wanted to present this but that's gonna be the next iteration is developing a push model that's collectible and then presenting that as like the low power usage. Because I've run into people at Maker Fairs and things like that and one guy's getting I think a year and a half on a pair of double A's kind of thing. So this is, that's the kind of place you can go with this kind of stuff. Makes a lot more sense at that kind of level than changing batteries out or having a big battery for it so yeah. Any other questions? Okay so this part is the data collection side and because I work for this company and use it and am a consultant for companies using this, I'm not going to, I'm gonna breeze through it. Suffice it to know that there's a product in the world called OpenNMS. There's a couple of different versions of it. This is kind of a long term support version. This is like a rapid development version. This is kind of the Red Hat model that we use. This would be for a production environment and this would be for a test lab environment. Some people use this in production. Our software is completely free and open source and it's an enterprise scale network and systems monitoring management platform. That's about as fast as you'll ever hear that description. So the configuration of it, I'm putting this here to just kind of document it. We don't really need to know these details but we basically configure OpenNMS behind the scenes in XML. There's various front ends in ways that you can get data in but somehow you have to get your sensors into the tool so that it knows about them and can collect values from it. So that's what provisioning is, is it's a way to do that and it can be a very complicated process.  They need temperature sensors for all those, right? That starts to be a lot of numbers so you have to have kind of a sensible way of getting lots of devices into our tool so provisioning is the way you do that. So we've got the nodes into the system. Now we have to configure data collection and so what I've done is created a service which could be HTTP or ICMP or SMTP, any kind of protocol and I've just made one called DHT-22 sensor because that's a type of sensor and it's got its own set of parameters. So I've created in the DMN config a service that's called the sensor and then I've defined a data collection based on HTTP for it. So down, ignore this, it's just the performance data store stuff but I basically made a reg-ex that looks for temperature, humidity, takes out the numbers for them and then alias is the first one which is in these parentheses and the second one which is in these parentheses and match it to sensor temp and sensor humidity values. Now I've got values associated with these variables and I can go reference them on displaying graphs and things like that, so that's what I did. So I made a graph definition and there's a graph for one sensor for temperature and humidity over approximately a week. So I think that's kind of cool, honestly because you get a real sense of what temperature and humidity in this case does outside, I think this is an outside graph. Likewise, OpenNMS has other ways of displaying your data including a plug-in for Grafana. So now you can get kind of the modern sort of graph display of it and in this one I took multiple sensors, showed them all in the same graph. This is, I think the kitchen sensor, the outside sensor and the basement sensor and they all had at the time temperature and humidity and you can see what your outside humidity does in relation to your inside humidity. Me that's interesting. Likewise, you can build little displays that you can set thresholds and change the color of the number based upon the value. So if it gets cold, turn the number blue and in a glance you can see it's cold outside or something, that's kind of a silly example but what this gives you is a way to display your data in a sort of immediate and impacting way so that you can see interesting things. You can see that for this, as the temperature dropped, I think this is over a 24 hour period, as the temperature dropped, the humidity came up and in Oregon, this was kind of late summer so that's kind of a normal thing. It cools off in the night, gets a little more humid as a result and then when the sun comes up the humidity falls off and it gets drier outside. So you can see all that displayed visually. There's another display using Grafana which is just the BMP180 also lets you record pressure so here's a graph of pressure and then here's each individual sensor with this one happens to have pressure but I don't know why this one doesn't have anything but it might have humidity or pressure and then this one shows temperature and pressure together on the graph for these two sensors. So you just have flexibility in what you wanna do. So expand that out to showing when lights are on and off, what amperage are going across circuits, light levels in your house, like doors opening and closing, this is the kind of thing that I'm kind of working toward in this presentation so I'll get there at some point. So again, I talked about some of this but these are some of the lessons I've learned. The world is a mean and spiteful place and you'll pay and honestly what's not bad about this is you'll pay in a kind of a cheap way. It's not hugely costful to pay for tinkering with this and this never used to be the case. Like those little ESP boards, something like that used to cost $60 like a year ago and now they're $5 and $10 so this is the direction this hobbyist kind of electronics are going and it makes this fun and accessible for a lot of people. So I kind of encourage you guys to go out and get out if you've got interest in it. Again, buy extra things because one order is a lot less stressful than two orders or four orders or something. So maybe double whatever you think you'll need or do something reasonable to cover losses for various reasons. And then finally, some of my to-dos. This push collection is a big one and actually this presentation, I gave this in Germany and it got one of our developers to think about push collections and say hey, we need a streaming engine to receive pushed data to our software. So I think it's a good model for saving a lot of energy and making these a lot more attractive ways to roll your own kind of internet of things devices. So you need all these pieces in place that I just took you through to make all this happen. So now look at each piece and make it better and better. So that's kind of how we do it. So that's it. There's my contact info. Are there any questions or comments on this? Yeah, so the question was have I looked at Google's effort and I've only looked at OpenHAB in terms of a central hub kind of, I'm assuming it's like a hub-based kind of model and you connect various things like that thermostat or other things to it. Okay, yep. So it's kind of a matter of what you want to do. Are you controlling things? Are you just getting information? Are you like that kind of a thing? So I haven't dived too deep into that yet. I'm gonna start with OpenHAB because it's an open source project that's built very similarly architecturally to OpenNMS so I'm comfortable with the Java architecture and the way that he structured things. So that's probably where I'll start but I'm gonna look at as much as I can because I will tinker endlessly with this. The NEST thermostat? Okay, I slowly do this throughout the year when I get time due but yeah, it'll get there. I've got a NEST and I've got a developer key for it so I've got it hooked to OpenHAB right now but I haven't done much with it. So now that I have some accessibility to the thermostat I can now use that key with other frameworks and work with those so yeah, it just doesn't take a while. Build an OpenHAB on a Raspberry Pi, it just gets all that set up and then start talking to it and figuring things out. All of a sudden, three weeks have gone by kind of a thing and so as time allows, yeah, totally I'm gonna check out as much as I can. Any other questions? There are tons as I've found out. There's an ESPA266 form that is heavily used. These are very popular little Wi-Fi things so for that thing as the entry to a sensor data or things like I've been installing a lot of LED strip lighting in my house. In the basement I went from four foot fluorescent tube fixtures to all strips and I think my power dropped from the drop in power usage of those went from like 300, almost 400 watts to like 140 watts. I'm gonna flip the switch and that's the difference in power. Now add to that things like a motion sensor. It detects you walking into the basement and then turning it off and then having a 15 minute time out if a sensor doesn't detect movement. The savings in energy there. Things like on the front porch I have LED strips that are, well they're red, green, blue so I can make red and green ones for Christmas and yellow and purple for Easter. That but also dust to dawn, a light sensor to detect dust and to dawn, turn them off and on based upon the light and then when somebody walks up, a motion sensor that makes them brighter when they sense you're there. So all these iterations help with that. So this is a very long-term error process and each component that you work with you can recall. I don't think I answered your question though. So the resources online, yeah. There's a lot of Arduino forums, yeah, what's the best one all this kind of thing. You kind of find by which ones you like by the quality of the questions and the quality of the answers and how much activity it's just like GitHub or Sourceboards was, where should I use this open source software? Well, it hasn't been developed for a year and a half so I don't know. Any others? It's on that. So we're an open source community and project so somebody wants to write that kind of thing. They could work with developers, our developers to do that. Our models are kind of community contributed, funding development or in-house. So we usually work with large companies that may have in-house development staff so the need has to drive the people's time is valuable so our developers really only write things that are funded. We don't write a lot of codes for free. We tend to write features that our customers want and have paid for them so, yeah. Yeah, like the model I was gonna do is stuff the values separately like an XML file, have our XML selected as the first iteration. Not have a new game or anything but just come up with a way to separate out which value belongs to which device and at what time and then pop it into a metric database based upon the time so that you can get normal-looking graphs out of it kind of thing. So yeah, I haven't gotten to putting that all in place but I've started on that. But the bigger thing is a true streaming daemon that's one of the system lines with all the rest of our types of daemons and makes the real thing. And that we can speak MPTP protocol and all the other kind of bio keypenders thing. This right now, this one that I'm showing you was just on a, I just have a no server and it's just in RAD files. We have measurement API that lets you just select any kind of data store. We have two, we can use RAD with our natively out of the box. You can use RAD natively or you can use, what a segue. We can use Nuut, which is basically a data model for Cassandra node collection. So highly, highly scalable, throws many, a large of a Cassandra ring as possible and you collect millions of things per second.  Cassandra node is a separate server so whatever you give it, it won't use it. I think we're good. Anything else? Anybody else? Thanks for coming. I hope you have a good show. Come by our booth, 304.