 I work with Ruby. I work with JavaScript as a web developer. And at night, I tinker with electronics, trying to connect the web and electronics. But today's project is going to be something very generic. It is about Ruby. It is about the developer community of Ruby and developer community at large in Singapore. So how many of you are here in the Ruby Meetup for the first time today? That's awesome. Winston, Kuo Siang. That's about 50%. And bring new people with you. And bring new people with you. How many of you have attended other developer Meetups in Singapore? Great. That's quite a high percentage. So for all of you here, I wanted to share with you about a little side project of mine, which is called data.webuild.sg. But before I explain this, I want to bring in some context. So about four years ago, December 2012, I wanted to pick up web development. I traditionally come from electrical engineering, and web development sounded pretty daunting to me. So I was like, OK, so where are the developer events in Singapore? So what I did, I was learning HTML and CSS. I created static page, which basically listed out the events with static data in Singapore. So the page looked a lot like this. So every day, I would literally go and edit the HTML and CSS and put down events there. And it was possible in 2013, 2012, because there were hardly 10 events per month. I think Winston and Mike will know. It was barely 10 events. But throughout the years, the design has remained exactly the same. But internally, the back end has changed. So let me give you a little bit more information about how the back end has changed. Today, it is obviously automated because the open source community has decided to help. And we basically query event APIs from Facebook, meetup.com, Eventbrite, and even ICS URL. This happens via a scheduler hourly. And we only query developer or technology events. And then we list it chronologically. It happens every hour. No manual intervention and editing of HTML and CSS is required. On the right-hand side, we also go to GitHub and query the GitHub API. So if your location in GitHub contains Singapore, and if you have a repository that has at least 50 stars updated in the last three months, it will also come up here chronologically, according to the updated date. And I thought this was a great way to kind of connect to the developer community in terms of open events and open source. So that was pretty going on well for about two years until in 2014, third quarter, one of our friends was like, hey, I want to do some math on the data of events and open source. Where can I get the data? Well, you know what? We never really stored the data because who cares about the past data? You only care about the future ones, right? And then we were scratching our head how best can we do it, especially since this is a side project. So how did we do it? That's when data.webuild was born. So let me briefly explain to you how we did it. We created a GitHub user, which basically acts as a bot. And every single day at 3 AM, time when Singapore, all of us are sleeping, it will basically do two snapshots, one of events and one of open source repository data. Let me show you how it looks like. So basically, we have an API endpoint. So for repositories, it looks like this. It's a JSON format. And you can see the first one is like Android package. It's basically a list of objects. So it basically kind of captures it. Similarly, we also have the same thing for events here, as you can see. And we capture it. And that's what we did for the entire of 2015. Last year, just December, I decided to bring together all the 600 over JSON files and plot some graphs. Are you curious to see the graphs? Because it will kind of visualize our community. So in the graphs, you'll see a very, very young developer community. But you will also see a growing one. My point of fear coming and speaking to you is to kind of call to action to all of you to come and join in this growing story. Come and join the organizers like Kuo Xiang of the Next Generation or Winston, or even contribute to open source repository. So let me start with some of the 10 graphs that we plotted. Go and explore in your own time other graphs. But I'm going to show you some of them plus some Ruby related data. So here's the first one. By the way, Monday to Sunday is one week. So obviously it went down because I queried today. So Monday is the first. But you can clearly see that even at the start of last year, there were barely single digit repositories above 50 stars being updated. Over the course of year, look at how we have grown. In fact, January this year, we had the highest number of repositories, 28 repositories. But I'm sure all of you are thinking that this is not enough, right? I am sure there are lots of talent in the Ruby community and beyond. And we can take this 28 number to a lot higher, maybe a few hundred or thousands. Once we have data, I think we can do something about it. The next graph that I want to show you is update activities per programming language. And I think this is where Ruby deserves a round of applause because it is definitely one of the active ones in the course of past 52 weeks. It had about 67, one of the active ones. Next, this one might be interesting to you, active user groups. Now because we query API data, none of the data that you see here is stale. If the user group has held at least five events over the course of last year or 52 weeks, the user group will appear here. Shall we search with Ruby keyword and then see what happens? Guess what? Ruby has not one, but two user groups. So I think it really, and Ruby Tea Party and Ruby User Group. And I have Ferrero Rocher here to give it out to the people responsible for this or other championing this. Definitely one goes to Winston. Thank you. Thank you. And to the new generation, Koshia, is the organizer of Ruby Tea Party here? You'll get a Ferrero Rocher. All right, if not, well done. Well done. Really, and for those of you who are looking to learn other, by the way, this is only related to developer and design events. I'm not even including startups. So if you include that, that's even more than this. So if you are looking to join in, say, hardware or Haskell or Python, go and look at these events and go and join and attend them as well. Next up, repositories per programming language. So this is where we query the API and we list out the exact repositories. So why don't we look at Ruby? All right, so these are the ones. So let me call out the authors. Is Jugend here? J-U-G-E-N, no. Gone. No. It's not from Singapore. Oh, okay. But he put location at Singapore. Love, you love saying. He's a Russian developer in Bali. But he put Singapore as his location. Singapore. You know, this is what I don't get. The data comes up here and then I'm like, but the developer is not in Singapore. Then I'm like, yeah, the developer is putting location at Singapore. I'm sorry, man. I'm just querying the API. It's all in code. I didn't come in. All right, Google Visualizer Winston, one more for you. Thank you, thank you. Thank you. Thank you. Thank you. All right. Yeah, Tio, who you mean? Chunket, are you here? I know Chunket sometimes will attend the meet-ups. All right. Emoji, this is E-Hung-Ho. No. So more than that, yeah, go ahead and look at the repositories that are done by developers living in this very city. Look at other programming language. And over the course of years, of course these will change a little bit because this is done every week. And if there's somebody new, bring that person to the meet-up and let him or her speak. And finally, this is also like an event location that you have. So if you are thinking of organizing events, sometimes the common question is where should I hold my event? Like Winston was like, here? Well, yeah, why not? But maybe other events also have pizza. It's worth trying maybe. I will be banned from PayPal. I love PayPal Lawrence. I love PayPal is the best. All right. So yeah, but yeah, free free to go to data.webuild.sg and raise some requests. We decided to query some more information such as the fork count and contributors count, which we did not do it last year because some people feedback like all of you gave it and then we decided to capture. So next year you'll see more graphs being plotted. And finally, I want to show you this number. So if you scroll down right at the bottom, you'll see this number. So this number is in 2015, this is where the clock kind of start stopped. And I restarted these numbers this year. And I think if you're a young community, it's a healthy goal to beat it. And let me just go through it briefly. Last year there were 129 open source repositories above 50 stars. This year is already 51. So let's see how much more we can go. And this is once again a call to action for all of us to get together, help one another to create genuinely good open source repositories that not only developers from around the region but around the world uses it. Please don't go on doing some star fest to star each other's repo. No, that doesn't work. The next one is updates made to repositories. So these are the amount of git pushes. So that's about 200. I think we are quite catching up this year. This one is open events held. Like every single event, there were 800. It's already 41, but because of the holiday period and Chinese New Year, there'll be a dip, but it will rise again. And lastly, these are the number of user groups, 181. So far, 30 has already held their events in the month of January. Who knows there are more? Maybe one of you won't like to create the third or the fourth Ruby related user group. They're already two, right? So that's it about my project. So once again, go and subscribe to the calendar here. It's all automated. Everything is open source. If you see a bug, raise a pull request or just raise an issue, subscribe to the calendar right here. A big thanks to Michael Cheng here. We have kind of invaded his talk videos. Everything is really open. So check out webuild.sg and check out data.webuild.sg. And next time I see you, all of you might get more ferocious. Thank you so much. Thank you so much. Yeah, yeah, question, question. Yes. There was a bug with the numbers, right? Bug. It didn't pull in the organizations. User groups? No, no, no, the... Oh, yes, yes. I know it should pull in Jolly Good Code. I have yet to look at that. I'm so sorry. No, the point is there are also other startups in Singapore that might have... I agree with you. So the thing is the GitHub API only looks through user API endpoints and not... I mean, Jolly Good Code has one repository. Jolly Good Code, yes. Could you talk about the great talk by the way? Thank you. Could you talk a bit about getting the events from Facebook? Yes. So last time they used to have FQL and you created a lot of very cool things from the events table now with the new Graph API and sort of do you have any thoughts on that? Is something you can add? So we're actually not using the Facebook API directly. So the thing is this, with Facebook it's a little bit difficult because you cannot directly pull the group. So you have to log in as a user and get the user's groups. So what we do if you look here is if you go to WeBuild very quickly, we actually have a JSON file of... static JSON file of groups to query form. And that's where we go inside the group and then individually we go. So if you go to config, here you go. It's like all the groups. This is how we query it. But I agree with you. What we did, if I show you the API endpoints, if you look at a Facebook one which is right here, we basically started collecting things like RSVP count, which is a very brand new thing. But if you feel that there are API endpoints where we can collect more info, please tell us. Yeah. It's quite challenging to combine all the APIs, Eventbrite, Meetup.com, Facebook. Sometimes things break. Sometimes things doesn't. But thanks to all your vigilant eyes, we always keep up. Somebody will raise an alert, hey, it's not working and then we'll go and fix it. Once again, it's hosted free on OpenShift. Yeah. Thank you so much. Great question. Any other last question? Yes. So again on the... No, no, no, no, no. Yes, yes. I think it's good, right? Would you consider doing a GitHub trending repo for Singapore? Because, for example, the numbers that we showed earlier, the other repos, right? Yes. Most of them were created like three, four years ago. In the course of... No, no, no, they were created maybe a long time ago, but updated in the course of the last 52 weeks. Oh, 52 weeks. Yes. But if you want a shorter time, also, we can consider drawing another graph for a shorter time. Yeah, I'm not sure whether it's like GitHub trending, you know, for Singapore. Ah, GitHub trending, that means for this week. Yeah, yeah, something like that. So that it's easier to discover new... So the trending one in your case will be just these top ones, actually. Right? This is updated 18 minutes ago and hour ago. This is the trending. Okay, okay. Yeah. So yeah, go and check out these repositories and star it if you find it useful. No, we also do not want fake stars. You know, it should be genuinely valuable. But I think we are doing good. In fact, over the course of last year, I realized that a lot of students are in GitHub because I'm like, hey, I haven't seen this girl. I haven't seen this guy. Like, where are they coming from? Then I kind of stalk and then I'm like, uh-huh, SUTD student, NUS student. You know, sometimes I like to reach out to them because, you know, come and speak at meetups. You know, you're doing a good job. Yes, I think I shall not take up much time, but I'll be here. Please come and talk to me. And let's make these numbers even bigger and it's not the job of just Quasiang, Mike, or Winston. It's all of us coming together that we can make these numbers go much higher. Thank you so much. Thank you. Thank you. Thank you.