From 78eb4548b4cfe96cb88d8b319de910262fc6c331 Mon Sep 17 00:00:00 2001 From: Sacha Chua Date: Tue, 10 Dec 2024 14:17:36 -0500 Subject: more updates --- 2024/info/pgmacs-after.md | 288 +++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 287 insertions(+), 1 deletion(-) (limited to '2024/info/pgmacs-after.md') diff --git a/2024/info/pgmacs-after.md b/2024/info/pgmacs-after.md index 8f049941..ebcf40f0 100644 --- a/2024/info/pgmacs-after.md +++ b/2024/info/pgmacs-after.md @@ -301,7 +301,293 @@ Captioner: eric -Questions or comments? Please e-mail [eric.marsden@risk-engineering.org](mailto:eric.marsden@risk-engineering.org?subject=Comment%20for%20EmacsConf%202023%20pgmacs%3A%20PGmacs%3A%20browsing%20and%20editing%20PostgreSQL%20databases%20from%20Emacs) +

Q&A transcript (unedited)

+ +[[!template text="""and I believe we are live. Hi, Eric, how are you doing? Very""" start="00:00:05.945" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""well, thanks. It's a pleasure to have you as one of our""" start="00:00:09.709" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""speakers but it's also very nice to see you present about""" start="00:00:12.921" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""PGMAX because I found your talk to be very didactic and very""" start="00:00:12.921" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""visual. So thank you for taking the time to do a very nice""" start="00:00:12.921" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""presentation. I wanted to give the opportunity as I do with""" start="00:00:24.891" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""other speakers to maybe talk about some stuff that you could""" start="00:00:28.994" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""not include into the talk because of the format. So is there""" start="00:00:28.994" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""anything you'd like to share with the viewers that you""" start="00:00:38.781" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""weren't able to include?""" start="00:00:38.781" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""Oh, I think I gave most of the most of the relevant""" start="00:00:45.447" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""information. This is a fairly young application. I've been""" start="00:00:45.447" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""developing this since roughly the beginning of the year. So""" start="00:00:54.849" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""there are probably some rough edges that people will run""" start="00:00:57.749" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""into if they use Postgres differently from what I do. Or they""" start="00:00:57.749" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""hear maybe conflicts with some other Emacs packages that""" start="00:01:06.651" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""people use that I don't use. So I would really welcome people""" start="00:01:06.651" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""trying it out and sending out bug reports if they do""" start="00:01:15.249" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""encounter some. Yeah, I mean, it's usually... Go on,""" start="00:01:15.249" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""please. Yeah, that would certainly help to make sure it's""" start="00:01:21.213" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""nice and robust. And of course, if you're letting this loose""" start="00:01:25.676" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""on some production database that you might have, you want""" start="00:01:29.878" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""this to be quite robust, obviously. Yeah, indeed. Because""" start="00:01:29.878" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""usually, you know, when you start publishing packages like""" start="00:01:40.959" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""this, that's when you realize that it has bad interaction""" start="00:01:40.959" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""with other modes in the IMAX of other persons. But""" start="00:01:40.959" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""especially when you're dealing with databases, you also""" start="00:01:49.483" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""realize that the domain space of what you're trying to do""" start="00:01:49.483" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""with your mode also is hugely dependent on what people have""" start="00:01:49.483" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""in their database, which schema they have. So, indeed, if""" start="00:01:49.483" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""you have been interested, and I think plenty of people have""" start="00:02:01.910" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""been interested by what you've presented, part of the""" start="00:02:01.910" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""reason a software becomes great is that you've got plenty of""" start="00:02:01.910" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""people making bug reports and making sure that all the""" start="00:02:01.910" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""faults have been ironed out. So, you know what your task is. I""" start="00:02:01.910" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""will also ask you, particularly right now, people""" start="00:02:18.719" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""currently viewing, to add your questions on the pad as""" start="00:02:18.719" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""usual, because you've had plenty of nice reactions, but I'm""" start="00:02:18.719" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""sure you have plenty of questions as well. So Eric, what I'll""" start="00:02:18.719" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""be doing, I'll be reading you the questions so that it's a""" start="00:02:29.965" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""little more didactic. Starting with the first one. This is""" start="00:02:29.965" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""brilliant, thank you. Do you know if PGMAX works with Tramp?""" start="00:02:37.088" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""I often use Tramp multi-app to access databases both""" start="00:02:41.130" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""remotely when accessing via Bastion server and locally""" start="00:02:41.130" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""when using OCI containers. I believe you've already""" start="00:02:41.130" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""answered but if you could just perhaps read your answer as""" start="00:02:48.933" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""well for everyone to benefit from it. Yep, sure, that's my""" start="00:02:48.933" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""comment indeed. So I haven't currently implemented any""" start="00:02:57.307" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""Tramp support. I'm not sure that Tramp is really useful for""" start="00:03:00.189" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""this type of situation, because as I understand it, Tramp is""" start="00:03:03.172" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""establishing SSH connections itself to remote servers.""" start="00:03:03.172" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""PGMAX is doing the same thing, so it doesn't currently have""" start="00:03:17.183" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""any support for hooking in with the Tramp support. Right.""" start="00:03:17.183" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""Pardon me if I missed the presentation. Oh, go on, please. I""" start="00:03:27.483" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""guess you could set up an SSH tunnel. It does work with an SSH""" start="00:03:31.365" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""tunnel, obviously, but there's no support for hooking into""" start="00:03:33.266" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""an SSH tunnel that Tramp might be able to create. I'm not sure""" start="00:03:33.266" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""Tramp actually uses SSH tunnels rather than direct""" start="00:03:43.412" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""commands, but anyway. Yeah, I think that might be useful.""" start="00:03:43.412" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""Yeah, I don't know either. I don't have the answer whether""" start="00:03:52.466" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""Trump actually can create tunnels like this. I'm usually""" start="00:03:53.528" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""used to Trump connecting to an endpoint, be it a directory or""" start="00:03:58.074" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""a file, and the tunnel is just you accessing the file. But""" start="00:03:58.074" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""usually, if you're trying to access a remote Postgres""" start="00:04:05.744" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""database, you would probably manage the port forwarding in""" start="00:04:05.744" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""a separate terminal just to be able to make sure that""" start="00:04:09.870" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""everything maps correctly to your machine, and then you""" start="00:04:09.870" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""would launch PGMAX with the forward port information.""" start="00:04:09.870" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""That's, I assume, how you would do it anyway. But yeah, I""" start="00:04:21.998" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""mean, if you could specify what you mean by TREM support and""" start="00:04:24.420" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""if you have something specific in mind, I'm talking to the""" start="00:04:24.420" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""questioner, feel free to specify and we'll see if you can""" start="00:04:24.420" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""answer it. But in the meantime, moving to the next question.""" start="00:04:24.420" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""Great work, I'm impressed. How did you come up with this""" start="00:04:39.450" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""brilliant idea, I assume, to create PGMAX? Well, thanks for""" start="00:04:40.991" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""the compliment. It's a lot of fun developing something""" start="00:04:47.516" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""which is, as I said, such a small amount of code and which""" start="00:04:49.737" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""provides quite a bit of useful functionality. In""" start="00:04:49.737" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""particular, if you compare it with existing Terminal mode""" start="00:05:02.307" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""applications for manipulating Postgres data, they are""" start="00:05:05.563" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""not as extensible as Emacs is naturally. So I actually got""" start="00:05:05.563" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""the idea for developing this when I first tested out the""" start="00:05:17.834" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""SQLite mode, which is available in Emacs 29.1.""" start="00:05:17.834" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""And I thought, well, that's really quite impressive. And it""" start="00:05:29.076" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""allows you to delete rows and insert content and so on. And I""" start="00:05:31.757" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""was thinking, yeah, Emacs is a, is a useful environment to do""" start="00:05:36.798" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""that. And since several years ago, when I was doing my PhD, so""" start="00:05:36.798" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""to avoid doing my PhD, I was developing Emacs, I was""" start="00:05:43.260" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""developing stuff in Emacs Lisp and one of the libraries I""" start="00:05:43.260" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""developed was an interface to Postgres over the network. So""" start="00:05:57.541" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""that's the library called pg.el, which is used by pgmax to""" start="00:06:02.685" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""access Postgres and to do all the parsing of data which""" start="00:06:02.685" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""arrives in Postgres formats into the Emacs Lisp into the""" start="00:06:02.685" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""Emacs corresponding versions. So, for example, integers""" start="00:06:19.591" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""are passed as Emacs integers, floating point numbers as""" start="00:06:21.673" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""floating point numbers, and so on. Right, yeah. I mean, it's""" start="00:06:21.673" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""pretty needed, obviously, when you have such a tooling like""" start="00:06:30.240" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""this, to make sure that the type conversion works properly,""" start="00:06:30.240" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""because the types that you have in Postgres do not""" start="00:06:30.240" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""necessarily map over to what we have in Emacs. Like, I'm""" start="00:06:30.240" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""interested, how would you handle g's and b columns in PgMax?""" start="00:06:43.610" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""JSON is mapped to an edis dict, a dictionary.""" start="00:06:51.098" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""It depends on the top level object type for your JSON column.""" start="00:06:57.179" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""If it's an array, it's mapped to an Emacs lisp array. If it's a""" start="00:07:03.821" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""dict, which is most common, it's mapped to an Emacs lisp""" start="00:07:07.062" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""dictionary. All right, well it makes perfect sense. So I can""" start="00:07:07.062" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""break in with a question. Thanks, I just held myself to the""" start="00:07:17.439" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""BBB privilege of kind of running around backstage, being a""" start="00:07:20.543" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""helper backstage. So thanks for your awesome talk, Eric. I""" start="00:07:20.543" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""super appreciated it. You know, I noticed that you that""" start="00:07:31.554" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""you're on a slightly older version of Emacs that I deal with""" start="00:07:39.184" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""in helping with producing the Windows binaries I run into""" start="00:07:39.184" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""and with some other stuff I do. I'm dealing with that""" start="00:07:39.184" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""friction of sometimes I've got some work of my own that""" start="00:07:53.170" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""applies against a specific version of Emacs and it's a bunch""" start="00:07:53.170" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""of work to think about moving it forward. Just curious if you""" start="00:07:53.170" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""started thinking about that or if you routine, if that's a""" start="00:08:01.814" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""routine that you haven't done or there's something maybe""" start="00:08:05.015" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""specifically going on with, you know, with trunk""" start="00:08:05.015" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""development that looks intimidating to deal with. Thanks""" start="00:08:05.015" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""for the comment. I'm not sure I'm using a really old version""" start="00:08:20.346" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""for Windows. I don't really develop often on Windows, but I I""" start="00:08:23.348" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""occasionally check that it works, and I took a screenshot""" start="00:08:30.126" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""that I included in the slides here, but I think I'm using""" start="00:08:30.126" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""29.4, the current version on Windows. I thought I saw 29.1,""" start="00:08:30.126" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""so that's probably my, I probably missed it when it went by.""" start="00:08:39.432" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""My bad. No, no, I use it via the ChocoPackageUpdater so that""" start="00:08:44.956" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""updates the Emacs version quite easily on Windows. So""" start="00:08:50.325" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""thanks for your work on maintaining Windows binaries. I""" start="00:09:00.150" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""realize that was- I sit downstream at the end of a lot of other""" start="00:09:02.572" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""people's hard work and then just focus on trying to QA well""" start="00:09:02.572" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""and help catch problems early. It's really fun. But of""" start="00:09:02.572" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""course, my pleasure.""" start="00:09:15.418" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""Coming back to the previous question, so the the""" start="00:09:19.408" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""questionnaire actually provided a little more context. So""" start="00:09:19.408" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""with docker.el, kubel, etc, it's often possible to, for""" start="00:09:26.791" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""example, select a container pod or whatever that is hosted""" start="00:09:26.791" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""on the machine you've connected to via Trump, such as""" start="00:09:26.791" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""Podman, colon image colon path and trigger a terminal shell""" start="00:09:26.791" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""as well as pull forward on other similar things. It'd be nice""" start="00:09:38.355" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""to be able to use this tool in a similar way since it would open""" start="00:09:44.459" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""up the ability to use it with complex connection""" start="00:09:44.459" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""configuration. Doing SSH tunnel manually is of course""" start="00:09:44.459" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""totally fine in practice and if it is actually the case""" start="00:09:51.303" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""personally when I need to remote into a kubernetes machine I""" start="00:09:51.303" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""use BOSIX script that I use on most of my machines but I don't""" start="00:09:51.303" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""do it inside Emacs. But yeah, if such a thing is possible via""" start="00:09:51.303" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""TRAMP, it definitely feels like it would be possible to do""" start="00:10:06.813" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""something similar in PGMAX. So perhaps that's a path of""" start="00:10:06.813" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""investigation for you that has opened up. Yeah, thanks for""" start="00:10:12.876" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""these comments. I'll look into that indeed if people have""" start="00:10:18.639" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""some shortcuts registered in TRAMP. So not for a terminal,""" start="00:10:19.780" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""because PGMAX won't work through a terminal, but through a""" start="00:10:25.363" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""port forward, then that would be convenient. I'll see how""" start="00:10:25.363" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""easy that is to set up. Yeah, I'm pretty sure the way it works""" start="00:10:32.326" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""is that it starts some processes in the background in eMAX""" start="00:10:36.846" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""just to either maintain the port forward or to maybe remap""" start="00:10:36.846" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""some kubecon things or whatever. So with PG eMAX,""" start="00:10:36.846" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""considering complex pipelines to get to the end""" start="00:10:47.302" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""destination, it feels like it would be possible to do""" start="00:10:47.302" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""something. But perhaps it's not the responsibility of""" start="00:10:53.430" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""PG-Emacs, perhaps it's the responsibility of another,""" start="00:10:55.111" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""perhaps something that would target Trump more so than""" start="00:10:55.111" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""PG-Emacs. But it's nice to see again how the beauty of Emacs""" start="00:10:55.111" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""is that everything is Elisp at the end, and the way they""" start="00:11:04.655" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""interact, you might want to question yourself whether this""" start="00:11:04.655" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""belongs more to PGMAX or more to Trump, but at the end of the""" start="00:11:14.338" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""day, both applications will be able to benefit from the""" start="00:11:14.338" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""functions of the other. So that's the beauty of the""" start="00:11:14.338" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""philosophy right here. I do see... Absolutely, I agree.""" start="00:11:23.683" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""Sorry, before we move to different questions, an""" start="00:11:29.266" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""additional point. I should point out that to warn people""" start="00:11:29.266" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""that probably running over an SSH tunnel is going to be a bit""" start="00:11:33.968" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""slow. I mostly use it on my own machine via a local Unix""" start="00:11:37.737" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""connection. And for some reason that I haven't understood,""" start="00:11:42.541" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""PGMAX is quite a bit slower when it's even connecting to the""" start="00:11:48.406" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""same database on the local machine, but via Emacs' network""" start="00:11:48.406" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""support instead of via the Unix socket support. there is""" start="00:11:48.406" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""like a factor 10 difference in throughput and in latency. I""" start="00:12:05.177" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""don't really understand why currently, because it's using""" start="00:12:11.504" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""exactly the same Emacs Lisp level primitives. And when you""" start="00:12:11.504" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""do this using other libraries like libpq, which is the""" start="00:12:20.433" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""Postgres standard official library for connecting to""" start="00:12:25.357" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""Postgres, there's not such a performance difference. So""" start="00:12:25.357" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""there's probably something that is not working perfectly""" start="00:12:33.560" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""in the Emacs network support. I'll have to see whether I can""" start="00:12:33.560" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""investigate how to improve that performance. Yeah, I'm""" start="00:12:41.142" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""going to say it sounds like a great bug to have because it""" start="00:12:47.748" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""feels like it will allow you to dig deeper into Emacs to""" start="00:12:47.748" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""understand what is going on here. Because as you said,""" start="00:12:47.748" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""normally it's supposed to work exactly the same,""" start="00:12:59.035" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""especially if it's still in your local machine, but it""" start="00:12:59.035" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""doesn't. Personally, that's the kind of bug that I really""" start="00:12:59.035" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""like and that I'd like to spend more time investigating. So""" start="00:13:06.480" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""perhaps you might think otherwise, but I wish you luck on the""" start="00:13:11.042" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""debugging with this particular matter. All right, moving""" start="00:13:11.042" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""to the last question that we have and then we'll probably go""" start="00:13:16.924" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""on a little bit of a break. Question. Is SQLite mode also""" start="00:13:16.924" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""capable of all of this functionality, table relations,""" start="00:13:23.927" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""etc.? If not, would it be possible to abstract out this""" start="00:13:23.927" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""functionality from PGMAX somehow?""" start="00:13:29.489" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""So I'm not very familiar with SQLite because I don't really""" start="00:13:36.801" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""use it very much myself. I'm not sure I can answer that""" start="00:13:36.801" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""question. Sorry about that. I think it is probably a bit more""" start="00:13:44.126" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""basic because SQLite itself is quite a bit more basic in""" start="00:13:50.331" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""terms of the types of indexes it's able to support and the""" start="00:13:50.331" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""types of constraints it's able to support. Is it relevant to""" start="00:13:50.331" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""create an abstract API for connecting to databases? I think""" start="00:14:07.164" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""there is already actually a library that abstracts out from""" start="00:14:13.628" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""SQLite and Postgres. Postgres, when you connect to it via a""" start="00:14:13.628" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""PSQL subsystem,""" start="00:14:21.912" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""it might be worthwhile doing that, but There are often a few""" start="00:14:21.912" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""minor differences in SQL syntax and so on between""" start="00:14:34.966" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""databases. So it might be difficult to have something that""" start="00:14:34.966" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""really works with generic queries in an effective way. All""" start="00:14:43.233" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""these SQL dialects are a little bit different,""" start="00:14:54.922" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""unfortunately. So there was another question about I was""" start="00:14:54.922" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""just going to read out the next question. So have you thought""" start="00:15:03.209" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""about integrating your work into the Emacs tree? Do you know""" start="00:15:06.511" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""if people are interested? This was a question from the past.""" start="00:15:12.173" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""Yeah, I think it's probably a bit young to do so, so far.""" start="00:15:16.596" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""I'm updating it quite regularly. Maybe once it's more""" start="00:15:24.219" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""stabilized, I wouldn't necessarily object to this. I have""" start="00:15:28.241" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""some sort of philosophical objections to giving away my""" start="00:15:35.287" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""copyright, so I'm not sure that will actually be possible.""" start="00:15:35.287" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""Oh, that'd be interesting. I'd love to get you on maybe a""" start="00:15:45.715" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""panel talk about that sometime. Something I'd think about.""" start="00:15:46.656" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""Well, from a very simple point of view, I think that the""" start="00:15:52.580" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""copyright and the system works well with the existing""" start="00:15:52.580" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""license and without a license transfer, so I don't feel that""" start="00:15:58.604" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""the, sorry, without a copyright transfer, I don't feel that""" start="00:15:58.604" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""the copyright transfer is really a necessary step for""" start="00:15:58.604" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""taking things away from maintainers. It feels like Asking""" start="00:15:58.604" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""the maintainers to give up on some of their corporate...""" start="00:16:21.275" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""Indeed. Yeah, I see where that's a little beyond our scope,""" start="00:16:21.275" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""but it's a fascinating topic and I appreciate your sharing""" start="00:16:27.362" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""your views there. I mean, that sounds like a whole topic of""" start="00:16:27.362" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""its own, frankly.""" start="00:16:34.251" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""Yeah. Corbyn, do you want to fill the last question? Sure. So""" start="00:16:41.482" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""the question was, I almost missed this one, so glad I didn't.""" start="00:16:45.064" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""This may have been answered already. What do you use for""" start="00:16:52.149" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""in-buffer tables? Do you use vtable? Yep. Thanks for the""" start="00:16:53.850" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""question. It is indeed vtable. However, it's not really""" start="00:16:59.674" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""vtable. It's a fork that I made, which is called pgmix table.""" start="00:17:03.216" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""because Vtable doesn't have exactly the right""" start="00:17:11.764" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""functionality in particular for recoloring rows when you""" start="00:17:11.764" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""add a row. So I've currently forked this. I'm thinking about""" start="00:17:11.764" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""giving those back as patches to Vtable, plausibly.""" start="00:17:25.193" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""I know that there is some ongoing work also on vTable in the""" start="00:17:37.541" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""core. So I'll have to look at what is plausible to feed back""" start="00:17:37.541" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""into the main version.""" start="00:17:41.805" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""All right, great. I think we are nearing the end of the Q&A. We""" start="00:17:50.515" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""are due to move to the next talk in about three minutes now. I""" start="00:17:55.176" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""can fill 30 seconds or a minute of that with I guess one more""" start="00:17:59.378" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""maybe back and forth and I'll try to be quicker this time.""" start="00:17:59.378" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""First of all, thanks for your kind remarks. But my question""" start="00:18:05.100" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""wasn't really about Windows so much, it was just how I'm""" start="00:18:08.921" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""relating So have you, let me put it more simply, have you""" start="00:18:08.921" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""started looking at integrating with EMAX 30 or with the""" start="00:18:14.744" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""master branch at all? Do you have any sense of how much work""" start="00:18:14.744" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""it's going to be for you to carry things forward there? I've""" start="00:18:22.731" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""tested it with the pre-release, yes. I mean, just a very""" start="00:18:28.362" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""basic testing and everything works perfectly. There's""" start="00:18:30.244" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""really no... There was no difference that I have noticed""" start="00:18:34.609" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""between 29.4 and the 30 pre-release on the aspects that I use""" start="00:18:34.609" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""at least in Emacs. Neato.""" start="00:18:34.609" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""That was it, Leo. Thanks for letting me back in for one more""" start="00:18:53.516" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""bite at the apple there. And I appreciate everybody tuning""" start="00:18:54.937" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""in and participating in the Q&A and this awesome talk.""" start="00:18:57.479" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""Thanks for your questions. That was great. Yeah, and thank""" start="00:19:03.584" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""you for answering them and for the presentation as well. So""" start="00:19:06.326" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""we'll be moving in about two minutes to the next talk, which""" start="00:19:09.909" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""is pre-recorded as well. Well, we didn't really give you the""" start="00:19:09.909" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""chance, Eric, to have the last word. So do you have any last""" start="00:19:17.175" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""word?""" start="00:19:20.698" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""please try it out, try out PGMax and send some feedback""" start="00:19:30.503" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""that'll help improve it over time. Sure, great. Well, thank""" start="00:19:30.503" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""you so much, Eric, for taking the time to come to the""" start="00:19:39.006" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""conference, and we'll see you soon. Thank you. Bye,""" start="00:19:39.006" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""everyone. Bye. And we'll be live with the next talk in about 1""" start="00:19:45.908" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""minute 30. So we'll take a little bit of a breather, go make""" start="00:19:48.448" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""some coffee, go take a bio break. We'll be back soon. See you""" start="00:19:50.969" video="qanda-pgmacs" id="subtitle"]] +[[!template text="""in a bit.""" start="00:19:56.351" video="qanda-pgmacs" id="subtitle"]] + +
Questions or comments? Please e-mail [eric.marsden@risk-engineering.org](mailto:eric.marsden@risk-engineering.org?subject=Comment%20for%20EmacsConf%202023%20pgmacs%3A%20PGmacs%3A%20browsing%20and%20editing%20PostgreSQL%20databases%20from%20Emacs) -- cgit v1.2.3