ACERCA DE ESTE EPISODIO
Ever wondered how the 'less is more' philosophy could revolutionize your coding practice? We're back with a treasure trove of insights on paring down to amp up performance and maintainability in your projects. Kicking things off, we share our experiences in decluttering codebases, inspired by the simplicity that Elon Musk champions. From the transition in Jumpstart to Hurrocons from Font Awesome to embracing Rails defaults for the sake of newbies, it's all about enhancing learning curves and reducing complexity. And if you've been juggling with the art of productivity, the Para method by Tiago Forte might just be your next audiobook binge!
Transforming your home with smart automation isn't just a futuristic fantasy; it's a present reality that we dive into, discussing the ease and efficiency that smart devices bring to day-to-day life. Imagine controlling your home's ambiance and utilities with a simple voice command or a programmed routine; we chat about the marvels of voice-activated LEDs, the convenience of Home Assistant, and my personal plunge into the world of 3D printing. But it's not all play; we get technical about the Ruby 3.0 upgrade and the fine points of a JIT compiler, revealing the mix of excitement and challenge that comes with innovation.
Lastly, let's talk about the future of database architecture and job processing in Ruby on Rails. The conversation includes the adaptability offered by feature flags, the strides of ActiveJob with Rails 7.1, and the refreshing simplicity of Sucker Punch. We're eagerly awaiting what Rails 8 will unveil, especially as we look back fondly at early MongoDB days and speculate on SQLite's potential. Join us as we share our trials, triumphs, and the thrilling future ahead for Rails enthusiasts and developers alike.
EN ESTE EPISODIO
MOSTRAR NOTAS 🔗
TRANSCRIPCIÓN 🔗
00:00:00.581 --> 00:00:02.146
This is Remote Ruby.
00:00:02.146 --> 00:00:06.429
Have you any remote ideas to the meaning of the word?
00:00:06.429 --> 00:00:14.910
So let me just start with I haven't talked to you since last year, not even last year, like almost last fall.
00:00:15.281 --> 00:00:29.850
Yeah, it was pretty much like our whirlwind recording sessions that two weeks after Rails World or whatever, and then we were just like let's take the rest of the year off, which was a great idea, because the year got crazy.
00:00:29.850 --> 00:00:30.871
But man, I missed you guys.
00:00:30.871 --> 00:00:37.000
Jason is not here today, but we miss him, Yep but I sent him some memes.
00:00:37.781 --> 00:00:40.350
I have like instant and easy access to Jason.
00:00:40.350 --> 00:00:42.225
Right, I want to bother Jason.
00:00:42.225 --> 00:00:43.991
I just bother Jason, you know.
00:00:43.991 --> 00:00:48.606
But I'm like damn, I have like all this stuff that's happened and I haven't talked to Chris in so long.
00:00:49.000 --> 00:00:50.651
That's almost like dude, I miss the floor.
00:00:50.651 --> 00:00:56.000
Yeah, I miss it very much, so good to be back.
00:00:56.000 --> 00:00:58.606
What has happened in the last?
00:00:59.189 --> 00:00:59.750
two months.
00:00:59.750 --> 00:01:02.234
What hasn't happened in the last two months?
00:01:02.234 --> 00:01:03.963
Whoa Did you?
00:01:04.022 --> 00:01:10.000
see DHH and Jason Fried tweeting about the Walter Isaacson book about Elon.
00:01:11.165 --> 00:01:13.677
No, I don't necessarily read DHH tweets.
00:01:14.584 --> 00:01:17.000
Yeah, I like Walter Isaacson's books anyways.
00:01:17.000 --> 00:01:19.980
They're like really good biographies or whatever.
00:01:19.980 --> 00:01:29.974
But something caught my eye in one of their tweets that was like they were reading the book and there mentioned something about how he was like managing all these projects and stuff.
00:01:29.974 --> 00:01:52.974
And I ended up reading that, listening to the audio book, going to and from daycare and I feel like the last two or three months, like since we kind of took our break from recording my like MO, has just been like delete stuff, simplify, get rid of gems, get rid of like everything features whatever.
00:01:52.974 --> 00:02:17.078
Yes, I have been on a relentless sort of thing and that's pretty much what the like book talks about with Elon, where he's just delete, delete, delete until you delete too much and you have to put back 10% and that's how you know that you've stripped it down to the bare bones because you went like a little too far and had to put stuff in because you broke things.
00:02:17.078 --> 00:02:17.979
I really like that.
00:02:18.882 --> 00:02:26.990
Today I was just like you know what, when Jumpstart came out, hurrocons didn't exist, font Awesome was like the only good option.
00:02:26.990 --> 00:02:38.939
Zondacons from Steve Shogar existed, but I didn't have every icon we needed or whatever, but they looked a little more modern than those sort of like cartoony, look a lot Font Awesome.
00:02:38.939 --> 00:02:47.979
And so today somebody had pointed out the Font Awesome CDN was a bit slow or something with the JavaScript was kind of slow.
00:02:47.979 --> 00:02:52.336
It's not always, but I was like you know what do we even need that?
00:02:52.336 --> 00:02:52.960
Let's just get rid of it.
00:02:52.960 --> 00:02:57.000
So I went through and was like side quest Friday morning.
00:02:57.000 --> 00:03:16.000
Let's just go fight this dragon off on the side and delete it all the Zondacons, replaced them all with Hurrocons, just dropped the SVGs in line and that way we don't have to like read the file when we're rendering the views and then insert it in the HTML output and yada, yada.
00:03:16.824 --> 00:03:24.979
So it's simpler and just all around much better Deleted like 300 lines of code or like net negative like 300 lines in the PR.
00:03:24.979 --> 00:03:42.000
And we've been doing that for the last three months and noticed version two I'm going to probably ship after this podcast and it's 1500 lines of code, simpler than before and it's like does more things and is just generally better all around.
00:03:42.000 --> 00:03:47.000
It's been like my thing, because I don't know if you felt this, but like his projects go on.
00:03:47.000 --> 00:03:52.913
They just kind of build up so much cruft and it's very easy to be like God damn it.
00:03:52.913 --> 00:04:00.674
We have to maintain all these stupid things because one person uses this feature or something in Podia or hatchbox or whatever it is.
00:04:00.674 --> 00:04:04.409
We can't kill it, or it feels like you can't kill it but you could.
00:04:05.060 --> 00:04:07.588
So it's button exists right there, baby yeah.
00:04:08.139 --> 00:04:19.214
So, man, I felt very much freer lately and also just kind of in jumpstart in general, like everybody has ideas that they want to see in the template.
00:04:19.214 --> 00:04:23.649
We have a stronger sort of line that we don't cross this line.
00:04:23.649 --> 00:04:32.387
Yesterday someone was like we should use you, you ideas, for every table, that way we don't expose a number of records or whatever.
00:04:32.387 --> 00:04:35.081
That was like we could do that.
00:04:35.081 --> 00:04:44.333
But every little step like this that we deviate from the rails defaults, the harder it is for people to learn the project and to use it and stuff.
00:04:44.333 --> 00:04:47.276
And you use ideas and they're not a magic bullet.
00:04:47.276 --> 00:04:57.550
So version seven might be, or you lids or whatever, but they're still not friendly and things like that, so they don't really fully complete solution to the problem.
00:04:57.550 --> 00:05:04.007
They like solve one thing, introduce complexity in another area, and I was like it's not good enough.
00:05:04.007 --> 00:05:12.208
No, we got to start saying that and even if it's the wrong answer, today we come back to it and just change our minds.
00:05:12.208 --> 00:05:13.009
That's okay.
00:05:13.009 --> 00:05:15.884
We put back those decisions Like it's not a big deal.
00:05:17.079 --> 00:05:27.992
I've been feeling real good lately, just spring cleaning basically it's really hard for me with my ADHD to like really listen and not pre-plan what I'm already going to say.
00:05:27.992 --> 00:05:30.944
Going to admit to you the second you started talking.
00:05:31.305 --> 00:05:36.574
I already knew what I was going to say and I'm still going to say it because I have got the next book for you.
00:05:36.574 --> 00:05:39.387
I haven't read a book in a long time.
00:05:39.387 --> 00:05:52.091
Until very recently, I read building a second brain and the Para method by Tiago Forte, and I figured out where iTunes stores all the audio books you download, or iBooks.
00:05:54.262 --> 00:06:03.000
So I'm not going to be something, but I'll have to pick them up on audible, because I pretty much like only listen to books anymore, because I get too distracted.
00:06:03.000 --> 00:06:10.000
And then the only real time that I have to focus is like driving Jackson to school and back, and I don't have a commute anymore.
00:06:10.000 --> 00:06:12.959
So it's kind of rare, because I'm in the same way.
00:06:12.959 --> 00:06:14.264
I don't make it through much.
00:06:14.264 --> 00:06:17.757
I've heard the building a second brain book.
00:06:17.757 --> 00:06:19.987
For sure, I'm not sure about the second one, though.
00:06:20.341 --> 00:06:25.271
Para method is the one that came out first and it describes like the same online framework.
00:06:25.370 --> 00:06:26.232
Yeah, same author.
00:06:26.232 --> 00:06:29.105
Okay, I feel like for you the underlying framework.
00:06:29.105 --> 00:06:30.730
It's called Para P-A-R-A.
00:06:30.730 --> 00:06:33.567
It's an acronym for projects, areas, resources and archives.
00:06:33.567 --> 00:06:36.848
Based on what you just told me, you would get a lot out of that.
00:06:36.848 --> 00:06:47.574
Yeah, I won't go all into it right now, but I have been constantly archiving things because the whole system is look, if you're not using it right now for an active project, put it in the archive.
00:06:47.574 --> 00:06:49.946
It'll be there if you ever need it again.
00:06:49.946 --> 00:06:52.264
Right, just cleaning things up, man.
00:06:53.040 --> 00:07:07.615
When we're at Rails world at the boroughs, talking with Adam Levin maybe it was on our podcast recorded, but he had talked about managing tail end and stuff, where it's like so many opinions being opened as issues and things and it's like ideas and whatever.
00:07:07.615 --> 00:07:12.000
And he was like, if it's a new feature, it's not an issue.
00:07:12.000 --> 00:07:36.959
We moved that to discussions, discussions, yeah, and I was like, oh, okay, so we went through like pay and notice and jumpstart and like every single repo of ours for the most part, and we're like, nope, that's a discussion, that's a Q&A Are you asking about maybe there's missing docs or something, but it's not an issue necessarily, it's Q&A sort of discussion or something.
00:07:36.959 --> 00:07:39.146
Handle request.
00:07:39.146 --> 00:08:02.963
Yeah, we're like ideas and whatever else and so, yeah, we've been doing that and it is like refreshing to go through that because, like, the issues really feel like a huge burden when I'm looking at them and I'm like, oh my God, and some of these are ideas that I want to keep around, but if I leave them as an issue, it just feels overwhelming and it sits there forever.
00:08:04.266 --> 00:08:26.574
Build up this dread looking at the projects and I'm like this is just not good for my mental health and then also, like I know DHH and it is kind of notorious for the features they use or the ones they extract an open source, but they don't really care about most of the other things, like if active record was up to them it would probably just support my sequel or whatever they use.
00:08:26.574 --> 00:08:30.737
But that's been another thing where I've tried to embrace that a little bit more.
00:08:30.737 --> 00:08:36.115
Or it's like all the stuff that we actually Want to support because that's what we use.
00:08:36.115 --> 00:08:44.370
We will have very high polish on that and everything else will take second fiddle and that's fine, we're gonna just accept it.
00:08:44.370 --> 00:08:49.044
I used to be like very optimistic and oh, we could support that.
00:08:49.184 --> 00:09:13.530
It wouldn't be that much work to support this other thing, this other payment processor that we don't use and it wasn't Until it becomes the maintenance burden the conditional implementation may have taken a day or something, but then it's like now you've committed to maintaining this for the rest of your life and Now I'm like you know what you want to add another payment processor to pay, make a plug-in, make a gem.
00:09:13.530 --> 00:09:15.056
Yeah, that depends on pay.
00:09:15.456 --> 00:09:18.105
It's perfect, you know so I talked about that.
00:09:18.105 --> 00:09:19.509
I was like, dude, just make a.
00:09:19.509 --> 00:09:25.384
You guys should do is make a plug-in template Replay and just be like yeah oh, you want to add a thing, there you go.
00:09:26.005 --> 00:09:30.595
We could totally do that just it's already pretty much there, built into the gem.
00:09:30.595 --> 00:09:36.437
Just delete the implementation stuff, yeah, rename the, the class or something, and you're good to go.
00:09:36.437 --> 00:09:38.644
But yeah, yeah, it's been freeing.
00:09:39.025 --> 00:09:39.648
That's for sure.
00:09:39.648 --> 00:09:49.139
One thing from para that I've really started to embrace a lot more, that I didn't really understand when I first read the book, is difference between projects and areas.
00:09:49.139 --> 00:09:57.239
So For Tiago forte, a project is anything with a clear objective and a set end date.
00:09:57.239 --> 00:10:01.336
Area is something with no end date and ongoing.
00:10:01.336 --> 00:10:02.768
Basically.
00:10:02.768 --> 00:10:07.629
So like for me, my like open source projects, those aren't projects.
00:10:07.629 --> 00:10:10.607
In my like knowledge management system, those are areas.
00:10:10.607 --> 00:10:16.345
Because I do project like an issue, like taking care of an issue or doing like a support ticket for podium.
00:10:16.345 --> 00:10:18.548
That is what I make into a project.
00:10:18.548 --> 00:10:29.504
And just taking projects like this big idea and concept of them and making them as Atomic as possible, I mean, yeah, this is a tiny little project and now projects don't seem so overwhelming.
00:10:29.504 --> 00:10:32.152
It's like, well, I do projects in one day.
00:10:32.231 --> 00:10:41.825
Now like I try to make projects only take a day yeah, because that's always been an issue with my Usage of any project management stuff, like we use base camp.
00:10:41.825 --> 00:10:48.124
But I would create a project for like jumpstart and it would just be this never-ending project.
00:10:48.124 --> 00:10:57.211
And I realized like jumpstart is not a project, it's an area, like you're saying and Introducing that concept in that area.
00:10:57.572 --> 00:11:12.363
Yeah, and just like I didn't know that was a thing like a concept I needed to extract or whatever, and like now I understand it and it's like we make projects, we set our deadline, we have a clear end goal and we archive it.
00:11:12.363 --> 00:11:22.976
When we're done, we can always unarchive it, we can like add to it, remove from it, whatever, but they're like these cohesive things that we do and then they're done.
00:11:22.976 --> 00:11:25.409
That Really really helps.
00:11:25.409 --> 00:11:29.504
And it wasn't until like last year when I started to like do that.
00:11:29.504 --> 00:11:34.903
I always knew there was something missing and it that's why I was like never stuck to anything.
00:11:34.903 --> 00:11:43.629
But now, right, it really improved the way that I like wrap my head around it and it feels totally different now.
00:11:43.629 --> 00:11:46.034
And then just the same sort of thing.
00:11:46.375 --> 00:11:55.764
If you have ideas, you might need to write some of them down or like detail out specific ones, but a lot of the ideas will always come back up.
00:11:56.145 --> 00:12:06.673
So if they're like actually important, you don't need this like giant backlog of ideas because you're never gonna go through it like it's just not Practical or useful in any way.
00:12:06.793 --> 00:12:25.589
So that was another thing that I used to do, where it was like, oh, just keep a backlog of ideas and then pull stuff out of that and make that a project that you work on, like no, the stuff that is relevant when you're working on it at least for me, is this is a recent issue that People have been talking about.
00:12:25.589 --> 00:12:32.711
Let's address it now and like just choose things in the moment, as opposed to like let's read through the backlog and whatever.
00:12:32.711 --> 00:12:43.894
Yeah, but you also need to balance that, I guess, with some sort of let's choose some things that are Recent and well, like if it's a recent feature or something, let's impress our customers by doing it real soon.
00:12:43.894 --> 00:12:48.725
Or you go the other way and say, like what are the projects with the best ROI?
00:12:48.725 --> 00:12:52.475
If we do this and invest in it now pays off the most.
00:12:52.475 --> 00:12:55.264
So you want it like probably a balance of both or whatever.
00:12:55.264 --> 00:13:01.539
But a the backlog deaf just was another drain on my mental health.
00:13:01.580 --> 00:13:03.384
Yeah, I got rid of all backlogs.
00:13:03.384 --> 00:13:09.865
I started using the concept of an inbox, but then I switched it even more smaller.
00:13:09.865 --> 00:13:13.745
So now I use obsidian for note-taking for the most part.
00:13:13.745 --> 00:13:18.544
So when I open obsidian, it creates a note for that day and that's my inbox.
00:13:18.544 --> 00:13:20.395
I just yeah, I'm doing stuff.
00:13:20.395 --> 00:13:47.725
When I have an idea, when I have a thought, I just write it in there and at the end of the week or at the end of the day I might go through and like, oh well, I actually kind of wrote like a resource in here or like a standard operating procedure for how I do something, like I'll extract that new note, new resource, throw it's where it needs to be or put in the archive, and then taking out like content from my projects and from my like areas and Turning them into like resources that I can then link back to from other areas as well.
00:13:48.509 --> 00:14:02.227
I was just thinking about how wild it is to like Automatically creating a thing for the day is something like Apple Notes doesn't do, but it's such an intuitive, like tiny little improvement the software can do for you.
00:14:02.369 --> 00:14:05.937
That gets you in the right mindset of how to work or whatever.
00:14:05.937 --> 00:14:23.284
And then that's the stuff that I really really appreciate, like that Intuitiveness that you could go a little extra step, tiny little feature really to implement, but it like teaches people how to think about the product or whatever, and that's really cool.
00:14:23.284 --> 00:14:30.384
I feel like it's some blend of like designer and engineer kind of saying to think about those things.
00:14:30.384 --> 00:14:37.784
But I always like that stuff or like I don't write software Just because of they like writing algorithms all day, every day or whatever.
00:14:37.784 --> 00:14:45.664
I like building stuff that is intuitive, that people use and whatever those that when you mentioned that, I immediately was like light bulb.
00:14:45.664 --> 00:14:46.868
That's a great thing.
00:14:46.868 --> 00:14:56.845
That would like if Apple Notes did that, that would change the way I think about using Apple Notes, which is why I'm not like consistent with it or whatever when I do try to use it.
00:14:57.105 --> 00:14:59.552
So you use iOS shortcut to do that.
00:15:00.014 --> 00:15:05.494
Sure, like you gotta set it up and yeah, exactly, yeah there are a lot of apps that have it built in.
00:15:06.306 --> 00:15:11.023
Note plan is a really good one, obsidian has it built in, but there's some plugins that enhance it.
00:15:11.023 --> 00:15:14.172
Craft Is really good with that idea.
00:15:14.172 --> 00:15:16.638
I really like that concept of like, where do I start?
00:15:16.638 --> 00:15:19.325
Like, where do I have a thought or something's in my head?
00:15:19.325 --> 00:15:20.792
I need to get it out quickly.
00:15:20.792 --> 00:15:23.644
Yeah, goes, like you can today belongs to today.
00:15:23.985 --> 00:15:25.730
Yeah, the steps there are.
00:15:25.730 --> 00:15:31.065
Like it needs to get out as fast as and smoothly as possible and you can triage it later.
00:15:31.065 --> 00:15:37.965
You don't have to do it right away and like it'll always be searchable, so, like who cares exactly, triage it.
00:15:38.186 --> 00:15:48.923
So yeah, and those are the some of the main concepts that Tiago forte talks about like you have search, you have quick switchers, like why do you need to like add in all this metadata into your things?
00:15:48.923 --> 00:15:54.870
Just really simplifying the process and like kind of simplifying the way you think about projects and your productivity.
00:15:55.585 --> 00:16:01.769
Lately I went around the house and got some smart plugs and switches too.
00:16:01.769 --> 00:16:07.817
The other weekend I just turned off the power, went and replaced a bunch of switches in the house.
00:16:07.817 --> 00:16:09.278
Love the light.
00:16:09.278 --> 00:16:11.028
Controllable Is that.
00:16:11.028 --> 00:16:11.370
Which one?
00:16:11.370 --> 00:16:13.235
Is that the one on your wall?
00:16:13.738 --> 00:16:17.028
Oh, it's on this, on this smart Switcher.
00:16:17.028 --> 00:16:24.684
It's got one, two, three, four, five buttons and each button has three different oh, like shortcuts for each.
00:16:24.684 --> 00:16:28.847
So if I hit like one button once, if I hit the middle button, it is one thing.
00:16:28.847 --> 00:16:31.033
If I hit it twice, it does something else.
00:16:31.033 --> 00:16:34.008
And then I hit three times, it does something else.
00:16:34.008 --> 00:16:37.235
And all five buttons have three actions each.
00:16:37.817 --> 00:16:38.398
That's nice.
00:16:38.398 --> 00:16:45.044
Once we had Jackson like there will be so many times where I'm like I gotta put him to bed.
00:16:45.044 --> 00:16:52.658
I got to reach over there, reach up into the lampshade and turn off the stupid lamp and my hands are full already and whatever.
00:16:52.658 --> 00:17:02.605
And so so many of those things are as like I'm gonna buy one of those you know voice controlled switches, plug the lamp into that and then I will not ever have to deal with this again.
00:17:02.605 --> 00:17:05.515
I can't tell you how many times that's been useful.
00:17:05.515 --> 00:17:12.924
You have the shower fan and it's like I wanted to run, but I don't want it to run forever because I'm gonna forget to turn off the shower fan.
00:17:12.924 --> 00:17:19.797
So I bought a smart one and then just have it set up to like 40 minutes, 45 minutes or 30 minutes.
00:17:19.797 --> 00:17:22.729
After you turn it on, it'll shut itself off.
00:17:22.729 --> 00:17:24.212
That's okay, perfect.
00:17:24.212 --> 00:17:30.217
I don't need to fiddle with the humidity sensors and like tune that properly or whatever.
00:17:30.217 --> 00:17:32.672
It's just like easy yeah.
00:17:32.893 --> 00:17:42.255
I can do some of that in shortcuts, like in the, because I use my like I home and home app and I have like you run home assistant yet no, but I 20.
00:17:42.255 --> 00:17:47.544
You say that I was literally looking last night what I need, because I have a Raspberry Pi 2 and that's not really helpful.
00:17:47.584 --> 00:17:50.335
I Run on a Raspberry Pi 4.
00:17:50.355 --> 00:17:52.365
I was literally looking at those last night.
00:17:52.365 --> 00:17:54.895
That's literally my Amazon search history, the.
00:17:54.935 --> 00:18:00.534
Pi 5 is what you should get, and they are the 4 gig of RAM version.
00:18:00.534 --> 00:18:05.930
It what it wasn't stock like 20 minutes ago and you just missed out.
00:18:05.930 --> 00:18:08.636
I think it's now out of stock.
00:18:09.326 --> 00:18:09.526
Nice.
00:18:10.207 --> 00:18:13.472
I've been watching for those because they're like they just came out.
00:18:13.472 --> 00:18:28.644
They're super duper powerful compared to the 4s and It'll be an ideal thing to run, or actually you, if you want, you can actually buy a Device directly from the home assistant and that's probably that's thing to use.
00:18:28.644 --> 00:18:35.204
I Run that in my basement, connected to the router, and like have my Elgato lights.
00:18:35.204 --> 00:18:41.105
If it's 7 pm and my lights are still on and I forgot to turn them off, it'll go and turn them off for me.
00:18:41.486 --> 00:18:42.709
Yeah, do that too.
00:18:42.950 --> 00:18:45.757
All my cameras from ubiquity get fed into it.
00:18:45.757 --> 00:19:00.778
Garage doors, and well, no garage doors now, or not a thing anymore, because Chamberlain group or whatever it was like it's too expensive is their excuse to support a cloud service, which is nonsense.
00:19:01.365 --> 00:19:09.125
Okay, whatever there's people now that have built little device to intercept their remotes and you could do it, control it locally on your network.
00:19:09.125 --> 00:19:13.153
But yeah, home assistant is wild.
00:19:13.153 --> 00:19:14.496
You can do so much with it.
00:19:14.496 --> 00:19:16.259
It is super cool.
00:19:17.948 --> 00:19:20.105
Let's take a moment to thank our sponsor, honey badger.
00:19:20.105 --> 00:19:26.338
If you're like most developers, too much of your time gets sucked up with downtime issues, troubleshooting and error tracking.
00:19:26.338 --> 00:19:32.007
How can you spend more time shipping code and less time putting out fires, honey badgers?
00:19:32.007 --> 00:19:32.288
How?
00:19:32.288 --> 00:19:35.876
It's a suite of monitoring tools specifically for developers.
00:19:35.876 --> 00:19:44.648
It's the only system that combines air monitoring, uptime monitoring and cron and heartbeat monitoring into a clean, fast Interface.
00:19:44.648 --> 00:19:55.478
Sure, you can get familiar with any interface, but why waste your time learning some Franken system interface that looks like an airline cockpit when what you really need is clarity and speed?
00:19:55.478 --> 00:20:01.077
You won't know if honey badger will really save you time and trouble until you see how it works in your own tool chain.
00:20:01.506 --> 00:20:04.576
With two lines of code in five minutes, you can see for yourself.
00:20:04.576 --> 00:20:16.078
Honey badger automatically hooks into popular web frameworks, job systems, authentication libraries and your front-end JavaScript magic and fixing errors before your users can even report them.
00:20:16.078 --> 00:20:19.275
That is a wonderful way to delight your customers.
00:20:19.275 --> 00:20:21.851
Five minutes of your time with the free trials.
00:20:21.851 --> 00:20:26.852
All it takes to see if it will work for you Just might be the best five minutes you've spent in a while.
00:20:26.852 --> 00:20:28.336
Check out honey, badgerio.
00:20:28.336 --> 00:20:33.915
Did I show you my home theater LEDs?
00:20:33.915 --> 00:20:35.611
Yeah, and they were done.
00:20:35.651 --> 00:20:36.192
Yeah, I saw the.
00:20:36.192 --> 00:20:38.121
You posted the other day that they were like.
00:20:38.162 --> 00:20:42.717
I saw I was like, wow, I'm done after like two years of sitting around.
00:20:42.717 --> 00:21:01.936
That was another project I did that that weekend was like I'm gonna go and like our bedroom has a fan and it's got a remote control, but like we only have one, so it's like I will need to turn it on or up or off or something, but I can't find the remote because it's in Brooks Nightstand drawer or something.
00:21:01.936 --> 00:21:06.369
And now it's like voice assistant Turn off the fan.
00:21:06.369 --> 00:21:08.253
And we do the same thing for that.
00:21:08.253 --> 00:21:13.744
So you can buy a little LED controller boards and like that light you have in your on the wall there.
00:21:13.744 --> 00:21:24.115
You can make those yourself or whatever, and use that open source firmware Called WLED, which is sweet but I mean, it's soldering iron, don't I now?
00:21:24.307 --> 00:21:27.032
you can buy some stuff pre-installed.
00:21:27.032 --> 00:21:27.453
I'll send you.
00:21:27.453 --> 00:21:48.365
There's a guy in, I think, denmark that I bought my board from his websites Quinn led info or something and he sells little controllers and it like Became the Christmas house lights hobby on steroids and now he just sells devices for your office or whatever else.
00:21:48.365 --> 00:21:51.347
But it's cool, it's fun.
00:21:51.347 --> 00:21:57.805
Like you could program all that if you wanted to with Arduino software, but we've got time for that.
00:21:57.805 --> 00:22:01.541
That's the fun stuff, though it is fun until you like.
00:22:01.541 --> 00:22:07.851
Now I've got to build animations and I've got to connect it to Wi-Fi and then yeah, oh yeah, how do I like hard?
00:22:07.851 --> 00:22:09.916
Do I hard-code it to Wi-Fi and whatever?
00:22:10.586 --> 00:22:15.992
But it's nice fun once you finish building it and you're like oh well, I don't really care about using this as much.
00:22:16.685 --> 00:22:24.967
That's exactly the thing you're like, building it as the fun part, and then, or even sometimes, the building it is like I want to do animations Turns out.
00:22:24.967 --> 00:22:34.201
Writing animations is more complex than you thought, so then you like, maybe I'll just do basic on and off in colors or something.
00:22:34.201 --> 00:22:43.608
But yeah, I bought a 3d printer on black Friday for my Christmas to myself, or Brooke bought it for me or whatever, but that's been fun.
00:22:43.608 --> 00:22:49.535
So that's been my printing all kinds of random Crap I've got like battery organizers.
00:22:49.535 --> 00:22:57.924
I'm about to print off a bunch of drawer Child box that, like you can't buy ones off the shelf for certain cabinets.
00:22:57.924 --> 00:22:59.771
So I was like you know what?
00:22:59.771 --> 00:23:05.897
I could probably print those for a few cents each and it's basically Same as buying it but better.
00:23:05.897 --> 00:23:11.780
But again, it's one of those projects where you're like, oh, now I have a printer but I have to.
00:23:11.780 --> 00:23:21.390
Actually 99% of the work is learning how to do 3D modeling yourself, so going down that rabbit hole now, but it's fun.
00:23:22.101 --> 00:23:30.449
I would love to, but whenever I look at the stuff that people make, I'm like so you're kind of just installing like a dollar tree inside of your house with extra steps.
00:23:31.151 --> 00:23:39.443
Like, like most people who don't know how to design stuff, end up just printing off random toys and crap.
00:23:39.443 --> 00:23:41.906
It's just like trinkets and nothing useful.
00:23:41.906 --> 00:23:53.191
But the other day, trying to take the dog out to go potty, somebody put the dog leash in a different location and it's in a different location every single freaking time.
00:23:53.191 --> 00:23:55.688
I just want it hanging by the front door.
00:23:55.688 --> 00:24:01.523
So I got annoyed and then I realized, oh, I'm annoyed, I should go fix this.
00:24:01.523 --> 00:24:06.090
And we have a baby guy by the front door and I was like you know it'd be perfect.
00:24:06.090 --> 00:24:14.305
I just like make a little U shape that hangs on top of there and a little extension to hang the leash on.
00:24:15.539 --> 00:24:21.883
And an hour later I taught myself plasticity is the tool, if anybody's interested.
00:24:21.883 --> 00:24:33.242
It's kind of like a mix between CAD and blender, so it's intended to be like CAD but more, I guess, friendly for making more organic shapes and stuff.
00:24:33.242 --> 00:24:39.631
It took no time and I had like my prototype, which ended up being I don't know what I'm doing.
00:24:39.631 --> 00:24:47.050
So it turned out like super sturdy, like you could probably hang off of it, and it's only like two inches big or whatever.
00:24:47.050 --> 00:24:50.930
So it's like very small, but way, way overkill.
00:24:50.930 --> 00:24:59.650
So then did it a little bit differently made a little narrower, made the handle holder fit the thing a little bit better, and yada yada.
00:24:59.650 --> 00:25:11.185
And that is a lot of fun, like I could see if we weren't writing software every day, doing engineering kind of stuff like that, cause it's the same kind of problem solving.
00:25:11.426 --> 00:25:14.599
Yeah, you were talking about AutoCAD and whatever else you mentioned.
00:25:14.599 --> 00:25:18.892
I thought at one point I wanted to be a virtual reality game developer.
00:25:18.892 --> 00:25:25.425
So I have like a lot of experience with like programs like Maya and Cinema 4D and like all that modeling stuff.
00:25:25.425 --> 00:25:27.785
That's way harder than it looks.
00:25:29.340 --> 00:25:40.672
I had one very tedious a long time ago in high school or whatever, I was trying to learn how to make like quick three maps, and the 3D stuff is complex.
00:25:40.672 --> 00:25:49.249
Some of that isn't so bad, but once you get into like modeling objects and well, in just like characters, our blocks is very difficult, yeah.
00:25:49.249 --> 00:25:55.531
So going from 2D to 3D is just like orders of magnitude more complex.
00:25:55.531 --> 00:25:58.988
So you guys upgrade to Ruby, 3d, 3d.
00:25:59.028 --> 00:26:00.461
yet yes, we did.
00:26:01.400 --> 00:26:03.606
Everything goes smoothly, cause it did not for me.
00:26:04.940 --> 00:26:05.603
I didn't have a problem.
00:26:05.603 --> 00:26:12.086
Andrea is the one who did the actual upgrade, but other than like installing Rust, kind of easy.
00:26:12.106 --> 00:26:14.210
Oh sure, yeah To do the JIT.
00:26:14.730 --> 00:26:16.653
Yeah, I don't think there's a lot that went into it.
00:26:16.933 --> 00:26:25.482
Yeah, I didn't have any issues originally because I was on my Intel Mac and upgraded and deployed it and everything was fine.
00:26:25.482 --> 00:26:30.613
But somebody was like yo, the Docker image doesn't work.
00:26:30.613 --> 00:26:38.800
And I was like it works fine for me and I was like so explain more about what is wrong Cause.
00:26:38.800 --> 00:26:42.609
Then of course things are broken, but don't tell you any context.
00:26:42.609 --> 00:26:47.329
So we dig in a little bit more and is like on an M line or Apple Silicon and whatever.
00:26:47.329 --> 00:26:57.422
Well, turns out, there's like concurrent Ruby throws a segfault and it's like an issue actually inside Ruby.
00:26:57.422 --> 00:27:00.269
That's been patched, but it's like only.
00:27:00.269 --> 00:27:04.948
I can't remember what the context is if you have to be in Docker for it.
00:27:04.948 --> 00:27:11.865
But it ended up leading to, instead of inheriting from the, the Ruby 3D 3 Docker image.
00:27:11.865 --> 00:27:23.965
The Docker image we'd now use is based off Debian and then downloads and compiles Ruby inside of it which is a blast cause that takes a good 15 minutes to compile.
00:27:25.440 --> 00:27:37.550
So very anxiously waiting for Ruby 3, 3, 1 to be released with that fix, cause it was fixed pretty much immediately but hasn't quite been released yet.
00:27:37.550 --> 00:28:11.226
It doesn't affect everything, so it's not that big of a deal, but enough people I noticed had seen it and I was like, oh my God, like it's one of those situations where, like, the more people that can use Ruby 3, 3, 0, preview 1 and 2 and whatever, the better, because that would have been caught and fixed before Christmas if possible, and if more people were using that and testing it then, yeah, things would have probably been noticed ahead of time.
00:28:11.226 --> 00:28:23.262
I'm guilty of that, not contributing enough to using those like preview versions or whatever, but sometimes there are like those things that slip through the cracks that we wish more people had.
00:28:23.262 --> 00:28:26.027
So but overall, pretty smooth.
00:28:26.027 --> 00:28:32.432
There was very little like almost no breaking changes and just kind of smaller improvements.
00:28:32.432 --> 00:28:37.551
I feel like this release, nothing too major but it's fast.
00:28:38.021 --> 00:28:38.904
Yeah, I just feel good.
00:28:38.904 --> 00:28:44.594
I think is it next release or something that they were talking about maybe why Jet will be enabled by default.
00:28:45.215 --> 00:28:49.628
I think so Sounds right and a soon, near upcoming release, I would say.
00:28:50.220 --> 00:29:05.532
Yeah, I can't remember where I saw that note or something, but I mean, if it's generally going to improve every Rails app, that was kind of like the the benchmark people were shooting for before it became enabled by default and it seems pretty darn good.
00:29:06.020 --> 00:29:13.586
Yeah, well, because that was always the problem with the original implementation, because it made Ruby faster but it made Rails slower.
00:29:13.586 --> 00:29:16.531
And yeah, we're like well, this is useless to me.
00:29:16.531 --> 00:29:23.807
Yeah, if they weren't writing just normal Ruby, so yeah, so, yeah, I'm excited for that.
00:29:24.300 --> 00:29:27.671
I feel like there's good momentum in the ecosystem lately.
00:29:28.181 --> 00:29:33.650
When they came out that Rails eight, they got way more transparent about what's coming in Rails.
00:29:33.650 --> 00:29:34.612
I really enjoyed that.
00:29:34.632 --> 00:29:45.273
I did too and honestly, like, aside from turbo eight isn't like in a final release yet, but it's available.
00:29:45.273 --> 00:29:53.073
And then mission controls like the only major thing left, cause solid queue got released.
00:29:53.073 --> 00:29:58.892
I did a little screencast on that like the day after it was released and looks fantastic.
00:29:58.892 --> 00:30:02.990
It's just cool that it'll be like built in and like a new default.
00:30:02.990 --> 00:30:20.990
But for it to support cause that was sort of the thing was like good job, supported just Postgres and a lot of people use my SQL and then once apps are going to need some sort of job back end and so that being SQLite compatible is exciting.
00:30:21.440 --> 00:30:23.747
So yeah, I'm super excited for that.
00:30:24.680 --> 00:30:39.913
So many hours lost, so many psychic internals tried just I haven't hardly ever had any Any stuff internal inside kick that I've looked at or whatever, because we were debugging or anything.
00:30:40.520 --> 00:30:43.348
Do you use it as a the job adapter?
00:30:43.348 --> 00:30:47.326
See, for everything, I know you're like we don't like you.
00:30:48.640 --> 00:30:51.229
We don't use sidekick worker directly Right.
00:30:52.281 --> 00:30:54.588
So, yeah, that would have solved all my problems.
00:30:54.588 --> 00:31:03.050
Actually, no, yeah, because it was the way it was handling arguments Like cause it like yeah, converts them into a string, like all sorts.
00:31:03.380 --> 00:31:10.309
Cause it's just expected to be JSON compatible stuff and then active job will take care of that for it.
00:31:10.309 --> 00:31:11.811
Yep yeah.
00:31:11.872 --> 00:31:12.673
That explains.
00:31:12.673 --> 00:31:18.901
Yeah, oh, my God, dude, you have no idea how long I've spent with that One sentence.
00:31:18.901 --> 00:31:20.566
I just told you which I knew.
00:31:20.566 --> 00:31:22.751
That's what was happening this morning.
00:31:22.751 --> 00:31:24.546
I told you like two or three hours ago.
00:31:24.546 --> 00:31:27.240
Yeah, as soon as I finished this test I can hop on.
00:31:27.240 --> 00:31:28.663
Me and my project partner.
00:31:29.263 --> 00:31:32.992
We were famous last words jump off a cliff together.
00:31:33.220 --> 00:31:34.684
I was like, dude, I can't.
00:31:34.986 --> 00:31:41.970
That's interesting Cause that's like we hijacked the active job arguments stuff.
00:31:41.970 --> 00:32:08.445
For that in noticed and it's really cool because you can pass in like I want to give you a symbol with this value and like when we pull it back out, it's not been converted to JSON, so it's not switched to a string and we probably could we would still lose access to doing things like you pass in a user model and it can convert it to a global ID and pull it back out.
00:32:08.445 --> 00:32:16.932
We could use hash within different access and the symbol and string key thing would be solved pretty easily.
00:32:16.932 --> 00:32:21.416
But that's really not exactly what we're shooting for there.
00:32:21.416 --> 00:32:24.597
But yeah, using that stuff is pretty cool.
00:32:24.597 --> 00:32:30.637
But of course, as I built and noticed, I was like, oh, we'll just take that from ActiveJob.
00:32:30.637 --> 00:32:36.210
Well, 6.0 and 6.1 and 7.0 have different.
00:32:36.210 --> 00:32:41.000
They don't all convert the same class or the same types.
00:32:41.000 --> 00:32:42.910
Some were added in later versions.
00:32:42.910 --> 00:32:46.509
So there was like some weirdness that we ran into with that.
00:32:46.509 --> 00:32:52.327
It was like it's not all fully compatible between the versions which was a joy.
00:32:53.798 --> 00:33:05.288
I would be so on the Sidekick Wiki because I had remembered when we had talked to Mike a long time ago, because I had always used Sidekick as the adapter for ActiveJob and life was great and peachy Hody does not do that.
00:33:05.288 --> 00:33:08.263
So I remember when we had interviewed Mike.
00:33:09.826 --> 00:33:14.609
You don't do that, probably for the performance thing, to skip ActiveJob because the layers kind of slow.
00:33:15.016 --> 00:33:25.609
I was just gonna say that, yep, so in the Sidekick Wiki because I was trying to explain to my project partner like I've seen these things before so I was kind of no, there's something in my head, I know where to go look.
00:33:25.609 --> 00:33:34.630
And in the Wiki it says that benchmarks show that ActiveJob is two to 20 times slower pushing jobs to Redis and has a three times the processing overhead.
00:33:34.630 --> 00:33:36.973
But that was with Rails 5.14.
00:33:36.973 --> 00:33:40.230
I'd be curious to see if those benchmarks have changed any.
00:33:40.230 --> 00:33:44.609
Just because I love Sidekick, but I would much rather use the ActiveJob API.
00:33:44.932 --> 00:34:08.610
Yeah well, that's the whole part of the benefit of that is like if something happened to Mike and it wasn't maintained anymore, then the point of that is that your Rails app is not necessarily affected or whatever, and I remember John Nunezmaker was just talking about using like Flipper to feature flag different jobs, so they would be like sent to.
00:34:08.610 --> 00:34:18.829
If you wanted to migrate from Rescue to Sidekick or Sidekick to SolidQ, you could trigger them one by one or whatever and migrate them.
00:34:18.829 --> 00:34:41.409
But yeah, that's a pretty old benchmark Cause but I don't know what it's measuring exactly cause like I'd be curious to see now, because in Rails you and it depends on what you're doing, but if you're in queueing a whole bunch of jobs, activejob now supports the like in queue or perform all later and maybe they.
00:34:42.114 --> 00:34:44.389
We can only perform async, isn't it kind of?
00:34:45.114 --> 00:35:01.320
I think that's equivalent to like the perform later, but perform all later will do like a bulk insert into Redis instead of a whole bunch of them, and that I could definitely see if you had a 10,000 jobs, you're in queueing and it's got to do one Redis operation for each one.
00:35:02.036 --> 00:35:03.230
Sure, super slow, I bet.
00:35:03.230 --> 00:35:10.230
But I think maybe that's why ActiveJob was got the new thing in Rails 7.1 to improve that.
00:35:10.230 --> 00:35:13.338
So that may be the thing that's okay.
00:35:13.338 --> 00:35:14.389
Now it's not so bad.
00:35:14.389 --> 00:35:15.400
It may still.
00:35:15.400 --> 00:35:22.179
It will still have overhead cause it's generic, but I think Sidekick may have been one of the only ones to implement that so far.
00:35:22.179 --> 00:35:30.230
I always did the same thing as you where I was like I don't operate at the scale where just going straight to Sidekick workers makes sense.
00:35:30.230 --> 00:35:35.523
So the delay or the small overhead that we pay totally fine.
00:35:36.072 --> 00:35:38.630
There's some features in Sidekick Pro that you can't use.
00:35:38.630 --> 00:35:41.030
I think maybe it's Enterprise, one of those two.
00:35:41.030 --> 00:35:42.362
You can't use them.
00:35:42.362 --> 00:35:50.030
If you don't use I think both probably cause it's like ActiveJob only supports the generic things that are shared across all of them.
00:35:51.360 --> 00:35:59.858
So I was just thinking about like so Go, Rails doesn't really run any jobs except to send emails in the background.
00:35:59.858 --> 00:36:05.675
So we've used Sucker Punch forever because I didn't want to run a separate process and maintain that.
00:36:05.675 --> 00:36:11.030
One of the cool things that I didn't know is a I guess I've seen it, maybe, but forgot all about it.
00:36:11.030 --> 00:36:14.429
But with SolidQ there's one liner.
00:36:14.429 --> 00:36:31.360
You can add a plugin to the Puma config and when Rails starts with Puma, it'll also boot up a separate process for SolidQ's supervisor, and then when it shuts down Rails, it'll also shut down SolidQ's supervisor for you as well.
00:36:31.869 --> 00:36:37.420
So we can just deploy that and it'll be the exact same thing as Sucker Punch.
00:36:37.420 --> 00:36:47.018
But the problem with Sucker Punch was it's running as just extra threads, so there's no ability to queue stuff up to send an email in five minutes or something.
00:36:47.018 --> 00:37:00.809
So I'm really looking forward to that, because then we'll be able to basically get those extra features with the same benefit of not running another process, and that's not a big deal on most hosting anymore.
00:37:00.809 --> 00:37:07.898
But the GoRail server is running a really old Capistrano deployment and it just ran passenger and that was it.
00:37:07.898 --> 00:37:11.681
So eventually I'm going to swap it over to running on Hatchbox.
00:37:11.681 --> 00:37:18.097
It was running fine Actually it was running fine until last night, I guess, and a passenger crashed or something.
00:37:18.097 --> 00:37:22.358
So that may be my queue to go flip-flop it.
00:37:22.358 --> 00:37:27.380
But you yes, man, the puns just keep punning.
00:37:27.380 --> 00:37:29.856
Yeah, I'm excited for that stuff, though.
00:37:30.570 --> 00:37:32.456
Mission Control is going to be really sweet.
00:37:32.456 --> 00:37:42.552
There's even a couple people who know about Mission Control coming, but they built SolidQ front ends anyways in the meantime, might as well, which is cool.
00:37:42.552 --> 00:37:44.177
I like that.
00:37:44.177 --> 00:37:45.610
Jobs will be in the database.
00:37:45.610 --> 00:37:49.681
You'll be able to query them and interact with them just like regular old models.
00:37:49.681 --> 00:38:08.860
That was always kind of a hard thing with Sidekick and I know you shouldn't be messing with that stuff much, but if you ever needed to kill a job or something that was scheduled in the future or something that was like discouraged, but if it's something in your database then it's pretty easy to modify or something.
00:38:08.860 --> 00:38:12.472
So it's good times, lots of new, good stuff.
00:38:12.472 --> 00:38:15.201
Working on SQLite too.
00:38:15.201 --> 00:38:20.536
We'll have to talk to Steven Markheim about that soon, but I know he's been heavy into it.
00:38:20.536 --> 00:38:26.099
And then 37 Signals Crew has been, because that's the back end for all the once products.
00:38:26.969 --> 00:38:28.476
I've been hearing good things about that.
00:38:28.476 --> 00:38:30.896
Now I want to know when Manga is going to come back.
00:38:31.438 --> 00:38:32.992
Oh God, Was it everything.
00:38:33.730 --> 00:38:35.913
It was when I was in college.
00:38:35.913 --> 00:38:39.822
I thought that was what a database was, and then I learned.
00:38:40.309 --> 00:39:00.855
I remember it got popular in college Probably senior year or something and I was like in the same boat or was like I'm just going to keep using my SQL and Postgres and whatever, because that's what everybody's been talking about before, but it sounds cool.
00:39:00.855 --> 00:39:08.856
And then it was really cool to go like prototype an app where you didn't have to worry about migrations, like something didn't exist.
00:39:08.856 --> 00:39:15.981
You just add the attribute and boom, it's there, and then you just delete the ones you don't need and whatever.
00:39:15.981 --> 00:39:18.478
It was kind of awesome for prototyping.
00:39:18.478 --> 00:39:33.978
I wish there was sort of a mode in Rails where you could like let's imagine we have this model and then we like defines attributes, see if that's what we need or not, and then have it turn it into a migration once you're sure.
00:39:33.978 --> 00:39:35.882
That would be cool that would be cool.
00:39:36.530 --> 00:39:48.034
I think I maybe have prototyped something like that a long time ago, but I think that was one of the big selling points to developers in the early days of Mongo was like what if you didn't know what your schema was and you just like got to?
00:39:48.134 --> 00:39:48.836
work right away.
00:39:48.836 --> 00:39:54.480
That's not a value add to me, I mean, unless your schema is like the size of a mountain.
00:39:54.730 --> 00:39:59.280
For anybody starting a new project who didn't know what they were building exactly yet.
00:39:59.280 --> 00:40:12.717
It was great because you could just figure it out and you weren't like constrained to like hold on, make a migration, tell us exactly what you want, and if you got it wrong you got to undo it and you got to edit it and then you got to redo it.
00:40:12.717 --> 00:40:24.181
Or you got to make more migrations and then you got to collapse them later or whatever Felt like constraints, Lots of friction back then for doing that process.
00:40:24.181 --> 00:40:29.994
And then you like do it with Mongo and you're like I didn't have to think about any of that, I just worked on the idea.
00:40:29.994 --> 00:40:32.456
That's pretty interesting.
00:40:32.456 --> 00:40:34.416
There's got to be a way to do that.
00:40:34.971 --> 00:40:53.157
but I encourage you to like stop and be like hey all right, I feel like maybe this is just Nate talking through me, but I feel like your app can be the most screwed up thing on the entire planet, but as long as your database architecture is like really well done, then you're always going to be fine.
00:40:53.391 --> 00:41:07.500
Yeah, I agree with that, but you got to take the time to figure out what your database architecture needs to be sometimes, and it isn't necessarily clear when you haven't written in a single line of code yet or whatever.
00:41:07.500 --> 00:41:11.119
So I think it's like how do you get from?
00:41:11.119 --> 00:41:19.260
You have a mock up of what you need and no information about how it gets stored, or where or why or whatever.
00:41:19.260 --> 00:41:22.798
Going from that to now, we have a schema.
00:41:22.798 --> 00:41:45.670
That process like gets overlooked a lot, I think, and there's something to that process that I think people need more tools or something to just like experiment something like that, Whenever I need to make a database table or make a relation and I don't really know what's supposed to be on it.
00:41:45.800 --> 00:41:47.643
I'm just like Just one JSON column.
00:41:48.311 --> 00:41:53.398
Go to schemaorg, which is the linked and structured data.
00:41:53.398 --> 00:41:55.777
It has all of the schemas for that.
00:41:55.777 --> 00:41:57.409
That, like several-.
00:41:57.409 --> 00:41:59.956
Oh, this is the one coming like Google use and stuff.
00:42:00.210 --> 00:42:04.670
Yeah, this is like what you can embed in your give you jobs on your website.
00:42:04.670 --> 00:42:06.958
You can like use that kind of stuff for-.
00:42:07.018 --> 00:42:11.639
Yes, and it has everything you could think of and it has like they relate to.
00:42:11.639 --> 00:42:25.311
If you want ideas for a table, just go to schemaorg and type in the name of your object, like meeting or event, and it will like just list options and like what they belong to and like what the types are and what the allowed values are Like.
00:42:25.311 --> 00:42:29.161
It'll get you pretty far if you don't really know what you're doing.
00:42:29.572 --> 00:42:31.329
I feel, like I would do that if I had no idea what I was doing.
00:42:31.329 --> 00:42:32.728
I'm like, okay, well, I need a post.
00:42:32.728 --> 00:42:34.173
I would go on schemaorg.
00:42:34.173 --> 00:42:38.690
Look at articles belong to authors and they belong to like main entities.
00:42:38.690 --> 00:42:44.235
Like you can kind of get a really good idea of like what it might look like just from doing that I like that.
00:42:44.327 --> 00:42:44.880
Yeah, that's-.
00:42:44.900 --> 00:42:46.523
That's a W3 standard.
00:42:46.789 --> 00:42:54.780
And that is pretty similar to what I do a lot of times is like if somebody's like, hey, make a blog, I'll go look at blogs.
00:42:54.780 --> 00:43:13.657
Okay, seven out of 10 of these have categories or tags or some sort of like primary image or short descriptions or whatever, and then work my way backwards from that, look at what other people have done and then figure out how does this apply to your thing?
00:43:13.657 --> 00:43:28.981
That's a good way to do it and that's schemaorg has quite a bit they're very generic, but quite a bit of what is an address, because you might live in the US and have no idea that addresses are actually different in other countries and stuff Right.
00:43:28.981 --> 00:43:35.784
So understanding what an address should look like, to be generic globally, is pretty interesting.
00:43:36.070 --> 00:43:40.889
Or you have to go to like Amazon and like what do they do and see how that works.
00:43:41.793 --> 00:43:50.010
One idea I was reading about recently for trying to architect a new app was basically like, I do exactly what you're talking about too, where I like I go look at other apps and see what they're doing.
00:43:50.916 --> 00:44:01.210
But what this person did was which I thought was really interesting was they would take a screenshot of the page or just use like a markup tool in general, like and I think they were using an iPad and they would.
00:44:01.210 --> 00:44:11.690
First they would go through and like highlight in a certain color all attributes of that object and then they would keep on like drawing out okay, well, so these are like the properties.
00:44:11.690 --> 00:44:13.090
Like I'll put them in green.
00:44:13.090 --> 00:44:28.829
So when I like look at the page, I can see all the properties are in green and, like the main, like other related objects, maybe like if I have an address for like a person, like that's a related object, maybe I'll put them like a blue and then, like slowly pulling yourself out until you're looking at the entire page.
00:44:28.829 --> 00:44:30.130
What is this entire page?
00:44:30.130 --> 00:44:40.922
This entire page is a representation of a post object and the post object has these fields that are belong to it specifically, which I can see in green, and these related ones, which I can see in blue.
00:44:40.922 --> 00:44:42.289
This is a really interesting like idea.
00:44:42.289 --> 00:44:43.021
That's a great idea.
00:44:44.498 --> 00:44:47.233
Cause I can immediately imagine that Cause.
00:44:47.273 --> 00:45:04.322
If you gave me a mockup of a blog, it would be like, well, here's an article and then there's an author Okay, that's probably user association and we're pulling the name from there, and then we have comments, and then comments have authors, so they're probably also users.
00:45:05.005 --> 00:45:26.769
And being able to visualize all that Cause that's probably one of the things that's the hardest to learn, as, like a Rails developer at the beginning is we got to design, we got to go from like the UI to that representation in the database and then in our controllers, we have to make sure that we load all the correct stuff so that it can be rendered out to get that final result.
00:45:26.769 --> 00:45:42.898
And that's a really cool way to like just draw in a different color, every sort of different model, and then name the attributes, and then you see exactly where they're rendered on the page and everything you can see where there's a loop of.
00:45:42.898 --> 00:45:56.742
This is the first page of comments or all the comments, and then, oh, every comment has a sub box that's like the commenter, so that we probably need to like eager, load those users and whatever else.
00:45:56.742 --> 00:45:57.592
Pretty cool.
00:45:57.592 --> 00:45:59.898
That's a good, really good way of doing that.
00:46:00.429 --> 00:46:05.322
When you then you can create like a basically your own database of like all these different ones.
00:46:05.322 --> 00:46:16.496
So, oh, I need to build a blog, like you just said, like I'll just go look at all the blogs that I've looked at, that I've already done this for I can quickly just go see like, oh okay, well, there they are, like I don't need to go searching for it.
00:46:17.110 --> 00:46:18.375
Yeah, it's a good one.
00:46:18.375 --> 00:46:19.097
I like that.
00:46:19.097 --> 00:46:22.489
Well, we should probably call it.
00:46:22.489 --> 00:46:26.371
So we got something to talk about next week but I did, I've got.
00:46:26.492 --> 00:46:28.737
There's so many things that I haven't even dude.
00:46:28.737 --> 00:46:29.641
Yeah, broached.
00:46:30.070 --> 00:46:39.280
Yeah, I was going to say there's a ton of stuff after this are probably going to release the new version of notice and that took two months to refactor.
00:46:39.280 --> 00:46:41.155
I attempted refactoring.
00:46:41.155 --> 00:46:47.942
This is one of the rare times where, like, I tried to refactor 15 times, never quite got it right.
00:46:47.942 --> 00:46:55.963
So I actually just wrote Rails plugin new and then just to overrode the gem and like just started completely from scratch.
00:46:55.963 --> 00:47:01.942
So unfortunately that'll make the upgrade process quite a bit harder because so much has changed.
00:47:01.942 --> 00:47:05.340
But I was like I've learned so much since the first version.
00:47:05.829 --> 00:47:10.442
There were some kind of core issues that made it hard to implement some features.
00:47:10.442 --> 00:47:17.717
People had worked around it and made some hacky PRs, but I was like I don't want that, I want to just fix it and do it right.
00:47:17.717 --> 00:47:21.789
So, yeah, I want to talk about that next time.
00:47:21.789 --> 00:47:26.402
So hopefully it'll be out by then and then we can talk about it.
00:47:26.402 --> 00:47:27.795
So sounds good to me.
00:47:27.795 --> 00:47:30.554
Oh man, well, good catching up.
00:47:30.554 --> 00:47:32.219
Dude, missed your face.
00:47:32.219 --> 00:47:33.521
I know Same.
00:47:33.521 --> 00:47:35.117
We can't let it go this long.
00:47:35.117 --> 00:47:37.034
No, I was getting lonely.
00:47:38.351 --> 00:47:45.297
We'll just not make sure we don't schedule too many episodes yeah, never, so we're required to show up every week.
00:47:45.980 --> 00:47:46.420
Never again.
00:47:46.420 --> 00:47:48.632
That was a hell week for me anyway, like that.
00:47:48.632 --> 00:47:50.157
There was a lot going on that week.
00:47:50.157 --> 00:47:51.889
I remember that week very specifically.
00:47:51.889 --> 00:47:54.896
That was not a good week, yeah that was rough.
00:47:55.489 --> 00:47:57.954
So all right, man, I'll catch you next week.
00:47:57.954 --> 00:47:59.411
He's out Later.