 Lihat tak? So, just a brief intro about me. I'm a software engineer at GavTech. And yeah, I'm mostly self-taught. And I double in a bit of devops lately. And I do write articles, so you can follow me on my medium, which I'll be flashing later. So how this talk actually came about, came about from one word called feedback. So it's a word that usually makes most of us want to cover our ears, but we all know that it's essential for us to grow and to basically learn more new stuff. So that got me thinking. I didn't know quick avenues for people to receive feedback and to give feedback. So I came up with Sele. So as most of you know, Sele is like a singlish term for just say. And yep, it's a platform which allows you to ask your peers or colleagues questions you've always wanted to know and get feedback as well. Yep, so I'll be having a short demo. So this is basically the website. So I can add questions that I want to ask. For example, I already added a question here. So how can I be a better developer? So these are questions I can ask my friends, for example. And then go back, copy this website and send it to my friends. So I can send a link to my friends and they can answer it anonymously. So, yeah, I think... Yeah, sorry, I'm just crapping. But yeah, I can post a response and going back to person with that link will actually be able to see it. What is it? Yeah, it's here. For your information, I didn't write all of these answers. It's just random answers given to me. Yeah, so this is my platform. So basically, you can ask questions and people will answer them anonymously. Yeah, I think I'm running a bit short of time. But yeah, you can try it on sale.com if you like. Okay, so let's talk geeky. So I'll try to speed up this part. Basically, my application is coded on React.js and Node.js as backend and MySQL and SQLise. So MySQL is because most of the data there is relational. So, yeah, and SQLise is actually an OIM tool which wraps around MySQL. So I don't actually write any MySQL statements. So yeah, you can ask me more about that later. And I would like to talk about logging also for this talk. So it's something that I've learned while building this project. So logging is actually a step that most people tend to overlook because you may think that, oh, it's just a side project. Why do I need logs, right? But I'm here to prove you wrong because these websites are from China and they are obviously trying to hack my site. So I actually got these logs from my server which is on DigitalOcean. Yeah, so that's why logging is very important. And I'm actually using Winston and Morgan as loggers. So Winston is actually a logging library in Node.js. If you guys use Node.js. And Winston is awesome because you can see the different levels of logs. So, for example, if I set my log level to verbose, I will only be able to see logs which are lower in level. So error 1 and 4 I'll be able to see. If I set it to debug, for example, I can of course see more of those logs. So this actually helps to segregate different logs for different environments. And Morgan as well. So Morgan is a HGP Request Logging Middleware. So any endpoints that you hit, right? Morgan will actually record it for you. Yeah, and actually I wanted to show a demo on code but I don't think I have much time left. Okay, I'll just do it. Yeah, so I wrote a short code to actually demonstrate how she is really small to demonstrate how Morgan and Winston work. I'll make it a little harder, sir. Sorry, what? Can you make it bigger, please? Another two times. No? Maybe. This is better? Yes. Okay, yeah. So I wrote... I imported Winston and Winston daily rotate file. So basically you include it inside your server.js code and then I set it to... currently is one. So I only have two levels so I'll get one and error. So let me just do a quick demo. Oh, shit, it's really small too. Yeah. Yup, so as you can see I only get error and one but if I set it to a higher level so for example today is silly. So silly is the lowest level and of course I'll get more locks. So yeah, I got a lot more locks. So this is actually good in differentiating between your development environment and your production environment. So as you can see the one at the bottom is done by Morgan. So I only went to the root only went to localhost 8080. So it's printed like that. Yup, so if I wanted more information on Morgan I can actually change the depth to something called combine. So combine allows more locks and it's much easier to get more information out of it. As you can see. Okay, so just to do a quick demo on it because yeah, I was told that I need code to show code. Yeah, but... No, but... Okay, sure. I'd love to. Okay, so maybe just one last point before I wrap it up. So I learned to not reinvent the wheel. So I'm not very I'm not a very good in design person. So I really can't do design. So my first learning point is that you see different apps take inspiration from them and then that's how you build interface. Yup, so as you can see the one on the left is mine and the one on the right is actually from me.com. So yeah, that's all I have and yeah, you can follow me on this medium medium github and yeah, my website. And yeah, don't forget to leave me a comment on my top. I say that.com. Thank you. Yup. I'm not sure if you've noticed this but one of the classic problems with internal feedback even if it's anonymous is that people don't trust that it is. If you solve that at all like so when I give you feedback I know that especially if you're a manager I know that you know and somehow secretly know who I am and trust me on the shit list. Okay, so the whole idea of it being anonymous is in the hope that people give you honest feedback, right? But your point is they might not or they might utter some rubbish without you. So they often go on because although just like kind of seem sort of like they'll be like oh, I am not sure about this but I really mean that's terrible. That's true maybe one way to solve it to make a name option name fail and it's entirely optional whether you want to put your name or not. Yeah, it's just one way to solve it. Yeah. I haven't thought about the feedback loop as I'm giving you an anonymous feedback. Yeah. How would you reply back to me if you want? Can't really there's no way to but but yeah. Good question. Yeah. I understand that you want to make it anonymous for the person who reply me back to you. Yes, correct. Yeah, probably should think about that. Okay. Thank you. How long did it take? How long did it take? 3 months? Yeah. So I expected it take a lot less time but as with every other project you always exceed your deadlines, right? So yeah. Just say one of your project in your go-go-go check from your ask Jimmy. Nope, nothing to do with GavTech. I work on an entirely different project in GavTech. Similar stack perhaps but no, nothing to do with GavTech. Yeah. I need to share about the design as it looks quite nice. Design, well, as you can see, you not equals to user. So this is just a reminder for myself. So when I first design the app, I thought it was very intuitive until I went to ask my friend and she was like, what do I click next? I thought okay, you not equals to user. So I think what helped is to put prompts to put prompts over your website on steps to follow so that the user is guided on what steps to take. So yeah, there's one of my learning points for this project. Sorry? But you always keep it like when you only see message on the website like qualities. You can make it no choice. They have to complete their step first before they go on to another. Or you can always have maybe a progress bar whereby you had list out the different steps. That's at least what I learned from my designer friend. Yeah. Thank you.