1 00:00:01,120 --> 00:00:03,139 Join us as we gather around the hedge, 2 00:00:03,199 --> 00:00:04,500 where we dig into technology, 3 00:00:04,879 --> 00:00:07,599 business, and culture with the finest minds in 4 00:00:07,599 --> 00:00:08,580 computer networking. 5 00:00:21,404 --> 00:00:23,804 Well, hello, Tom. How are you? Hey, Russ. 6 00:00:23,804 --> 00:00:25,344 I'm doing great. Good. 7 00:00:25,724 --> 00:00:26,544 How about you? 8 00:00:27,210 --> 00:00:28,109 I'm okay. 9 00:00:29,769 --> 00:00:31,929 Things are up and down the last couple 10 00:00:31,929 --> 00:00:33,369 of weeks, but, you know so, 11 00:00:34,090 --> 00:00:35,850 are you turning the plant so it gets 12 00:00:35,850 --> 00:00:36,829 evenly roasted? 13 00:00:38,969 --> 00:00:41,049 No. I should, though. That's a good idea. 14 00:00:41,049 --> 00:00:43,024 Yeah. I mean, you know, you wouldn't wanna 15 00:00:43,024 --> 00:00:44,405 eat a plant that's 16 00:00:45,664 --> 00:00:47,744 a raw side and a cooked side. You 17 00:00:47,744 --> 00:00:49,905 you really should. I'm glad that you are 18 00:00:49,905 --> 00:00:51,424 saying this while I have my headphones on 19 00:00:51,424 --> 00:00:53,585 so the plant can't hear you, talking about 20 00:00:53,585 --> 00:00:55,344 eating it because I'm pretty sure the plant 21 00:00:55,344 --> 00:00:56,164 would be offended. 22 00:00:58,039 --> 00:00:59,240 But then I just said If I if 23 00:00:59,240 --> 00:01:00,439 I say it louder yeah. I was gonna 24 00:01:00,439 --> 00:01:01,640 say if I say it louder, I can 25 00:01:01,640 --> 00:01:03,640 make you repeat it and then the plant 26 00:01:03,640 --> 00:01:04,780 will hear either way. 27 00:01:06,680 --> 00:01:10,334 We're eating you plant. Okay. Alright. And today, 28 00:01:10,394 --> 00:01:12,155 we are joined by Mark. Mark, I don't 29 00:01:12,155 --> 00:01:14,254 remember your last name. The Prosser. 30 00:01:14,875 --> 00:01:16,415 Mark Prosser. There we go. 31 00:01:17,435 --> 00:01:18,414 Oh my goodness. 32 00:01:18,715 --> 00:01:20,715 My my mind is like a steel sieve, 33 00:01:20,715 --> 00:01:22,414 only the big chunks stick. 34 00:01:24,120 --> 00:01:25,480 That's what I feel like. It was like 35 00:01:25,480 --> 00:01:27,240 my mind is a steel trap. Yeah. My 36 00:01:27,240 --> 00:01:28,859 mind's a steel trap with holes. 37 00:01:29,159 --> 00:01:30,600 It's okay. It's a regular name. You can 38 00:01:30,600 --> 00:01:32,140 say it once and never say it again. 39 00:01:34,040 --> 00:01:36,140 So, Mark, where are you physically located? 40 00:01:36,495 --> 00:01:39,395 I'm here in Toronto, Ontario, Canada. Okay. 41 00:01:40,334 --> 00:01:43,135 Interesting. We've been watching Murdoch. Now according to 42 00:01:43,135 --> 00:01:44,194 the Murdoch Mysteries, 43 00:01:44,895 --> 00:01:46,895 everything that is of any value in the 44 00:01:46,895 --> 00:01:47,875 modern life 45 00:01:48,255 --> 00:01:50,515 was invented in Toronto by Murdoch. 46 00:01:51,920 --> 00:01:53,200 Okay. I don't know if you ever watched 47 00:01:53,200 --> 00:01:55,119 the mysteries, but that's pretty much the way 48 00:01:55,119 --> 00:01:58,500 it runs. Oh, we invented a way to 49 00:01:59,280 --> 00:02:00,259 wire up a 50 00:02:00,560 --> 00:02:02,560 a bag of money in a bank so 51 00:02:02,560 --> 00:02:04,019 it explodes with dye. 52 00:02:05,375 --> 00:02:07,454 Oh, well, we invented a way to it's 53 00:02:07,454 --> 00:02:10,094 like, by the fifteenth show, you know, he's 54 00:02:10,094 --> 00:02:12,194 like showing Nikola Tesla around 55 00:02:12,495 --> 00:02:15,155 some new electric electronic thing he's invented. 56 00:02:15,455 --> 00:02:17,935 You know, like, yeah. I think I think 57 00:02:17,935 --> 00:02:19,875 the trope might be getting old. 58 00:02:20,340 --> 00:02:21,060 Just just 59 00:02:21,620 --> 00:02:24,580 Yeah. I think that, Hawaiian pizza was invented 60 00:02:24,580 --> 00:02:25,939 on the West Coast Of Canada. So, yeah, 61 00:02:25,939 --> 00:02:28,020 maybe everything in useful to society was invented 62 00:02:28,020 --> 00:02:28,840 here in Toronto. 63 00:02:30,020 --> 00:02:31,480 Yeah. It's that's a possibility. 64 00:02:32,634 --> 00:02:34,175 So we're talking about 65 00:02:34,794 --> 00:02:37,375 CLIs today, which command line interfaces. 66 00:02:38,074 --> 00:02:39,514 Now, you know, for those of you who 67 00:02:39,514 --> 00:02:42,014 are older in the networking world, 68 00:02:42,314 --> 00:02:43,455 that's what we had. 69 00:02:45,034 --> 00:02:45,534 And 70 00:02:47,550 --> 00:02:49,550 I'll I'll say this. It's an interesting point 71 00:02:49,550 --> 00:02:50,530 that people don't 72 00:02:50,830 --> 00:02:53,550 I don't think people understand very well or 73 00:02:53,550 --> 00:02:55,090 or comprehend or or, 74 00:02:55,950 --> 00:02:56,689 glom onto 75 00:02:57,230 --> 00:02:59,569 is that one of the big innovations 76 00:03:00,324 --> 00:03:02,905 of Cisco c of Cisco iOS software 77 00:03:03,604 --> 00:03:04,104 classic 78 00:03:04,965 --> 00:03:05,465 was 79 00:03:05,764 --> 00:03:06,504 the verb, 80 00:03:08,965 --> 00:03:10,424 the verb noun 81 00:03:11,525 --> 00:03:12,664 sort of grammar 82 00:03:13,044 --> 00:03:14,025 in the CLI. 83 00:03:14,719 --> 00:03:17,139 They did it very poorly in many ways. 84 00:03:17,599 --> 00:03:18,340 But before 85 00:03:18,639 --> 00:03:19,139 Cisco, 86 00:03:20,400 --> 00:03:23,300 CLI's were much more information dump 87 00:03:24,800 --> 00:03:27,599 and much less take action on this with 88 00:03:27,599 --> 00:03:28,099 that. 89 00:03:28,965 --> 00:03:30,905 And so I think that's one reason 90 00:03:31,205 --> 00:03:33,145 why the Cisco CLI in particular 91 00:03:33,844 --> 00:03:34,905 really took off 92 00:03:35,205 --> 00:03:37,384 and became something that people 93 00:03:38,004 --> 00:03:38,504 used. 94 00:03:42,509 --> 00:03:43,629 So I don't know if you have any 95 00:03:43,629 --> 00:03:44,829 thoughts on that before we 96 00:03:45,469 --> 00:03:47,469 Yeah. I mean, like, when you compare it 97 00:03:47,469 --> 00:03:49,229 to even systems that are still around, if 98 00:03:49,229 --> 00:03:50,669 you look at, like, the the lens shell 99 00:03:50,669 --> 00:03:52,750 or the bash shells, edge shell, anything like 100 00:03:52,750 --> 00:03:53,250 that, 101 00:03:53,870 --> 00:03:55,409 I still Google how to 102 00:03:55,805 --> 00:03:58,925 extract and compress a tar file today. It's 103 00:03:58,925 --> 00:04:00,604 not so intuitive. As I spoke to it, 104 00:04:00,604 --> 00:04:01,645 it's like it's like, 105 00:04:02,444 --> 00:04:06,205 compress this file with this compression would probably 106 00:04:06,205 --> 00:04:08,145 how it'd be done on Cisco CLI. 107 00:04:09,164 --> 00:04:10,685 But in that file, it's just a bunch 108 00:04:10,685 --> 00:04:13,049 of flags, Right? That add on. Right? And 109 00:04:13,049 --> 00:04:14,889 do I have the right flags? Now that 110 00:04:14,889 --> 00:04:16,250 I probably do the same file over and 111 00:04:16,250 --> 00:04:17,449 over. Yes. But if I have to change 112 00:04:17,449 --> 00:04:18,970 one of those flags, it's not intuitive at 113 00:04:18,970 --> 00:04:20,970 all for me. And it's very information dump 114 00:04:20,970 --> 00:04:23,129 when you look at that man file. Yeah. 115 00:04:23,129 --> 00:04:23,629 Exactly. 116 00:04:24,009 --> 00:04:25,790 The the things are not ordered 117 00:04:26,345 --> 00:04:28,045 in any kind of order or grouping, 118 00:04:30,025 --> 00:04:32,665 whereas with Cisco CLI, they are. And I 119 00:04:32,665 --> 00:04:34,185 think that's I think that was one of 120 00:04:34,185 --> 00:04:35,085 the big revolutions 121 00:04:35,944 --> 00:04:37,165 of the Cisco CLI. 122 00:04:38,185 --> 00:04:39,944 Tom, any thoughts on that before we carry 123 00:04:39,944 --> 00:04:41,245 on to the next little? 124 00:04:42,850 --> 00:04:45,089 No. I think the the structure of a 125 00:04:45,089 --> 00:04:45,589 CLI 126 00:04:46,050 --> 00:04:48,129 is pretty pretty critical. I mean, it's it's 127 00:04:48,129 --> 00:04:49,970 a it's a user interface. I think that's 128 00:04:49,970 --> 00:04:51,250 the thing we when we think of a 129 00:04:51,250 --> 00:04:53,250 user interface, I think often we think of, 130 00:04:53,490 --> 00:04:55,330 like a GUI, like something a web page 131 00:04:55,330 --> 00:04:57,024 you would click on. But the reality is 132 00:04:57,024 --> 00:04:58,485 a CLI is a user interface, 133 00:04:58,785 --> 00:05:01,204 and it's not a machine interface. And so 134 00:05:01,345 --> 00:05:03,024 it's, you know, it needs to be designed 135 00:05:03,024 --> 00:05:04,944 with user experience in mind. It needs to 136 00:05:04,944 --> 00:05:07,925 be something that the human brain would would 137 00:05:07,985 --> 00:05:08,485 find, 138 00:05:08,944 --> 00:05:09,985 as as natural, 139 00:05:10,500 --> 00:05:12,020 in order for it to be effective. It's 140 00:05:12,020 --> 00:05:14,180 not in in some ways, the design of 141 00:05:14,180 --> 00:05:14,839 the CLI 142 00:05:15,220 --> 00:05:17,860 is even more critical than the what we 143 00:05:17,860 --> 00:05:20,120 would call user experience on a web GUI, 144 00:05:20,900 --> 00:05:23,939 because there's the user experience is the only 145 00:05:23,939 --> 00:05:24,439 thing 146 00:05:24,944 --> 00:05:27,104 to that that is even that's the purpose 147 00:05:27,104 --> 00:05:28,324 of the CLI existing. 148 00:05:29,264 --> 00:05:30,464 Yeah. And I think a lot of the 149 00:05:30,464 --> 00:05:33,365 design differential between good CLI and bad CLI 150 00:05:34,064 --> 00:05:35,524 is that bad CLI 151 00:05:37,104 --> 00:05:39,524 always caters to the data structures 152 00:05:41,250 --> 00:05:42,370 and the the, 153 00:05:42,850 --> 00:05:43,350 underlying 154 00:05:44,850 --> 00:05:45,829 function calls. 155 00:05:47,089 --> 00:05:48,389 Whereas good CLI 156 00:05:49,089 --> 00:05:51,329 says, what is the user trying to get 157 00:05:51,329 --> 00:05:51,829 done? 158 00:05:52,610 --> 00:05:53,110 Right. 159 00:05:53,944 --> 00:05:55,545 Yeah. Exactly. I mean, you could see it 160 00:05:55,545 --> 00:05:57,705 in some CLI tools where, like, those new 161 00:05:57,705 --> 00:05:59,964 functions or new features to kind of leak 162 00:06:00,185 --> 00:06:02,745 into the CLI as, like, leaky abstractions. So 163 00:06:02,745 --> 00:06:04,425 they they put a new flag, right, for 164 00:06:04,425 --> 00:06:06,105 the new feature, or they can put the 165 00:06:06,105 --> 00:06:08,365 rework the CLI. There's no flow to it. 166 00:06:10,289 --> 00:06:11,909 Correct. And like I said, Cisco 167 00:06:12,370 --> 00:06:15,110 has messed up, in my opinion, the verb 168 00:06:15,490 --> 00:06:17,990 to noun interaction in many places, 169 00:06:18,610 --> 00:06:20,610 but they at least have the construction there 170 00:06:20,610 --> 00:06:22,449 to start with that they've tried to do 171 00:06:22,449 --> 00:06:23,269 something with. 172 00:06:24,564 --> 00:06:27,464 There are many annoying examples to me. 173 00:06:29,444 --> 00:06:31,625 IP routing, let's see. What was it? 174 00:06:33,925 --> 00:06:35,064 For turning on 175 00:06:35,444 --> 00:06:36,345 fast cache, 176 00:06:36,850 --> 00:06:39,490 I believe it was IP routing cache or 177 00:06:39,490 --> 00:06:40,389 something like 178 00:06:40,769 --> 00:06:43,089 that or IP cache. And then for SaaS, 179 00:06:43,089 --> 00:06:45,509 it SaaS, it was Cisco Express forwarding IP. 180 00:06:46,050 --> 00:06:47,490 And, like, yeah, it's 181 00:06:50,704 --> 00:06:52,324 why? Why do you do such things? 182 00:06:52,784 --> 00:06:55,584 But, anyway alright. So Mark has been doing 183 00:06:55,584 --> 00:06:58,245 a little bit of ad hoc research, perhaps, 184 00:06:59,264 --> 00:07:01,344 gathering impressions and communities. Why don't you tell 185 00:07:01,344 --> 00:07:02,399 us about that, Mark? 186 00:07:03,360 --> 00:07:05,680 Yeah. So, as I've been working more so 187 00:07:05,680 --> 00:07:07,360 in my day job, I've switched to working 188 00:07:07,360 --> 00:07:08,579 on more network automation 189 00:07:08,879 --> 00:07:11,600 and thinking about how systems should be utilized, 190 00:07:11,600 --> 00:07:12,879 how to get the value out of them, 191 00:07:12,879 --> 00:07:14,579 how to represent them to users. 192 00:07:15,185 --> 00:07:17,904 And one thing that was my hypothesis that 193 00:07:17,904 --> 00:07:20,384 the CLI is very important to network engineers 194 00:07:20,384 --> 00:07:21,685 and we should have a CLI 195 00:07:22,224 --> 00:07:23,604 represented in that system. 196 00:07:23,904 --> 00:07:26,404 But as I started speaking with some colleagues 197 00:07:26,464 --> 00:07:28,464 in my network automation space, they basically said 198 00:07:28,464 --> 00:07:29,824 the goal is to get rid of the 199 00:07:29,824 --> 00:07:32,729 CLI in certain senses. It's to represent that 200 00:07:32,729 --> 00:07:33,229 via 201 00:07:33,610 --> 00:07:36,009 GUIs and and other APIs. And the CLI 202 00:07:36,009 --> 00:07:38,250 should be kind of an afterthought. Right? But 203 00:07:38,250 --> 00:07:40,089 CLI should just exist on the systems as 204 00:07:40,089 --> 00:07:41,930 it is if we don't take it away 205 00:07:41,930 --> 00:07:42,430 altogether. 206 00:07:42,735 --> 00:07:44,175 So then I I set it the poll 207 00:07:44,175 --> 00:07:46,414 to multiple communities. One in the Packet Pusher 208 00:07:46,414 --> 00:07:48,814 Slack community, another in the Nanon mailing list, 209 00:07:48,814 --> 00:07:50,995 and another one in the network automation forum. 210 00:07:51,294 --> 00:07:51,794 And 211 00:07:52,254 --> 00:07:53,854 when I put that to the communities, I 212 00:07:53,854 --> 00:07:55,134 found that there was a little more consensus 213 00:07:55,134 --> 00:07:57,394 than I expected. People do like the CLI. 214 00:07:57,769 --> 00:07:59,850 It's just more about the trade offs as 215 00:07:59,850 --> 00:08:02,250 usual when you try to keep it around 216 00:08:02,250 --> 00:08:04,170 in its current form, as well as when 217 00:08:04,170 --> 00:08:06,509 you try to abstract away via GUI. 218 00:08:09,290 --> 00:08:10,269 I think the, 219 00:08:11,714 --> 00:08:13,634 the idea that we would that we would 220 00:08:13,634 --> 00:08:15,634 remove a CLI is interesting or that we 221 00:08:15,634 --> 00:08:16,935 would that we would not, 222 00:08:18,115 --> 00:08:20,354 let it advance with, features that get added 223 00:08:20,354 --> 00:08:22,134 to the underlying code. I think that's, 224 00:08:22,834 --> 00:08:24,854 that's very interesting. I'm not sure, 225 00:08:26,400 --> 00:08:27,920 Yeah. That would be interesting to see what 226 00:08:27,920 --> 00:08:29,460 people think we get out of that, 227 00:08:29,920 --> 00:08:30,900 other than, like, 228 00:08:31,279 --> 00:08:33,679 maybe some saving some development time in the 229 00:08:33,679 --> 00:08:34,179 product. 230 00:08:34,480 --> 00:08:35,540 But, like, the 231 00:08:35,919 --> 00:08:37,440 the idea that we wouldn't have a seal, 232 00:08:37,440 --> 00:08:39,620 I just there's there's too much 233 00:08:40,054 --> 00:08:41,975 too much that can go wrong. There's too 234 00:08:41,975 --> 00:08:44,235 many variables. These systems are so complex. 235 00:08:44,774 --> 00:08:46,475 How would how would you 236 00:08:47,174 --> 00:08:50,375 like, my experience with network automation is is 237 00:08:50,375 --> 00:08:53,115 finding patterns, finding repeatable things, 238 00:08:53,975 --> 00:08:55,194 that you then automate. 239 00:08:56,389 --> 00:08:57,850 You don't you don't 240 00:08:58,550 --> 00:09:00,149 the thing the things that are not repeatable 241 00:09:00,149 --> 00:09:01,430 patterns, you have to be able to deal 242 00:09:01,430 --> 00:09:02,170 with reality, 243 00:09:02,710 --> 00:09:04,710 without having mocked it up in a lab 244 00:09:04,710 --> 00:09:07,269 first. So the idea of no CLI is 245 00:09:07,269 --> 00:09:09,690 very interesting. Seems counter to my thinking. 246 00:09:10,634 --> 00:09:11,914 Yeah. I mean, I concur. I mean, I 247 00:09:11,914 --> 00:09:13,595 think it's all about the patterns. And when 248 00:09:13,595 --> 00:09:14,495 we think about 249 00:09:15,034 --> 00:09:17,115 we know it's really about patterns because there's 250 00:09:17,115 --> 00:09:20,894 those pipe include pipe match, you know, those 251 00:09:21,115 --> 00:09:23,355 looking and trying to parse out those patterns 252 00:09:23,355 --> 00:09:25,500 and, therefore, you try to abstract that away. 253 00:09:25,500 --> 00:09:27,339 It's more about what are those patterns and 254 00:09:27,339 --> 00:09:29,339 why the best way to get them out 255 00:09:29,339 --> 00:09:31,419 of the system. I guess maybe the problem 256 00:09:31,419 --> 00:09:33,100 also comes back that some of the things 257 00:09:33,100 --> 00:09:34,700 we can get from the CLI is looking 258 00:09:34,700 --> 00:09:36,379 at the system as a whole. Like you're 259 00:09:36,379 --> 00:09:38,080 reading TLVs from the ISAS, 260 00:09:39,014 --> 00:09:39,514 IGP. 261 00:09:39,815 --> 00:09:41,095 But when you look at some things that 262 00:09:41,095 --> 00:09:43,754 are like maybe local databases like interface stats 263 00:09:43,975 --> 00:09:46,294 or, you know, labels in the case of 264 00:09:46,294 --> 00:09:48,694 LDP and such like that, like, we maybe 265 00:09:48,694 --> 00:09:50,154 those things need to be 266 00:09:50,709 --> 00:09:52,230 stored in another system that could be read 267 00:09:52,230 --> 00:09:54,549 from a CLI interface is kind of the 268 00:09:54,549 --> 00:09:56,629 the thinking I've moved to towards now. But, 269 00:09:56,629 --> 00:09:58,789 yeah, people do like the CLI because it 270 00:09:58,789 --> 00:10:00,789 can run on the toaster. It has out 271 00:10:00,789 --> 00:10:01,769 of band access. 272 00:10:02,549 --> 00:10:04,925 It's easy to add new features into it, 273 00:10:04,925 --> 00:10:06,845 and it doesn't add a bunch of security 274 00:10:06,845 --> 00:10:09,245 vulnerabilities as well. By creating all these GUIs, 275 00:10:09,245 --> 00:10:11,804 it's harder to run it on maybe two 276 00:10:11,804 --> 00:10:13,965 different browser engines that exist in the world 277 00:10:13,965 --> 00:10:15,884 and Java on the system just to be 278 00:10:15,884 --> 00:10:17,870 able to get the same data from what 279 00:10:17,870 --> 00:10:19,730 you can get from a a serial interface. 280 00:10:20,350 --> 00:10:22,209 Do you think it's ever possible 281 00:10:23,549 --> 00:10:25,389 well well, first of all, I should back 282 00:10:25,389 --> 00:10:28,190 up. So you polled various communities. What was 283 00:10:28,190 --> 00:10:28,850 the result? 284 00:10:29,965 --> 00:10:32,125 I think the the consensus that I wasn't 285 00:10:32,125 --> 00:10:34,284 expecting because I left it open. Like, do 286 00:10:34,284 --> 00:10:36,205 you love the CLI? Do you hate the 287 00:10:36,205 --> 00:10:37,565 CLI? And do you think we could ever 288 00:10:37,565 --> 00:10:39,325 get to a world or would you argue 289 00:10:39,325 --> 00:10:41,725 already enjoy a world where you never see 290 00:10:41,725 --> 00:10:42,865 or touch the CLI 291 00:10:43,740 --> 00:10:46,460 in a network engineering sense. And the consensus 292 00:10:46,460 --> 00:10:49,419 was nobody imagined a world that the CLI 293 00:10:49,419 --> 00:10:51,820 would go away. It's always for it's what 294 00:10:51,820 --> 00:10:54,220 Tom said, those corner cases. All, like, the 295 00:10:54,220 --> 00:10:56,220 little features of what you're looking for, maybe 296 00:10:56,220 --> 00:10:57,980 they don't exist in the CLI. Whether it's 297 00:10:57,980 --> 00:11:01,174 attack command or not, it's typically there. It's 298 00:11:01,174 --> 00:11:02,875 probably the most complete representation 299 00:11:03,334 --> 00:11:06,214 of the underlying function calls, the API, and 300 00:11:06,214 --> 00:11:06,714 etcetera. 301 00:11:08,534 --> 00:11:10,375 Well, and it's always I mean, the CLI 302 00:11:10,375 --> 00:11:12,294 is always going to be there because there 303 00:11:12,294 --> 00:11:14,134 are developers working on these systems that need 304 00:11:14,134 --> 00:11:16,389 to debug them. Like, you're not gonna convince 305 00:11:16,389 --> 00:11:18,170 any vendor to get rid of the CLI. 306 00:11:18,230 --> 00:11:21,110 I don't like, why would you why like, 307 00:11:21,110 --> 00:11:24,009 that's their debugging tool. Right? It seems, 308 00:11:24,470 --> 00:11:25,290 I don't know. 309 00:11:25,750 --> 00:11:27,430 So so one thing I think that we 310 00:11:27,430 --> 00:11:29,110 run into, we don't maybe don't put it 311 00:11:29,110 --> 00:11:30,410 in these terms, is richness. 312 00:11:31,965 --> 00:11:33,504 Even on the output side, 313 00:11:34,125 --> 00:11:35,985 I think that the CLI output 314 00:11:36,445 --> 00:11:37,825 tends to be richer 315 00:11:38,365 --> 00:11:40,605 than any GUI output you can ever come 316 00:11:40,605 --> 00:11:42,524 up with. I I Yeah. I mean 317 00:11:43,325 --> 00:11:44,845 Yeah. I mean, there are there are times 318 00:11:44,845 --> 00:11:46,539 where you can do a graph. Right? And 319 00:11:46,539 --> 00:11:48,700 that's gonna be richer than what you can 320 00:11:48,700 --> 00:11:50,639 display in a strict CLI. 321 00:11:51,500 --> 00:11:52,559 It's not a lot. 322 00:11:53,419 --> 00:11:55,500 Most of the time, the CLI is gonna 323 00:11:55,500 --> 00:11:56,240 be richer. 324 00:11:57,419 --> 00:11:59,259 Yeah. And then the richness, the price that 325 00:11:59,259 --> 00:12:01,315 you pay from the development standpoint of the 326 00:12:01,315 --> 00:12:02,754 development of the product, the price that you 327 00:12:02,754 --> 00:12:04,834 pay for delivering that richness is much lower 328 00:12:04,834 --> 00:12:06,434 in the CLI. You don't have to do 329 00:12:06,434 --> 00:12:08,914 JavaScript and Ajax, blah blah blah, and all 330 00:12:08,914 --> 00:12:10,514 this crap. Like, if you want to display 331 00:12:10,514 --> 00:12:12,375 a rich you wanna dump a data structure, 332 00:12:12,754 --> 00:12:14,355 it's pretty easy to do that, and it's 333 00:12:14,355 --> 00:12:15,634 pretty easy to build it so that it 334 00:12:15,634 --> 00:12:16,889 can do that in the CLI. 335 00:12:17,850 --> 00:12:19,850 And and humans can as long as the 336 00:12:19,850 --> 00:12:22,009 output format in the CLI is something that 337 00:12:22,009 --> 00:12:23,769 makes sense that, again, going back to our 338 00:12:23,769 --> 00:12:25,309 UI design kind of 339 00:12:25,850 --> 00:12:26,350 conversation, 340 00:12:26,970 --> 00:12:28,570 as long as it's done that way, you 341 00:12:28,570 --> 00:12:29,929 can get a lot more bang for your 342 00:12:29,929 --> 00:12:32,190 buck in terms of development of the product. 343 00:12:33,315 --> 00:12:35,475 Yeah. I mean, like, it's doing front end 344 00:12:35,475 --> 00:12:37,875 design for for websites is is quite a 345 00:12:37,875 --> 00:12:40,195 craft. And to add that complexity on top 346 00:12:40,195 --> 00:12:41,554 of the data that we're trying to represent, 347 00:12:41,554 --> 00:12:43,235 it's very noisy. Like, I don't think there's 348 00:12:43,235 --> 00:12:46,679 any comparison between control f or, like, find 349 00:12:46,679 --> 00:12:49,159 in page on a website versus, like, the 350 00:12:49,159 --> 00:12:49,659 complex 351 00:12:50,120 --> 00:12:52,279 GREP and, regex patterns we can do in 352 00:12:52,279 --> 00:12:54,519 the CLI. Like, we can really take the 353 00:12:54,519 --> 00:12:56,860 noise out of what is a large expression 354 00:12:57,000 --> 00:12:59,414 and the richness in that verbose command or 355 00:12:59,654 --> 00:13:01,735 extensive command or whatever it is based on 356 00:13:01,735 --> 00:13:03,674 the CLI or DSL you're referring to. 357 00:13:05,495 --> 00:13:06,134 So another 358 00:13:06,934 --> 00:13:08,714 I think I think part of that ranges 359 00:13:08,774 --> 00:13:11,195 too though is not just on the receiving 360 00:13:11,254 --> 00:13:13,514 outbound side but also on the inbound side. 361 00:13:13,919 --> 00:13:15,539 Being able to configure things. 362 00:13:16,000 --> 00:13:18,480 The first time I saw Cisco Cisco's iOS 363 00:13:18,480 --> 00:13:18,980 CLI 364 00:13:19,440 --> 00:13:21,299 in a web page, I was 365 00:13:21,679 --> 00:13:22,500 really underwhelmed, 366 00:13:24,320 --> 00:13:25,139 really underwhelmed. 367 00:13:26,434 --> 00:13:28,834 Like, it was far harder to configure things 368 00:13:28,834 --> 00:13:30,595 in that environment than it was just to 369 00:13:30,595 --> 00:13:31,334 use a CLI. 370 00:13:31,875 --> 00:13:33,554 So I think that there's a lot of 371 00:13:33,554 --> 00:13:35,574 richness again that you that you lose, 372 00:13:36,914 --> 00:13:38,834 going from one to the other, from going 373 00:13:38,834 --> 00:13:40,595 from a CLI to a g GUI or 374 00:13:40,595 --> 00:13:42,809 whatever it happens to be. So, I mean, 375 00:13:42,809 --> 00:13:43,470 I guess 376 00:13:44,170 --> 00:13:46,170 that's the biggest thing to me. Now one 377 00:13:46,170 --> 00:13:47,850 thing, Mark, is you said you asked three 378 00:13:47,850 --> 00:13:49,790 different communities. Was there a difference 379 00:13:50,490 --> 00:13:51,389 in the results? 380 00:13:51,769 --> 00:13:53,290 Yeah. I I would say that there was. 381 00:13:53,290 --> 00:13:54,750 I mean, the first response, 382 00:13:56,855 --> 00:13:56,918 and I'll never forget it from the Nanog 383 00:13:56,918 --> 00:13:58,294 mailing list was you'll pry it from my 384 00:13:58,294 --> 00:14:00,534 cold dead hands. Right? That's kind of what 385 00:14:00,534 --> 00:14:01,274 I expected, 386 00:14:01,894 --> 00:14:02,714 from that community. 387 00:14:03,095 --> 00:14:03,595 But 388 00:14:04,054 --> 00:14:07,014 what came after was how each community kind 389 00:14:07,014 --> 00:14:07,834 of differentiated 390 00:14:08,214 --> 00:14:09,574 what it is that they love about the 391 00:14:09,574 --> 00:14:11,720 CLI or what they would like to replicate 392 00:14:11,720 --> 00:14:13,500 in another system from the CLI. 393 00:14:15,960 --> 00:14:18,440 In in the network automation forum, it was 394 00:14:18,440 --> 00:14:20,840 really about getting those corner cases, getting those 395 00:14:20,840 --> 00:14:23,160 patterns represented, which is a hard fact to 396 00:14:23,160 --> 00:14:25,179 do to get that 100% completion. 397 00:14:25,995 --> 00:14:26,735 In the 398 00:14:28,315 --> 00:14:30,315 in the, NANOG mailing list is more about 399 00:14:30,315 --> 00:14:30,975 the reliability 400 00:14:31,355 --> 00:14:34,254 of the CLI, the the familiarity, the intuitiveness 401 00:14:34,554 --> 00:14:36,154 for a lot of these systems that people 402 00:14:36,154 --> 00:14:36,975 grew up on. 403 00:14:37,274 --> 00:14:39,240 And in the packet pushers, it was a 404 00:14:39,240 --> 00:14:41,080 mix of both. Right? So I guess they're 405 00:14:41,080 --> 00:14:42,679 more of the hybrid environment. We have a 406 00:14:42,679 --> 00:14:43,799 little bit of this side and a little 407 00:14:43,799 --> 00:14:44,620 bit of that side. 408 00:14:45,080 --> 00:14:47,500 So there was that difference, but 409 00:14:48,519 --> 00:14:50,679 it wasn't a huge difference. They both considered, 410 00:14:50,679 --> 00:14:52,299 like, the the trade offs, the advantages. 411 00:14:52,664 --> 00:14:54,424 Right? They just disagree on what what is 412 00:14:54,424 --> 00:14:56,584 the most important one. So they all generally 413 00:14:56,584 --> 00:15:00,345 agreed that they said, basically, you'll get rid 414 00:15:00,345 --> 00:15:01,544 of it when you pry it from my 415 00:15:01,544 --> 00:15:02,845 gold cold dead hands. 416 00:15:03,625 --> 00:15:06,105 But they were for different reasons. Some people 417 00:15:06,105 --> 00:15:07,804 were very strongly about, 418 00:15:09,600 --> 00:15:10,820 like you said, like, 419 00:15:11,840 --> 00:15:13,840 speed or whatever, which by the way speed 420 00:15:13,840 --> 00:15:15,960 is another big one to me. CLIs are 421 00:15:15,960 --> 00:15:18,000 a lot always a lot faster. I can't 422 00:15:18,000 --> 00:15:18,500 imagine 423 00:15:19,120 --> 00:15:21,360 ever having a GUI that's faster than a 424 00:15:21,360 --> 00:15:21,860 CLI. 425 00:15:22,504 --> 00:15:24,424 Now I say that, but, you know, now 426 00:15:24,424 --> 00:15:25,804 when you talk about writing, 427 00:15:26,504 --> 00:15:27,565 like, just writing, 428 00:15:28,184 --> 00:15:30,184 people go, oh, well, I would rather use 429 00:15:30,184 --> 00:15:32,445 markup or I would rather use something else. 430 00:15:32,664 --> 00:15:34,044 I'd rather not 431 00:15:35,440 --> 00:15:38,820 use word or something that is menu driven. 432 00:15:39,440 --> 00:15:41,039 And I actually find it a little bit 433 00:15:41,039 --> 00:15:43,220 the opposite. And I'll tell you why, because 434 00:15:44,639 --> 00:15:45,139 I 435 00:15:45,600 --> 00:15:46,820 don't want to memorize 436 00:15:47,519 --> 00:15:49,779 yet another markup language 437 00:15:51,665 --> 00:15:55,445 for writing Word documents or just generic documents. 438 00:15:56,225 --> 00:15:58,545 And it's very easy when you start with 439 00:15:58,545 --> 00:16:00,725 one to end up needing to memorize, 440 00:16:01,345 --> 00:16:03,105 oh, there's markup over here, but then there's 441 00:16:03,105 --> 00:16:05,339 the specialized version of markup over there. And, 442 00:16:05,339 --> 00:16:07,019 oh, by the way, there's this XML thing 443 00:16:07,019 --> 00:16:08,699 over here that you should use. Oh, and 444 00:16:08,699 --> 00:16:10,699 there's a different one over there. It's like 445 00:16:10,699 --> 00:16:12,799 it's so easy to write CLIs 446 00:16:14,220 --> 00:16:15,199 that we have 447 00:16:15,500 --> 00:16:16,799 way more of them. 448 00:16:17,819 --> 00:16:19,679 And so there's some 449 00:16:20,335 --> 00:16:22,735 counter to that in my mind where I'm 450 00:16:22,735 --> 00:16:24,335 doing things where they have a lot of 451 00:16:24,335 --> 00:16:24,835 text, 452 00:16:25,615 --> 00:16:27,215 and I don't have a lot of rich 453 00:16:27,215 --> 00:16:27,715 formatting 454 00:16:28,095 --> 00:16:29,634 or a lot of rich data 455 00:16:30,335 --> 00:16:32,495 where this where the GUI actually makes more 456 00:16:32,495 --> 00:16:33,475 sense to me. 457 00:16:34,570 --> 00:16:36,089 It's a I think you hit you hit 458 00:16:36,089 --> 00:16:37,210 a really interesting point. 459 00:16:37,690 --> 00:16:39,370 What I didn't ask the community and I 460 00:16:39,370 --> 00:16:40,970 didn't do a follow-up on, which I would 461 00:16:40,970 --> 00:16:42,889 love to do at some time, is that 462 00:16:42,889 --> 00:16:45,049 everybody says you love the CLI and you 463 00:16:45,049 --> 00:16:46,889 hate the GUI. Some of them say maybe 464 00:16:46,889 --> 00:16:48,490 I prefer a GUI for certain things, and 465 00:16:48,490 --> 00:16:49,470 I hate the CLI. 466 00:16:49,955 --> 00:16:52,115 But if you go deeper and think this 467 00:16:52,115 --> 00:16:54,115 back to, like, people who use text editors 468 00:16:54,115 --> 00:16:56,674 for code, maybe everybody uses Vim and everybody 469 00:16:56,674 --> 00:16:59,794 use Emacs, both agree that bloated IDs suck 470 00:16:59,794 --> 00:17:01,875 in their opinion. But ask them to get 471 00:17:01,875 --> 00:17:03,475 along in the same room. It's like if 472 00:17:03,475 --> 00:17:05,019 they if they eliminated 473 00:17:05,320 --> 00:17:07,480 that enemy, do they agree on what the 474 00:17:07,480 --> 00:17:10,119 structure and pattern should be within their text 475 00:17:10,119 --> 00:17:12,519 editors, their terminal based text editors? No. They 476 00:17:12,519 --> 00:17:14,539 would say the patterns aren't the same. So 477 00:17:14,599 --> 00:17:16,599 the people who talk about these domain specific 478 00:17:16,599 --> 00:17:19,019 languages or CLIs, they might actually 479 00:17:19,365 --> 00:17:20,805 infight when you get to what is the 480 00:17:20,805 --> 00:17:23,125 best way to represent these patterns. Like, people 481 00:17:23,125 --> 00:17:25,204 who are really into Juniper syntax, people who 482 00:17:25,204 --> 00:17:27,605 are really into, I guess, Cumulus syntax in 483 00:17:27,605 --> 00:17:28,724 the past, and, 484 00:17:29,525 --> 00:17:32,670 maybe CLI classic iOS versus IOS XR. I'm 485 00:17:32,670 --> 00:17:34,430 very much in the iOS XR camp. I 486 00:17:34,430 --> 00:17:36,350 like the the patterns and expressions that that 487 00:17:36,350 --> 00:17:37,250 gives for me. 488 00:17:37,869 --> 00:17:40,670 So it's it's that. So, yes, it's so 489 00:17:40,670 --> 00:17:43,730 people basically say, I just want similar patterns. 490 00:17:44,110 --> 00:17:45,470 And for me, I agree with you. I 491 00:17:45,470 --> 00:17:46,369 think that CLI 492 00:17:47,355 --> 00:17:49,775 is my way of exploring the patterns 493 00:17:50,154 --> 00:17:51,914 and the system, and it's I find it's 494 00:17:51,914 --> 00:17:53,595 intuitive. I can learn a lot about the 495 00:17:53,595 --> 00:17:54,095 system 496 00:17:54,474 --> 00:17:57,214 quickly on the CLI, especially during an incident. 497 00:17:57,515 --> 00:17:59,275 And then maybe I go to something like 498 00:17:59,275 --> 00:17:59,934 the API 499 00:18:00,394 --> 00:18:00,894 for 500 00:18:01,269 --> 00:18:03,829 the final product later on, like and that 501 00:18:03,829 --> 00:18:05,750 would be equivalent to, like, LaTeX. I write 502 00:18:05,750 --> 00:18:08,309 the document or the idea and the drafts 503 00:18:08,309 --> 00:18:09,910 in plain text. And I would go to, 504 00:18:09,910 --> 00:18:11,130 like, something for typesetting 505 00:18:11,829 --> 00:18:12,569 or formatting 506 00:18:12,950 --> 00:18:15,509 later after the exploratory portion of the writing 507 00:18:15,509 --> 00:18:17,964 is done. Yeah. So one way I would 508 00:18:17,964 --> 00:18:19,825 express that is to me, 509 00:18:20,444 --> 00:18:22,605 is that if I'm in an information rich 510 00:18:22,605 --> 00:18:23,105 environment, 511 00:18:23,644 --> 00:18:24,544 but I understand 512 00:18:26,044 --> 00:18:27,585 how the system works, 513 00:18:30,190 --> 00:18:31,890 I might not know how it's implemented. 514 00:18:32,509 --> 00:18:33,330 This implementation 515 00:18:34,190 --> 00:18:36,830 of that software works, but I understand how 516 00:18:36,830 --> 00:18:38,850 the software itself works. 517 00:18:41,230 --> 00:18:43,730 And, again, very inter information rich environment. 518 00:18:44,325 --> 00:18:46,984 I find CLIs are easier to explore, 519 00:18:47,605 --> 00:18:50,484 to traverse the space, and to query and 520 00:18:50,484 --> 00:18:51,304 ask questions 521 00:18:51,765 --> 00:18:54,664 to find what I'm looking for. Whereas GUIs 522 00:18:55,204 --> 00:18:56,105 tend to be 523 00:18:56,884 --> 00:18:58,505 it's in that menu someplace 524 00:18:59,000 --> 00:19:01,340 because somebody thought that's where it should be, 525 00:19:02,039 --> 00:19:03,500 and it's hard to discover. 526 00:19:03,960 --> 00:19:06,859 So discovery in information mission environment is 527 00:19:07,320 --> 00:19:09,320 easier with a CLI. Now, you know, go 528 00:19:09,320 --> 00:19:11,259 back to forward processing and coding. 529 00:19:11,954 --> 00:19:13,095 I mean, in reality, 530 00:19:13,634 --> 00:19:15,234 a lot of the argument I think gets 531 00:19:15,234 --> 00:19:17,875 so heated specifically because and people are gonna, 532 00:19:17,875 --> 00:19:18,375 like, 533 00:19:18,755 --> 00:19:20,994 be mad at me for saying this, but 534 00:19:20,994 --> 00:19:23,954 because it's not an is information rich of 535 00:19:23,954 --> 00:19:24,694 an environment 536 00:19:25,490 --> 00:19:26,390 in many ways. 537 00:19:27,730 --> 00:19:28,869 Unless you've built 538 00:19:29,410 --> 00:19:30,150 the code 539 00:19:30,609 --> 00:19:33,269 syntax, the language syntax into 540 00:19:33,730 --> 00:19:34,390 the IDE 541 00:19:35,410 --> 00:19:36,869 or into the, 542 00:19:37,490 --> 00:19:39,910 into the the the text editor. 543 00:19:41,255 --> 00:19:42,455 There's not, I mean, there's not a lot 544 00:19:42,455 --> 00:19:43,115 of richness 545 00:19:43,894 --> 00:19:46,295 in in those types of things. And so 546 00:19:46,295 --> 00:19:48,375 most of the richness comes from building those 547 00:19:48,375 --> 00:19:49,434 things into 548 00:19:50,615 --> 00:19:52,875 the building that the constructs into 549 00:19:53,250 --> 00:19:54,710 the CLI itself, 550 00:19:55,089 --> 00:19:57,089 or into the programming environment, the IDE or 551 00:19:57,089 --> 00:19:58,309 whatever it is you're using, 552 00:19:58,849 --> 00:20:01,890 and then finding clever ways to call that 553 00:20:01,890 --> 00:20:03,430 syntax up more quickly 554 00:20:04,130 --> 00:20:06,309 than you as a coder remembering it 555 00:20:07,089 --> 00:20:08,325 and putting it in. 556 00:20:09,044 --> 00:20:10,345 And so, you know, 557 00:20:11,365 --> 00:20:13,384 VIM does some things very quickly. 558 00:20:14,804 --> 00:20:16,825 Emacs does other things very quickly. 559 00:20:18,005 --> 00:20:19,924 A lot of the quickness is in search 560 00:20:19,924 --> 00:20:20,664 and replace. 561 00:20:21,440 --> 00:20:24,000 And in mass text moves. I've gotta move 562 00:20:24,000 --> 00:20:26,240 every I created a new function, and I've 563 00:20:26,240 --> 00:20:27,920 gotta grab everything and move it to the 564 00:20:27,920 --> 00:20:28,420 right 565 00:20:28,799 --> 00:20:31,279 by one tab or by four spaces or 566 00:20:31,279 --> 00:20:32,740 whatever your style is. 567 00:20:34,235 --> 00:20:36,255 Those are very specialized operations. 568 00:20:37,755 --> 00:20:39,035 So I don't know. I mean, it just 569 00:20:39,035 --> 00:20:40,955 seems to me again, a lot of this 570 00:20:40,955 --> 00:20:42,815 comes down to the richness of 571 00:20:43,515 --> 00:20:44,015 the 572 00:20:45,115 --> 00:20:46,174 the the implementations, 573 00:20:46,634 --> 00:20:47,295 the protocols, 574 00:20:47,755 --> 00:20:48,255 the 575 00:20:48,910 --> 00:20:52,029 the datasets that you're working with. Yeah. If 576 00:20:52,029 --> 00:20:53,549 you come back to ISAS, I mean, I 577 00:20:53,549 --> 00:20:54,910 agree with you. I could go to a 578 00:20:54,910 --> 00:20:55,410 new 579 00:20:55,950 --> 00:20:56,450 CLI. 580 00:20:56,829 --> 00:20:58,130 And as long as I know 581 00:20:58,509 --> 00:21:01,009 what pattern or TLV I'm looking for, 582 00:21:01,505 --> 00:21:04,305 Doesn't matter how large how large in scale 583 00:21:04,305 --> 00:21:05,585 it is, how you've kind of designed a 584 00:21:05,585 --> 00:21:06,785 little bit here, as long as I know 585 00:21:06,785 --> 00:21:07,684 where to find 586 00:21:07,985 --> 00:21:09,904 that particular element of the network, like who 587 00:21:09,904 --> 00:21:12,384 advertises prefix to me or this TLV with 588 00:21:12,384 --> 00:21:14,960 a prefix attached to it. I can look 589 00:21:14,960 --> 00:21:15,619 for that. 590 00:21:16,079 --> 00:21:18,079 Whereas in a GUI, it's it's kind of 591 00:21:18,079 --> 00:21:20,639 a predetermined query. Right? It's the query language 592 00:21:20,639 --> 00:21:22,000 kind of the art of the query language 593 00:21:22,000 --> 00:21:24,159 goes away. I might be able to search 594 00:21:24,159 --> 00:21:25,759 that. I might not be able to search 595 00:21:25,759 --> 00:21:28,159 that. But in the CLI, I can define 596 00:21:28,159 --> 00:21:30,924 that query to match what I know of 597 00:21:30,924 --> 00:21:32,704 the system or how the system 598 00:21:33,164 --> 00:21:33,984 should be implemented. 599 00:21:34,924 --> 00:21:37,804 So I'm curious, Mark, what is what is 600 00:21:37,804 --> 00:21:40,285 your favorite CLI, if you don't mind saying 601 00:21:40,285 --> 00:21:42,525 which which vendor or which experience would you 602 00:21:42,525 --> 00:21:43,690 say is the one that you're like, yeah. 603 00:21:43,690 --> 00:21:44,890 If they could all be like this. You 604 00:21:44,890 --> 00:21:46,430 mentioned iOSXR before. 605 00:21:47,210 --> 00:21:48,570 What what do you think is your your 606 00:21:48,570 --> 00:21:50,590 favorite? I think yeah. It 607 00:21:51,930 --> 00:21:53,710 it really depends on, I guess, like, 608 00:21:54,090 --> 00:21:55,769 the environments I've worked in in the past. 609 00:21:55,769 --> 00:21:58,490 But I think my favorite, my little favorite 610 00:21:58,490 --> 00:21:59,825 pet is iOSXR. 611 00:22:00,845 --> 00:22:02,525 I'm most used to its patterns. I've worked 612 00:22:02,525 --> 00:22:03,825 with it over many years. 613 00:22:04,125 --> 00:22:06,144 I'm most familiar with it. Classic iOS, 614 00:22:07,164 --> 00:22:09,505 I like some of the simplicity from it. 615 00:22:09,565 --> 00:22:12,099 And and with the Juno CLI, that's kind 616 00:22:12,099 --> 00:22:13,559 of transformed over the years. 617 00:22:14,019 --> 00:22:15,940 I like some of the verbose elements from 618 00:22:15,940 --> 00:22:17,859 that. Right? Like, when I type extensive, I 619 00:22:17,859 --> 00:22:19,619 know what I expect from there. If I 620 00:22:19,619 --> 00:22:21,539 type terse, I know what I expect from 621 00:22:21,539 --> 00:22:23,460 there. It depends on what operation I'm doing 622 00:22:23,460 --> 00:22:25,304 at what time. But I was six are 623 00:22:25,304 --> 00:22:27,384 in the argument of pets versus cattle. It's 624 00:22:27,384 --> 00:22:29,244 my favorite pet in that regard. 625 00:22:30,345 --> 00:22:32,525 And, actually, I think that leads to another 626 00:22:33,065 --> 00:22:34,765 thing that I think comes up in CLI 627 00:22:34,904 --> 00:22:35,404 discussions, 628 00:22:35,785 --> 00:22:36,444 and programmability. 629 00:22:37,529 --> 00:22:40,009 I I one model that that I think 630 00:22:40,009 --> 00:22:41,850 is is a great way to approach this 631 00:22:41,850 --> 00:22:44,250 is the the CLI actually doesn't have to 632 00:22:44,250 --> 00:22:44,750 be 633 00:22:45,130 --> 00:22:46,490 so you you're you're gonna have to have 634 00:22:46,490 --> 00:22:48,330 some sort of programmatic interface. I mean, that's 635 00:22:48,330 --> 00:22:51,210 pretty obvious. And and, really, the CLI should 636 00:22:51,210 --> 00:22:53,554 use the same should use the same APIs 637 00:22:53,615 --> 00:22:55,774 that everybody else is using to program the 638 00:22:55,774 --> 00:22:58,815 box. Right? Like, ideally, you'd have a CLI 639 00:22:58,815 --> 00:23:00,515 that is just a client application, 640 00:23:01,375 --> 00:23:01,875 and 641 00:23:02,335 --> 00:23:02,835 the, 642 00:23:03,375 --> 00:23:05,214 you know, the programmatic inter to the to 643 00:23:05,214 --> 00:23:07,380 the regular programmatic interface. One of the things 644 00:23:07,380 --> 00:23:09,220 that drives me crazy the most is when 645 00:23:09,220 --> 00:23:10,119 there's not parity 646 00:23:10,580 --> 00:23:13,480 between either for monitoring or for configuration between 647 00:23:13,779 --> 00:23:15,460 a CLI and what you get in out 648 00:23:15,460 --> 00:23:17,320 of the API or the programmatic interface. 649 00:23:17,859 --> 00:23:19,859 Yeah. I I concur completely. I mean, that 650 00:23:19,859 --> 00:23:21,619 actually came up in the NANOG mailing list, 651 00:23:21,619 --> 00:23:22,759 right, about how it's 652 00:23:23,085 --> 00:23:25,964 maybe representing the lower layers. And in some 653 00:23:25,964 --> 00:23:26,464 environments, 654 00:23:27,085 --> 00:23:28,525 there is a pretty good parity. And in 655 00:23:28,525 --> 00:23:30,865 some environments, it's very apparent that there isn't. 656 00:23:31,244 --> 00:23:33,164 Yeah. So I don't wanna name any vendor 657 00:23:33,164 --> 00:23:34,605 specifically, but you can go read in the 658 00:23:34,605 --> 00:23:36,359 mail list and see which vendors are being 659 00:23:36,519 --> 00:23:38,200 mentioned on the good side and bad side. 660 00:23:38,200 --> 00:23:40,359 Some have a back end database everybody draws 661 00:23:40,359 --> 00:23:41,740 from, some do not. 662 00:23:42,440 --> 00:23:44,039 And some and some are in the middle, 663 00:23:44,039 --> 00:23:44,539 honestly. 664 00:23:44,920 --> 00:23:46,839 Let's be honest. I mean, if our routing, 665 00:23:46,839 --> 00:23:48,940 for instance, some of it has been 666 00:23:49,525 --> 00:23:51,765 yangified as we might say, and other parts 667 00:23:51,765 --> 00:23:52,505 have not been. 668 00:23:53,045 --> 00:23:54,184 And so it's inconsistent 669 00:23:54,565 --> 00:23:55,865 across the different protocols, 670 00:23:57,365 --> 00:23:59,684 which is maddening as an operator. But, you 671 00:23:59,684 --> 00:24:02,964 know, it's it's a coding problem. Somebody's gotta 672 00:24:02,964 --> 00:24:03,865 go code it. 673 00:24:04,480 --> 00:24:05,220 And, you know, 674 00:24:05,599 --> 00:24:07,279 it's up to source. Somebody's gotta go code 675 00:24:07,279 --> 00:24:07,779 it. 676 00:24:08,079 --> 00:24:09,299 Yeah. So 677 00:24:10,319 --> 00:24:11,599 I don't really have a lot of other 678 00:24:11,599 --> 00:24:14,000 questions on this unless you have another interesting 679 00:24:14,000 --> 00:24:15,460 aspect mark to the 680 00:24:15,919 --> 00:24:17,599 survey that you did. Do you have any 681 00:24:17,599 --> 00:24:19,095 other Well, I 682 00:24:19,794 --> 00:24:21,234 think, like, if if I could bring it 683 00:24:21,234 --> 00:24:23,315 back to anything at all is that, like, 684 00:24:23,315 --> 00:24:24,214 when you consider 685 00:24:24,595 --> 00:24:26,595 what Tom just said is that maybe a 686 00:24:26,595 --> 00:24:28,355 hybrid approach is the way to look at 687 00:24:28,355 --> 00:24:30,274 this, that the CLI will always be there 688 00:24:30,274 --> 00:24:32,069 and the APIs will continue to be developed 689 00:24:32,069 --> 00:24:34,409 based on certain patterns. These are still developers 690 00:24:34,869 --> 00:24:36,470 delivering to their customers at the end of 691 00:24:36,470 --> 00:24:38,230 the day. And we need to consider the 692 00:24:38,230 --> 00:24:40,250 fact that we might have to, 693 00:24:40,710 --> 00:24:42,149 I guess, some people would say, abuse the 694 00:24:42,149 --> 00:24:44,569 CLI for certain purposes if we're doing automation 695 00:24:44,630 --> 00:24:46,809 and allow it to be a human interface, 696 00:24:47,109 --> 00:24:48,785 you know, a user interface as Tom said 697 00:24:48,785 --> 00:24:49,285 originally. 698 00:24:50,065 --> 00:24:52,325 But going forward, we still have to remind 699 00:24:52,384 --> 00:24:53,285 ourselves that 700 00:24:53,744 --> 00:24:55,125 every time you look at systems, 701 00:24:56,065 --> 00:24:57,424 I can't remember the first name, but a 702 00:24:57,424 --> 00:24:59,265 man named Trist back in the nineteen fifties 703 00:24:59,265 --> 00:25:01,460 was studying British coal mines. And he came 704 00:25:01,460 --> 00:25:03,740 up with the concept of socio technical systems, 705 00:25:03,740 --> 00:25:05,740 which has come forward and forward and forward 706 00:25:05,740 --> 00:25:09,440 in many domains, DevOps, platform engineering, whatever. But 707 00:25:09,820 --> 00:25:11,980 the the consensus was that no matter what 708 00:25:11,980 --> 00:25:14,059 the system is, when you bring automation into 709 00:25:14,059 --> 00:25:17,115 it, it's always about the interaction between humans 710 00:25:17,255 --> 00:25:19,194 and the machines. Not just the machines, 711 00:25:19,734 --> 00:25:20,714 not just the humans. 712 00:25:21,174 --> 00:25:23,994 Right? So, there's this little comic once, 713 00:25:24,615 --> 00:25:26,375 little comic that's really popular on the website 714 00:25:26,375 --> 00:25:27,355 or, XKCD, 715 00:25:28,380 --> 00:25:30,460 x k c d seven one seven eight 716 00:25:30,460 --> 00:25:32,700 two. It's got entitled team chat and it 717 00:25:32,700 --> 00:25:34,140 was talking about how back in the day, 718 00:25:34,140 --> 00:25:36,539 everyone used to use IRC. But then slowly, 719 00:25:36,539 --> 00:25:38,299 people started to move to Skype and that 720 00:25:38,299 --> 00:25:40,000 most of the team was still using IRC. 721 00:25:40,224 --> 00:25:42,224 Then almost everybody moved to Slack, but a 722 00:25:42,224 --> 00:25:44,304 few people had the bridge via IRC to 723 00:25:44,304 --> 00:25:46,144 get in. And it makes this joke that 724 00:25:46,144 --> 00:25:47,044 far in the future, 725 00:25:47,345 --> 00:25:48,804 most universe will reach 726 00:25:49,105 --> 00:25:51,684 complete singularity, but there'll be that one person 727 00:25:51,744 --> 00:25:53,730 who still has the IRC bridge to connect 728 00:25:53,730 --> 00:25:55,410 in. He says, I have it just the 729 00:25:55,410 --> 00:25:57,329 way I like. Right? Yeah. So it's the 730 00:25:57,329 --> 00:25:59,349 same thing as, like, having, like, secure CRT 731 00:25:59,410 --> 00:25:59,910 scripts 732 00:26:00,289 --> 00:26:02,390 to really manipulate that iOSXR 733 00:26:02,930 --> 00:26:05,410 system at 2AM and fix it faster than 734 00:26:05,410 --> 00:26:08,305 anyone else could trying to reconcile it via, 735 00:26:08,445 --> 00:26:10,525 you know, a source of truth, a modeling 736 00:26:10,525 --> 00:26:12,205 tool or anything like that. Right? Trying to 737 00:26:12,205 --> 00:26:14,865 say, like, infrastructure as code, that person will 738 00:26:15,325 --> 00:26:17,884 triage circles around you because they understand the 739 00:26:17,884 --> 00:26:18,384 patterns 740 00:26:18,684 --> 00:26:20,684 of that system and it works best for 741 00:26:20,684 --> 00:26:21,184 them. 742 00:26:21,609 --> 00:26:22,109 So, 743 00:26:22,490 --> 00:26:25,130 in this whole argument of pets versus cattle 744 00:26:25,130 --> 00:26:26,809 that I've kind of brought up recently, I 745 00:26:26,809 --> 00:26:27,950 think that the CLI 746 00:26:28,329 --> 00:26:30,809 can be advanced to become more of a 747 00:26:30,809 --> 00:26:33,289 cattle dog. Right? It's like kind of a 748 00:26:33,289 --> 00:26:35,544 pet for us. You can pet it, but 749 00:26:35,544 --> 00:26:36,845 it's still herding 750 00:26:37,304 --> 00:26:39,065 the cattle that is in the system, which 751 00:26:39,065 --> 00:26:40,125 are prefixes, 752 00:26:40,904 --> 00:26:41,404 interfaces, 753 00:26:42,105 --> 00:26:44,664 all that data richness, which you can still 754 00:26:44,664 --> 00:26:46,505 feed it ice cream. You can pet it. 755 00:26:46,505 --> 00:26:49,005 You can name it. It's familiar, and it's 756 00:26:49,639 --> 00:26:51,639 reliable in that sense. You can bring it 757 00:26:51,639 --> 00:26:52,700 at home at night. 758 00:26:53,000 --> 00:26:54,619 So I think that's kind of the advancement 759 00:26:54,679 --> 00:26:57,319 that I'm seeing in in the space. People 760 00:26:57,319 --> 00:26:59,639 are starting to understand that you can't go 761 00:26:59,639 --> 00:27:01,579 fully on the technical side. 762 00:27:02,215 --> 00:27:04,295 Can't go fully on the socio side. Right? 763 00:27:04,295 --> 00:27:06,455 And and hinder advancement, you're gonna have to 764 00:27:06,455 --> 00:27:07,434 find that balance. 765 00:27:09,015 --> 00:27:11,494 My question is, does the animal moo or 766 00:27:11,494 --> 00:27:12,315 does it bark? 767 00:27:14,269 --> 00:27:15,169 Maybe both. 768 00:27:15,549 --> 00:27:17,329 Yeah. Maybe a little bit of both. Right? 769 00:27:17,549 --> 00:27:19,389 You think about the cattle, it's like, should 770 00:27:19,389 --> 00:27:22,349 we tend to each individual prefix as if 771 00:27:22,349 --> 00:27:24,269 it's, like, the individual needs of the cattle 772 00:27:24,269 --> 00:27:25,569 or should we have sensors 773 00:27:25,869 --> 00:27:28,190 for problems around these things? Right? And look 774 00:27:28,190 --> 00:27:29,089 at those systems. 775 00:27:29,494 --> 00:27:32,615 But when you're moving these prefixes around, maybe 776 00:27:32,615 --> 00:27:33,654 the best way to do that is with 777 00:27:33,654 --> 00:27:36,055 the cattle dog. And that's the CLI, in 778 00:27:36,055 --> 00:27:38,375 my opinion. Cool. Awesome. I think that's a 779 00:27:38,375 --> 00:27:39,515 good a good analogy. 780 00:27:39,975 --> 00:27:41,355 So, Tom, anything else? 781 00:27:42,659 --> 00:27:45,700 Nope. Nope. Okay. Alright. Mark, where can people 782 00:27:45,700 --> 00:27:48,099 find you? Reach you? Do you blog? Do 783 00:27:48,099 --> 00:27:48,679 you un 784 00:27:50,659 --> 00:27:51,779 unblog? Or I guess 785 00:27:53,700 --> 00:27:56,339 I when Tom gave up his neglected blog, 786 00:27:56,339 --> 00:27:58,115 I said, this won't do. I need to 787 00:27:58,115 --> 00:27:59,914 have a neglected blog. So I made I 788 00:27:59,914 --> 00:28:01,674 got one out there for the community. So 789 00:28:01,674 --> 00:28:03,755 you can find me at zeal networks dot 790 00:28:03,755 --> 00:28:05,835 c a. But if you actually wanna see 791 00:28:05,835 --> 00:28:08,414 content, then you can reach me on LinkedIn 792 00:28:08,795 --> 00:28:10,575 or in the Packet Pushers community. 793 00:28:10,909 --> 00:28:13,309 And I'll also be at AutoCon three, here 794 00:28:13,309 --> 00:28:15,089 in Prague in a couple weeks. Awesome. 795 00:28:15,390 --> 00:28:17,490 Alright. Tom, where can people reach you? 796 00:28:19,149 --> 00:28:21,390 I'll be on LinkedIn inspiring other people to 797 00:28:21,390 --> 00:28:23,250 build new electric plugs. That's awesome. 798 00:28:23,965 --> 00:28:25,404 Alright. And I'm a slight. You can always 799 00:28:25,404 --> 00:28:26,605 find me here at the hedge of rule 800 00:28:26,605 --> 00:28:27,664 eleven dot tech 801 00:28:27,965 --> 00:28:31,664 on LinkedIn occasionally on x, Twitter, whatever. 802 00:28:31,965 --> 00:28:33,404 I'm telling you, if you're trying to find 803 00:28:33,404 --> 00:28:35,644 me, you'll find me. I'm really, really hard 804 00:28:35,644 --> 00:28:36,225 to find. 805 00:28:36,940 --> 00:28:38,779 We know that your attention is important. We 806 00:28:38,779 --> 00:28:40,400 live in an attention driven economy. 807 00:28:40,940 --> 00:28:43,180 By the way, Paul, thanks, Mark. What am 808 00:28:43,180 --> 00:28:45,340 I talking about? Mark, thanks for coming on. 809 00:28:45,340 --> 00:28:47,340 I'm like wrapped around the brain today. My 810 00:28:47,340 --> 00:28:50,105 brain is like completely messed up. Anyway, Mark, 811 00:28:50,105 --> 00:28:51,464 thanks for coming on and talking about this, 812 00:28:51,464 --> 00:28:52,524 an interesting topic. 813 00:28:53,065 --> 00:28:54,044 And for our listeners, 814 00:28:54,424 --> 00:28:56,424 again, we know we live in an attention 815 00:28:56,424 --> 00:28:57,325 driven economy, 816 00:28:57,625 --> 00:29:00,605 and we know that your time and attention 817 00:29:00,825 --> 00:29:02,504 are very important. So we thank you for 818 00:29:02,504 --> 00:29:04,289 listening all the way to the bitter end 819 00:29:04,369 --> 00:29:05,029 of this 820 00:29:05,330 --> 00:29:07,490 episode of the hedge, and we will catch 821 00:29:07,490 --> 00:29:08,390 you next time.