 Terima kasih kerana datang, bercakap tentang teknologi yang berlaku di sini untuk BHP, mungkin tidak terlalu berlaku. Terima kasih kerana datang, kita mempunyai TAS, Terima kasih kerana datang, terima kasih kerana mempunyai TAS, untuk mempunyai TAS. James tidak bersih hari ini, tapi ini adalah James Chan. TAS adalah sebuah spesial kerana anda dapat melihat di sini. Ia berlaku di Vietnam, membuat banyak kerja yang berlaku. Jadi anda perlukan tanda-tanda untuk TAS. Makanan hari ini dibuat oleh Engine Yard. Makanan yang berlaku akan berlaku minggu depan. Makanan yang berlaku akan berlaku minggu depan. Terima kasih kerana datang untuk TAS. Makanan terakhir anda akan berada di sini juga. Mereka ada banyak orang. Makanan ini tidak terlalu banyak. Bukan kerana anda berlaku sesame dengan pasukan tanda untuk jual selama setiap bulan. Tapi jika anda menciptakan dan bercakap tentang rupi, kerja anda, etc. Beri saya 50-70 minit, 15 minit, bukan dahulu-kemi tapi probably anda perlu mencuba untuk tahun nanti. Kerana di Zemba, kita akan mempunyai 2 lebih besar speakers Kamu semua adalah speakers yang lebih besar Mereka akan dari Engine Yard dan Github Jadi kita akan mempunyai ini 2 lebih besar speakers dari Zemba Jadi jika kamu mahu bercakap dengan saya di Januari, atau di Zemba Baiklah, tetapi tolong beritahu saya Jika kamu mahu menggantikan, perniagaan kamu perlu menggantikan Penggantikan dengan perniagaan, tekstur agak, etc Kamu perlu beritahu ke spatula Macam gunakan untuk kamu menikmati Jika kamu beri kemampuan kamu dan kamu bersoalan Memungkir dengan W Jadi, orang Anyone yang pertama? Bagus. Saya harap kamu akan datang lagi Terima kasih. Kedua pelajaran mencari svara lebih tinggi Kamu mahu berisakah kamu beri kemampuan kamu Mungkin sampai akhir Terima kasih kerana menonton. Okey, hari ini kita ada dua bincang. Pertama, kita mempunyai penggunaan natif menggunakan penggunaan natif sehingga saya berhati-hati daripada kini. Pada hari ini, saya mempunyai Benjamin. Dan akhirnya, kami mempunyai 5 orang yang menggunakan penggunaan. Jadi, tanpa lagi, saya akan berhati-hati untuk memilih jalan di sini. Yang paling penting, saya berhati-hati daripada kini untuk membantu video recording. Ini adalah kali pertama saya membuat video recording. Dia mempunyai penggunaan untuk menggunakan video recording. Jika anda ingin tahu lagi, saya akan bercakap dengan Michael. Ada sesuatu yang kita lakukan dengan Benjamin.XG. XG? Tidak ada XG. Tidak ada XG. Sudah tentu. Saya akan menggunakan. Ya, terima kasih. Saya akan bercakap tentang jalan baru ini yang saya bekerja sekarang. Sebenarnya, ia disebut negatif. Satu kata-kata yang paling negatif dibuat oleh jalan video. Jadi, hari ini, saya akan mengambil masalah yang saya akan melihat. Dan kemudian, saya akan bercakap tentang jalan. Bercakap tentang masalah dan sebagainya. Saya juga akan bercakap tentang sesuatu yang saya beritahu. Untuk memberi keputusan kepada mereka. Jadi, saya rasa saya adalah salah satu pelajaran baru yang baru. Jadi, saya akan memperkenalkan diri saya. Nama saya Kui Ming. Kita boleh panggil Kui Ming dengan anda. Sekarang, saya akan mempunyai penggunaan software. Jadi, kami mempunyai penggunaan penggunaan penggunaan. Dan kami memperkenalkan jalan jalan jalan jalan jalan jalan. Saya akan mempeluangkan penggunaan ini supaya kita akan mempeluangkan jalan jalan jalan jalan jalan. Jadi, ini yang saya akan mengambil. Jadi, T.O.H.M. Jadi, ini adalah masalah. Jadi, sesiapaissy akan menyukai masalah ini sebelumnya? Apabila pasang pertama, Wanda akan berbagi. Macam Alleran yang berlaku dimerasakan di meja yangacey classified. Jadi, ini adalah sepsi-spsi yang semua orang yang mengetenggirkan. Kerana Kavir Aramak membutuhkan keadaan keadaan keadaan atau keadaan keadaan Jadi apa yang orang biasanya lakukannya? Apabila Kavir Aramak memperkenalkan keadaan Jadi kita boleh memperkenalkan dan mengagumkan keadaan keadaan Biasanya saya dapat menentukan keadaan keadaan Dan jika anda beruntung, anda dapat mendapatkan keadaan keadaan Atau jika anda lebih beruntung, keadaan anda sudah memperkenalkan dengan Kavir Aramak Dengan apa installasi yang perlu dilakukan sebelum saya memperkenalkan Atau jika anda memperkenalkan keadaan keadaan Saya sudah memperkenalkan keadaan keadaan keadaan untuk anda Jadi anda harus melakukan ini atau memperkenalkan keadaan keadaan keadaan Dan setelah itu, anda harus memperkenalkan keadaan keadaan keadaan anda Jadi, bukanlah jika saya mempunyai keadaan Banyak keadaan akan menjadi jams dan paket yang berlaku Dan ia memperkenalkan keadaan keadaan Dan ia memperkenalkan keadaan keadaan keadaan dan keadaan keadaan Jadi, ia adalah apa yang saya bincangkan Dan saya mulai bermain mengenai konten ini Sebelum ini, anda ada apa-apa jika anda memperkenalkan keadaan keadaan? Bagaimana anda mengenai keadaan keadaan anda? Ada sesiapa yang berkongsi? Ada apa-apa cara yang anda menggunakan? Jadi, ini adalah apa yang kita lakukan Ya, ini yang saya lakukan Jadi, ini sebabnya saya bercakap dengan idea ini Jika anda mahu mencoba hari ini, anda boleh memperkenalkan keadaan keadaan Jadi, bagaimana anda menggunakan? Jadi, anda dapat melihat di sini Anda hanya memperkenalkan keadaan keadaan keadaan Dan kemudian, anda memberikan keadaan keadaan keadaan anda Anda tahu bahawa ia mempunyai keadaan keadaan Jika anda mencoba hari ini, anda beritahu bahawa Jika anda mencoba hari ini, anda akan dapat ujian yang berlaku Jadi, di sini anda dapat melihat keadaan Jadi, bagaimana anda menggunakan? Anda dapat menggunakan untuk mengejar keadaan Pada pakaian memakai dengan reka untuk pembukaan Mereka akan mempunyai pakaian dengan pakaian yang sama Mereka boleh membuatnya sama juga Jadi anda juga menukar sebuah fisiur di sini Jadi jika anda terlalu lezat untuk mengintip semua pakaian jams. Jika anda mempunyai file jams dan mempunyai file log, kita tahu bahawa semua jams yang digunakan, jadi anda dapat menggunakan apa yang menggunakan jams. Jadi ini adalah pilihan dari kontak klin kita di sini. Jadi ini adalah pilihan pertama yang saya bekerja pada itu. Dan saya menggunakan, hanya untuk informasi anda, saya menggunakan menggunakan beberapa jams, tapi saya tidak menggunakan jams ini, tapi saya tidak menggunakan jams. Tetapi ia memperkenalkan pilihan jams yang digunakan. Jadi bagaimana ia berlaku adalah, ia menggunakan platform yang anda menggunakan. Jadi apabila anda menggunakan jams, anda akan menggunakan pilihan untuk menggunakan pilihan untuk menggunakan pilihan. Jadi bagaimana ini adalah pilihan jams. Jadi ia menunjukkan jams micro-s dan pilihan platform. Dan juga pilihan jams yang digunakan. Jadi ia akan menggunakan apabila anda menggunakan pilihan atau jams. Jadi yang ini adalah pilihan jams. Pilihan jams, saya menggunakan pilihan atau klin, ia adalah pilihan jams yang menggunakan platform. Dan juga, tanpa menggunakan pilihan platform yang menggunakan pilihan, saya mengambil informasi supaya anda dapat menggunakan pilihan jams. Jadi perkara yang paling penting di jams ini adalah pilihan jams. Jadi saya tahu apabila saya beritahu, apabila kita mempunyai pilihan jams, mereka menggunakan pilihan jams. Jadi anda dapat melihat pilihan jams bersama-sama. Dan jika anda mempunyai pilihan jams yang spesifik, anda akan mahu berkongsi. Saya menghargai semua orang yang mungkin untuk menggantikan pilihan jams ini. Tapi jika anda tidak mahu, anda dapat melihat dari pilihan jams anda, pilihan pilihan jams yang digunakan untuk pilihan jams ini. Ia adalah pilihan jams. Dan anda dapat melihat di sini. Ia sangat mudah-mudah berkongsi. Saya memulakan dengan pilihan jams. Ia adalah pilihan jams. Dan ini adalah pilihan jams. Pilihan jams. Dan di sini anda dapat pilihan jams. Dan ini adalah pilihan pilihan jams. Pilihan pilihan jams. Maaf. Pilihan pilihan jams. Pilihan platform. Jadi, pada platform yang berkongsi, kita dapat membuat pilihan jams. Ia menghargai pilihan jams. Jadi, untuk pilihan jams di sini, untuk app-cat, untuk pilihan jams. Kerana app-cat mempunyai lebih daripada satu platform, untuk pilihan pilihan jams, untuk pilihan jams. Jadi, mungkin untuk pilihan jams, untuk semua app, untuk pilihan jams, kita perlukan ini. Pilihan pilihan pilihan jams. Untuk pilihan jams, kita akan membuat pilihan jams ini. Kami dapat menggunakan pilihan camellian saya. Untuk mengenai apa yang kita perlukan. Masalah yang kita boleh bercinta dengan terbaik. Masalah yang kita boleh bercinta dengan perbincangan air dan air. Dan juga untuk biberkan hidup차�at. Jadi, So, ini, kemudian setelah itu saya sedar, kita dapat menggunakan ini untuk cadalog general perusahaan. So imagine that Node.js, if we use npm, you can specify a npm catalog. So in the command line tool, I provide a flag there, the catalog. So you can just choose, so it choose based on this main object. So if you say you have a catalog for npm, you can use that to specify. And basically you can do whatever you want. You can specify whatever you want. It's not limited to Node.js. So currently it's still made up already. But it's working. So it slides under the right page. So if you want to feel free to think back to the class, it works well. And of course currently the catalog is very short. So if anyone interested, I think if you find it useful, you want to use it. Feel free to patch it. So this is my account. It's made up under GitHub, TOHPAC, Natives. If you're interested, you can take a look. So maybe I'll talk about a few things I learned. So the first one, do one thing. So this was the first version. I was thinking like, oh, what if, because this project initially I was inspired by a Chef project. So you think Chef can install basically anything on a platform. So I was thinking like, why don't I just reduce everything in Chef's name? So this was the first version I used, Native install and specify the JS. And it will, internally it will run Chef solo. And it will ship with, it's going to ship with Chef cookbooks. But it ended up with too many dependencies. Imagine if you want to install this on a fresh server. There are too many dependencies in Chef. So then I decided, why don't I just do one thing, do one thing wrong. Just do this thing, then we can use it in different resources. The other thing, probably fancy, just know I tried a few ways to try to pass the jam for parsing. I started with the JavaScript final show. So it will list all the jams and print out all the jams. Then I tried to get it from inside the app. But it's too cumbersome. It's just error problem. Then I found out that there is one of the specs. This is not working very well. If you are running already a copy of, if you are running this jam in one level, exact quality. So it won't behave great. So in the end I don't use this one. So it's good. It doesn't consume any network effort. Just look for the log file and then pass it. List all the jams. What at least it will return you jams version? It returns the spec object. It's similar to this one. It returns the full spec object. Inside there you can get the jams version and dependencies. But this is also when I started, I can mention, I borrowed a lot of things from Chef. So the kind of format is basically copy one. If anyone here familiar with Chef will notice there is one option called dsl or value for platform. Basically it will take this part and then it will detect the platform first and then return the correct value. So this was the first proof of concept that I was working on at this time. And then I realised for my macOS if someone is using macOS but I'm in a musical group, then how do I do that? So I just had it through and I had one slash into the memory. Then recently I found maybe it's better just to put it out. So you can describe a case like this is useful for AppCad. For AppCad, maybe all the platforms like Ubuntu, AMD, we all use one before package. But maybe for Ubuntu specific one we need to if there is a specific package So this format is able to handle that case. So for this one, catalog. So I also started working on very simple testing framework to verify the interface in my catalog. So basically this is what I do for each gem and return in the catalog file. I will launch a platform in virtual machine and install the native packages which you maybe haven't installed yet and then after that try to install it again. If it works, then I consider it success. So currently I have been working for a timeout in ship together with the gem as well. It's running using vapor, bus docker. We use the loop parallel to make it faster but in two tests that time. So it will take a while to finish the test. What I try to do next is maybe try out test teaching. It's another project shared for Ubuntu to run that stuff to test that stuff parallel in virtual machine. So this setup or docker setup I recommend if you are interested I recommend this docker as it's created by they had a hackathon to basically convert their development environment into docker in 24 hours. So they have a lot of information and also they publish the code the source code so it's available on Ubuntu. So what's next? So what I plan to do is probably first thing is try to get people contribute to this catalog if anyone interested. We also think about our colleague is thinking about is there a better way to collaborate maybe I think the easiest way is to do a request if anyone has an idea for example sharing of request sheet and then confed it to the younger heart so we'll test that out and the second one probably I want to work on kind of a test scenario. So yeah, so let's start now. Is there like for example for gems like Kebibara range today specify not that like in their project today in written page only in written page. I'm not sure about the gem spec so far I don't think there's a feel that because I'm thinking if they specify it somewhere then maybe you can prove it for the modern gems reading it out from trying to check out the model spec I'm not sure if it's in gem but if it's in machine or something then we can pass it and it's a big point in fact if there's but I'm not sure then we'll check wouldn't it be better to have one file per gem and stuff like that wouldn't it be better than having one customer that's got all the gems and to have one file per gem yeah one file per gem just as simple as this because I'm thinking if I want the most public request for their cash like this what do you mean do you mean like you have multiple catalogs for just have it directly for the ammo file so it's got the one phrase of the gem stick and for the each list because I don't remember you just talk about the catalog okay if you can talk about this format I mean the catalog format is still pretty much we can change it if there's a better way to what are those like sentos require it yeah this I also notice other cases where you need to like provide extra flex so this one currently it doesn't handle it so I try to be simple first like 80% of the case you can use this but I'm thinking like one of my idea was is it possible to expand this instead of one stream we make it into maybe a hash like to provide extra this is the package name and then extra flex or compile options and the ammo gets weirdo that you get depot oh yeah it's true yeah this is something to think about if you want to bring this like you got file fix your catalog because it's not it's very little it's just less than 10 i guess it's all the gems that I actively use it in projects capybara, kerb you know probably need T3 right now drinking and that's kind of like so yeah anyone interested who request is most welcome nope it's not thank you so much okay so now we have Benjamin we're talking to us so let's welcome Benjamin my name is Benjamin this is the second time I'm giving a ruby talk this happens to be my also my second ruby alright so today I've went up to you by elixir is this new programming language it came out in 2011 it was invented by josef ali so in case you don't know who he is he's a real parameter so anyone using device over here yeah he's responsible for that also so let's begin so in 15 minutes hopefully I can give you a brief introduction to elixir I'll give you a very boring tour of elixir and also we'll look at some code we'll see how to implement map and also we'll look at how to implement parallel map you all know what's map right it will be the same way the ruby map works so elixir elixir is a functional metaprogramming aware language built on top of the urlang virtual machine this means that elixir code when it compounds down it is essentially urlang by code so what's urlang all the things are all the so it's concurrent garbage functional it's distributed for software time non-stop application all the passwords elixir is a functional programming language so it supports higher order functions so over here with a reasonable function we can define a square function assign it to a variable and then we call it numMap on a range 1.10 which really looks like ruby ranges and then we can pass in the square function so it also has list comprehension really it looks like python's list comprehension and again it gives you exactly what you expect it also has streaming so if you have done any Haskell before, you'll know that Haskell supports in finite streams so it elixes the same thing so they are essentially lazy streams so over here what we have is this piece over here generate an endless stream of random ones and zeros but if you just run that alone you essentially crash a computer because we will just go on and on and on but over here we can pipe it to a this is the pipe operator we can take over here we can take 5 elements from this finite stream okay so far so let's talk about the pipe operator i think this is one of the coolest features in excel so look at this function over here essentially we have a list so you can see the embedded 1,2,3,4,5 we want to flatten the list so we call list of flatten so it's actually just 1,2,3,4,5 flatten list and then what we want to do we want to map it over a certain function in this case we run a queue so we get the result that sucks we have a better way so this is essentially what the pipe function gives us we have the list of this we pipe it to list of flatten what the pipe operator does is it takes in whatever was before and puts it as the first argument so same thing once we have the flatten list we can pass it through the enam.map function so over here will be our flatten list and then we'll have our function and again this was the same result as with erlang elixir it has this motion of concurrency and it's called the actor concurrency model so what this means is each actor is a process so you can imagine like one of these little bubbles is an actor and a process at the same time each process performs a very specific task and each process communicates with each other using message passing each process is designed to just receive a particular kind of message so if you are process and you receive a message you don't understand you simply ignore it processes do not share information with each other so essentially we eliminate things like race conditions so here's some code I'll walk you through it so this is how we define a module in elixir so we have dev module and return so the next line we define a function so this is how in elixir and erlang also how we receive messages we define it within a receive block so what follows are the patterns of messages we can receive so for example I can spawn out an editor process and I pass it this message in this pattern once I receive it I will just simply output hello whatever message in ruby also there's this notion of underscore operator it's quite a don't care operator if you ever iterate through key value hash sometimes you don't care what the key value is you just put an underscore common value so essentially this is the same thing so notice that when I call if I will receive this message English common name notice once it prints out the message it calls grid again that's because if I don't have this the process will simply exit so I have to have a recursive call in order to prepare myself to receive more messages so let's see this so over here this is the way I spawn off a process in elixir which is the variable so the first parameter is the module name the second parameter is the function name and the third parameter is any arguments I wish to pass it so in this case there's nothing so if I will type this in the interpreter what I will get is the process ID of the process so now assuming okay this is the way we send messages to the process so now greeter is already my process it contains the process ID I can send it a message using this operator so once I send send it the message greeter understands what English common name it just responds L-O-A-E so same thing with the Chinese greeting so if I put pass in Chinese common pair and it will just say me how pair but if I pass it something nonsensical it will fall through all the way to the last case it will match the underscore and then it will just give me I don't understand but hello anyway okay so far in elixir alang we like to do a lot of recursion because as you know functional programming languages are essentially immutable so you don't have any follow-ups so the only way for us to loop around is recursion so here's a very simple map function so same thing we define the base case first the base case is empty list so if I give you an empty list or rather if I map over an empty list I should get back empty list on the other hand if I have a non-empty list what I'll do is I'll break the list up into head and tail so they all know what this operator is called so essentially this is the const operator what it does if I give you a list let's say 1, 2, 3, 4, 5 this will take the value of 1 and this will be a list of 2, 3, 4, 5 so what we have over here is that we take in a list and a function we apply the function to each element and then we recursively call map from the rest of the list okay but now let's take it a notch further now we implement parallel map so in Ruby, most of the time when we do map it's just very sequential but in Elixir and Alang we have a way of mapping stuff parallel what I mean for example I have 1 million I want to map over 1 to 1 million i.e. 1 million so what this parallel map does is it spawns off 1 million processes 1 million processes will go out and do their thing and then when they're done, they'll return and once every single process returns how you get the rest of the list okay so let me take you through it so imagine that now we have a collection let's say 1 to 1 million for here we pipe it to map and what this function does essentially the interesting thing is here we spawn off for each element, we spawn off a separate process so that's what the spawning here is for after that we keep a reference to the process which is spawn okay and then we calculate what the function we apply the function to the element so essentially we go and do the complex calculation so at this point once this operation completes we have a map list of process IDs okay so now we're going to do the next transformation the next transformation essentially converts each of these process IDs and teaches it to receive the result so how does it know how does it know that all the elements come in order so this is what this operator does so recall that each time I map process ID so let's say I have a process ID 10, 20, 30, 40 and so on once this process spawns off gets back its result it will send back a message to itself over here it will send back a message to itself say hey I have completed give me back my result and this is essentially what it does over here so once that message matches it returns the result over here sorry what did that do because your processes return at different times yes so they are not in order which is the point anyway so like the first element might take very long but your second element might take very fast so it doesn't matter but the point is you just spawn multiple processors 4 cores and just use 4 cores once it's done, they'll just gather everyone back together so basically that was a very very quick run through if you want to learn more there are a couple of resources the first two there are two elixir books written already I recommend Programming Elixir if I Dave Thomas, it's pretty good Meet Elixir is a screencast it's recorded with Josie Balin the author of Elixir the bottom two books are great if you want to learn more about Elixir so I'm done thank you very much I have stickers I have Erlang stickers and I have Elixir stickers yes so in order to be a legit programmer you have to have stickers so I'll just leave them with you I'll leave them with Winston I have more Erlang stickers than Elixir once so what if you sing Elixir in Erlang or now? nothing much I'm trying to find an excuse to use it but essentially I'm just starting out because if you read dig deeper into Elixir you realise that actually Erlang is huge there's this thing in Erlang called OTP which stands for Open Telecom Protocol which is used to build punky servers but if you use Facebook and chat the backend of that is essentially Erlang so there's still a lot of stuff that is interesting and still haven't come to Erlang what would you like to do? I want to start on a script but hasn't been terribly successful yet a dream project unwrite Erlang I mean simple one because I think one thing in school that I did learn was writing concurrent programs parallel programs so that's something we are missing out on I mean seriously a lot before I'm missing out so I think Elixir might be just a gateway drug can I spawn it's not always spawn in a process not as spawn in a track so the processes in Elixir and Erlang are not the same as property system ones so the processes are actually really small I think they measured it once before like in the order of nanoseconds to spawn a process in Erlang so everything is controlled within the Erlang virtual machine so it's not the same as i think a jawa one i think a jawa thread or process maps to a property system one if not, thank you thank you Jimmy stickers so I must apologize to Ming and Benjamin because they weren't here last month but for those who were here last month you'll know that actually I got some goodies from Enjin Yat I have t-shirts for the speakers so I gave out two for the last two speakers and I should be giving you guys one each as well but I'm going to bring them today so I'll bring them in the December meet up so that's why you're going to get me as well you too and I'll give you the sorry about that sure so now we have Chong Yi he'll be going through 5 random meeting tips please forgive me this is my first ever tech talk and I'm also suffering from jet lag so I think worse for me than for you I'm just going to go through 5 quick meeting tips there are sort of varying degrees of advancement some of you I see maybe begin as Ruby so I hope you're trying to make out the first one is if you're working on regular expressions this is a great website I don't know whether you've come across it it's called Ruvular, urlsruvular.com and what you can do is you can type in your regular expression out there and you can type in your test string there are many matchers plus all the match groups which is wonderful for if you're testing out regular expressions one tip I learned recently is that there is a Nick Herman link button there and it will give you a URL which you can type in as a comment in your code so you can always refer back to this site with everything filled out Ruvular.com and of course there's a quick reference the second tip is using bundler the current version of bundler does everything sequentially so it goes through every gem and installs it in all dependencies the new version of bundler 1.4 which is in pre-release right now has an option to do it parallel installs so if you want to try it out to install bundler gem the pre-release version using that command there the way to invoke parallel install is bundler install minus j4 so j is for jobs and the 4 is the number number 21 to go into and the idea is we should use either the number of calls or n minus 1 and a couple of links to blogs first is pre-release blog which highlighted this first and the second URL is to let you know that Haroku has got experiment to build back that will allow you to run that so it's actually bundler 1.5 last year already so it's j1.4 because they say that there's too many things in 1.4 that decided just to go straight to 1.5 but it's a 1.5 rc okay, read that as 1.5 thanks another tip is bundler console and this is great if you're doing gem development what it does is that if you type in bundler console you just load IRB with all your environment and it's great if you're testing for doing gem so bundler console the next tip is tweaking rootdgc settings this is slightly advanced but when I did this I had amazing results so there's an example for example while tweaking those settings it took 2.5 minit after that it's 1 minit less okay so it's about 45% increase so what you can do is there's 3 settings in there I won't go through the means of each of them go to that blog post he'll explain everything that you need to tweak this doesn't require you to compile groovy all it does is you can just change the environment settings the environment variables in your RC file whatever shall you use so if you just change those in this blog it gives you some example settings but it's great because it really speeds up tests is this specific to a groovy version or... but is it 1.9 minit or 2 as well? I don't know I know what it works in 2 I know it works in 1.93 minit I don't know what it works in before but it's somewhere between 1.8 and 1.9 but this is great okay the comment is that some of these variable names may have changed between 1.8 and 1.9 so these are 1.9 and 2.0 names the last tip I think Winston can be very happy because when I'm so much around groovy I just make little notes myself in Evernote and I tighten random groovy tips so I suggest that you do that as well and volunteer for the next talk thank you okay so that's the end for today's meetup please feel free to comment to stay here and linger around as I've mentioned in December we'll have NG Art Talk and NG Art Talk NG Art Talk will actually be remote it's away in the US they are sponsor for Ibiza so we'd like to give a talk as well sorry no PJ Angerty so if you're doing a remote thing I still need to figure out how to set it up Kid Hub Michael Harris will be here from Australia so I'm sure you'll have some free news to keep away we'll be talking about Kid Hub so that will be on a Tuesday December 17 and on a Thursday from what I've heard he'll be organising a Kid Hub drinks session somewhere so I don't know where maybe he will only keep up the dream coupons if you come to the meetup I'm not sure but in any case so stay tuned for the further updates for the December to be meetup so for helping to do the video recording please go and ask him what's up with engineers.sg I think it's a very brilliant idea so thank you so much thank you oh before I forget I always forget so just now that people wanted to take and they were hiring do you guys want to give a 2 minute speech for your company I'll just give a couple of seconds and for Maxis we've built prototypes we've built prototypes we've built prototypes based on Arduino we've built vistas we've built visualisations on the platforms such as Ruby Ruby and Rails also there's a little bit of integration between enterprise so if you're interested in any of that in the capacity of being a freelancer please let me know it's a great place to work you can do anything from hardware to software even open source to integration enterprise level Microsoft technologies so I'll just be here after the talk to me if you have some free time yeah thanks anyone else? me actually I've only been to Singapore for a week so I'm the managing director at NEO I'm working at Karl actually so everyone from engineers developers well not just great engineers but amazing makers I am actually blown away by this team and we've got a heap of clients so we've got projects that can be starting we've got some going on in Indonesia of course and a couple prospects in Hong Kong and Australia so we build in Rails preferentially javascript java if we have to and yeah so best way to get a hold of us we actually have a process for going through people jobs.sg at NEO.com or just come and speak to me directly thanks or do you want to get hired or do you want to pitch yourself? okay it's not desperately the end I hope I didn't forget anything nothing right okay thank you so much I think that's the one thing sorry just in case anyone else there's actually an arm need of tomorrow so if any of you guys are data scientists I know that my original foray in terms of what I already came from doing a lot of large warehousing and data science crunching there's going to be an arm need of that we're hosting at NEO tomorrow at 7 o'clock so if you'd like to go along to that there's usually a lot also if you fight for it you actually want to show up as well sorry so go if you want to be a okay alright thank you bye bye