 to some people. OK, it's just the opposite now. About three years ago, I was wondering where are the developers in Singapore? And the developer community in Singapore wasn't so active as of today. So what I did, as of December 28, 2012, I just created an HTML static page. And I just started listing down all the developer events and all the open source repositories above a certain number of stars from GitHub. And it was possible to do it statically because there were only, what, 10 events per month, five events per month. So that was going on pretty well. And I started being busybody. And I started attending them as well. Can you share the source of the first page? Well, yes, you can. It's just an HTML page. You want to see it now? You know, if you're not embarrassed by your first comment, I think, yeah. No, come on. Let me talk about the intelligence that is put in today as opposed to the static site. So today, the page looks a lot like this. So how many of you are here in this meetup for the first time? Wow. Dan, are you taking note? That's 50% percent. That's great. So keep coming back. How many of you have attended a developer meetup in Singapore other than today? Other than today, yeah. Oh, how many have not attended? Awesome. So there are a few of you. And this is the website to go. It's called webuild.sg, the same static site that I built three years ago. But today, the design is still exactly the same. But let me explain to you how we, like together with me and other developers like you from Singapore, have forked and merged and pull requested and made it better so that I don't need to go in there every other day. And it's probably better because every month now we have an average of 60, like two events per day. So let me tell you how it works. Like when I came here first and I said that I'm going to talk about some stats, people were like, how are you taking the stats? So on the left-hand side, we query Facebook API, Eventbrite API, meetup.com API, and some URLs like copy.js or hack and tell, which only publishes ICS URL. We take it, we query it, every hour a cron job runs, and we basically chronologically order it. Write a programmer, right? Why do we need a static page anymore? And you can also subscribe to it. And there's a calendar URL here. Webuild.sg slash calendar. HTTPS, please, you know. This is 2016. And Cloudflare has free SSL. So go ahead and use it. All right, so you can also subscribe to it. On the right-hand side, so I was like, going to events is not enough, because we must be coding and creating the projects ourselves. So what I did is, on the right-hand side, I query the GitHub API. And then I query, so all of you, please put Singapore as one of the cities in your location. And if you do that, and if you have repositories that has been updated within the last three months, and at least 50 stars, because we want to be looking at something that's quite recent, then your cloud story will come here. And once again, since it is updated every hour, you get fresh notifications. Oh, seven minutes ago, this person updated it. We also query organizations, all right? So that is what the website is. But we never really stored the data, because who really cares about past events? You just want to know, hey, what events are there tonight? What events are there next week? Who? Yes, Kai? Right there. But we're nice to know the historical. That's exactly what I'm going to talk about. I don't know what I'm going to talk about. Oh, was it? Stats and charts. That's exactly what I'm going to talk about. I thought you were saying, who cares? Yes, yes, I know, I know. I'm talking about it. We don't care. I care. Some of us do. Exactly you do. And that's what this talk is all about. And even for the open source repository, who cares about the past data? But until this guy, V, who is our friend, he was like, I want to do some math. Where are the past events? I was like, it's not backed up by any database. OK, AWS is expensive. It's a side project. So what can we do? Once again, this is where the project comes. Data.webuild.sgkai. And we have another repository for this. So once again, it's all in GitHub. It's open sourced. And we found basically a hack. But before that, let me show you the website. So currently, there are 10 charts here. And I'm going to be going through some of them. Again, I'm feeling a bit excited. Or is it the air condensers? Off? No, you're strange. Oh, yeah. Thank you, Kai. Come join me. OK, so there are 10 graphs here. All right, so what do we do? How do we store these past events? It's going to not be a database, is it? It's not going to be a database. It's going to be flat files. OK, great. Who is excited about flat files? But this is a hack, all right, because we are cheap. And so what we did is that we take two snapshots every day at 3 a.m. while all of us are sleeping. One for events and one for repository. So over the course of last year, this was implemented in 2014 December that we started collecting the snapshots. Over the course of 2015, it just kept collecting and collecting and collecting. So as you can see here, lots and lots and lots of JSON files until you have a holiday. And then you're like, OK, my job is done. It's a bit of love period. Let me go and code it out. So let me also talk a little bit about the API endpoint. So this is rebuildsgslash.com slash v1 slash impost. So this is basically what it looks like. So repost is a node, which is basically an array of objects. And similarly, we also have a node for events. As you can see, this is the go one. Yeah, there you go. This is the go one. So we collect name, description, latitude, longitude, location, URL, start, time, and time. And every day, it will only collect the one for the next 24 hours, all right? So that's the magic behind it. And that's how data.webuild.sg was born. And here are the 10 graphs. Are you curious to see the numbers? I'm curious to see what kind of performance. Exactly. So let me tell you something. In it, you will see a very young developer community by the numbers, but it's definitely a growing one. And my point of coming here, even though I do not know go yet, is to come and ask all of you to join in this growing story. This is an open community, a growing community, a learning community. Kai, you're not convinced. I just came here for pizza. I came here for the pizza, too, but for other fun stuff. I don't want to join a religion. Do you have any statistics how many events provide free pizza? Sorry, sorry. Statistics, what? About free pizza. You know, unfortunately, because we query the API, they do not have a pizza underscore count number. If they provide a Facebook Meetup and Eventbrite provides that, I'm happy to collect it. Is this parsed at the account description? Parsed, yeah. Maybe I have to do some language processing on it. Maybe somebody should write an AI library for it in Go, and then I can use that. All right, so this is what it looks like for repositories. As you can see, this is from January 2015. By the way, this is a weekly data. This is a weekly data, and it shows how many repositories above 50 stars. So you can see that the highest one was achieved, like, I don't know, during the week of Chinese New Year. But the quarters, like, coding a lot, like, well, people in the house visiting have no idea why, like when that holiday they were coding. But yeah, 35. This is a small number, but it is definitely a lot more than just a year ago, which is, like, almost three times. And queried Melbourne. Melbourne is about double Singapore, and Beijing is about four times of Singapore. So just to give you a comparison. Queried by San Francisco is not good, because Cupertino, Apple writes it as Cupertino, Google writes it as Mountain View. So it's not really good, but I queried by cities that has that data. You had a question. I was just wondering. This is great, by the way. Thanks so much for sharing. So is that repositories that are owned in GitHub by a Singaporean? Or is it updates from Singaporean developers to any other stuff? Very good question. So what do we do? We query, we do a GitHub search of users with location containing Singapore. Not a match. So you can write Brisbane comma, Singapore comma, Beijing. You know, some of us are a bit mobile. So as long as you have Singapore, as one of you have put it inside and your repository will be great. But is it so I live in Singapore, or Singapore time? Yeah, location. Yeah, so if I go in and update a repository that is owned created by somebody living in the US, is that good for that? Oh, that means you're pull requesting and get merged, right? No, no, it doesn't. Owned repository. Yes, that's right. So basically you have to write Singapore like this. Yeah. But let me tell you something. ThoughtWorks comes up as one of the organizations because they have Beijing comma, Australia comma, Singapore comma. So if your organization puts Singapore as one of the stream because you happen to be one of the contributors, it will come up as well. So there's ThoughtWorks. There's some big companies as well which comes up as part of Singapore. Thank you. So, yeah, so that was the graph on repository. It's definitely a growing one. And the next one is update for programming language. Are you curious to see it go? Yes. Right. Wow. Come on, that's at least Java's script. Okay. Whoa, whoa, whoa, now everybody's so curious. So Julia did go just. Julia did go, yeah, Julia, no, Julia's one and Pearl is one. So there is like, yeah, objective ceased. I don't know what it is like. Jupiter notebook, I have no idea what it is. Hi Python. Hi Python, but you shouldn't have come out on the Python. It's different, okay. She used to school. All right, all right. Come on, people. It just means that Go is young, like Singapore. Coffee script. I know coffee script is, yeah. There's no scholars, so explain the math scholars. Actually, they're, actually. You are right. Because this is done by the GitHub language. So if you go to language.yamal in one of their files, there are so, I think there are about 100 to 200 language on. Singapore only has a subset. So go and try brain fog, if you want, or you know, some weird language. What? And I want to show you this active user group with more than five events that we're gonna mention. Oops, Go SG. So a big round of applause to Go. Six, okay, for the organizer who makes it happen. I know it was Audrey, but Dan, this is for 2006. I've received data on behalf of Audrey. And you for 2006. Yeah, Audrey. You know, especially if you're here for the first time for a developer meetup, these are the meetup groups that have held at least five events, you know, for the past 52 weeks. This is not stale data because we are querying API, this is not static and this will change. If you do not hold more than five weeks, it will just drop off automatically. So please go and check out, you know. May I have the permission to kind of promote other? Yes, of course I do. But yeah, seriously, go go. Foss Asia, by the way, I know York is here. Or Go, or Hacker Space, Haskell, iOS Dev Scout, so Go. Hack and Tell, what is that? Yes, maybe. Sing them, what the? Hack and Tell is not there. You need to have at least five events high. This is all about quantity of equality. Look, yeah. Go, there's a quantity of equality. My advantage is the quality of events. Could you have imagined there were so many that have held at least five events, not one, but five events over the course of the past 52 weeks? So go and attend some of them. I know some of the organizers are here, so just ask around and make friends and go attend them. Even help them organize it, if you want. I'm sure people like Dan are always looking for co-organizers, right? All right, the next graph that I'm gonna show is about repositories for programming language. Are you curious? So this is where I kind of list them for programming language. So GitHub once again has a node called Language, which is typically the majority of the project that uses that language, the main language. So shall I click Go? Yes. Where is Go? Ah, here. In your shadow? Yes, in your shadow. In my shadow, oh man. All right, so the first one is by Wen Xian, Go Nest Jason. Go Nest Jason. I don't think he's here, I know him. Ah, you're missing out for Roche, if you're not here. The next one is by Jashing Go, by Chris, he's supposed to be here, right? Yeah, he is. Can I pass you his for Roche? No, no, no. We need each. We need each. Is he giving a talk today? No, he's not here. What's that? He's sick, so he can't come today. And Carl Seguin, C-Cache. But this can be a good resource for organizers to get speakers as well. So go and, I know Chris is supposed to talk, but go and get Wen Xian and Carl Seguin to come and talk. So, and for all of you who are trying to get into Go, this will be a great resource because this developer actually has some connections to Singapore. So go and bring him or her and say, hey, can you help me out? Or, you know, I would like to contribute to your project. Yes, Carl? Can you go repo with like one star? Oh. Sorry. Well, you shouldn't list the ones less than 50, too. I mean, it's a small community. All right, so after doing this for three years, his question is valid. The reason why we do and do that is to filter out noise. What? 50 stars, most people are idiots. All right, I'm open to it. Last time it used to be 200 and then me and, you know, some active contributors had a chat and they'd be like, we can go down to 50, but maybe not below it because otherwise you'll have like, you know, everybody's repository there and we really want the list to be kind of inspirational. And once you hit 50, it kind of signals that it has gotten a critical mass to be used by developers beyond around the world. Kai is not convinced. Let's carry on this discussion after this. Well, it's true, actually, you're right. Oh, thank you. Getting a true or agreement from Kai is a compliment to me. So thank you. Hello, event location. Like I said, I have the location string or the latitude, longitude. This is done in GeoGIS. I'm going to click it. If you are trying to create a new media, which I highly recommend and if you create more than five, it will come up here. These are the events you can actually ping because these are the events that are held by other people. Thoughtworks will be a bit difficult to find here. I have no idea where Thoughtworks. Here on the side. This one? Me? No, no, no, no. No, no, no. Get down. Get down. Ah! This is awesome. Yeah, they are a lot more. This one? No, no, no. Oh, a question. Oh, there you go, Thoughtworks. And who are from Thoughtworks? Maybe you can have some for Roshan. Come on. Ona. She's bribing people with couplets. Thank you for holding so many Meetup groups here. It came up. Thank you. So really, I mean, go and look at each of them and each of them will have the address as well as the groups that created it. And once again, you go to the meetup.com or the Facebook. And you ping the organizer. Hey, can I have a contact notification? So that's events. Really, at the end of the day, just go and look at the repository which is rebuildsgslashdata and create an issue. If you feel like right now, there are no bugs. But that's because people have not put into it my code. But I have a lot of graphs to be plotted because I did not plot, say, the RSVP count, no-piece account, sorry, repost by file size. So go and create some issues. It's right here. So lastly, I want to point out, like at the end of this, I kind of did the yearly data. So this was the data last year. 129 unique repositories from GitHub were updated. These were the update activities. That means Git commits, almost 1,000. These are the number of events and these are the number of user groups. Can we beat this number this year? So as you can see, we are doing so well here. It's like almost half, right? It's like only February. I have a feeling that we will beat it. I don't know. It's so much to push on smart nation and PM's visit to SF and Google opening office here. There'll be so many engineers. I have a positive feeling we'll beat it. But really, it cannot be just done by Dan or ThoughtWorks. It has to be done by all of us. So this is a positive call and a fun call to action that they contribute to it and make the numbers go up higher so that we can learn from active and growing developer community. So please go and follow the Facebook page. This is the WeBuild SG Facebook page. Or you can also follow the Twitter page right here or even the GitHub one. And most importantly, this is the current to live data. Don't forget about that. That's what I talked about was the data that WeBuild.SG. Follow the events here, follow the open source, get inspired, join in, and most importantly, have fun. Thank you so much. Thank you so much. You should at least help data.sg, you know. Yeah, data.gov. That would take a time of providing data. Their team is really qualified. I mean, I know their tech stack and stuff. This is not even big data. This is like tiny bit data. So what you do is you have a bunch of JSON files and you process an entire folder of JSON files. Exactly. That's much easier. Data.gov is doing something very complicated because they have to pass through data that comes from CSV to Microsoft Word, which I have no idea how they parse. Crap. Crap. Crap. Crap. Crap. Excel. Okay, Excel. So they have different sources. Mine is just JSON file, which I control. Yeah, but I think they have a good team there. So in fact, when I designed the data website, I actually went to their website, which I also went to the US data website and then I found the URL patterns and I kind of copied some stuff from there. Like, you know, they have the charts there and you click one of them. Yeah, so that's a great suggestion. Thank you. Any other questions? What else should I plot? Am I missing something? Use this data, please. Yeah, you said like a limit. I mean, what do you call it? API. Yeah, when the open source is, you say it has to have 50 stars. Yes, yes. But with the open events, you could have an event that say two people show up, like my party is right now. And would that be counted? Like, I'm going to have the most options. So we do have criteria for open events as well. Number one, it must be free. So if it... Open helps events is... Yeah. If someone would do a poll party, that invites them to go... It has to be a developer party. I mean, a developer. So let me tell you, in Eventbrite, I query only a particular category, which is like 109 and all, which is a tech category. In Facebook, I manually curate them because Facebook, you have to go through the profile to the group. So I have to manually collect them. Eventbrite, in Meetup.com, they both have categories. So firstly, it has to be a tech category. Secondly, you might need to have a valid location string. If your location is TVA or Nail, you are chucked out. Yeah. Because the location kind of implies that you're serious about holding the Meetup from the past, yeah. But yeah, any other questions? What's your sustainability plan, Anil? This is running on all free. I can tell you, we are hosting it on OpenShift by Red Hat. And all the static pages are on GitHub, like the data.webuild.sg is a static page. All right, so I just, every week, I just like just churn out the HTML. It's plain bare HTML. There is no magic apart from that. I mean, yeah, it's all free actually. So the sustainability plan is, we have already been sustainable for the past three years. Now that's the good thing about having side projects. It forces you to be sustainable for day one. How long does it take to compile the site? A few seconds. What? With code like, it could be a lot. Millie seconds. I can actually show you guys what happens. So if I go to data, right here. My claim. Yes, clean. So all I have to do is empty. Okay, I did it today morning, so there are no more new JSON files, but this is basically what I do. NPM run update. Oh, no. No, no, no. Does this work offline though? All right, so this is what it does. It doesn't get pulled. It does a build. It does a build for graphs, build for JSON. Holy shit, I've just died. So basically, Kai takes about five seconds to build the site and I just do it every two weeks or. Oh, you run, what's that, 30, you also have tests? Yeah, I do, some tests, yeah. Why not? That's so cool. Does he? Yeah, okay, fine. It's not fully tested. I just tested some of them. Okay, apart from Kai. Any other questions from you? No. Does it take you the trouble time? And then apart from Raspberry Pi, no, not Raspberry Pi maybe, a bit more powerful CPU, really who cares? It's really overkill, don't know where engineer stuff. Yes. All right, if not, I'll be here after the meetup. Let's talk and thank you so much.