From 95caec42dd14ad685a7007121e7ee1be4132e0e0 Mon Sep 17 00:00:00 2001 From: EmacsConf Date: Sun, 3 Dec 2023 10:35:18 -0500 Subject: Automated commit --- ...ssibilities--anand-tamariya--main--chapters.vtt | 56 ++ ...orld-of-possibilities--anand-tamariya--main.vtt | 649 +++++++++++++++++++++ 2023/info/world-after.md | 212 +++++++ 2023/info/world-before.md | 22 +- 4 files changed, 938 insertions(+), 1 deletion(-) create mode 100644 2023/captions/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--main--chapters.vtt create mode 100644 2023/captions/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--main.vtt diff --git a/2023/captions/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--main--chapters.vtt b/2023/captions/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--main--chapters.vtt new file mode 100644 index 00000000..58121436 --- /dev/null +++ b/2023/captions/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--main--chapters.vtt @@ -0,0 +1,56 @@ +WEBVTT + + +00:00:00.780 --> 00:03:46.400 +Draw and scribble in GNU Emacs + +00:03:46.400 --> 00:05:20.139 +SVG Symbols library + +00:05:20.140 --> 00:08:03.367 +GNU Emacs: A multimedia editor + +00:08:03.367 --> 00:09:34.900 +Fill PDF form using GNU Emacs + +00:09:34.900 --> 00:11:10.439 +Desktop and window management in GNU Emacs + +00:11:10.440 --> 00:11:53.033 +Screen mirroring in GNU Emacs + +00:11:53.033 --> 00:12:25.533 +Swipe for Text Input in GNU Emacs + +00:12:25.533 --> 00:12:59.433 +Formula Editor in GNU Emacs + +00:12:59.433 --> 00:13:09.433 +Transliteration in Emacs + +00:13:09.433 --> 00:13:40.000 +Social Media client - Tumblr, Reddit + +00:13:40.000 --> 00:13:49.567 +Comics Builder + +00:13:49.567 --> 00:13:59.567 +Matching game + +00:13:59.567 --> 00:14:10.767 +Interactive XPath Builder in GNU Emacs + +00:14:10.767 --> 00:14:35.233 +Interactive JSON Builder in GNU Emacs + +00:14:35.233 --> 00:15:26.133 +GNU Emacs as a lightweight IDE (CEDET Semantic): Java - Generate getter/setter + +00:15:26.133 --> 00:16:11.640 +Generate C header + +00:16:11.640 --> 00:17:07.639 +C Rename symbols + +00:17:07.640 --> 00:20:30.740 +SQL (offline) diff --git a/2023/captions/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--main.vtt b/2023/captions/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--main.vtt new file mode 100644 index 00000000..1f27ce57 --- /dev/null +++ b/2023/captions/emacsconf-2023-world--gnu-emacs-a-world-of-possibilities--anand-tamariya--main.vtt @@ -0,0 +1,649 @@ +WEBVTT captioned by bhavin192, checked by sachac + +NOTE Draw and scribble in GNU Emacs + +00:00:00.780 --> 00:00:02.900 +Hello. In this video, we will look at + +00:00:02.900 --> 00:00:07.167 +drawing and scribbling in Emacs using SVG. + +00:00:07.167 --> 00:00:10.067 +Let's start with `canvas-mode`. + +00:00:10.067 --> 00:00:17.539 +We will define the width and the height. + +00:00:17.540 --> 00:00:19.333 +The default is polyline, + +00:00:19.333 --> 00:00:23.733 +which means you can scribble anything that you want. + +00:00:23.733 --> 00:00:30.299 +Very handy for taking quick notes. + +00:00:30.300 --> 00:00:32.699 +Now we will look at + +00:00:32.700 --> 00:00:46.333 +drawing a triangle using some lines. + +00:00:46.333 --> 00:00:57.267 +Okay. Now let's draw a circle. + +00:00:57.267 --> 00:00:58.900 +You can use the mouse to adjust + +00:00:58.900 --> 00:01:02.859 +the radius of the circle. + +00:01:02.860 --> 00:01:04.333 +There is some problem with ellipse, + +00:01:04.333 --> 00:01:07.939 +we will look at it at the end of the video. + +00:01:07.940 --> 00:01:11.767 +Now let's put up some text, + +00:01:11.767 --> 00:01:15.067 +a typical "Hello World". + +00:01:15.067 --> 00:01:19.879 +Size, let's do a 20 font size, + +00:01:19.880 --> 00:01:32.359 +and we will use the default font family. + +00:01:32.360 --> 00:01:37.433 +Next, we will look at undoing what we have drawn. + +00:01:37.433 --> 00:01:43.067 +Just press u for deleting the last drawn object. + +00:01:43.067 --> 00:01:45.799 +And you can continue pressing + +00:01:45.800 --> 00:01:51.959 +u for consecutive deletions. + +00:01:51.960 --> 00:01:54.533 +You can also make a selection of the objects + +00:01:54.533 --> 00:01:57.700 +on the screen using your mouse and then press u. + +00:01:57.700 --> 00:02:02.599 +This will delete all the objects in one go. + +00:02:02.600 --> 00:02:06.659 +Now we are looking at stroke color. + +00:02:06.660 --> 00:02:08.633 +We will use a brown stroke color + +00:02:08.633 --> 00:02:12.879 +for drawing our objects. + +00:02:12.880 --> 00:02:20.419 +Next, let's look at stroke width. + +00:02:20.420 --> 00:02:27.979 +We will use a width of 5. + +00:02:27.980 --> 00:02:41.619 +Next, let's fill up the objects with a fill color. + +00:02:41.620 --> 00:02:47.159 +Now we will look at zoom. + +00:02:47.160 --> 00:02:50.119 +Use the mouse to select a region and zoom. + +00:02:50.120 --> 00:02:54.359 +You can also use +, - for zooming in and out. + +00:02:54.360 --> 00:03:07.133 +Press 0 for resetting the zoom. + +00:03:07.133 --> 00:03:14.539 +Next, let's save the file, + +00:03:14.540 --> 00:03:19.667 +and q or Enter for exiting the canvas-mode. + +00:03:19.667 --> 00:03:23.760 +Now we will open the file in Emacs itself. + +00:03:25.220 --> 00:03:26.179 +You can see the file, + +00:03:26.180 --> 00:03:32.000 +you can do Control-c Control-c (`C-c C-c`). + +00:03:32.000 --> 00:03:44.419 +Finally, we look at ellipse. + +00:03:44.420 --> 00:03:46.400 +That's all for this video. Thanks! + +NOTE SVG Symbols library + +00:03:46.400 --> 00:03:48.333 +Hello. In this video, we will draw + +00:03:48.333 --> 00:03:52.067 +schematics using symbols from SVG library in Emacs. + +00:03:52.067 --> 00:03:55.000 +Press capital L to activate the symbol library + +00:03:55.000 --> 00:03:57.867 +that you can see on the right hand side, + +00:03:57.867 --> 00:04:01.959 +and place the symbol on the canvas. + +00:04:01.960 --> 00:04:06.639 +Let's add another register to this diagram. + +00:04:06.640 --> 00:04:11.819 +You can press capital R to rotate the symbol. + +00:04:11.820 --> 00:04:17.239 +Let's place it on the canvas. + +00:04:17.240 --> 00:04:31.667 +Now we will add a voltage source to the circuit. + +00:04:31.667 --> 00:04:33.179 +To connect the symbols, + +00:04:33.180 --> 00:04:36.967 +we will have to use some connecting wires. + +00:04:36.967 --> 00:04:39.467 +For that, press capital W + +00:04:39.467 --> 00:04:46.919 +to activate the connection mode. + +00:04:46.920 --> 00:04:48.567 +Click anywhere on the canvas + +00:04:48.567 --> 00:04:53.133 +to draw intermediate points, and press Esc + +00:04:53.133 --> 00:05:00.033 +to exit that particular connection. + +00:05:00.033 --> 00:05:16.633 +Let's connect other symbols too. + +00:05:16.633 --> 00:05:20.139 +That's all for this video. Thanks. + +NOTE GNU Emacs: A multimedia editor + +00:05:20.140 --> 00:05:22.167 +Hello. In this video, we will look at + +00:05:22.167 --> 00:05:24.933 +some basic multimedia editing using Emacs. + +00:05:24.933 --> 00:05:27.459 +Let's start a media-edit session. + +00:05:27.460 --> 00:05:32.000 +Let's open a video file. + +00:05:32.000 --> 00:05:34.100 +The left-hand side is your viewer area, + +00:05:34.100 --> 00:05:36.700 +and the right-hand side is your track area. + +00:05:36.700 --> 00:05:39.667 +In the track area, you can use normal Emacs + +00:05:39.667 --> 00:05:42.039 +text editing movements. + +00:05:42.040 --> 00:05:48.167 +Now press `C-c r` to refresh the viewer mode + +00:05:48.167 --> 00:05:52.767 +with the exact time frame. + +00:05:52.767 --> 00:05:59.433 +Now press SPC to play or pause the video. + +00:05:59.433 --> 00:06:03.233 +This looks like an interesting point in the video, + +00:06:03.233 --> 00:06:11.433 +let's track it and split it. Press Enter to do that. + +00:06:11.433 --> 00:06:20.733 +We will extract some 10 seconds of this video. + +00:06:20.733 --> 00:06:23.233 +Let's use this. + +00:06:23.233 --> 00:06:26.300 +Now go here and delete all these lines. + +00:06:26.300 --> 00:06:44.133 +Let's review our edited clip. + +00:06:44.133 --> 00:06:51.833 +Looks good! Now press e to export the video. + +00:06:51.833 --> 00:06:57.559 +Provide an output file name. + +00:06:57.560 --> 00:07:04.433 +This will use FFmpeg to convert, and you can + +00:07:04.433 --> 00:07:16.967 +output to any file format supported by FFmpeg. + +00:07:16.967 --> 00:07:21.900 +Okay. Let's open up shell and view this + +00:07:21.900 --> 00:07:57.159 +video file in an external video player. + +00:07:57.160 --> 00:08:03.367 +That's all for this video. Thanks. + +NOTE Fill PDF form using GNU Emacs + +00:08:03.367 --> 00:08:05.567 +Hello. In this video, we will look at + +00:08:05.567 --> 00:08:09.760 +editing a PDF form using GNU Emacs. + +00:08:09.760 --> 00:08:13.840 +To start, we have to enable the annotation. + +00:08:13.840 --> 00:08:18.533 +Then we can use Tab to move forward and Shift+Tab + +00:08:18.533 --> 00:08:22.480 +to move backwards through the fields. + +00:08:22.480 --> 00:08:25.967 +To edit a field, we press e. + +00:08:25.967 --> 00:08:33.580 +So let's edit a text box. We'll call it 'city'. + +00:08:33.580 --> 00:08:35.840 +Next, we will edit a drop-down. + +00:08:35.840 --> 00:08:38.680 +Again, press e, and you get a select. + +00:08:38.680 --> 00:08:45.833 +Use the Minibuffer to select one of the values. + +00:08:45.833 --> 00:08:48.500 +Let's select 'France'. + +08:48.500 --> 00:08:52.180 +Now let's edit a radio box. + +08:52.180 --> 00:08:55.899 +A checkbox or a radio box can be toggled using t. + +00:08:55.900 --> 00:08:58.660 +You can disableā€¦ + +08:58.660 --> 00:09:05.140 +Now let's save the file, `doc-view-save-form`. + +00:09:05.140 --> 00:09:08.360 +It will ask for a file name. + +00:09:08.360 --> 00:09:13.400 +Let's call it `filled1.pdf`. If the file exists, + +00:09:13.400 --> 00:09:17.260 +it will ask you if you want to overwrite. + +09:17.260 --> 00:09:21.460 +Now let's verify this new file. + +09:21.460 --> 00:09:27.160 +In Firefox, we'll copy this file name, call it filled1. + +00:09:27.160 --> 00:09:29.100 +Let's verify the values. + +09:29.100 --> 00:09:32.620 +You have city, France and Driving License selected. + +09:32.620 --> 00:09:34.900 +That's all for this video. Thanks. + +NOTE Desktop and window management in GNU Emacs + +09:34.900 --> 00:09:37.659 +Hello. In this video, we will look at + +00:09:37.660 --> 00:09:40.460 +desktop and window management in GNU Emacs. + +09:40.460 --> 00:09:47.740 +We'll start with `task-view`. + +09:47.740 --> 00:09:50.467 +Top row shows all the desktops, + +00:09:50.467 --> 00:09:54.400 +and rest of the images are the active windows + +00:09:54.400 --> 00:09:59.300 +in that particular desktop. + +00:09:59.300 --> 00:10:09.159 +You can tap to select + +00:10:09.160 --> 00:10:13.320 +and double tap to activate a particular window. + +00:10:13.320 --> 00:10:16.767 +You can use m to move selected windows + +00:10:16.767 --> 00:10:25.099 +to any of the desktops at the top. + +00:10:25.100 --> 00:10:29.320 +Let's check the third desktop. + +00:10:29.320 --> 00:10:49.980 +Let's bring it back to the second desktop. + +10:49.980 --> 00:10:51.300 +The best part, + +10:51.300 --> 00:10:54.799 +you can select multiple windows + +00:10:54.800 --> 00:10:59.979 +and form a group by pressing g. + +00:10:59.980 --> 00:11:04.867 +Then you can select any of the windows + +00:11:04.867 --> 00:11:07.639 +in this group to activate the complete group. + +00:11:07.640 --> 00:11:10.439 +That's all for this video. Thanks. + +NOTE Screen mirroring in GNU Emacs + +00:11:10.440 --> 00:11:12.433 +Hello. In this video, we will look at + +00:11:12.433 --> 00:11:14.279 +screen mirroring using GNU Emacs. + +00:11:14.280 --> 00:11:18.779 +Run `wfd`. Select an interface. + +00:11:18.780 --> 00:11:20.967 +Now it will scan for all the available devices + +00:11:20.967 --> 00:11:24.800 +for screen mirroring. + +00:11:24.800 --> 00:11:30.399 +I'll select my TV, which is an LG WebOS TV. + +00:11:30.400 --> 00:11:38.720 +If you don't decline, it will start streaming. + +00:11:38.720 --> 00:11:45.140 +Let's change some buffer to check the visuals. + +11:45.140 --> 00:11:50.219 +To terminate the session, just click on quit. + +00:11:50.220 --> 00:11:53.033 +That's all for this video. Thanks. + +NOTE Swipe for Text Input in GNU Emacs + +00:11:53.033 --> 00:12:25.533 +[Using Sweep to swipe and type "as you like it."] + +NOTE Formula Editor in GNU Emacs + +00:12:25.533 --> 00:12:39.900 +[Formula Editor] + +00:12:39.900 --> 00:12:45.033 +[Typing fractions in the formula] + +00:12:45.033 --> 00:12:59.433 +[Adding brackets and an exponent] + +NOTE Transliteration in Emacs + +00:12:59.433 --> 00:13:05.200 +[Hindi (Devanagari script) Phonetic typing] + +00:13:05.200 --> 00:13:09.433 +[Phonetic typing Gujarati, Bangla, Kannada, and Tamil] + +NOTE Social Media client - Tumblr, Reddit + +00:13:09.433 --> 00:13:19.533 +[Browsing Reddit in Emacs] + +00:13:19.533 --> 00:13:29.533 +[Browsing Tumblr in Emacs] + +00:13:29.533 --> 00:13:40.000 +[Browsing X (Twitter) in Emacs] + +NOTE Comics Builder + +00:13:40.000 --> 00:13:49.567 +[Generating comic from a text script] + +NOTE Matching game + +00:13:49.567 --> 00:13:59.567 +[Matching color names with color boxes] + +NOTE Interactive XPath Builder in GNU Emacs + +00:13:59.567 --> 00:14:01.833 +[Running `xpath-builder` on an XML file] + +00:14:01.833 --> 00:14:10.767 +[Filtering `title`, `para`, and `author` from the XML] + +NOTE Interactive JSON Builder in GNU Emacs + +00:14:10.767 --> 00:14:29.200 +[Filtering `father`, `father.name`, `children` + +00:14:29.200 --> 00:14:35.233 +`children[1]` from a JSON using JSON Builder] + +NOTE GNU Emacs as a lightweight IDE (CEDET Semantic): Java - Generate getter/setter + +00:14:35.233 --> 00:14:37.633 +Hello. In this video, we will look at + +00:14:37.633 --> 00:14:41.659 +generating getters and setters in Java using Emacs. + +00:14:41.660 --> 00:14:46.233 +We will run `srecode-getset-dialog`. + +00:14:46.233 --> 00:14:48.767 +We will get an option to select particular fields, + +00:14:48.767 --> 00:14:51.833 +you can expand and collapse. + +00:14:51.833 --> 00:14:54.100 +You can select all or deselect all, + +00:14:54.100 --> 00:14:56.386 +or you can choose any particular getter. + +00:14:56.386 --> 00:15:02.633 +So let's do protected version of this. Here you go. + +00:15:02.633 --> 00:15:06.067 +If you want to generate for other fields, + +00:15:06.067 --> 00:15:08.300 +you can re-run it. + +00:15:08.300 --> 00:15:11.267 +You can check the one that you have already + +00:15:11.267 --> 00:15:13.100 +generated is not there. + +00:15:13.100 --> 00:15:22.300 +Now select all, and you can see rest of the + +00:15:22.300 --> 00:15:23.933 +getters and setters have been generated. + +00:15:23.933 --> 00:15:26.133 +That's all for this video. Thanks. + +NOTE Generate C header + +00:15:26.133 --> 00:16:11.640 +[Generating C headers using `srecode-gen-header`] + +NOTE C Rename symbols + +00:16:11.640 --> 00:16:13.833 +Hello. In this video, we will look at + +00:16:13.833 --> 00:16:17.633 +renaming method across multiple files in a project. + +00:16:17.633 --> 00:16:24.639 +Let's start with `semantic-symref-symbol`. + +00:16:24.640 --> 00:16:26.800 +Now we have the references. + +00:16:26.800 --> 00:16:35.399 +Let's use the menu to open all these occurrences. + +00:16:35.400 --> 00:16:38.433 +To rename it, we have to use + +00:16:38.433 --> 00:16:41.919 +"Rename Symbol in Open hits." + +00:16:41.920 --> 00:16:46.439 +Let's rename it to underscore 1 (`_1`). + +00:16:46.440 --> 00:16:57.719 +We will verify it by compiling the project. + +00:16:57.720 --> 00:17:00.300 +Let's open the `*Messages*` buffer to see the results + +00:17:00.300 --> 00:17:04.167 +more clearly. No errors. + +00:17:04.167 --> 00:17:07.639 +That's all for this video. Thanks. + +NOTE SQL (offline) + +00:17:07.640 --> 00:17:09.733 +Hello. In this video, we will look at + +00:17:09.733 --> 00:17:12.439 +SQL editing with Semantic. + +00:17:12.440 --> 00:17:16.619 +We will define a schema in this SQL document. + +00:17:16.620 --> 00:17:27.000 +Let's create a table. + +00:17:27.000 --> 00:17:30.267 +We get already existing tables + +00:17:30.267 --> 00:17:38.533 +in the current document. + +00:17:38.533 --> 00:17:57.033 +It also supports auto-completion of some keywords. + +00:17:57.033 --> 00:18:00.900 +Now we can do some queries on the tables. + +00:18:00.900 --> 00:18:03.333 +We have `SELECT` as the keyword or the SQL, + +00:18:03.333 --> 00:18:06.833 +so we will select the SQL. + +00:18:06.833 --> 00:18:13.559 +Here we have all the tables existing in this schema. + +00:18:13.560 --> 00:18:25.633 +We can also use an alias for completions. + +00:18:25.633 --> 00:18:31.267 +Now let's look at a more complex example. + +00:18:31.267 --> 00:18:43.367 +We will try to do a join on two tables. + +00:18:43.367 --> 00:19:06.600 +Let's add a `WHERE` clause. + +00:19:06.600 --> 00:19:23.333 +Next, let's do insert. + +00:19:23.333 --> 00:19:27.967 +You can just click on Tab to go to the next field. + +00:19:27.967 --> 00:19:30.700 +Let's fill in the columns. + +00:19:30.700 --> 00:19:32.667 +And do a Tab to go to the values + +00:19:32.667 --> 00:19:37.000 +and add the corresponding values. + +00:19:37.000 --> 00:19:48.033 +Finally, an update. + +00:19:48.033 --> 00:20:00.700 +Now we will try to delete this + +00:20:00.700 --> 00:20:07.333 +with a `WHERE col11 = 4`. + +00:20:07.333 --> 00:20:16.267 +Lastly, let's try dropping the table. + +00:20:16.267 --> 00:20:21.867 +That's all for this video. Thanks. + +00:20:21.867 --> 00:20:30.740 +Slide with the text "Let's Make Computing Personal." diff --git a/2023/info/world-after.md b/2023/info/world-after.md index c4d0df1f..09db6669 100644 --- a/2023/info/world-after.md +++ b/2023/info/world-after.md @@ -1,6 +1,218 @@ + +# Transcript + +[[!template new="1" text="""Hello. In this video, we will look at""" start="00:00:00.780" video="mainVideo-world" id="subtitle"]] +[[!template text="""drawing and scribbling in Emacs using SVG.""" start="00:00:02.900" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's start with `canvas-mode`.""" start="00:00:07.167" video="mainVideo-world" id="subtitle"]] +[[!template text="""We will define the width and the height.""" start="00:00:10.067" video="mainVideo-world" id="subtitle"]] +[[!template text="""The default is polyline,""" start="00:00:17.540" video="mainVideo-world" id="subtitle"]] +[[!template text="""which means you can scribble anything that you want.""" start="00:00:19.333" video="mainVideo-world" id="subtitle"]] +[[!template text="""Very handy for taking quick notes.""" start="00:00:23.733" video="mainVideo-world" id="subtitle"]] +[[!template text="""Now we will look at""" start="00:00:30.300" video="mainVideo-world" id="subtitle"]] +[[!template text="""drawing a triangle using some lines.""" start="00:00:32.700" video="mainVideo-world" id="subtitle"]] +[[!template text="""Okay. Now let's draw a circle.""" start="00:00:46.333" video="mainVideo-world" id="subtitle"]] +[[!template text="""You can use the mouse to adjust""" start="00:00:57.267" video="mainVideo-world" id="subtitle"]] +[[!template text="""the radius of the circle.""" start="00:00:58.900" video="mainVideo-world" id="subtitle"]] +[[!template text="""There is some problem with ellipse,""" start="00:01:02.860" video="mainVideo-world" id="subtitle"]] +[[!template text="""we will look at it at the end of the video.""" start="00:01:04.333" video="mainVideo-world" id="subtitle"]] +[[!template text="""Now let's put up some text,""" start="00:01:07.940" video="mainVideo-world" id="subtitle"]] +[[!template text="""a typical "Hello World".""" start="00:01:11.767" video="mainVideo-world" id="subtitle"]] +[[!template text="""Size, let's do a 20 font size,""" start="00:01:15.067" video="mainVideo-world" id="subtitle"]] +[[!template text="""and we will use the default font family.""" start="00:01:19.880" video="mainVideo-world" id="subtitle"]] +[[!template text="""Next, we will look at undoing what we have drawn.""" start="00:01:32.360" video="mainVideo-world" id="subtitle"]] +[[!template text="""Just press u for deleting the last drawn object.""" start="00:01:37.433" video="mainVideo-world" id="subtitle"]] +[[!template text="""And you can continue pressing""" start="00:01:43.067" video="mainVideo-world" id="subtitle"]] +[[!template text="""u for consecutive deletions.""" start="00:01:45.800" video="mainVideo-world" id="subtitle"]] +[[!template text="""You can also make a selection of the objects""" start="00:01:51.960" video="mainVideo-world" id="subtitle"]] +[[!template text="""on the screen using your mouse and then press u.""" start="00:01:54.533" video="mainVideo-world" id="subtitle"]] +[[!template text="""This will delete all the objects in one go.""" start="00:01:57.700" video="mainVideo-world" id="subtitle"]] +[[!template text="""Now we are looking at stroke color.""" start="00:02:02.600" video="mainVideo-world" id="subtitle"]] +[[!template text="""We will use a brown stroke color""" start="00:02:06.660" video="mainVideo-world" id="subtitle"]] +[[!template text="""for drawing our objects.""" start="00:02:08.633" video="mainVideo-world" id="subtitle"]] +[[!template text="""Next, let's look at stroke width.""" start="00:02:12.880" video="mainVideo-world" id="subtitle"]] +[[!template text="""We will use a width of 5.""" start="00:02:20.420" video="mainVideo-world" id="subtitle"]] +[[!template text="""Next, let's fill up the objects with a fill color.""" start="00:02:27.980" video="mainVideo-world" id="subtitle"]] +[[!template text="""Now we will look at zoom.""" start="00:02:41.620" video="mainVideo-world" id="subtitle"]] +[[!template text="""Use the mouse to select a region and zoom.""" start="00:02:47.160" video="mainVideo-world" id="subtitle"]] +[[!template text="""You can also use +, - for zooming in and out.""" start="00:02:50.120" video="mainVideo-world" id="subtitle"]] +[[!template text="""Press 0 for resetting the zoom.""" start="00:02:54.360" video="mainVideo-world" id="subtitle"]] +[[!template text="""Next, let's save the file,""" start="00:03:07.133" video="mainVideo-world" id="subtitle"]] +[[!template text="""and q or Enter for exiting the canvas-mode.""" start="00:03:14.540" video="mainVideo-world" id="subtitle"]] +[[!template text="""Now we will open the file in Emacs itself.""" start="00:03:19.667" video="mainVideo-world" id="subtitle"]] +[[!template text="""You can see the file,""" start="00:03:25.220" video="mainVideo-world" id="subtitle"]] +[[!template text="""you can do Control-c Control-c (`C-c C-c`).""" start="00:03:26.180" video="mainVideo-world" id="subtitle"]] +[[!template text="""Finally, we look at ellipse.""" start="00:03:32.000" video="mainVideo-world" id="subtitle"]] +[[!template text="""That's all for this video. Thanks!""" start="00:03:44.420" video="mainVideo-world" id="subtitle"]] +[[!template new="1" text="""Hello. In this video, we will draw""" start="00:03:46.400" video="mainVideo-world" id="subtitle"]] +[[!template text="""schematics using symbols from SVG library in Emacs.""" start="00:03:48.333" video="mainVideo-world" id="subtitle"]] +[[!template text="""Press capital L to activate the symbol library""" start="00:03:52.067" video="mainVideo-world" id="subtitle"]] +[[!template text="""that you can see on the right hand side,""" start="00:03:55.000" video="mainVideo-world" id="subtitle"]] +[[!template text="""and place the symbol on the canvas.""" start="00:03:57.867" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's add another register to this diagram.""" start="00:04:01.960" video="mainVideo-world" id="subtitle"]] +[[!template text="""You can press capital R to rotate the symbol.""" start="00:04:06.640" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's place it on the canvas.""" start="00:04:11.820" video="mainVideo-world" id="subtitle"]] +[[!template text="""Now we will add a voltage source to the circuit.""" start="00:04:17.240" video="mainVideo-world" id="subtitle"]] +[[!template text="""To connect the symbols,""" start="00:04:31.667" video="mainVideo-world" id="subtitle"]] +[[!template text="""we will have to use some connecting wires.""" start="00:04:33.180" video="mainVideo-world" id="subtitle"]] +[[!template text="""For that, press capital W""" start="00:04:36.967" video="mainVideo-world" id="subtitle"]] +[[!template text="""to activate the connection mode.""" start="00:04:39.467" video="mainVideo-world" id="subtitle"]] +[[!template text="""Click anywhere on the canvas""" start="00:04:46.920" video="mainVideo-world" id="subtitle"]] +[[!template text="""to draw intermediate points, and press Esc""" start="00:04:48.567" video="mainVideo-world" id="subtitle"]] +[[!template text="""to exit that particular connection.""" start="00:04:53.133" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's connect other symbols too.""" start="00:05:00.033" video="mainVideo-world" id="subtitle"]] +[[!template text="""That's all for this video. Thanks.""" start="00:05:16.633" video="mainVideo-world" id="subtitle"]] +[[!template new="1" text="""Hello. In this video, we will look at""" start="00:05:20.140" video="mainVideo-world" id="subtitle"]] +[[!template text="""some basic multimedia editing using Emacs.""" start="00:05:22.167" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's start a media-edit session.""" start="00:05:24.933" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's open a video file.""" start="00:05:27.460" video="mainVideo-world" id="subtitle"]] +[[!template text="""The left-hand side is your viewer area,""" start="00:05:32.000" video="mainVideo-world" id="subtitle"]] +[[!template text="""and the right-hand side is your track area.""" start="00:05:34.100" video="mainVideo-world" id="subtitle"]] +[[!template text="""In the track area, you can use normal Emacs""" start="00:05:36.700" video="mainVideo-world" id="subtitle"]] +[[!template text="""text editing movements.""" start="00:05:39.667" video="mainVideo-world" id="subtitle"]] +[[!template text="""Now press `C-c r` to refresh the viewer mode""" start="00:05:42.040" video="mainVideo-world" id="subtitle"]] +[[!template text="""with the exact time frame.""" start="00:05:48.167" video="mainVideo-world" id="subtitle"]] +[[!template text="""Now press SPC to play or pause the video.""" start="00:05:52.767" video="mainVideo-world" id="subtitle"]] +[[!template text="""This looks like an interesting point in the video,""" start="00:05:59.433" video="mainVideo-world" id="subtitle"]] +[[!template text="""let's track it and split it. Press Enter to do that.""" start="00:06:03.233" video="mainVideo-world" id="subtitle"]] +[[!template text="""We will extract some 10 seconds of this video.""" start="00:06:11.433" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's use this.""" start="00:06:20.733" video="mainVideo-world" id="subtitle"]] +[[!template text="""Now go here and delete all these lines.""" start="00:06:23.233" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's review our edited clip.""" start="00:06:26.300" video="mainVideo-world" id="subtitle"]] +[[!template text="""Looks good! Now press e to export the video.""" start="00:06:44.133" video="mainVideo-world" id="subtitle"]] +[[!template text="""Provide an output file name.""" start="00:06:51.833" video="mainVideo-world" id="subtitle"]] +[[!template text="""This will use FFmpeg to convert, and you can""" start="00:06:57.560" video="mainVideo-world" id="subtitle"]] +[[!template text="""output to any file format supported by FFmpeg.""" start="00:07:04.433" video="mainVideo-world" id="subtitle"]] +[[!template text="""Okay. Let's open up shell and view this""" start="00:07:16.967" video="mainVideo-world" id="subtitle"]] +[[!template text="""video file in an external video player.""" start="00:07:21.900" video="mainVideo-world" id="subtitle"]] +[[!template text="""That's all for this video. Thanks.""" start="00:07:57.160" video="mainVideo-world" id="subtitle"]] +[[!template new="1" text="""Hello. In this video, we will look at""" start="00:08:03.367" video="mainVideo-world" id="subtitle"]] +[[!template text="""editing a PDF form using GNU Emacs.""" start="00:08:05.567" video="mainVideo-world" id="subtitle"]] +[[!template text="""To start, we have to enable the annotation.""" start="00:08:09.760" video="mainVideo-world" id="subtitle"]] +[[!template text="""Then we can use Tab to move forward and Shift+Tab""" start="00:08:13.840" video="mainVideo-world" id="subtitle"]] +[[!template text="""to move backwards through the fields.""" start="00:08:18.533" video="mainVideo-world" id="subtitle"]] +[[!template text="""To edit a field, we press e.""" start="00:08:22.480" video="mainVideo-world" id="subtitle"]] +[[!template text="""So let's edit a text box. We'll call it 'city'.""" start="00:08:25.967" video="mainVideo-world" id="subtitle"]] +[[!template text="""Next, we will edit a drop-down.""" start="00:08:33.580" video="mainVideo-world" id="subtitle"]] +[[!template text="""Again, press e, and you get a select.""" start="00:08:35.840" video="mainVideo-world" id="subtitle"]] +[[!template text="""Use the Minibuffer to select one of the values.""" start="00:08:38.680" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's select 'France'.""" start="00:08:45.833" video="mainVideo-world" id="subtitle"]] +[[!template text="""Now let's edit a radio box.""" start="00:08:48.500" video="mainVideo-world" id="subtitle"]] +[[!template text="""A checkbox or a radio box can be toggled using t.""" start="00:08:52.180" video="mainVideo-world" id="subtitle"]] +[[!template text="""You can disableā€¦""" start="00:08:55.900" video="mainVideo-world" id="subtitle"]] +[[!template text="""Now let's save the file, `doc-view-save-form`.""" start="00:08:58.660" video="mainVideo-world" id="subtitle"]] +[[!template text="""It will ask for a file name.""" start="00:09:05.140" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's call it `filled1.pdf`. If the file exists,""" start="00:09:08.360" video="mainVideo-world" id="subtitle"]] +[[!template text="""it will ask you if you want to overwrite.""" start="00:09:13.400" video="mainVideo-world" id="subtitle"]] +[[!template text="""Now let's verify this new file.""" start="00:09:17.260" video="mainVideo-world" id="subtitle"]] +[[!template text="""In Firefox, we'll copy this file name, call it filled1.""" start="00:09:21.460" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's verify the values.""" start="00:09:27.160" video="mainVideo-world" id="subtitle"]] +[[!template text="""You have city, France and Driving License selected.""" start="00:09:29.100" video="mainVideo-world" id="subtitle"]] +[[!template text="""That's all for this video. Thanks.""" start="00:09:32.620" video="mainVideo-world" id="subtitle"]] +[[!template new="1" text="""Hello. In this video, we will look at""" start="00:09:34.900" video="mainVideo-world" id="subtitle"]] +[[!template text="""desktop and window management in GNU Emacs.""" start="00:09:37.660" video="mainVideo-world" id="subtitle"]] +[[!template text="""We'll start with `task-view`.""" start="00:09:40.460" video="mainVideo-world" id="subtitle"]] +[[!template text="""Top row shows all the desktops,""" start="00:09:47.740" video="mainVideo-world" id="subtitle"]] +[[!template text="""and rest of the images are the active windows""" start="00:09:50.467" video="mainVideo-world" id="subtitle"]] +[[!template text="""in that particular desktop.""" start="00:09:54.400" video="mainVideo-world" id="subtitle"]] +[[!template text="""You can tap to select""" start="00:09:59.300" video="mainVideo-world" id="subtitle"]] +[[!template text="""and double tap to activate a particular window.""" start="00:10:09.160" video="mainVideo-world" id="subtitle"]] +[[!template text="""You can use m to move selected windows""" start="00:10:13.320" video="mainVideo-world" id="subtitle"]] +[[!template text="""to any of the desktops at the top.""" start="00:10:16.767" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's check the third desktop.""" start="00:10:25.100" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's bring it back to the second desktop.""" start="00:10:29.320" video="mainVideo-world" id="subtitle"]] +[[!template text="""The best part,""" start="00:10:49.980" video="mainVideo-world" id="subtitle"]] +[[!template text="""you can select multiple windows""" start="00:10:51.300" video="mainVideo-world" id="subtitle"]] +[[!template text="""and form a group by pressing g.""" start="00:10:54.800" video="mainVideo-world" id="subtitle"]] +[[!template text="""Then you can select any of the windows""" start="00:10:59.980" video="mainVideo-world" id="subtitle"]] +[[!template text="""in this group to activate the complete group.""" start="00:11:04.867" video="mainVideo-world" id="subtitle"]] +[[!template text="""That's all for this video. Thanks.""" start="00:11:07.640" video="mainVideo-world" id="subtitle"]] +[[!template new="1" text="""Hello. In this video, we will look at""" start="00:11:10.440" video="mainVideo-world" id="subtitle"]] +[[!template text="""screen mirroring using GNU Emacs.""" start="00:11:12.433" video="mainVideo-world" id="subtitle"]] +[[!template text="""Run `wfd`. Select an interface.""" start="00:11:14.280" video="mainVideo-world" id="subtitle"]] +[[!template text="""Now it will scan for all the available devices""" start="00:11:18.780" video="mainVideo-world" id="subtitle"]] +[[!template text="""for screen mirroring.""" start="00:11:20.967" video="mainVideo-world" id="subtitle"]] +[[!template text="""I'll select my TV, which is an LG WebOS TV.""" start="00:11:24.800" video="mainVideo-world" id="subtitle"]] +[[!template text="""If you don't decline, it will start streaming.""" start="00:11:30.400" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's change some buffer to check the visuals.""" start="00:11:38.720" video="mainVideo-world" id="subtitle"]] +[[!template text="""To terminate the session, just click on quit.""" start="00:11:45.140" video="mainVideo-world" id="subtitle"]] +[[!template text="""That's all for this video. Thanks.""" start="00:11:50.220" video="mainVideo-world" id="subtitle"]] +[[!template new="1" text="""[Using Sweep to swipe and type "as you like it."]""" start="00:11:53.033" video="mainVideo-world" id="subtitle"]] +[[!template new="1" text="""[Formula Editor]""" start="00:12:25.533" video="mainVideo-world" id="subtitle"]] +[[!template text="""[Typing fractions in the formula]""" start="00:12:39.900" video="mainVideo-world" id="subtitle"]] +[[!template text="""[Adding brackets and an exponent]""" start="00:12:45.033" video="mainVideo-world" id="subtitle"]] +[[!template new="1" text="""[Hindi (Devanagari script) Phonetic typing]""" start="00:12:59.433" video="mainVideo-world" id="subtitle"]] +[[!template text="""[Phonetic typing Gujarati, Bangla, Kannada, and Tamil]""" start="00:13:05.200" video="mainVideo-world" id="subtitle"]] +[[!template new="1" text="""[Browsing Reddit in Emacs]""" start="00:13:09.433" video="mainVideo-world" id="subtitle"]] +[[!template text="""[Browsing Tumblr in Emacs]""" start="00:13:19.533" video="mainVideo-world" id="subtitle"]] +[[!template text="""[Browsing X (Twitter) in Emacs]""" start="00:13:29.533" video="mainVideo-world" id="subtitle"]] +[[!template new="1" text="""[Generating comic from a text script]""" start="00:13:40.000" video="mainVideo-world" id="subtitle"]] +[[!template new="1" text="""[Matching color names with color boxes]""" start="00:13:49.567" video="mainVideo-world" id="subtitle"]] +[[!template new="1" text="""[Running `xpath-builder` on an XML file]""" start="00:13:59.567" video="mainVideo-world" id="subtitle"]] +[[!template text="""[Filtering `title`, `para`, and `author` from the XML]""" start="00:14:01.833" video="mainVideo-world" id="subtitle"]] +[[!template new="1" text="""[Filtering `father`, `father.name`, `children`""" start="00:14:10.767" video="mainVideo-world" id="subtitle"]] +[[!template text="""`children[1]` from a JSON using JSON Builder]""" start="00:14:29.200" video="mainVideo-world" id="subtitle"]] +[[!template new="1" text="""Hello. In this video, we will look at""" start="00:14:35.233" video="mainVideo-world" id="subtitle"]] +[[!template text="""generating getters and setters in Java using Emacs.""" start="00:14:37.633" video="mainVideo-world" id="subtitle"]] +[[!template text="""We will run `srecode-getset-dialog`.""" start="00:14:41.660" video="mainVideo-world" id="subtitle"]] +[[!template text="""We will get an option to select particular fields,""" start="00:14:46.233" video="mainVideo-world" id="subtitle"]] +[[!template text="""you can expand and collapse.""" start="00:14:48.767" video="mainVideo-world" id="subtitle"]] +[[!template text="""You can select all or deselect all,""" start="00:14:51.833" video="mainVideo-world" id="subtitle"]] +[[!template text="""or you can choose any particular getter.""" start="00:14:54.100" video="mainVideo-world" id="subtitle"]] +[[!template text="""So let's do protected version of this. Here you go.""" start="00:14:56.386" video="mainVideo-world" id="subtitle"]] +[[!template text="""If you want to generate for other fields,""" start="00:15:02.633" video="mainVideo-world" id="subtitle"]] +[[!template text="""you can re-run it.""" start="00:15:06.067" video="mainVideo-world" id="subtitle"]] +[[!template text="""You can check the one that you have already""" start="00:15:08.300" video="mainVideo-world" id="subtitle"]] +[[!template text="""generated is not there.""" start="00:15:11.267" video="mainVideo-world" id="subtitle"]] +[[!template text="""Now select all, and you can see rest of the""" start="00:15:13.100" video="mainVideo-world" id="subtitle"]] +[[!template text="""getters and setters have been generated.""" start="00:15:22.300" video="mainVideo-world" id="subtitle"]] +[[!template text="""That's all for this video. Thanks.""" start="00:15:23.933" video="mainVideo-world" id="subtitle"]] +[[!template new="1" text="""[Generating C headers using `srecode-gen-header`]""" start="00:15:26.133" video="mainVideo-world" id="subtitle"]] +[[!template new="1" text="""Hello. In this video, we will look at""" start="00:16:11.640" video="mainVideo-world" id="subtitle"]] +[[!template text="""renaming method across multiple files in a project.""" start="00:16:13.833" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's start with `semantic-symref-symbol`.""" start="00:16:17.633" video="mainVideo-world" id="subtitle"]] +[[!template text="""Now we have the references.""" start="00:16:24.640" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's use the menu to open all these occurrences.""" start="00:16:26.800" video="mainVideo-world" id="subtitle"]] +[[!template text="""To rename it, we have to use""" start="00:16:35.400" video="mainVideo-world" id="subtitle"]] +[[!template text=""""Rename Symbol in Open hits."""" start="00:16:38.433" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's rename it to underscore 1 (`_1`).""" start="00:16:41.920" video="mainVideo-world" id="subtitle"]] +[[!template text="""We will verify it by compiling the project.""" start="00:16:46.440" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's open the `*Messages*` buffer to see the results""" start="00:16:57.720" video="mainVideo-world" id="subtitle"]] +[[!template text="""more clearly. No errors.""" start="00:17:00.300" video="mainVideo-world" id="subtitle"]] +[[!template text="""That's all for this video. Thanks.""" start="00:17:04.167" video="mainVideo-world" id="subtitle"]] +[[!template new="1" text="""Hello. In this video, we will look at""" start="00:17:07.640" video="mainVideo-world" id="subtitle"]] +[[!template text="""SQL editing with Semantic.""" start="00:17:09.733" video="mainVideo-world" id="subtitle"]] +[[!template text="""We will define a schema in this SQL document.""" start="00:17:12.440" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's create a table.""" start="00:17:16.620" video="mainVideo-world" id="subtitle"]] +[[!template text="""We get already existing tables""" start="00:17:27.000" video="mainVideo-world" id="subtitle"]] +[[!template text="""in the current document.""" start="00:17:30.267" video="mainVideo-world" id="subtitle"]] +[[!template text="""It also supports auto-completion of some keywords.""" start="00:17:38.533" video="mainVideo-world" id="subtitle"]] +[[!template text="""Now we can do some queries on the tables.""" start="00:17:57.033" video="mainVideo-world" id="subtitle"]] +[[!template text="""We have `SELECT` as the keyword or the SQL,""" start="00:18:00.900" video="mainVideo-world" id="subtitle"]] +[[!template text="""so we will select the SQL.""" start="00:18:03.333" video="mainVideo-world" id="subtitle"]] +[[!template text="""Here we have all the tables existing in this schema.""" start="00:18:06.833" video="mainVideo-world" id="subtitle"]] +[[!template text="""We can also use an alias for completions.""" start="00:18:13.560" video="mainVideo-world" id="subtitle"]] +[[!template text="""Now let's look at a more complex example.""" start="00:18:25.633" video="mainVideo-world" id="subtitle"]] +[[!template text="""We will try to do a join on two tables.""" start="00:18:31.267" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's add a `WHERE` clause.""" start="00:18:43.367" video="mainVideo-world" id="subtitle"]] +[[!template text="""Next, let's do insert.""" start="00:19:06.600" video="mainVideo-world" id="subtitle"]] +[[!template text="""You can just click on Tab to go to the next field.""" start="00:19:23.333" video="mainVideo-world" id="subtitle"]] +[[!template text="""Let's fill in the columns.""" start="00:19:27.967" video="mainVideo-world" id="subtitle"]] +[[!template text="""And do a Tab to go to the values""" start="00:19:30.700" video="mainVideo-world" id="subtitle"]] +[[!template text="""and add the corresponding values.""" start="00:19:32.667" video="mainVideo-world" id="subtitle"]] +[[!template text="""Finally, an update.""" start="00:19:37.000" video="mainVideo-world" id="subtitle"]] +[[!template text="""Now we will try to delete this""" start="00:19:48.033" video="mainVideo-world" id="subtitle"]] +[[!template text="""with a `WHERE col11 = 4`.""" start="00:20:00.700" video="mainVideo-world" id="subtitle"]] +[[!template text="""Lastly, let's try dropping the table.""" start="00:20:07.333" video="mainVideo-world" id="subtitle"]] +[[!template text="""That's all for this video. Thanks.""" start="00:20:16.267" video="mainVideo-world" id="subtitle"]] +[[!template text="""Slide with the text "Let's Make Computing Personal."""" start="00:20:21.867" video="mainVideo-world" id="subtitle"]] + + + +Captioner: bhavin192 + Questions or comments? Please e-mail [emacsconf-org-private@gnu.org](mailto:emacsconf-org-private@gnu.org?subject=Comment%20for%20EmacsConf%202022%20world%3A%20GNU%20Emacs%3A%20A%20World%20of%20Possibilities) diff --git a/2023/info/world-before.md b/2023/info/world-before.md index b4d6e070..5c800a4d 100644 --- a/2023/info/world-before.md +++ b/2023/info/world-before.md @@ -8,12 +8,32 @@ The following image shows where the talk is in the schedule for Sun 2023-12-03. Format: 21-min talk; Q&A: BigBlueButton conference room Etherpad: Discuss on IRC: [#emacsconf-dev](https://chat.emacsconf.org/?join=emacsconf,emacsconf-dev) -Status: Ready to stream +Status: Now playing on the conference livestream
Times in different timezones:
Sunday, Dec 3 2023, ~10:35 AM - 10:55 AM EST (US/Eastern)
which is the same as:
Sunday, Dec 3 2023, ~9:35 AM - 9:55 AM CST (US/Central)
Sunday, Dec 3 2023, ~8:35 AM - 8:55 AM MST (US/Mountain)
Sunday, Dec 3 2023, ~7:35 AM - 7:55 AM PST (US/Pacific)
Sunday, Dec 3 2023, ~3:35 PM - 3:55 PM UTC
Sunday, Dec 3 2023, ~4:35 PM - 4:55 PM CET (Europe/Paris)
Sunday, Dec 3 2023, ~5:35 PM - 5:55 PM EET (Europe/Athens)
Sunday, Dec 3 2023, ~9:05 PM - 9:25 PM IST (Asia/Kolkata)
Sunday, Dec 3 2023, ~11:35 PM - 11:55 PM +08 (Asia/Singapore)
Monday, Dec 4 2023, ~12:35 AM - 12:55 AM JST (Asia/Tokyo)
Find out how to watch and participate
+
[[!template id="chapters" vidid="world-mainVideo" data=""" +00:00:00.780 Draw and scribble in GNU Emacs +03:46.400 SVG Symbols library +05:20.140 GNU Emacs: A multimedia editor +08:03.367 Fill PDF form using GNU Emacs +09:34.900 Desktop and window management in GNU Emacs +11:10.440 Screen mirroring in GNU Emacs +11:53.033 Swipe for Text Input in GNU Emacs +12:25.533 Formula Editor in GNU Emacs +12:59.433 Transliteration in Emacs +13:09.433 Social Media client - Tumblr, Reddit +13:40.000 Comics Builder +13:49.567 Matching game +13:59.567 Interactive XPath Builder in GNU Emacs +14:10.767 Interactive JSON Builder in GNU Emacs +14:35.233 GNU Emacs as a lightweight IDE (CEDET Semantic): Java - Generate getter/setter +15:26.133 Generate C header +16:11.640 C Rename symbols +17:07.640 SQL (offline) +"""]]
Duration: 20:31 minutes
# Description \ No newline at end of file -- cgit v1.2.3