 Baiklah, saya mulakan rekod-rekod. Baiklah. Baiklah, saya rasa saya akan mulakan saja. Baiklah, saya rasa pertama, terima kasih, semua. Untuk menikmati ini. Dan saya rasa ini adalah kali pertama kita melakukan seri mini-seri yang di belakang jem. Jadi, sejujurnya, saya tidak pasti apa yang terbaik untuk menikmati atau menikmati. Jadi, saya rasa pada akhir sesi, ada beberapa feedback dari apa yang baik atau apa yang boleh diperbaiki untuk berkhidmat, terutamanya untuk seorang perempuan. Baiklah. Jadi, saya rasa ini adalah perjumpaan untuk hari ini. Saya akan berkongsi sedikit tentang saya. Bagaimanapun, beberapa tujuan teknik yang kita melakukannya. Dan kemudian, beberapa tujuan teknik yang kita buat. Dan pada akhirnya, kita ada sesi Q&A. Jadi, saya rasa pertama, untuk berkongsi apa yang saya lakukan. Saya Adrian, co-founder dari Note Flare. Jadi, saya rasa saya berkongsi, saya juga berkongsi perempuan yang berkongsi pada blog saya. Saya cuba berkongsi setiap suatu perjumpaan. Berkongsi dari perkara-perkara perempuan yang berkongsi, dan perempuan yang berkongsi untuk lebih banyak perempuan teknik. Jadi, perkongsi untuk apa yang saya akan berkongsi hari ini, adalah perempuan saya. Ia berkongsi seperti hari ini. Ada beberapa cara yang lebih baik untuk menikmati beberapa perkara. Jadi, jangan biar saya tahu cara yang lebih baik. Dan juga, ia mungkin tidak berkongsi untuk perempuan perempuan awak. Jadi, saya rasa untuk berkongsi lagi. Saya rasa Note Flare, saya rasa seperti yang saya berkongsi, kita adalah perempuan kerja yang berkongsi dan perempuan perempuan yang berkongsi. Jadi, setiap bulan ada 30,000 perempuan yang berkongsi pada perempuan untuk membangun kerjaya mereka untuk mencari perempuan perempuan. Seperti di Singapura, hanya 15k perempuan. Jadi, ada beberapa produk yang kita ada. Inilah원 perempuan quelle Untuk berkongsi budget pembentang yang kita forged dan pembentang untuk pelaburan dan wassa yang kita bantukan ketika arcangan dengan diada investasi oleh select dan salt dengan nada, pleadak, semuanya ada konten yang menarik. Jadi saya rasa anda dapat melihat bahawa ada banyak produk yang kita sebenarnya mencari. Dan untuk benar-benar, timbangan itu cukup tinggi. Semua masa saya rasa kemungkinan hanya membuat masa dengan satu atau dua yang penting. Jadi saya rasa sehingga kita berkongsi, okey, apa yang kita lakukan untuk membantu kita cepat dengan kontran kelima. Jadi sebab itu, ia sangat mudah. Untuk selanjutnya, kita menggunakan Rear-Rear, Front-End, kita menggunakan kombinasi ERB dan ya, saya akan berkongsi lebih banyak tentang data ini. DBSite atau Post-Rear, Elastic Search, dan club, semuanya, menggunakan AWS. Ya, saya rasa saya akan berkongsi dulu salah satu kisah terlebih terlebih dahulu yang saya rasa. Jadi, saya rasa apabila kita berkongsi, kita akan beri informasi salaran. Jadi, kita akan beri informasi salaran. Jadi, semuanya kita dapat menggunakan kisah yang akan kita beri untuk menggunakan perkara ini. Dan kemudian, pekerjaan yang sebenarnya menguruskan informasi salaran. Jadi, jika kita melihat ini, sebenarnya, ada banyak informasi yang terjadi dalam produk itu. There's a user submission that cropped job listings from other places and there's also job listing from micro's future which is a Singapore based government based job portal. So there's multiple source of information and in the future there might be more but yeah I think that's the context. So I think the issue with that however is that because the data from different sources, they have different fields. So in order to do any form of computation to give like insightful salary data, we have to do some form of data manipulation and cleaning up. Yeah, so I think the initial thought approach I would do was to process the data on the code level and then catch the results. So something like this. But I think we very quickly realise that there's some issue with this approach which is that first of all the salary class will become very bloated. Like if you look at here, it's just three source of information and three attributes and it's really rather bloated. I think the second thing is that because everything is processed on the server level, there's a performance bottleneck that we realise especially as a number of the data growth. And I think the last of all is that it's no easy way to really do any form of query on this data set. It's not that easy to filter as compared to let's say the active record that those of you are used to. So very luckily I came across this Ruby Gen that's called Cinead. So what it does is that it allows us to create and manage database views in Rears. So on the left is like what you lose before. On the right is that how we use it is that we write a SQL query and then we run a migration and we're able to access the class as it is. So if you get a look, the snippet of code is actually very straightforward, it's very short. So that's just one thing. I think the other benefit is that because this computation is done on the database side, we see an improve in performance. I think the second thing is that it's one of the biggest benefit is that it acts like an active record model. It's especially a huge lie saver when we are doing computation because we are able to do associations very easily, where all that has many belongs to, or we're able to use methods like Rear and Scope to filter out things. And I think for us because we are using elastic search, by putting into an active record model, we are able to integrate with search kit, which is an elastic search gem that we are using. So things just comes along, it comes together very smoothly. And I think the last one is that we are able to sort of cache these results very easily with materialized views that comes with it. So I think it's especially useful to reduce like any performance bottleneck or to reduce a number of calls to the database that you need. Let's say, especially in a case where let's say your dataset don't really have a huge change in the data, you don't really need to re-query the whole view every single time that you're able to use this approach. So that's about it for this Scenic Gem. So I think it is very easy to use. So I would recommend you all to have a look at it. So next, I would say the less technical aspect of storage, so about some of the technical decisions that we make. So I think out there, there's a lot of blog posts that talk about what is the by-right engineering decisions, what is the correct way of doing things. But I think as a startup, we are 2-3 years old. We are often faced with a lot of resource constraints and requirements. For example, we have to make decisions and build a product with very limited visibility on how the product will eventually evolve over time. So I think today what I will share here will be more of what is the by-left decisions that we deliberately take as a startup, which I don't really see a lot of people writing about. So I think for us, we don't have a huge funding. We didn't raise a huge funding. As for every startup, we need to move fast. So I think it's always the mentality of how can we develop such that we're able to take over the market share from our competitors that's 10x larger, but we have 100x less resources. So I think all of our decisions are very cost-conscious. So what this means is that even if we come to an engineering team size, it's only me and 1-2 interns next at any time. And I think I always have to joke about it. People always say, oh, they use a test-driven development. I think for us, we are an interns-driven development. So yeah, but I still say we go for speed. But I still say we go for speed. But I think that's also an element of we still have to ensure that code-based health don't suffer terribly, such that three years down the road, my future self don't start to curse myself for all the terrible dishes that we made. So I think for us, when it comes to choosing the technologies or how to approach various certain things, I think it's really about looking at engineering as a means to the end when solving problems. So what this means that we prioritize using the easiest way to solve a problem over using fancy technologies. I think a lot of companies try to be cool or they try to incorporate AI or whatever when it's not really necessary or the intent is really like invisible. So we try to not follow that footsteps because I think that we really don't have the luxury as a startup. So we also don't try to reinvent the wheels. So what this means is that we try to use all the available gems and libraries out there that last a job instead of getting things from scratch. And I think the last point that's quite important is that we tend to put down our pride and we embrace no-code plug-ins and tools. So what this means, I think previously I shared about we use a mixture of embedded Ruby and web for the front end. The rationale is that I think personally I always find that it's easier and faster to build when it comes to static components and I think it comes with a lot of out-of-the-box solutions like the form helpers that comes with action view. And I think the last of all is able to assess the models directly. So I think for those who are familiar with using React on Rears there's sort of a need to transform the data into a certain format and put it into the React components. It's not that difficult to be honest but I think all this additional effort and complexity adds up over time and I think this time can be better spent somewhere else. So there is some examples of the things that I think on the left-hand side is one of the screenshot of a job listing as you can see most of it is static there's not much interactions so the entire thing is mostly built on like embedded Ruby. And I think on the right side it's a typical thing that you see for example you see a pop-up that shows when you try to exit a page that ask you to do some action. So for that we use no plug-in for outside that allows us to implement all this within 10 minutes. So I think the good things about it is that we can customise all these things like how often to show this pop-up when to show it and I think even the best part is that we need to update copywriting or design. Even my product designer can go to the platform and just update without bothering the engineering team. So this really frees up bandwidth on the engineering team's portion. So I think the last part that I want to touch on is that I think when it comes to our approach to choosing when to write test I think for not sure if everyone knows I think for Facebook when they first started their motto is move fast and break things, right? But I think when as the company scale larger and there's more users and engineers things start to break a lot more often and more time is spent on fixing bugs than development. So subsequently they change it investing in writing test and all these practices has in benefits both in the short term and long term. But then if you flip on the other side I think from a startup perspective it's like oh if you write 2 liters test we will suffer in the long run because we are going to move slow but if you write too many test right now we are also going to move slow because this time can be spent on something else. Or rather like because we are moving there's a lot of things that we have to test out that the products might not be in a very mature stage there may be a lot of changes so a lot of time spent on writing test might eventually be thrown out the door so I think the question is oh how much test should we write as a startup and how to decide when you should write the test so I think for me for us I use this unspoken rule F my life complicates a deal so what I say but it really means is that I think we are like oh if you write test I think the question you ask is that okay how badly can this piece of code really screw up my day if it screw up and when it screw up how tough is it to recover from the worst case scenario so for example let's say we have a patch operation that can potentially wipe out and it's worth the effort but I think sometimes let's say we have instance method that's just a read-boning method then we might or might not write test for such cases and I find that this rule do me make sense even across industry because I think if I say mentality you will probably write a lot let's say if you are in the fin-pack industry or you are in some other industry and you have a really less room for errors so I think the second thing is that we also write test where there are too many cases to test manually so for us we have this piece of code that determines the seniority of a job listing that is being scripted based on several attributes like job title, years of experience so I think there's probably 50 cases to test and I think when you look at it it doesn't really make sense like you have to test all these 50 cases manually wherever you make any changes so in such cases test-driven development approach makes sense and it will actually speed up development so I think that's about it for my sharing yeah I think it can open up for questions if there's any yeah okay thanks agent for being so honest with his experience anybody has any questions now it's the Q&A session if you take business decision all these curious technical decision stuff feel free to ask okay or if you don't if you don't want to say it out you can type it in the chat and I can read it out for you so yeah so like that ask something so noflare is actually real flare yeah I think that's kind of true I think a lot of people always ask oh noflare so you use Node.js I think the origin of that is really I think if you go back to the origin of when you start a company I think when you talk about it's like how can we connect developers with other developers on all opportunities so Node is like the different points in the network and flare is like helping them shine but I think people always say hey your logo looks like a blockchain startup or are you using Node.js but the name of it is really on the back end yeah actually I also initially I also thought it's Node.js later when when you join the RubySG group and then it's like oh actually not okay then main thing has a question Adrian can you share about some of the technical scaling challenges you have seen so far and how they were addressed yeah so I think some of the technical scaling to be honest I think most of the technical scaling issues is solved very frankly by putting more resources in AWS like scaling up the compute resources I think for us we haven't reached a stage where like the code itself is the bottleneck so yeah I think it's from a business perspective it's worth putting that paying like 10% or 20% more instead of like trying to spend time looking to the whole infrastructure yeah I think yeah just scaling right on AWS press some button on the UI to scale it up okay and then thanks Adrian and Ernest has a question no flag cross job sites and pass them to easy to find I guess like sort of like I correct me if I'm wrong Ernest it's like you're asking that no flag do this thing right just consolidating all the jobs into one bottle yeah I think that's what we do because I think fundamentally we look at like I think we see right that there's like a lot of solutions out there like indeed linking all this a lot of times their features all these are built more for generic job water that works really well across all kind of jobs but then it comes to that engineering jobs I say you want to search for a specific text that I think a lot of that is not that accurate so we thought that hey I think there's really a room for us to build sort of a layer worry that like help people find find their filter for jobs more instantly so so a follow up to that right so is it do you fetch it it's not that I want the secret source or whatever I'm just trying to understand so does a change in any of their websites affects you like in case they change the UI or anything or are you fetching by maybe booking it through an API that they have available or is just scrolling their website and then passing them as you which mean that any changes happen to any of their website will they affect no flat Yes it will but I think it depends on the source of data so for example from my course future we are sort of working with them so we sort of have an API and the results are the results return is very clean so we just have to use case oh ok so is there a way in future maybe I mean because let's face it like the note flare idea is better because I rather prefer there's one place I can get most of the job that I want than actually go to indeed Glasgow and all that right so with the hope that note flare becomes big do you have an idea of maybe talking to them and let them maybe creating an API for you so that you can fetch from the various API points and you didn't have to care whether they change UI or not that way do you have plans of being done so I think in the long I think that will be a to be honest I think on business level there will be probably not quite possible because it's kind of like a competitive product so there's I think there's really very incentive for all this commercial players I think for Microsoft future because it's a government own like platform so their job is ready to help people secure a job but there's not they are not profit driven so that that makes sense so I think the plan moving forward is that you actually want to reach a certain skill right we will start to have like companies post job directly so you will sort of shift more from an aggregation model more to a job posting model okay that's more sustainable so that you then to many of these guys yeah okay yeah okay I'm sorry I'm bugging questions right but then is there is there a dramatic difference between I'm not that clay like is there a different between cynic and then PG search like all I don't know but I'm just asking are they okay I haven't really heard of PG search but I think I can take a look at that it's interesting by the way you helped it so it's just I think it's more like instead of using the I think the idea is that instead of relying on other such distance and if your database is Postgres QL then PG search actually does the database search queries for you so you wouldn't have to depend on any gem like for search as far as your database is Postgres I mean that is the idea the fair idea I haven't got it okay interesting do you know is it possible to query the views all this through the active record ish way yeah I think it's I don't know I don't think it's more but they they have provided an overlay for active record stuff so as long as database is PG they they have an overlay like a wrapper or P Они P P P P I P P P P P P P P P P P P Terutamanya, terutamanya untuk sesiapa-siapa pelajaran yang berbincang, kerja belajar lebih tinggi. Ya, saya rasa saya tidak bergerak sebelum awak berkata, saya rasa saya akan mencari. Jadi, bagaimana awak membuat duit? Awak membuat duit dan apa plannya? Kerana saya rasa itu perkara yang sangat baik. Ia cukup kebenaran. Saya periksa dan saya boleh pergi ke mana-mana dan dapat. Jadi, awak membuat duit dan apa plannya? Ya, terima kasih kerana berkata-kata saya. Saya rasa dari sekarang, model penerbangan adalah lebih pada penerbangan penerbangan, yang berkata-kata lebih berkata-kata seperti agensi penerbangan, di mana kita ada pelajaran yang mencari talian, dan kemudian kita membantu mereka untuk mencari talian. Jadi, kita akan mempunyai perniagaan itu. Jadi, ya, tapi saya rasa dalam perjalanan yang lama, saya rasa kita mempunyai lebih banyak penggunaan. Ia menjadikan perniagaan lebih banyak untuk mencari perniagaan yang berdasarkan perniagaan pekerjaan, atau perkara lain. Oh, okey. Saya rasa ini adalah pertanyaan dari Ted juga. Ya, jadi pertanyaan dari Ted adalah, anda mempunyai perasaan setiap kali yang baru diberi? Ya, jadi untuk saya, untuk kami, kami tidak menghubungi itu banyak-banyak. Saya rasa kami masih di sekeliling. Okey, kerana dari informasi, kami menghubungi perniagaan pekerjaan di sekeliling setiap hari, dan perniagaan pekerjaan tidak... Saya tidak akan berkata, ada sumbangan yang tidak berlaku setiap minit. Jadi sekarang, kami tidak menghubungi itu. Ya, tapi saya rasa jika kita membuatnya, ia mungkin seperti, kita membuat sebuah scheduler untuk menghubungi setiap jam atau sekejap. Sebenarnya, saya ada pertanyaan juga. Sebelum anda beritahu, anda semua menggunakan sebuah tool untuk menggunakan kopi yang product orang boleh lakukan. Itu seperti pakaian atau sesuatu? Okey, jadi jika anda lihat ini, saya rasa ini yang anda menyebabkan. Ya, ya. Ya, saya rasa jika anda lihat model ini, ini seperti pop-up, saya rasa semua kopi yang saya fikir adalah menggunakan sebuah platform. Jadi, platform ini menolak kita membuat, membuat semua perkara yang anda mahu. Jadi, ia boleh menyebabkan botan, boleh menyebabkan pop-up, atau bahkan perkara yang anda mahu menjelaskan, seperti media sosial dan sebagainya. Jadi, ada banyak perkara yang berlaku. Ini hanya satu perkara. Jadi, apa yang kita buat? Kita hanya membuat, kita hanya menggunakan pakaian JSCode ke pakaian kita. Jadi, apa-apa pakaian yang kita membuat? Ya, saya lihat. Jadi, ia seperti pakaian yang tidak menggunakan pakaian UI. Ya. Okey. Terima kasih, ia sangat menarik. Okey, minggu yang ada pertanyaan, bagaimana tidak mempunyai data stale? Contohnya, pakaian yang berlaku maya mengubah masa dan mempunyai data. Ya, saya rasa untuk... Jadi, saya rasa untuk kita untuk pakaian yang berlaku. Jika kita ambil periksa di sini, itu sebenarnya daripada banyak pakaian. Jadi, saya rasa untuk kita, pakaian yang berlaku adalah pakaian yang berlaku secara secara secara secara secara. Kita selalu percayakan apa yang sebenarnya penerbangan saya katakan. Kerana, orang-orang boleh cakap, mereka akan membayar berapa banyak. Tetapi, apa yang orang-orang sebenarnya menerima? Saya rasa itu pakaian yang lebih berlaku dari data. Jadi, kita akan mempunyai, saya rasa, pakaian yang menggunakan data dari pakaian yang sebenarnya. Jadi, saya rasa, pada masa... Sebenarnya, sekarang, kita belum bercakap tentang itu, bagaimana untuk mengandalkan data stale dari salar. Kerana saya rasa produk ini... Jika saya tidak sejauh, ia hanya menerima selama dua atau tiga bulan. Kita ada perkara lain yang kita mengandalkan. Tetapi, saya rasa, pada masa yang lama yang cukup banyak data... Mungkin membuat perjalanan untuk membuat... Bagaimana menerima data berlaku dan sebagainya. Sebenarnya, saya tidak pasti apa yang terbaik. Okey, terima kasih. Okey, sesiapa ada... sesiapa lagi pertanyaan? Okey, kemudian tidak, saya rasa... Ini bagus. Ya, saya... Ada banyak pertanyaan yang menarik untuk saya. Jadi, terima kasih, Adrian, untuk berkongsi dengan... Sesetengah pertanyaan adalah perniagaan. Dan kemudian... Dan kemudian, sesetengah perkara teknikal. Ya, terima kasih kerana berkongsi. Okey, saya akan berhenti menerimanya dulu.