Тёмный
Ken Greeff
Ken Greeff
Ken Greeff
Подписаться
I'm a software engineer and entrepreneur with a passion for building great software products and promoting a healthy lifestyle. I founded Realhub, a software company that helps real estate agents manage their business more efficiently. When I'm not building software, you can find me in the gym or outdoors, as fitness is a huge part of my life and something that I'm truly passionate about.

I like to experiment with new technologies but am primarily developing applications in Javascript/Typescript with React. When building applications that are expected to scale and make money I use Ruby on Rails as the API paired with a React frontend.
Reacting to the Evil Martians Gemfile
36:41
14 дней назад
Fetch data from Rails API with Next.js
42:57
Месяц назад
Authorizing Rails Endpoints with Pundit
20:29
Месяц назад
How to Select App Feature Requests to Build
19:34
2 месяца назад
Laying Out the Nav Bar  - Clipflow - Part 4
35:56
4 месяца назад
Setting up the Models - Clipflow - Part 3
28:10
5 месяцев назад
Building the Landing Page - Clipflow - Part 2
1:12:36
5 месяцев назад
Adding Comments - Construction Manager - Part 10
56:39
6 месяцев назад
Комментарии
@EnjoytheMents
@EnjoytheMents 5 дней назад
Downloading this to watch during my flight. It better be good! 🤣
@kengreeff
@kengreeff 4 дня назад
Haha hope it doesn’t disappoint!
@EnjoytheMents
@EnjoytheMents 12 дней назад
Very nice and informative video!
@kengreeff
@kengreeff 11 дней назад
Thank you, appreciate the kind words!
@sourabhsingh4515
@sourabhsingh4515 12 дней назад
Can you please make a video on how to add new apps to the monorepo
@kengreeff
@kengreeff 11 дней назад
What kind of apps?
@EnjoytheMents
@EnjoytheMents 17 дней назад
letting you know; 19:28 he didnt cut out the but where you switch organizations - cool video very clear and great insights!! more like this!
@kengreeff
@kengreeff 17 дней назад
Hahah thanks mate
@user-mb1ct4ug8v
@user-mb1ct4ug8v 19 дней назад
Cool to see what are the latest gems
@kengreeff
@kengreeff 19 дней назад
I learnt a lot!
@cheechlabeech
@cheechlabeech 20 дней назад
late to the party. slate is great. thanks for the vid
@kengreeff
@kengreeff 20 дней назад
Appreciate it! Using TipTap in my latest project and it’s great as well. Might have to do a video on it so you can decide
@laughingvampire7555
@laughingvampire7555 21 день назад
when you query from a database you are not necessarily reading from the disk, the database has an optimization engine and if there are queries that satisfy certain criteria the db will cache stuff in memory. the main reason why people don't use DBs as an in-memory cache is because we usually don't put them in the same machine as the application so the biggest penalty is paid even if the data is held in ram, the penalty of network latency. DHH point is to use sqlite in the same machine until you need to scale the DB or the app itself and thus have the sqlite process hold the db in-memory and you will get very close performance to Redis, enough to satisfy the needs for your app, is not like ruby is capable to squeeze all the juice from Redis to begin with.
@kengreeff
@kengreeff 21 день назад
Fair points but I don't think they are running basecamp using sqlite, pretty sure it is a MYSQL database. SolidQueue is something they are using internally. The real reason to use something like this is in the beginning stages where you want application and infrastructure complexity to be a minimum. Once you scale it is very easy to swap this out as it uses ActiveJob
@PabloMartinez-lm1jl
@PabloMartinez-lm1jl 23 дня назад
You are the best
@kengreeff
@kengreeff 22 дня назад
Thank you, very kind
@nadetdevfullstack7041
@nadetdevfullstack7041 23 дня назад
Excellent!
@kengreeff
@kengreeff 22 дня назад
Glad it helped!
@danimusbar
@danimusbar 24 дня назад
Btw, please make another tutorial using Phoenix Framework with Next JS
@kengreeff
@kengreeff 23 дня назад
Unfortunately I have zero experience with Phoenix so can’t provide much value there. I do have a follow up to this video though :)
@danimusbar
@danimusbar 24 дня назад
Awesome... Suddenly appear in my home RU-vid, keep up Sir
@kengreeff
@kengreeff 23 дня назад
Thanks and welcome :)
@siddheshpatange213
@siddheshpatange213 25 дней назад
Amazing ❤, How I edit tamagui Colors ? There is no option to edit color in figma? Please help me
@kengreeff
@kengreeff 23 дня назад
What are you trying to do in figma?
@768hiddenneurons
@768hiddenneurons 26 дней назад
Wow thank you! Was just looking for this kind of setup for my app! Wanna move my React & Rails project from a monolith to a monorepo like this one.
@kengreeff
@kengreeff 25 дней назад
Love that it was useful. I’ve just released a follow up which shows how to add the crud endpoints as well :)
@tillcarlos
@tillcarlos 26 дней назад
I know all this already - I just watch it for the nice accent ;)
@kengreeff
@kengreeff 26 дней назад
lol thanks Till! Keeping the algorithm happy as well :)
@DestinoDello
@DestinoDello 26 дней назад
What would you use for api documentation?
@kengreeff
@kengreeff 26 дней назад
Something like rswag would be a decent choice
@DestinoDello
@DestinoDello 26 дней назад
Gold
@kengreeff
@kengreeff 26 дней назад
Thank you!
@tamerahmed9860
@tamerahmed9860 26 дней назад
Great efforts! Thank you
@kengreeff
@kengreeff 26 дней назад
You are welcome!
@dev-j8q
@dev-j8q 26 дней назад
I love this kind of content. Please continue with rails api system
@kengreeff
@kengreeff 26 дней назад
What would you like to see next?
@aruprakshit7218
@aruprakshit7218 2 дня назад
@@kengreeff Authentication/Authorization Rails + Next.js, SSE, Slow query (spinner) etc :)
@tillcarlos
@tillcarlos Месяц назад
Question: how do you deploy these 2 repositories together? Any kind of versioning needed?
@kengreeff
@kengreeff Месяц назад
We ran separate repos in production and never had any real issues without versioning. I would probably setup the pipeline to deploy API first then the frontend after. Could also use feature flags. I think you can even have these issues when using next.js only - vercel tried to solve but not sure how well it works as I’ve never used that feature.
@tillcarlos664
@tillcarlos664 Месяц назад
This is exactly what my team needed - one guy works on this and hasn't done it before. Just forwarded it.
@kengreeff
@kengreeff Месяц назад
Nice!
@ledockol
@ledockol Месяц назад
Thanks!
@kengreeff
@kengreeff Месяц назад
No problem!
@ledockol
@ledockol Месяц назад
Hi! Thanks for the video. Why are there empty parentheses in the scopes, you can omit them. If the default sorting by order method is used, :asc can be omitted.
@kengreeff
@kengreeff Месяц назад
I’m a little confused, at what timestamp is this?
@ledockol
@ledockol Месяц назад
2.28 model Idea
@kengreeff
@kengreeff Месяц назад
Do you mean the .ordered method? If so, that is a custom method on the model. If you are referring the the scopes in the model, then yes, I could omit empty parentheses - they were probably there for a param and I removed while developing. I like to leave the :asc there for clarity
@ledockol
@ledockol Месяц назад
It's not very clear why you used `return` in the `scope :where_channel_slug`. A simple `if/else/end` would be enough. Please don't take it to heart; these are just minor details. Overall, your videos are very good and helpful. Thank you.
@mark-ball
@mark-ball Месяц назад
Thanks Ken, good to see some basic React Query stuff, and the auto-generated types from the rails schema was interesting too. Would love to see create, update, delete functionality the React Query way with useMutation.
@kengreeff
@kengreeff Месяц назад
Thanks mate! Had another request for the same so I think I’ll have to add it to the list
@pablovillar4424
@pablovillar4424 Месяц назад
Can u make a simple crud with ror and nextjs for us? Button create, edit, delete and show more
@kengreeff
@kengreeff Месяц назад
Hey Pablo, thanks for the great suggestion. I'll see what I can do if you make sure you subscribe and hit the bell icon ;)
@pablovillar4424
@pablovillar4424 Месяц назад
Done ;)
@ashuvssut23
@ashuvssut23 Месяц назад
i dont like solito because we sometimes cant use react native libs directly with it. For example, when in need to use icons, I have to install expo-icons for native and some other icon lib(like react icons) for web
@kengreeff
@kengreeff Месяц назад
Thanks for sharing!
@sepehrkashani824
@sepehrkashani824 Месяц назад
Love it 🔥🔥🔥🔥🔥
@kengreeff
@kengreeff Месяц назад
Thanks mate!
@redwansikder3847
@redwansikder3847 Месяц назад
whats the difference between using app directory directly vs src/app directory?
@kengreeff
@kengreeff Месяц назад
To be honest, not sure. It’s been a convention to use the src directory for many years in js so probably just a preference thing. You can throw all your other directories into src as well, but either way probably works!
@DestinoDello
@DestinoDello Месяц назад
Wow i have been waiting for this thank you ken always
@kengreeff
@kengreeff Месяц назад
Hope you enjoyed it!
@kengreeff
@kengreeff Месяц назад
Let me know what you want to see next!
@DestinoDello
@DestinoDello Месяц назад
@@kengreeff rails graphql api, clean architecture and more production stuff logging monitoring... 🙏
@user-mb1ct4ug8v
@user-mb1ct4ug8v Месяц назад
Thanks Ken. Videos are very helpful to follow along
@kengreeff
@kengreeff Месяц назад
Thanks mate! Hope you got something useful out of it :)
@joscript7846
@joscript7846 Месяц назад
How many years of experience you've got? I think you're a senior
@kengreeff
@kengreeff Месяц назад
lol thank you, I have been doing this for over 20 years. Founded and exited our last business after 7-8 years where I was the CTO for $180M
@joscript7846
@joscript7846 Месяц назад
@@kengreeff omg, I just knew you so good at programming, i started watching your videos when you were building my4x4, I don't know if you still building it but am so amazed how much knowledge you've got on this field. Any advice for someone like me who's still somewhat a junior?
@kengreeff
@kengreeff Месяц назад
Find a company where you can learn. Spend your time outside of work building products so you can learn how to setup things from scratch. Enjoy the process and learn to love your craft!
@joscript7846
@joscript7846 Месяц назад
@@kengreeff thanks so much, will keep watching your contents
@mahyarkianfar6040
@mahyarkianfar6040 Месяц назад
Thanks, Keen. Your tutorials are always incredibly helpful! Could you make a video on optimizing SQL queries for better performance? When working with big data, it's common to encounter situations where code runs fine locally but isn't fast enough in production. I've managed to improve performance by adding indexes and using memoization. I'm confident your tutorial would greatly benefit many Rails developers.
@kengreeff
@kengreeff Месяц назад
I would probably need an example to work from - would be quite hard to reproduce something locally. It sounds like you are on the right path though, indexes are a great way to get extra performance. You would want to be careful with memoization to avoid stale data but if you are just doing it during the request cycle you should be ok.
@sepehrkashani824
@sepehrkashani824 Месяц назад
This is great. Love to see more rails tutorials. Thanks Ken🙏🙏🙏
@ezio2144
@ezio2144 Месяц назад
You helped me a lot, thanks for that. Even though I have many typescript errors :)
@kengreeff
@kengreeff Месяц назад
Glad it helped!
@tkhobbes
@tkhobbes 2 месяца назад
Passing the channel slug as a param in a get request is potentially unsafe. As ideas are "children" of channels, maybe you should have nested routes (ideas inside channels). This will ease a few things.
@kengreeff
@kengreeff 2 месяца назад
Hey mate, how would having nested routes make it more secure? I am using policy scoping to ensure a user can only see the records/channels/ideas that belong to their org.
@tkhobbes
@tkhobbes 2 месяца назад
@@kengreeff yep - you later mention it in the video, i should have amended my comment 😊 i just try to avoid parameters in get requests as much as possible in general...
@kengreeff
@kengreeff 2 месяца назад
Appreciate you keeping me honest! Security is extremely important.
@VikashSoren-x5w
@VikashSoren-x5w 2 месяца назад
Hii Ken , I can see you are doing great,thats is fantastic. But your videos are raw which need some editing to imporve the quality of video, hence it will increase understanding level of any topics you are gonna to discuss on your video. By good and quality editing you can get more views amd genuine subscriber . Let's connect together and spread ourselves. Thankyou Contact:- vikashsorenn@gmail.com
@RamziHemadou
@RamziHemadou 2 месяца назад
The problem with `event.detail.success` it returns true even if there is a save errors, how to keep the modal if there is errors?
@kengreeff
@kengreeff 2 месяца назад
I am just responding with a render :new block in the controller if it fails. The modal re-opens with the errors showing. If you jump on to www.clipflow.co you can see if in action.
@teetanrobotics5363
@teetanrobotics5363 2 месяца назад
How are you displaying on an iphone emulator? Is there a flutter app linked to this ? Awesome content besides. Thanks. If possible, please add stripe payments and subscriptions tutorial on 4x4.
@kengreeff
@kengreeff 2 месяца назад
I’m not using flutter here, pretty sure I just had the simulator open and typed in the localhost address in safari on the phone :)
@kengreeff
@kengreeff 2 месяца назад
Unfortunately we don’t have anything to charge for at the moment so won’t be adding subscriptions. We are working on new products though and will be adding to them.
@codestacklab
@codestacklab 2 месяца назад
ken could you tell me how to convert it to html and save and vice versa ? , i have a powerful editor but struct on this, docs are shitty
@kengreeff
@kengreeff 2 месяца назад
I think all I did when rendering the content was to set the editor to readOnly mode using the prop. How fun are crappy docs haha - a nice opportunity to dig in to the docs. Check out the code here: github.com/lockedandlifted/my4x4/blob/main/src/components/Post/Viewer/index.tsx Reach out on X/Twitter: @kennnG if you need any more assistance!
@webrefreshseoagency7619
@webrefreshseoagency7619 2 месяца назад
This is incredibly helpful. Cheers!
@kengreeff
@kengreeff 2 месяца назад
Awesome, really happy to hear it!
@thundergabriel
@thundergabriel 2 месяца назад
Why no use Rails API + NextJS ?
@kengreeff
@kengreeff 2 месяца назад
You definitely can but it does increase complexity. It depends on the resources you have on hand. The company we recently sold used react + rails for all our apps. I’m building Clipflow using pure rails and can say that it is much simpler to not have to build an API and the frontend in another tool. When you first build an untested product you want the most speed possible - choose what works for you. You will find that users don’t care about the tech and that marketing/sales is more important :)
@williamrudder1080
@williamrudder1080 3 месяца назад
Looks great!
@kengreeff
@kengreeff 3 месяца назад
Thanks Will!
@petartaneski5989
@petartaneski5989 3 месяца назад
Any idea on the corect way to add a canonical tag to the head of a dynamically generated client side component? For example the link is {baseurl}/{lang}/{productId}. would the correct canonical tag be: <link rel="canonical" href={`${url}/${lng}/${productId}`} />
@kengreeff
@kengreeff 2 месяца назад
Good question! I’m not sure to be honest
@FaysalBDev
@FaysalBDev 3 месяца назад
how can we do SEO optimizations for Next if we are using the features folder?
@kengreeff
@kengreeff 2 месяца назад
I’m not sure to be honest as I haven’t looked in to it. The features are shared and SEO isn’t really relevant for native apps. You would probably do it in the next/web folder directly
@franciscokloganb
@franciscokloganb 3 месяца назад
I feel like Tamagui is flat out impossible to customize. I have read the docs over and over again, and still can't make createThemBuilder work. There's always something breaking because of misconfigured relationships between "palette", "template", "parent" and some theme key.
@kengreeff
@kengreeff 3 месяца назад
Definitely has a steep learning curve. Probably why this video has performed so well
@unknwn5104
@unknwn5104 4 месяца назад
do we have solito for this usecase?
@kengreeff
@kengreeff 3 месяца назад
Solito is just for navigation I believe
@maxmurakami-moses4728
@maxmurakami-moses4728 4 месяца назад
could you make a tutorial using the new app router? Would be huge.
@kengreeff
@kengreeff 3 месяца назад
Currently focusing on Clipflow which is a Rails app, but will circle back in the future if I have time!
@omarkraidie
@omarkraidie 5 месяцев назад
How could I send data from the client to this? I want to add user preferences to it and it needs data from client :D
@kengreeff
@kengreeff 4 месяца назад
Wouldn’t you want to persist user preferences and store them in the db?
@mahyarkianfar6040
@mahyarkianfar6040 5 месяцев назад
If your using Rails < 7.1, you must use version 2 of the authentication-zero, otherwise you will get an error as "undefined method `generates_token_for' for User:Class" as soon you get to the Sign up page.
@kengreeff
@kengreeff 5 месяцев назад
Thanks for the tip mate!
@joseaparicio9484
@joseaparicio9484 5 месяцев назад
@16:18 don't use the website he uses for the image. It redirects to a shady website
@kengreeff
@kengreeff 5 месяцев назад
Haha really? Must have changed since filming - my apologies!!
@editin232
@editin232 5 месяцев назад
How did you remove the blue outline on focus for the editor element?
@kengreeff
@kengreeff 5 месяцев назад
What are you using for styling? You should be able to style the :focus property with css relatively easily